<?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>96637</bug_id>
          
          <creation_ts>2012-09-13 05:24:23 -0700</creation_ts>
          <short_desc>Remove V8DOMWindowShell::getEntered</short_desc>
          <delta_ts>2012-11-23 05:45:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96760</dependson>
    
    <dependson>97970</dependson>
    
    <dependson>102832</dependson>
          <blocked>96522</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dan Carney">dcarney</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>caseq</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jianli</cc>
    
    <cc>mkwst</cc>
    
    <cc>ojan</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>719364</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-13 05:24:23 -0700</bug_when>
    <thetext>Remove V8DOMWindowShell::getEntered</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719371</commentid>
    <comment_count>1</comment_count>
      <attachid>163847</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-13 05:33:20 -0700</bug_when>
    <thetext>Created attachment 163847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719653</commentid>
    <comment_count>2</comment_count>
      <attachid>163847</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-13 10:34:38 -0700</bug_when>
    <thetext>Comment on attachment 163847
Patch

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

This looks great!  A few very minor comments below.

I suspect we&apos;ll eventually to unify this data with V8PerContextData, but currently the lifetimes are a bit different.  This is great for now though.

&gt; Source/WebCore/bindings/v8/ScopedPersistent.h:86
&gt; +    void clearWeak(void* parameter, v8::WeakReferenceCallback callback)
&gt; +    {
&gt; +        ASSERT(!m_handle.IsEmpty());
&gt; +        m_handle.MakeWeak(parameter, callback);
&gt; +        m_handle.Clear();
&gt; +    }

Rather than encouraging this tricky lifetime semantics by adding this feature to ScopedPersistent, it might be better if we provide a way to leak the handle.  For example:

v8::Persistent&lt;T&gt; leakHandle()
{
    v8::Persistent&lt;T&gt; handle = m_handle;
    m_handel.Clear();
    return handle;
}

Then the caller can write:

m_whatever.leakHandle().MakeWeak(...)

and then the caller will know that it is responsible for disposing the handle because the word &quot;leak&quot; appears at the call site.

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:398
&gt; +            delete isolatedWorldShell;

Normally I would complain about raw calls to delete, but I know you&apos;re going to make these into OwnPtrs shortly.  :)

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:179
&gt; -V8DOMWindowShell* V8DOMWindowShell::enteredIsolatedWorldContext()
&gt; +V8DOMWindowShell::IsolatedContextData* V8DOMWindowShell::enteredIsolatedContextData(v8::Local&lt;v8::Context&gt; context)

enteredIsolatedContextData -&gt; toIsolatedContextData

The word &quot;entered&quot; in these functions refers to the V8 API concept of the &quot;entered&quot; v8::Context.  For example, in v8::Context::GetEntered().  Here, you&apos;re asking the caller to supply the context.  They might supply the entered context or they might supply whatever context they want.

nit: Local -&gt; Handle.  We try to use the more general type whenever it doesn&apos;t mater.  I see that you&apos;re mirroring setIsolatedWorldField, but that should also use Handle rather than Local.

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:360
&gt; +        m_isolatedContextData = IsolatedContextData::create(m_world.get(), m_perContextData.release(), m_isolatedWorldShellSecurityOrigin.get());

Can&apos;t you skip these get() calls?

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:622
&gt; +        m_isolatedContextData-&gt;setSecurityOrigin(m_isolatedWorldShellSecurityOrigin.get());

ditto

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:71
&gt; +    private:

This line should have a blank line before it.

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:73
&gt; +        IsolatedContextData(PassRefPtr&lt;DOMWrapperWorld&gt; world, PassOwnPtr&lt;V8PerContextData&gt; perContextData,
&gt; +                PassRefPtr&lt;SecurityOrigin&gt; securityOrigin)

This can all go on one line.

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:76
&gt; +            , m_securityOrigin(securityOrigin) { }

These { } should each be on a separate line and have a blank line after them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720391</commentid>
    <comment_count>3</comment_count>
      <attachid>164063</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-14 00:14:04 -0700</bug_when>
    <thetext>Created attachment 164063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720397</commentid>
    <comment_count>4</comment_count>
      <attachid>164063</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-14 00:20:39 -0700</bug_when>
    <thetext>Comment on attachment 164063
Patch

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

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:77
&gt; +        { }

style nit: technically they each get their own line.  Sorry for being unclear before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720398</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-14 00:21:03 -0700</bug_when>
    <thetext>Don&apos;t worry about the style nit.  We can clean it up in a later patch to this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720401</commentid>
    <comment_count>6</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-14 00:23:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 164063 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164063&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:77
&gt; &gt; +        { }
&gt; 
&gt; style nit: technically they each get their own line.  Sorry for being unclear before.

Oh. Gotcha. Yeah, next time.  I was planning for that class to be short lived anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720417</commentid>
    <comment_count>7</comment_count>
      <attachid>164063</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 00:51:25 -0700</bug_when>
    <thetext>Comment on attachment 164063
Patch

Clearing flags on attachment: 164063

Committed r128566: &lt;http://trac.webkit.org/changeset/128566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720418</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 00:51:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720620</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-14 05:28:19 -0700</bug_when>
    <thetext>The patch seems to cause an assertion failure in v8. I&apos;ll roll it out.

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;showLargeExpectations=true&amp;tests=close-code-and-reason.html

crash log for DumpRenderTree (pid 2387):
STDOUT: 
STDOUT: ==== Stack trace ============================================
STDOUT: 
STDOUT: Security context: 0x2e034d75 &lt;JS Object&gt;#0#
STDOUT:     1: /* anonymous */ [http://127.0.0.1:8000/websocket/tests/hybi/workers/resources/close-code-and-reason.js:18] (this=0x2e034e1d &lt;JS Global Object&gt;#1#)
STDOUT: 
STDOUT: ==== Details ================================================
STDOUT: 
STDOUT: [1]: /* anonymous */ [http://127.0.0.1:8000/websocket/tests/hybi/workers/resources/close-code-and-reason.js:18] (this=0x2e034e1d &lt;JS Global Object&gt;#1#) {
STDOUT:   // stack-allocated locals
STDOUT:   var .result = 0x2e008091 &lt;undefined&gt;
STDOUT:   // expression stack (top to bottom)
STDOUT:   [03] : 0x2e037535 &lt;JS Function&gt;#2#
STDOUT:   [02] : 0x2aa15409 &lt;String[6]: onopen&gt;
STDOUT:   [01] : 0x4770d9f9 &lt;a WebSocket&gt;#3#
STDOUT: --------- s o u r c e   c o d e ---------
STDOUT: var codeNormalClosure = 1000;?var codeNoStatusRcvd = 1005;?var codeAbnormalClosure = 1006;?var emptyString = &quot;&quot;;??function postResult(result, actual, expected)?{?    var message = result ? &quot;PASS&quot; : &quot;FAIL&quot;;?    message += &quot;: worker: &quot; + actual + &quot; is &quot;;?    if (!result)?        message += &quot;not &quot;;?   ...
STDOUT: 
STDOUT: -----------------------------------------
STDOUT: }
STDOUT: 
STDOUT: ==== Key         ============================================
STDOUT: 
STDOUT:  #0# 0x2e034d75: 0x2e034d75 &lt;JS Object&gt;
STDOUT:  #1# 0x2e034e1d: 0x2e034e1d &lt;JS Global Object&gt;
STDOUT:  #2# 0x2e037535: 0x2e037535 &lt;JS Function&gt;
STDOUT:  #3# 0x4770d9f9: 0x4770d9f9 &lt;a WebSocket&gt;
STDOUT: =====================
STDOUT: 
STDERR: 
STDERR: 
STDERR: #
STDERR: # Fatal error in ../../src/objects-inl.h, line 1487
STDERR: # CHECK(index &lt; GetInternalFieldCount() &amp;&amp; index &gt;= 0) failed
STDERR: #
STDERR: 
STDERR: [2387:-1602484928:1847752401410:ERROR:process_util_posix.cc(143)] Received signal 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720625</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 05:32:07 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96760</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720720</commentid>
    <comment_count>11</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-14 07:08:51 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The patch seems to cause an assertion failure in v8. I&apos;ll roll it out.
&gt; 


I don&apos;t think it&apos;s this patch causing the flake.  It just happens to be hitting code I modified.  What it&apos;s trying to do is completely unreasonable, both before and after this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720768</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-14 07:57:42 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; The patch seems to cause an assertion failure in v8. I&apos;ll roll it out.
&gt; &gt; 
&gt; 
&gt; 
&gt; I don&apos;t think it&apos;s this patch causing the flake.  It just happens to be hitting code I modified.  What it&apos;s trying to do is completely unreasonable, both before and after this patch.

&gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;showLargeExpectations=true&amp;tests=close-code-and-reason.html

It&apos;s clear that CRASH failures started since r128566, and stopped by the rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721140</commentid>
    <comment_count>13</comment_count>
      <attachid>164227</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-14 14:35:30 -0700</bug_when>
    <thetext>Created attachment 164227
Patch

rebased after https://bugs.webkit.org/show_bug.cgi?id=96790</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721234</commentid>
    <comment_count>14</comment_count>
      <attachid>164227</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 16:25:34 -0700</bug_when>
    <thetext>Comment on attachment 164227
Patch

Clearing flags on attachment: 164227

Committed r128669: &lt;http://trac.webkit.org/changeset/128669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721235</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 16:25:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721409</commentid>
    <comment_count>16</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-15 01:46:51 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 164227 [details])
&gt; Clearing flags on attachment: 164227
&gt; 
&gt; Committed r128669: &lt;http://trac.webkit.org/changeset/128669&gt;

I&apos;m afraid it broke another test.
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=text-encoding.html

I&apos;ll roll it out again...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721410</commentid>
    <comment_count>17</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-15 01:55:11 -0700</bug_when>
    <thetext>Reverted r128669 for reason:

Broke http/tests/workers/text-encoding.html on Chromium Linux (dbg)

Committed r128687: &lt;http://trac.webkit.org/changeset/128687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721416</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-15 02:32:24 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Reverted r128669 for reason:
&gt; 
&gt; Broke http/tests/workers/text-encoding.html on Chromium Linux (dbg)
&gt; 
&gt; Committed r128687: &lt;http://trac.webkit.org/changeset/128687&gt;

Confirmed the rollout fixed the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721766</commentid>
    <comment_count>19</comment_count>
      <attachid>164358</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-17 02:20:08 -0700</bug_when>
    <thetext>Created attachment 164358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721767</commentid>
    <comment_count>20</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-17 02:21:28 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=164358) [details]
&gt; Patch

handling ScriptController::currentWorldContext differently this iteration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721810</commentid>
    <comment_count>21</comment_count>
      <attachid>164371</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-17 04:57:24 -0700</bug_when>
    <thetext>Created attachment 164371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722077</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-17 11:09:06 -0700</bug_when>
    <thetext>&gt; handling ScriptController::currentWorldContext differently this iteration

Given that we&apos;ve had some trouble landing this patch, how would you feel about waiting until Wednesday to land it?  That should be after the M23 branch and will give us more time to catch problems in the Dev channel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722079</commentid>
    <comment_count>23</comment_count>
      <attachid>164371</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-17 11:12:17 -0700</bug_when>
    <thetext>Comment on attachment 164371
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:447
&gt;  v8::Local&lt;v8::Context&gt; ScriptController::currentWorldContext()
&gt;  {
&gt; -    if (V8DOMWindowShell* isolatedShell = V8DOMWindowShell::getEntered()) {
&gt; -        v8::Persistent&lt;v8::Context&gt; context = isolatedShell-&gt;context();
&gt; -        if (context.IsEmpty() || m_frame != toFrameIfNotDetached(context))
&gt; +    V8DOMWindowShell::IsolatedContextData* isolatedContextData = V8DOMWindowShell::enteredIsolatedContextData();
&gt; +    if (UNLIKELY(!!isolatedContextData)) {
&gt; +        V8DOMWindowShell* isolatedShell = existingWindowShellInternal(isolatedContextData-&gt;world());
&gt; +        // A temporary isolated world has been deleted, so use the current context.
&gt; +        if (UNLIKELY(!isolatedShell)) {
&gt; +            v8::Handle&lt;v8::Context&gt; context = v8::Context::GetEntered();
&gt; +            if (m_frame != toFrameIfNotDetached(context))
&gt; +                return v8::Local&lt;v8::Context&gt;();
&gt; +            return v8::Local&lt;v8::Context&gt;::New(context);
&gt; +        }
&gt; +        // The shell exists, but potentially it has a new context, so use it.
&gt; +        if (isolatedShell-&gt;context().IsEmpty() || m_frame != toFrameIfNotDetached(isolatedShell-&gt;context()))
&gt;              return v8::Local&lt;v8::Context&gt;();
&gt; -        return v8::Local&lt;v8::Context&gt;::New(context);
&gt; +        return v8::Local&lt;v8::Context&gt;::New(isolatedShell-&gt;context());
&gt;      }

This function is getting way too complicated.  What&apos;s causing this complexity?  Perhaps we need to remove the concept of a temporary isolated world?  Maybe we need to treat temporary isolated worlds more like regular isolated worlds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722190</commentid>
    <comment_count>24</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-17 12:50:30 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; handling ScriptController::currentWorldContext differently this iteration
&gt; 
&gt; Given that we&apos;ve had some trouble landing this patch, how would you feel about waiting until Wednesday to land it?  That should be after the M23 branch and will give us more time to catch problems in the Dev channel.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722203</commentid>
    <comment_count>25</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-17 13:06:16 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 164371 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164371&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/ScriptController.cpp:447
&gt; &gt;  v8::Local&lt;v8::Context&gt; ScriptController::currentWorldContext()
&gt; &gt;  {
&gt; &gt; -    if (V8DOMWindowShell* isolatedShell = V8DOMWindowShell::getEntered()) {
&gt; &gt; -        v8::Persistent&lt;v8::Context&gt; context = isolatedShell-&gt;context();
&gt; &gt; -        if (context.IsEmpty() || m_frame != toFrameIfNotDetached(context))
&gt; &gt; +    V8DOMWindowShell::IsolatedContextData* isolatedContextData = V8DOMWindowShell::enteredIsolatedContextData();
&gt; &gt; +    if (UNLIKELY(!!isolatedContextData)) {
&gt; &gt; +        V8DOMWindowShell* isolatedShell = existingWindowShellInternal(isolatedContextData-&gt;world());
&gt; &gt; +        // A temporary isolated world has been deleted, so use the current context.
&gt; &gt; +        if (UNLIKELY(!isolatedShell)) {
&gt; &gt; +            v8::Handle&lt;v8::Context&gt; context = v8::Context::GetEntered();
&gt; &gt; +            if (m_frame != toFrameIfNotDetached(context))
&gt; &gt; +                return v8::Local&lt;v8::Context&gt;();
&gt; &gt; +            return v8::Local&lt;v8::Context&gt;::New(context);
&gt; &gt; +        }
&gt; &gt; +        // The shell exists, but potentially it has a new context, so use it.
&gt; &gt; +        if (isolatedShell-&gt;context().IsEmpty() || m_frame != toFrameIfNotDetached(isolatedShell-&gt;context()))
&gt; &gt;              return v8::Local&lt;v8::Context&gt;();
&gt; &gt; -        return v8::Local&lt;v8::Context&gt;::New(context);
&gt; &gt; +        return v8::Local&lt;v8::Context&gt;::New(isolatedShell-&gt;context());
&gt; &gt;      }
&gt; 
&gt; This function is getting way too complicated.  What&apos;s causing this complexity?  Perhaps we need to remove the concept of a temporary isolated world?  Maybe we need to treat temporary isolated worlds more like regular isolated worlds?

I think ultimately this function needs some refactoring.  It&apos;s odd to want to retrieve the entered context and then not use it, but instead use the context from the same world that it currently attached to the frame.  I suspect there are two distinct use cases for this function, and we are using it for both.  I also don&apos;t fully understand why the main world case gets initialized if it&apos;s empty and the isolated world case doesn&apos;t.

Anyway, that function is slated for a major reworking anyway to fix bug 93646, so I&apos;d like to hold off until then if this patch stops hitting assertions in worker threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722209</commentid>
    <comment_count>26</comment_count>
      <attachid>164371</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-17 13:09:50 -0700</bug_when>
    <thetext>Comment on attachment 164371
Patch

dropping review flag until after milestone  branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730753</commentid>
    <comment_count>27</comment_count>
      <attachid>166267</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-28 09:48:46 -0700</bug_when>
    <thetext>Created attachment 166267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730947</commentid>
    <comment_count>28</comment_count>
      <attachid>166267</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 13:31:17 -0700</bug_when>
    <thetext>Comment on attachment 166267
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:314
&gt; +    V8DOMWindowShell::IsolatedContextData* isolatedShellData;

Would you be willing to initialize this scalar to 0? It always makes me worry to see uninitialized pointers.

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:63
&gt; +        static PassOwnPtr&lt;IsolatedContextData&gt; create(PassRefPtr&lt;DOMWrapperWorld&gt; world, PassOwnPtr&lt;V8PerContextData&gt; perContextData,
&gt; +            PassRefPtr&lt;SecurityOrigin&gt; securityOrigin)

You can merge these lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730952</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 13:35:04 -0700</bug_when>
    <thetext>Interesting.  This patch is telling us that we should make the lifetime of V8PerContextData match that of v8::Context.  Currently, V8PerContextData is only alive for main world contexts when those contexts are displayed in a frame.  You&apos;re essentially extending the lifetime of V8PerContextData in the case of isolated worlds to match that of the underlying v8::Context.

We&apos;ll eventually want to further align the implementation of the main and non-main world, but I think this patch is a good step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730954</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 13:35:56 -0700</bug_when>
    <thetext>Feel free to set the commit-queue flag to ? if you&apos;d like me (or someone else) to mark it commit-queue+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731053</commentid>
    <comment_count>31</comment_count>
      <attachid>166267</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-28 16:29:43 -0700</bug_when>
    <thetext>Comment on attachment 166267
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:314
&gt;&gt; +    V8DOMWindowShell::IsolatedContextData* isolatedShellData;
&gt; 
&gt; Would you be willing to initialize this scalar to 0? It always makes me worry to see uninitialized pointers.

done

&gt;&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:63
&gt;&gt; +            PassRefPtr&lt;SecurityOrigin&gt; securityOrigin)
&gt; 
&gt; You can merge these lines.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731060</commentid>
    <comment_count>32</comment_count>
      <attachid>166330</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-28 16:47:23 -0700</bug_when>
    <thetext>Created attachment 166330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731094</commentid>
    <comment_count>33</comment_count>
      <attachid>166330</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 17:44:51 -0700</bug_when>
    <thetext>Comment on attachment 166330
Patch

Clearing flags on attachment: 166330

Committed r129965: &lt;http://trac.webkit.org/changeset/129965&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731095</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 17:44:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731233</commentid>
    <comment_count>35</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-29 13:13:48 -0700</bug_when>
    <thetext>This patch hits an assert running http/tests/workers/text-encoding.html on Chromium Linux debug.

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=http%2Ftests%2Fworkers%2Ftext-encoding.html

STDERR: ASSERTION FAILED: innerGlobal-&gt;InternalFieldCount() &gt;= V8DOMWindow::enteredIsolatedWorldIndex
STDERR: third_party/WebKit/Source/WebCore/bindings/v8/V8DOMWindowShell.cpp(180) : static WebCore::V8DOMWindowShell::IsolatedContextData* WebCore::V8DOMWindowShell::toIsolatedContextData(v8::Handle&lt;v8::Object&gt;)
STDERR: [22109:22892:16409146392669:ERROR:process_util_posix.cc(144)] Received signal 11
STDERR: 	base::debug::StackTrace::StackTrace() [0x7f555a75fc6a]
STDERR: 	base::(anonymous namespace)::StackDumpSignalHandler() [0x7f555a7c8d59]
STDERR: 	0x7f5553a14af0
STDERR: 	WebCore::V8DOMWindowShell::toIsolatedContextData() [0x7f555dca621d]
STDERR: 	WebCore::V8DOMWindowShell::enteredIsolatedContextData() [0x7f555ce69485]
STDERR: 	WebCore::V8XMLHttpRequest::constructorCallback() [0x7f555dcfb016]
STDERR: 	v8::internal::HandleApiCallHelper&lt;&gt;() [0x7f555abdfbc8]
STDERR: 	v8::internal::Builtin_Impl_HandleApiCallConstruct() [0x7f555abda2df]
STDERR: 	v8::internal::Builtin_HandleApiCallConstruct() [0x7f555abda2b0]
STDERR: 	0x253e4e80618e</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731236</commentid>
    <comment_count>36</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-29 13:19:11 -0700</bug_when>
    <thetext>Also causes fast/files/workers/worker-apply-blob-url-to-xhr.html to sometimes hit an assert.

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Ffiles%2Fworkers%2Fworker-apply-blob-url-to-xhr.html

STDERR: ASSERTION FAILED: innerGlobal-&gt;InternalFieldCount() &gt;= V8DOMWindow::enteredIsolatedWorldIndex
STDERR: /Volumes/data/b/build/slave/webkit-mac-latest-dbg/build/src/third_party/WebKit/Source/WebCore/WebCore.gyp/../bindings/v8/V8DOMWindowShell.cpp(180) : static V8DOMWindowShell::IsolatedContextData *WebCore::V8DOMWindowShell::toIsolatedContextData(v8::Handle&lt;v8::Object&gt;)
STDERR: 1   0x5751c3a7 WebCore::V8DOMWindowShell::toIsolatedContextData(v8::Handle&lt;v8::Object&gt;)
STDERR: 2   0x574c6094 WebCore::V8DOMWindowShell::enteredIsolatedContextData()
STDERR: 3   0x575b658a WebCore::V8XMLHttpRequest::constructorCallback(v8::Arguments const&amp;)
STDERR: 4   0x5d340f92 v8::internal::MaybeObject* v8::internal::HandleApiCallHelper&lt;true&gt;(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*)
STDERR: 5   0x5d34091a v8::internal::Builtin_Impl_HandleApiCallConstruct(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*)
STDERR: 6   0x5d3374ac v8::internal::Builtin_HandleApiCallConstruct(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*)
STDERR: 7   0x51f0a336
STDERR: [3067:-1298067456:2487180718778:ERROR:process_util_posix.cc(144)] Received signal 11
STDERR: 	0   libbase.dylib                       0x5e344d8f base::debug::StackTrace::StackTrace() + 63
STDERR: 	1   libbase.dylib                       0x5e344d2b base::debug::StackTrace::StackTrace() + 43
STDERR: 	2   libbase.dylib                       0x5e41e4f7 base::(anonymous namespace)::StackDumpSignalHandler(int, __siginfo*, __darwin_ucontext*) + 295
STDERR: 	3   libSystem.B.dylib                   0x9539405b _sigtramp + 43
STDERR: 	4   ???                                 0xffffffff 0x0 + 4294967295
STDERR: 	5   libwebkit.dylib                     0x574c6094 WebCore::V8DOMWindowShell::enteredIsolatedContextData() + 180
STDERR: 	6   libwebkit.dylib                     0x575b658a WebCore::V8XMLHttpRequest::constructorCallback(v8::Arguments const&amp;) + 186
STDERR: 	7   libv8.dylib                         0x5d340f92 v8::internal::MaybeObject* v8::internal::HandleApiCallHelper&lt;true&gt;(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*) + 1602
STDERR: 	8   libv8.dylib                         0x5d34091a v8::internal::Builtin_Impl_HandleApiCallConstruct(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*) + 74
STDERR: 	9   libv8.dylib                         0x5d3374ac v8::internal::Builtin_HandleApiCallConstruct(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*) + 172
STDERR: 	10  ???                                 0x51f0a336 0x0 + 1374724918
STDERR: ax: bbadbeef, bx: 5d337400, cx: 5b30e34c, dx: 5b30e34c
STDERR: di: 58842c8e, si: 58842c17, bp: b2a10108, sp: b2a100d0, ss: 23, flags: 10282
STDERR: ip: 5751c3b1, cs: 1b, ds: 23, es: 23, fs: 23, gs: f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731237</commentid>
    <comment_count>37</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-29 13:22:29 -0700</bug_when>
    <thetext>Sounds like we should roll it out.  It&apos;s not quite working right for workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731239</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-29 13:24:49 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 97970</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731298</commentid>
    <comment_count>39</comment_count>
      <attachid>166385</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-30 08:53:05 -0700</bug_when>
    <thetext>Created attachment 166385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731299</commentid>
    <comment_count>40</comment_count>
      <attachid>166385</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-30 08:54:18 -0700</bug_when>
    <thetext>Comment on attachment 166385
Patch

replaced failing assert with if clause</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731301</commentid>
    <comment_count>41</comment_count>
      <attachid>166385</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-30 08:57:22 -0700</bug_when>
    <thetext>Comment on attachment 166385
Patch

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

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:180
&gt; +    if (innerGlobal-&gt;InternalFieldCount() &lt; V8DOMWindow::enteredIsolatedWorldIndex)

This is really fragile. There&apos;s no guarantee that the innerGlobal for a WorkerContext will have fewer internal fields than the innerGlobal for a DOMWindow.

It looks like this function used to only be called on the main thread. We probably need to avoid calling it on worker threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731303</commentid>
    <comment_count>42</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-30 09:12:14 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 166385 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166385&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:180
&gt; &gt; +    if (innerGlobal-&gt;InternalFieldCount() &lt; V8DOMWindow::enteredIsolatedWorldIndex)
&gt; 
&gt; This is really fragile. There&apos;s no guarantee that the innerGlobal for a WorkerContext will have fewer internal fields than the innerGlobal for a DOMWindow.
&gt; 
&gt; It looks like this function used to only be called on the main thread. We probably need to avoid calling it on worker threads.

I&apos;m not positive, but I believe it has always been used on both worker and main threads.  In the stack trace above, for instance, it is can called from a worked thread or a main thread.

I can change the if clause to check if we&apos;re on the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731306</commentid>
    <comment_count>43</comment_count>
      <attachid>166385</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-30 09:33:12 -0700</bug_when>
    <thetext>Comment on attachment 166385
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:180
&gt;&gt;&gt; +    if (innerGlobal-&gt;InternalFieldCount() &lt; V8DOMWindow::enteredIsolatedWorldIndex)
&gt;&gt; 
&gt;&gt; This is really fragile. There&apos;s no guarantee that the innerGlobal for a WorkerContext will have fewer internal fields than the innerGlobal for a DOMWindow.
&gt;&gt; 
&gt;&gt; It looks like this function used to only be called on the main thread. We probably need to avoid calling it on worker threads.
&gt; 
&gt; I&apos;m not positive, but I believe it has always been used on both worker and main threads.  In the stack trace above, for instance, it is can called from a worked thread or a main thread.
&gt; 
&gt; I can change the if clause to check if we&apos;re on the main thread?

The static_cast&lt;V8DOMWindowShell*&gt; would have been problematic on a worker thread because V8DOMWindowShell* is a main-thread only class.  Maybe we introduced this bug in a previous patch and didn&apos;t notice?

&gt; Source/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp:-59
&gt; -    if (V8DOMWindowShell* isolatedWorldShell = V8DOMWindowShell::getEntered())
&gt; -        securityOrigin = isolatedWorldShell-&gt;isolatedWorldSecurityOrigin();

Yes, this one looks problematic.  This function can be called on a worker thread.  You can add a check here for context-&gt;isDocument().  There&apos;s no need to look for isolatedWorldSecurityOrigin if we&apos;re not on the main thread (i.e., if context-&gt;isDocument() is false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731811</commentid>
    <comment_count>44</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-01 11:05:07 -0700</bug_when>
    <thetext>&gt; 
&gt; The static_cast&lt;V8DOMWindowShell*&gt; would have been problematic on a worker thread because V8DOMWindowShell* is a main-thread only class.  Maybe we introduced this bug in a previous patch and didn&apos;t notice?

It&apos;s certainly possible, and I&apos;m wondering if it&apos;s related to http://code.google.com/p/chromium/issues/detail?id=150737#c36

I feel like I need to replicate the logic in WorldContextHandle:: WorldContextHandle but I&apos;m not convinced at the moment that this is even the correct logic.  Do you know if there is a better way to check if a context is a worker thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731846</commentid>
    <comment_count>45</comment_count>
      <attachid>166385</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-01 11:46:11 -0700</bug_when>
    <thetext>Comment on attachment 166385
Patch

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

&gt; Source/WebCore/bindings/v8/WorldContextHandle.cpp:58
&gt; +        return;

In the worker case, it looks like we&apos;ll return early here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771904</commentid>
    <comment_count>46</comment_count>
      <attachid>175227</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-20 08:51:09 -0800</bug_when>
    <thetext>Created attachment 175227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771905</commentid>
    <comment_count>47</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-20 08:51:41 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; Created an attachment (id=175227) [details]
&gt; Patch

This patch got a lot simpler due to recent refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771945</commentid>
    <comment_count>48</comment_count>
      <attachid>175227</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-20 09:49:08 -0800</bug_when>
    <thetext>Comment on attachment 175227
Patch

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

Very nice.

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.h:58
&gt; +

By the way, is there a reason we have:

class DOMWrapperWorld : public WTF::RefCountedBase

The normal pattern is

class DOMWrapperWorld : public RefCounted&lt;DOMWrapperWorld&gt;

Sorry if I asked you that before and forgot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771976</commentid>
    <comment_count>49</comment_count>
      <attachid>175227</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 10:27:12 -0800</bug_when>
    <thetext>Comment on attachment 175227
Patch

Clearing flags on attachment: 175227

Committed r135293: &lt;http://trac.webkit.org/changeset/135293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771977</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 10:27:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772092</commentid>
    <comment_count>51</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-20 12:33:06 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (From update of attachment 175227 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175227&amp;action=review
&gt; 
&gt; Very nice.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMWrapperWorld.h:58
&gt; &gt; +
&gt; 
&gt; By the way, is there a reason we have:
&gt; 
&gt; class DOMWrapperWorld : public WTF::RefCountedBase
&gt; 
&gt; The normal pattern is
&gt; 
&gt; class DOMWrapperWorld : public RefCounted&lt;DOMWrapperWorld&gt;
&gt; 
&gt; Sorry if I asked you that before and forgot.


I think there was an edge case when I started all this refactored where the main world could be deleted or something, and this was the only way to intercept the destructor. I should have added a FIXME when I added it. Anyway, it can be removed now. I&apos;ll submit a fix tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772127</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 13:43:07 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 102832</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772131</commentid>
    <comment_count>53</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-11-20 13:44:47 -0800</bug_when>
    <thetext>This seems to cause crash to some layout tests:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=http%2Ftests%2Fsecurity%2FisolatedWorld%2Fclick-event.html%2Chttp%2Ftests%2Fsecurity%2FisolatedWorld%2Fworld-reuse.html%2Chttp%2Ftests%2Fsecurity%2FisolatedWorld%2Fglobal-variables.html%2Chttp%2Ftests%2Fsecurity%2FisolatedWorld%2Fdocument-open.html%2Chttp%2Ftests%2Fsecurity%2FisolatedWorld%2FdidClearWindowObject.html%2Chttp%2Ftests%2Fsecurity%2FisolatedWorld%2Fwindow-properties.html

crash log for DumpRenderTree (pid 3180):
STDOUT: V8 error: Cannot create a handle without a HandleScope (v8::HandleScope::CreateHandle()).  Current memory usage: 71 MB
STDERR: Backtrace:
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x61D4ED67+17012663]
STDERR: 	v8::Testing::operator= [0x6C804811+3761]
STDERR: 	v8::Locker::StopPreemption [0x6C898FCE+376158]
STDERR: 	v8::Testing::DeoptimizeAll [0x6C83AC18+34408]
STDERR: 	v8::Testing::DeoptimizeAll [0x6C835DC0+14352]
STDERR: 	v8::Context::SlowGetEmbedderData [0x6C80717F+1135]
STDERR: 	v8::Context::SlowGetAlignedPointerFromEmbedderData [0x6C807E1B+59]
STDERR: 	v8::Isolate::Scope::Scope [0x6C80355A+8832]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x617871E8+10951736]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772983</commentid>
    <comment_count>54</comment_count>
      <attachid>175227</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-21 08:04:29 -0800</bug_when>
    <thetext>Comment on attachment 175227
Patch

rollback error may not have been caused by this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772984</commentid>
    <comment_count>55</comment_count>
      <attachid>175227</attachid>
    <who name="">jochen</who>
    <bug_when>2012-11-21 08:05:54 -0800</bug_when>
    <thetext>Comment on attachment 175227
Patch

I couldn&apos;t reproduce the failure myself, and some other patch was also rolled back with the same backtrace as reason. Let&apos;s just give it another try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772986</commentid>
    <comment_count>56</comment_count>
      <attachid>175227</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 08:07:41 -0800</bug_when>
    <thetext>Comment on attachment 175227
Patch

Rejecting attachment 175227 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
pp
Hunk #1 succeeded at 94 (offset -98 lines).
Hunk #2 succeeded at 106 (offset -98 lines).
Hunk #3 succeeded at 211 (offset -98 lines).
Hunk #4 succeeded at 221 (offset -98 lines).
patching file Source/WebCore/bindings/v8/V8DOMWindowShell.h
patching file Source/WebCore/bindings/v8/V8PerContextData.h
patching file Source/WebCore/bindings/v8/WorldContextHandle.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/14898038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773436</commentid>
    <comment_count>57</comment_count>
      <attachid>175552</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-21 17:21:48 -0800</bug_when>
    <thetext>Created attachment 175552
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773439</commentid>
    <comment_count>58</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-21 17:22:52 -0800</bug_when>
    <thetext>I have attempted to rebase this patch to HEAD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773451</commentid>
    <comment_count>59</comment_count>
      <attachid>175552</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 17:53:45 -0800</bug_when>
    <thetext>Comment on attachment 175552
Patch for landing

Rejecting attachment 175552 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14968169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773600</commentid>
    <comment_count>60</comment_count>
      <attachid>175552</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 23:05:29 -0800</bug_when>
    <thetext>Comment on attachment 175552
Patch for landing

Clearing flags on attachment: 175552

Committed r135479: &lt;http://trac.webkit.org/changeset/135479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773601</commentid>
    <comment_count>61</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 23:05:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774325</commentid>
    <comment_count>62</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-23 02:16:59 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774326</commentid>
    <comment_count>63</comment_count>
      <attachid>175757</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-23 02:17:07 -0800</bug_when>
    <thetext>Created attachment 175757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774446</commentid>
    <comment_count>64</comment_count>
      <attachid>175757</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-23 04:54:14 -0800</bug_when>
    <thetext>Comment on attachment 175757
Patch

windows 7 debug issue probably fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774482</commentid>
    <comment_count>65</comment_count>
      <attachid>175757</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-23 05:45:13 -0800</bug_when>
    <thetext>Comment on attachment 175757
Patch

Clearing flags on attachment: 175757

Committed r135601: &lt;http://trac.webkit.org/changeset/135601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774483</commentid>
    <comment_count>66</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-23 05:45:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163847</attachid>
            <date>2012-09-13 05:33:20 -0700</date>
            <delta_ts>2012-09-14 00:13:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20120913143252.patch</filename>
            <type>text/plain</type>
            <size>22926</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWYxN2M3OGIzYTEzZjI5
YzBlMDIxNzNiMjM0ZGM1YzIzNzYxYzcwYy4uNDE2ZTZiODY5ODE1ZjAxYWU3YjVkYmE0MzRiNWM1
Y2NjYjViMzQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTEzICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQgd2FzIHJlZmFjdG9yZWQgc28g
dGhhdCB0aGUgd2luZG93IHNoZWxsCisgICAgICAgIG5vIGxvbmdlciBoYXMgdG8gYmUga2VwdCBh
bGl2ZSBieSBhIHY4IGNvbnRleHQgYnV0IHJhdGhlciBhIHNtYWxsZXIKKyAgICAgICAgb2JqZWN0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TURhdGE6OmdldEN1cnJlbnRTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NvcGVkUGVy
c2lzdGVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGVyc2lzdGVudDo6Y2xlYXJXZWFr
KToKKyAgICAgICAgKFNjb3BlZFBlcnNpc3RlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
cmVzZXRJc29sYXRlZFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29udGV4dERhdGFGb3JDdXJyZW50V29y
bGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6Omlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpWOERP
TVdpbmRvd1NoZWxsOjpjbGVhcklzb2xhdGVkU2hlbGwpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjppbml0aWFsaXplSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmg6Cisg
ICAgICAgIChWOERPTVdpbmRvd1NoZWxsKToKKyAgICAgICAgKElzb2xhdGVkQ29udGV4dERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVk
Q29udGV4dERhdGE6OndvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6
Oklzb2xhdGVkQ29udGV4dERhdGE6OnBlckNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OnNldFNlY3VyaXR5T3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERh
dGE6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6
Oklzb2xhdGVkQ29udGV4dERhdGE6Oklzb2xhdGVkQ29udGV4dERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0YSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1dvcmxkQ29udGV4dEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JsZENvbnRleHRI
YW5kbGU6OldvcmxkQ29udGV4dEhhbmRsZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisKIDIwMTIt
MDktMTMgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+
CiAKICAgICAgICAgW0VGTF0gUkVHUkVTU0lPTiAocjEyODI3NCk6IGZhc3Qvb3ZlcmZsb3cvb3Zl
cmZsb3ctaGVpZ2h0LWZsb2F0LW5vdC1yZW1vdmVkLWNyYXNoLmh0bWwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NRGF0YS5jcHAKaW5kZXggYWY1MGExZWNhM2FiMjE1ODFhYmQ2NGFhMDBmZjVh
ZjMzOGNiYjk3ZC4uN2NjMjRiYzM4NjFiNmFiMjhkYzQzYTZjYzQ2ODg3MDk3NDkyMjg0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgRE9N
RGF0YVN0b3JlJiBET01EYXRhOjpnZXRDdXJyZW50U3RvcmUodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQo
aXNvbGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKGRhdGEtPmRvbURhdGFTdG9yZSgpICE9IDApKQog
ICAgICAgICByZXR1cm4gKmRhdGEtPmRvbURhdGFTdG9yZSgpOwotICAgIFY4RE9NV2luZG93U2hl
bGwqIGNvbnRleHQgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCk7Ci0gICAgaWYgKFVO
TElLRUxZKGNvbnRleHQgIT0gMCkpCi0gICAgICAgIHJldHVybiAqY29udGV4dC0+d29ybGQoKS0+
ZG9tRGF0YVN0b3JlKCk7CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0
YSogaXNvbGF0ZWREYXRhID0gVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4
dERhdGEoKTsKKyAgICBpZiAoVU5MSUtFTFkoISFpc29sYXRlZERhdGEpKQorICAgICAgICByZXR1
cm4gKmlzb2xhdGVkRGF0YS0+d29ybGQoKS0+ZG9tRGF0YVN0b3JlKCk7CiAgICAgcmV0dXJuIGRl
ZmF1bHRTdG9yZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NvcGVkUGVyc2lzdGVudC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkUGVy
c2lzdGVudC5oCmluZGV4IGZjY2Y0YWE1OWI4ODljOWUyMTY2NjkxOGJlNjRmZjY2ZGUwNWUxNDEu
LmE2NzVjYTkzMGIyNjhlODRlMDM3NWFiNjg5NDJhY2EyZDE4YWMyMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0ZW50LmgKQEAgLTc4LDYgKzc4LDEzIEBA
IHB1YmxpYzoKICAgICAgICAgbV9oYW5kbGUuQ2xlYXIoKTsKICAgICB9CiAKKyAgICB2b2lkIGNs
ZWFyV2Vhayh2b2lkKiBwYXJhbWV0ZXIsIHY4OjpXZWFrUmVmZXJlbmNlQ2FsbGJhY2sgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBBU1NFUlQoIW1faGFuZGxlLklzRW1wdHkoKSk7CisgICAgICAg
IG1faGFuZGxlLk1ha2VXZWFrKHBhcmFtZXRlciwgY2FsbGJhY2spOworICAgICAgICBtX2hhbmRs
ZS5DbGVhcigpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2ODo6UGVyc2lzdGVudDxUPiBtX2hh
bmRsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDIxMWJhOTQ3YTE3MjcxZmE2M2QzOTgxN2ZiNjhlYjlkYzA5NGExODQuLmFj
YzczMTljMmVhNjgzMWNkMzllZjlhYTI1ZDcyODQ5NWU1NzU4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDgg
QEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpyZXNldElzb2xhdGVkV29ybGRzKCkKIHsKICAgICBm
b3IgKElzb2xhdGVkV29ybGRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2lzb2xhdGVkV29ybGRzLmJl
Z2luKCk7CiAgICAgICAgICBpdGVyICE9IG1faXNvbGF0ZWRXb3JsZHMuZW5kKCk7ICsraXRlcikg
ewotICAgICAgICBpdGVyLT5zZWNvbmQtPmRlc3Ryb3lJc29sYXRlZFNoZWxsKCk7CisgICAgICAg
IGl0ZXItPnNlY29uZC0+Y2xlYXJJc29sYXRlZFNoZWxsKCk7CisgICAgICAgIGRlbGV0ZSBpdGVy
LT5zZWNvbmQ7CiAgICAgfQogICAgIG1faXNvbGF0ZWRXb3JsZHMuY2xlYXIoKTsKICAgICBtX2lz
b2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbnMuY2xlYXIoKTsKQEAgLTM4OSwxMSArMzkwLDEyIEBA
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbklzb2xhdGVkV29ybGQoaW50IHdvcmxk
SUQsIGNvbnN0IFZlY3RvcjxTY3JpcHRTCiAgICAgICAgICAgICByZXN1bHRBcnJheS0+U2V0KGks
IGV2YWx1YXRpb25SZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gTWFyayB0ZW1wb3Jh
cnkgc2hlbGwgZm9yIHdlYWsgZGVzdHJ1Y3Rpb24uCisgICAgICAgIC8vIERlc3Ryb3kgdGVtcG9y
YXJ5IHdvcmxkLgogICAgICAgICBpZiAod29ybGRJRCA9PSBET01XcmFwcGVyV29ybGQ6OnVuaW5p
dGlhbGl6ZWRXb3JsZElkKSB7CiAgICAgICAgICAgICBpbnQgYWN0dWFsV29ybGRJZCA9IGlzb2xh
dGVkV29ybGRTaGVsbC0+d29ybGQoKS0+d29ybGRJZCgpOwogICAgICAgICAgICAgbV9pc29sYXRl
ZFdvcmxkcy5yZW1vdmUoYWN0dWFsV29ybGRJZCk7Ci0gICAgICAgICAgICBpc29sYXRlZFdvcmxk
U2hlbGwtPmRlc3Ryb3lJc29sYXRlZFNoZWxsKCk7CisgICAgICAgICAgICBpc29sYXRlZFdvcmxk
U2hlbGwtPmNsZWFySXNvbGF0ZWRTaGVsbCgpOworICAgICAgICAgICAgZGVsZXRlIGlzb2xhdGVk
V29ybGRTaGVsbDsKICAgICAgICAgfQogCiAgICAgICAgIHY4UmVzdWx0cyA9IGV2YWx1YXRlSGFu
ZGxlU2NvcGUuQ2xvc2UocmVzdWx0QXJyYXkpOwpAQCAtNDI4LDExICs0MzAsMTEgQEAgdm9pZCBT
Y3JpcHRDb250cm9sbGVyOjpmaW5pc2hlZFdpdGhFdmVudChFdmVudCogZXZlbnQpCiAKIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD4gU2NyaXB0Q29udHJvbGxlcjo6Y3VycmVudFdvcmxkQ29udGV4dCgp
CiB7Ci0gICAgaWYgKFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkU2hlbGwgPSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRl
eHQ+IGNvbnRleHQgPSBpc29sYXRlZFNoZWxsLT5jb250ZXh0KCk7Ci0gICAgICAgIGlmIChjb250
ZXh0LklzRW1wdHkoKSB8fCBtX2ZyYW1lICE9IHRvRnJhbWVJZk5vdERldGFjaGVkKGNvbnRleHQp
KQorICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gaXNvbGF0ZWRDb250ZXh0ID0gVjhET01XaW5k
b3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dCgpOworICAgIGlmIChVTkxJS0VMWSghaXNv
bGF0ZWRDb250ZXh0LklzRW1wdHkoKSkpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUgIT0gdG9GcmFt
ZUlmTm90RGV0YWNoZWQoaXNvbGF0ZWRDb250ZXh0KSkKICAgICAgICAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+KCk7Ci0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+OjpOZXcoY29udGV4dCk7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+
OjpOZXcoaXNvbGF0ZWRDb250ZXh0KTsKICAgICB9CiAgICAgd2luZG93U2hlbGwoKS0+aW5pdGlh
bGl6ZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyh3
aW5kb3dTaGVsbCgpLT5jb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5jcHAKaW5kZXggNWM5MDQ2ZmRmNzc0YWZkMzQ3YTI0YmNiNmJhYTZjY2MxY2U4ZmNlZC4u
NWEyNWIzZTY4YzI0ODNkOTBjN2ViZWE2OThkOTliMDU3N2VmODZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC0zMTAsOSArMzEwLDkgQEAgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBXb3JsZEMKIAogVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGFGb3JDdXJy
ZW50V29ybGQoRnJhbWUqIGZyYW1lKQogewotICAgIFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVk
U2hlbGw7Ci0gICAgaWYgKFVOTElLRUxZKCEhKGlzb2xhdGVkU2hlbGwgPSBWOERPTVdpbmRvd1No
ZWxsOjpnZXRFbnRlcmVkKCkpKSkKLSAgICAgICAgcmV0dXJuIGlzb2xhdGVkU2hlbGwtPnBlckNv
bnRleHREYXRhKCk7CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSog
aXNvbGF0ZWRTaGVsbERhdGE7CisgICAgaWYgKFVOTElLRUxZKCEhKGlzb2xhdGVkU2hlbGxEYXRh
ID0gVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKSkpKQorICAg
ICAgICByZXR1cm4gaXNvbGF0ZWRTaGVsbERhdGEtPnBlckNvbnRleHREYXRhKCk7CiAgICAgcmV0
dXJuIGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+cGVyQ29udGV4dERhdGEoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApp
bmRleCA5ZmU2ZDdjZWFiOWVlYThlZDg2ZTRlYWM3YjFiOWE2MDBkNmI3NDUxLi5lMWI3MzVmODc1
NzFkYzI5YjNjNzEyMDUzMjczNDIzMzk3NDYzZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTcxLDE0ICsxNzEsMTQgQEAgc3Rh
dGljIHZvaWQgY2hlY2tEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyLCBEb2N1bWVudCogZG9jdW0KICAgICBBU1NFUlQoIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVu
dCgpIHx8IChWOERvY3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KHdyYXBwZXItPkdldFByb3RvdHlwZSgpKSkgPT0gZG9jdW1lbnQpKTsKIH0KIAotc3RhdGljIHZv
aWQgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKFY4RE9NV2luZG93U2hlbGwqIHNoZWxsLCB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCitzdGF0aWMgdm9pZCBzZXRJc29sYXRlZFdvcmxkRmll
bGQoVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogZGF0YSwgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiBjb250ZXh0KQogewotICAgIHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4
dCktPlNldFBvaW50ZXJJbkludGVybmFsRmllbGQoVjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRl
ZFdvcmxkSW5kZXgsIHNoZWxsKTsKKyAgICB0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5T
ZXRQb2ludGVySW5JbnRlcm5hbEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRXb3Js
ZEluZGV4LCBkYXRhKTsKIH0KIAotVjhET01XaW5kb3dTaGVsbCogVjhET01XaW5kb3dTaGVsbDo6
ZW50ZXJlZElzb2xhdGVkV29ybGRDb250ZXh0KCkKK1Y4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVk
Q29udGV4dERhdGEqIFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRh
KHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VjhET01XaW5kb3dTaGVsbCo+KHRvSW5uZXJHbG9iYWxPYmplY3Qodjg6OkNvbnRleHQ6Okdl
dEVudGVyZWQoKSktPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOERPTVdpbmRvdzo6ZW50
ZXJlZElzb2xhdGVkV29ybGRJbmRleCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJc29sYXRl
ZENvbnRleHREYXRhKj4odG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KS0+R2V0UG9pbnRlckZy
b21JbnRlcm5hbEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4KSk7
CiB9CiAKIHN0YXRpYyB2b2lkIHNldEluamVjdGVkU2NyaXB0Q29udGV4dERlYnVnSWQodjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gdGFyZ2V0Q29udGV4dCwgaW50IGRlYnVnSWQpCkBAIC0yMDgsMjAg
KzIwOCwxNCBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6OmlzQ29udGV4dEluaXRpYWxpemVkKCkK
ICAgICByZXR1cm4gIW1fY29udGV4dC5pc0VtcHR5KCk7CiB9CiAKLXZvaWQgVjhET01XaW5kb3dT
aGVsbDo6ZGVzdHJveUlzb2xhdGVkU2hlbGwoKQotewotICAgIGRpc3Bvc2VDb250ZXh0KHRydWUp
OwotfQotCiBzdGF0aWMgdm9pZCBpc29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2sodjg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKIHsKLSAgICAvLyBIYW5k
bGUgd2lsbCBiZSBkaXNwb3NlZCBpbiBkZWxldGUuCi0gICAgZGVsZXRlIHN0YXRpY19jYXN0PFY4
RE9NV2luZG93U2hlbGwqPihwYXJhbWV0ZXIpOworICAgIG9iamVjdC5EaXNwb3NlKCk7CisgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGEq
PihwYXJhbWV0ZXIpOwogfQogCi12b2lkIFY4RE9NV2luZG93U2hlbGw6OmRpc3Bvc2VDb250ZXh0
KGJvb2wgd2VhaykKK3ZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQoKQogewot
ICAgIEFTU0VSVCghbV9jb250ZXh0LmdldCgpLklzV2VhaygpKTsKICAgICBtX3BlckNvbnRleHRE
YXRhLmNsZWFyKCk7CiAKICAgICBpZiAobV9jb250ZXh0LmlzRW1wdHkoKSkKQEAgLTIyOSwxNCAr
MjIzLDE0IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQoYm9vbCB3ZWFr
KQogCiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT53aWxsUmVsZWFzZVNjcmlwdENv
bnRleHQobV9jb250ZXh0LmdldCgpLCBtX3dvcmxkLT53b3JsZElkKCkpOwogCi0gICAgaWYgKCF3
ZWFrKQotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICBlbHNlIHsKKyAgICBpZiAobV9p
c29sYXRlZENvbnRleHREYXRhKSB7CiAgICAgICAgIEFTU0VSVCghbV93b3JsZC0+aXNNYWluV29y
bGQoKSk7Ci0gICAgICAgIGRlc3Ryb3lHbG9iYWwoKTsKLSAgICAgICAgbV9mcmFtZSA9IDA7Ci0g
ICAgICAgIG1fY29udGV4dC5nZXQoKS5NYWtlV2Vhayh0aGlzLCBpc29sYXRlZENvbnRleHRXZWFr
Q2FsbGJhY2spOwotICAgIH0KKyAgICAgICAgLy8gSGVyZSB3ZSBtdXN0IGludGVudGlvbmFsbHkg
bGVhayB0aGUgcGVyIGNvbnRleHQgZGF0YSBwb2ludGVyIGFzIGl0IGdldHMgZGVsZXRlZCBpbiBp
c29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2suCisgICAgICAgIG1fY29udGV4dC5jbGVhcldlYWso
bV9pc29sYXRlZENvbnRleHREYXRhLmxlYWtQdHIoKSwgaXNvbGF0ZWRDb250ZXh0V2Vha0NhbGxi
YWNrKTsKKyAgICAgICAgLy8gVGhlIGdsb2JhbCBoYW5kbGUga2VlcHMgYSByZWZlcmVuY2UgdG8g
dGhlIGNvbnRleHQsIHNvIGl0IG11c3QgYmUgcmVtb3ZlZC4KKyAgICAgICAgbV9nbG9iYWwuY2xl
YXIoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7CiAKICAgICAvLyBJ
dCdzIGxpa2VseSB0aGF0IGRpc3Bvc2luZyB0aGUgY29udGV4dCBoYXMgY3JlYXRlZCBhIGxvdCBv
ZgogICAgIC8vIGdhcmJhZ2UuIE5vdGlmeSBWOCBhYm91dCB0aGlzIHNvIGl0J2xsIGhhdmUgYSBj
aGFuY2Ugb2YgY2xlYW5pbmcKQEAgLTI1Miw2ICsyNDYsMTEgQEAgdm9pZCBWOERPTVdpbmRvd1No
ZWxsOjpkZXN0cm95R2xvYmFsKCkKICAgICBtX2dsb2JhbC5jbGVhcigpOwogfQogCit2b2lkIFY4
RE9NV2luZG93U2hlbGw6OmNsZWFySXNvbGF0ZWRTaGVsbCgpCit7CisgICAgZGlzcG9zZUNvbnRl
eHQoKTsKK30KKwogdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjbGVhckZvckNsb3NlKCkKIHsKICAg
ICBpZiAobV9jb250ZXh0LmlzRW1wdHkoKSkKQEAgLTM0NiwxOSArMzQ1LDIwIEBAIGJvb2wgVjhE
T01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkKICAgICAgICAgfQogICAgIH0KIAor
ICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRhOjpjcmVhdGUobV9jb250ZXh0
LmdldCgpKTsKKyAgICBpZiAoIW1fcGVyQ29udGV4dERhdGEtPmluaXQoKSkgeworICAgICAgICBk
aXNwb3NlQ29udGV4dCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8g
RmxhZyBjb250ZXh0IGFzIGlzb2xhdGVkLgogICAgIGlmICghaXNNYWluV29ybGQpIHsKICAgICAg
ICAgVjhET01XaW5kb3dTaGVsbCogbWFpbldpbmRvdyA9IG1fZnJhbWUtPnNjcmlwdCgpLT53aW5k
b3dTaGVsbCgpOwogICAgICAgICBtYWluV2luZG93LT5pbml0aWFsaXplSWZOZWVkZWQoKTsKICAg
ICAgICAgaWYgKCFtYWluV2luZG93LT5jb250ZXh0KCkuSXNFbXB0eSgpKQogICAgICAgICAgICAg
c2V0SW5qZWN0ZWRTY3JpcHRDb250ZXh0RGVidWdJZChtX2NvbnRleHQuZ2V0KCksIG1fZnJhbWUt
PnNjcmlwdCgpLT5jb250ZXh0RGVidWdJZChtYWluV2luZG93LT5jb250ZXh0KCkpKTsKLSAgICAg
ICAgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKHRoaXMsIGNvbnRleHQpOwotICAgIH0KLQotICAgIG1f
cGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRhOjpjcmVhdGUobV9jb250ZXh0LmdldCgp
KTsKLSAgICBpZiAoIW1fcGVyQ29udGV4dERhdGEtPmluaXQoKSkgewotICAgICAgICBkaXNwb3Nl
Q29udGV4dCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1faXNvbGF0ZWRDb250
ZXh0RGF0YSA9IElzb2xhdGVkQ29udGV4dERhdGE6OmNyZWF0ZShtX3dvcmxkLmdldCgpLCBtX3Bl
ckNvbnRleHREYXRhLnJlbGVhc2UoKSwgbV9pc29sYXRlZFdvcmxkU2hlbGxTZWN1cml0eU9yaWdp
bi5nZXQoKSk7CisgICAgICAgIHNldElzb2xhdGVkV29ybGRGaWVsZChtX2lzb2xhdGVkQ29udGV4
dERhdGEuZ2V0KCksIGNvbnRleHQpOwogICAgIH0KIAogICAgIGlmICghaW5zdGFsbERPTVdpbmRv
dygpKSB7CkBAIC02MTgsNiArNjE4LDggQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpzZXRJc29s
YXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4KICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVJc29sYXRlZENvbnRleHQobV9m
cmFtZSwgc2NyaXB0U3RhdGUsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICB9CiAgICAgbV9p
c29sYXRlZFdvcmxkU2hlbGxTZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luOworICAgIGlm
IChtX2lzb2xhdGVkQ29udGV4dERhdGEpCisgICAgICAgIG1faXNvbGF0ZWRDb250ZXh0RGF0YS0+
c2V0U2VjdXJpdHlPcmlnaW4obV9pc29sYXRlZFdvcmxkU2hlbGxTZWN1cml0eU9yaWdpbi5nZXQo
KSk7CiB9CiAKIH0gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5oCmluZGV4IDAxZDI5ODE3ZmM4ZDMyMWNiMTRhMThlMDg2MzhlNDMyMmFk
NjlkZDguLmU1ZTZlNDZjYWUwNDYzMTY3MGFhZmFiMjA1OTUxYjlkOTEwOTg2NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKQEAgLTUzLDYgKzUz
LDMyIEBAIGNsYXNzIEhUTUxEb2N1bWVudDsKIC8vIHBlcnNpc3QgYmV0d2VlbiBuYXZpZ2F0aW9u
cy4KIGNsYXNzIFY4RE9NV2luZG93U2hlbGwgewogcHVibGljOgorCisgICAgLy8gVGhpcyBjbGFz
cyBob2xkcyBhbGwgdGhlIGRhdGEgdGhhdCBpcyBhY2Nlc3NpYmxlIGZyb20gYSBjb250ZXh0IGZv
ciBhbiBpc29sYXRlZCBzaGVsbC4KKyAgICAvLyBJdCBzdXJ2aXZlcyB1bnRpbCB0aGUgY29udGV4
dCBpcyBkZWxldGVkLgorICAgIGNsYXNzIElzb2xhdGVkQ29udGV4dERhdGEgeworICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJc29sYXRlZENvbnRleHREYXRhKTsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPElzb2xhdGVkQ29udGV4dERhdGE+IGNyZWF0ZShQYXNz
UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gd29ybGQsIFBhc3NPd25QdHI8VjhQZXJDb250ZXh0RGF0
YT4gcGVyQ29udGV4dERhdGEsCisgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgSXNvbGF0ZWRDb250ZXh0RGF0YSh3b3JsZCwgcGVyQ29udGV4dERhdGEsIHNlY3Vy
aXR5T3JpZ2luKSk7CisgICAgICAgIH0KKyAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgp
IHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KKyAgICAgICAgVjhQZXJDb250ZXh0RGF0YSogcGVy
Q29udGV4dERhdGEoKSB7IHJldHVybiBtX3BlckNvbnRleHREYXRhLmdldCgpOyB9CisgICAgICAg
IHZvaWQgc2V0U2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
KSB7IG1fc2VjdXJpdHlPcmlnaW4gPSBvcmlnaW47IH0KKyAgICAgICAgU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luKCkgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQorICAg
IHByaXZhdGU6CisgICAgICAgIElzb2xhdGVkQ29udGV4dERhdGEoUGFzc1JlZlB0cjxET01XcmFw
cGVyV29ybGQ+IHdvcmxkLCBQYXNzT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IHBlckNvbnRleHRE
YXRhLAorICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5
T3JpZ2luKQorICAgICAgICAgICAgOiBtX3dvcmxkKHdvcmxkKQorICAgICAgICAgICAgLCBtX3Bl
ckNvbnRleHREYXRhKHBlckNvbnRleHREYXRhKQorICAgICAgICAgICAgLCBtX3NlY3VyaXR5T3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKSB7IH0KKyAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4g
bV93b3JsZDsKKyAgICAgICAgT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IG1fcGVyQ29udGV4dERh
dGE7CisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAg
ICB9OworCiAgICAgc3RhdGljIFBhc3NPd25QdHI8VjhET01XaW5kb3dTaGVsbD4gY3JlYXRlKEZy
YW1lKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+KTsKIAogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpDb250ZXh0PiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CkBAIC03Niw2ICsxMDIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyRm9yTmF2aWdhdGlv
bigpOwogICAgIHZvaWQgY2xlYXJGb3JDbG9zZSgpOworICAgIHZvaWQgY2xlYXJJc29sYXRlZFNo
ZWxsKCk7CiAKICAgICB2b2lkIGRlc3Ryb3lHbG9iYWwoKTsKIApAQCAtOTAsMjkgKzExNywzNSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3Jp
Z2luLmdldCgpOwogICAgIH07CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBpc29sYXRlZCB3b3JsZCBh
c3NvY2lhdGVkIHdpdGgKLSAgICAvLyB2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpLiBCZWNhdXNl
IHdvcmxkcyBhcmUgaXNvbGF0ZWQsIHRoZSBlbnRpcmUKLSAgICAvLyBKYXZhU2NyaXB0IGNhbGwg
c3RhY2sgc2hvdWxkIGJlIGZyb20gdGhlIHNhbWUgaXNvbGF0ZWQgd29ybGQuCi0gICAgLy8gUmV0
dXJucyAwIGlmIHRoZSBlbnRlcmVkIGNvbnRleHQgaXMgZnJvbSB0aGUgbWFpbiB3b3JsZC4KLSAg
ICAvLwotICAgIC8vIEZJWE1FOiBDb25zaWRlciBlZGdlIGNhc2VzIHdpdGggRE9NIG11dGF0aW9u
IGV2ZW50cyB0aGF0IG1pZ2h0Ci0gICAgLy8gdmlvbGF0ZSB0aGlzIGludmFyaWFudC4KLSAgICAv
LwotICAgIC8vIEZJWE1FOiBUaGlzIGlzIHBvb3JseSBuYW1lZCBhZnRlciB0aGUgZGVsZXRpb24g
b2YgaXNvbGF0ZWQgY29udGV4dHMuCi0gICAgc3RhdGljIFY4RE9NV2luZG93U2hlbGwqIGdldEVu
dGVyZWQoKQorICAgIGlubGluZSBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBlbnRlcmVk
SXNvbGF0ZWRDb250ZXh0KCkKICAgICB7Ci0gICAgICAgIGlmICghRE9NV3JhcHBlcldvcmxkOjpp
c29sYXRlZFdvcmxkc0V4aXN0KCkpCisgICAgICAgIGlmIChMSUtFTFkoIURPTVdyYXBwZXJXb3Js
ZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKSkKKyAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+KCk7CisgICAgICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKKyAgICAgICAgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKTsK
KyAgICAgICAgSXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWRDb250ZXh0RGF0YSA9IGVudGVy
ZWRJc29sYXRlZENvbnRleHREYXRhKGNvbnRleHQpOworICAgICAgICBpZiAoTElLRUxZKCFpc29s
YXRlZENvbnRleHREYXRhKSkKKyAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+KCk7CisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIH0KKworICAgIGlubGluZSBzdGF0
aWMgSXNvbGF0ZWRDb250ZXh0RGF0YSogZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKQorICAg
IHsKKyAgICAgICAgaWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4
aXN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmICghdjg6OkNvbnRleHQ6
OkluQ29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBlbnRl
cmVkSXNvbGF0ZWRXb3JsZENvbnRleHQoKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKTsKKyAgICAgICAgSXNvbGF0ZWRD
b250ZXh0RGF0YSogaXNvbGF0ZWRDb250ZXh0RGF0YSA9IGVudGVyZWRJc29sYXRlZENvbnRleHRE
YXRhKGNvbnRleHQpOworICAgICAgICBpZiAoTElLRUxZKCFpc29sYXRlZENvbnRleHREYXRhKSkK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gaXNvbGF0ZWRDb250ZXh0RGF0
YTsKICAgICB9Ci0KLSAgICB2b2lkIGRlc3Ryb3lJc29sYXRlZFNoZWxsKCk7CiBwcml2YXRlOgog
ICAgIFY4RE9NV2luZG93U2hlbGwoRnJhbWUqLCBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4p
OwogCi0gICAgdm9pZCBkaXNwb3NlQ29udGV4dChib29sIHdlYWsgPSBmYWxzZSk7CisgICAgdm9p
ZCBkaXNwb3NlQ29udGV4dCgpOwogCiAgICAgdm9pZCBzZXRTZWN1cml0eVRva2VuKCk7CiAKQEAg
LTEyNiwxMiArMTU5LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVDb250ZXh0KCk7CiAg
ICAgYm9vbCBpbnN0YWxsRE9NV2luZG93KCk7CiAKLSAgICBzdGF0aWMgVjhET01XaW5kb3dTaGVs
bCogZW50ZXJlZElzb2xhdGVkV29ybGRDb250ZXh0KCk7CisgICAgc3RhdGljIElzb2xhdGVkQ29u
dGV4dERhdGEqIGVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4pOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4g
bV93b3JsZDsKIAogICAgIE93blB0cjxWOFBlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRh
OworICAgIE93blB0cjxJc29sYXRlZENvbnRleHREYXRhPiBtX2lzb2xhdGVkQ29udGV4dERhdGE7
CiAKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgU2Nv
cGVkUGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX2dsb2JhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggYWQxYmNhZmQ5Y2UwZGNjMWUxYWQxN2FhNmVkNjFm
YzUyYmRiMDMxMC4uYzU0NWE4NjNkNzIwNTM4Y2QzZTRlM2I4ZDM2ZGM1NTlmYzZmYTcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTExOCwxNCArMTE4
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICp3
cmFwcGVyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBj
b250ZXh0ID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpOwotICAgICAgICAgICAgaWYg
KExJS0VMWSghY29udGV4dCkpIHsKKyAgICAgICAgICAgIFY4RE9NV2luZG93U2hlbGw6Oklzb2xh
dGVkQ29udGV4dERhdGEqIGlzb2xhdGVkRGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJ
c29sYXRlZENvbnRleHREYXRhKCk7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFpc29sYXRlZERh
dGEpKSB7CiAgICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIHdyYXBw
ZXIgPSBub2RlLT53cmFwcGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVyKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogICAgICAg
ICAgICAgICAgIHJldHVybiAqd3JhcHBlcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIERP
TURhdGFTdG9yZSogc3RvcmUgPSBjb250ZXh0LT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKKyAg
ICAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBpc29sYXRlZERhdGEtPndvcmxkKCktPmRv
bURhdGFTdG9yZSgpOwogICAgICAgICAgICAgRE9NTm9kZU1hcHBpbmcmIGRvbU5vZGVNYXAgPSBu
b2RlLT5pc0FjdGl2ZU5vZGUoKSA/IHN0b3JlLT5hY3RpdmVEb21Ob2RlTWFwKCkgOiBzdG9yZS0+
ZG9tTm9kZU1hcCgpOwogICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVNYXAuZ2V0KG5vZGUpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENv
bnRleHRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0
SGFuZGxlLmNwcAppbmRleCAxODAyODBhYmMxYzEzMzkzN2ViMTU0NTI4MzIwN2Q3ZTcwYjVjMWQ0
Li4wNjlhYzM2MTU5NTgwMTEzMTk1NjM4YjE1ZTA4OTIxMGE0YzNjMTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKQEAgLTQyLDE0
ICs0MiwxMyBAQCBXb3JsZENvbnRleHRIYW5kbGU6OldvcmxkQ29udGV4dEhhbmRsZShXb3JsZFRv
VXNlIHdvcmxkVG9Vc2UpCiAgICAgaWYgKHdvcmxkVG9Vc2UgPT0gVXNlTWFpbldvcmxkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBWOERPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IFY4RE9NV2luZG93
U2hlbGw6OmdldEVudGVyZWQoKTsKLSAgICBpZiAoTElLRUxZKCFzaGVsbCkpIHsKKyAgICB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGlzb2xhdGVkQ29udGV4dCA9IFY4RE9NV2luZG93U2hlbGw6OmVu
dGVyZWRJc29sYXRlZENvbnRleHQoKTsKKyAgICBpZiAoTElLRUxZKGlzb2xhdGVkQ29udGV4dC5J
c0VtcHR5KCkpKSB7CiAgICAgICAgIG1fd29ybGRUb1VzZSA9IFVzZU1haW5Xb3JsZDsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCghc2hlbGwtPmNvbnRleHQoKS5Jc0VtcHR5
KCkpOwotICAgIG1fY29udGV4dCA9IFNoYXJlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+OjpjcmVh
dGUoc2hlbGwtPmNvbnRleHQoKSk7CisgICAgbV9jb250ZXh0ID0gU2hhcmVkUGVyc2lzdGVudDx2
ODo6Q29udGV4dD46OmNyZWF0ZShpc29sYXRlZENvbnRleHQpOwogfQogCiB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IFdvcmxkQ29udGV4dEhhbmRsZTo6YWRqdXN0ZWRDb250ZXh0KFNjcmlwdENvbnRy
b2xsZXIqIHNjcmlwdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBkNjg1N2JiOTY2NjA4ODhjZTZl
ZTkwZWJjNzk4YmNhOGRmZDIzZDM2Li5kYTQyMzZjOTdmZGU0YWJiMDQwNzBkOWZiY2U1ZTc4NmNm
MzliMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
b2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXgKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERvY3VtZW50
Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOwog
ICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAg
aWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKKyAgICBpZiAoVjhET01XaW5k
b3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dCgpLklzRW1wdHkoKSkgewogICAgICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gaW1wbC0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5zY3Jp
cHQoKS0+d2luZG93U2hlbGwoKS0+dXBkYXRlRG9jdW1lbnRXcmFwcGVyKHdyYXBwZXIpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxE
b2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGU1MGEyNjAzZTQ0N2ExZjYzNGM5YjZmM2E5YmNj
ODhhODI0ODNhZDYuLjBlN2EzYWQxMzhlYWYyYjg1ZGE4ZDk3YTVmOTNlMTE1OWQxMDBkOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KEhUTUxEb2N1bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhIVE1MRG9jdW1l
bnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7
CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAg
ICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkgeworICAgIGlmIChWOERPTVdp
bmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0KCkuSXNFbXB0eSgpKSB7CiAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQogICAgICAgICAgICAgZnJhbWUtPnNj
cmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdyYXBwZXIod3JhcHBlcik7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZH
RG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGRhMTY2YTdhZmZmM2I3YWM1OTVhMDI4MmJlZWY5
NzU4MGU1Y2E4M2YuLmJmNDdkNWY3NGQ1YjA5OTJhOTc4YmM1MTZmNzk0M2M1OWIzZDZhZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdE
b2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoU1ZHRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b24KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOFNWR0RvY3VtZW50Ojp3
cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOwogICAg
IGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYg
KCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKKyAgICBpZiAoVjhET01XaW5kb3dT
aGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dCgpLklzRW1wdHkoKSkgewogICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gaW1wbC0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQo
KS0+d2luZG93U2hlbGwoKS0+dXBkYXRlRG9jdW1lbnRXcmFwcGVyKHdyYXBwZXIpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBS
ZXF1ZXN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDUwYjdmYjRkMzg2YTcxZjk3
Y2JlYTRhOTU5ZTEyYmFmN2E3NzkzYi4uZTk0ODVmOTFhMDZjYzRhYmVkMGVkYTk2NWY4ZWM2YmM1
N2YyN2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTU1LDggKzU1
LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCiAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKLSAgICBpZiAoVjhET01XaW5kb3dTaGVsbCog
aXNvbGF0ZWRXb3JsZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKQotICAg
ICAgICBzZWN1cml0eU9yaWdpbiA9IGlzb2xhdGVkV29ybGRTaGVsbC0+aXNvbGF0ZWRXb3JsZFNl
Y3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4
dERhdGEqIGlzb2xhdGVkQ29udGV4dERhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNv
bGF0ZWRDb250ZXh0RGF0YSgpKQorICAgICAgICBzZWN1cml0eU9yaWdpbiA9IGlzb2xhdGVkQ29u
dGV4dERhdGEtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+
IHhtbEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzZWN1cml0
eU9yaWdpbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164063</attachid>
            <date>2012-09-14 00:14:04 -0700</date>
            <delta_ts>2012-09-17 02:19:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20120914091335.patch</filename>
            <type>text/plain</type>
            <size>22775</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZhNTNlNjVjMDk1MWIy
YTM3NDRlNWViMmRlZjFjZDRkZWNmYjJhYi4uZGM1YWJiMzUyN2Q4MjI4YmFhNWNjMTM4NWRiMjM5
NjY3YTY0MDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTE0ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCB3YXMgcmVmYWN0b3JlZCBzbyB0aGF0
IHRoZSB3aW5kb3cgc2hlbGwKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyB0byBiZSBrZXB0IGFsaXZl
IGJ5IGEgdjggY29udGV4dCBidXQgcmF0aGVyIGEgc21hbGxlcgorICAgICAgICBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0
YTo6Z2V0Q3VycmVudFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQZXJzaXN0ZW50OjpsZWFrSGFuZGxlKToK
KyAgICAgICAgKFNjb3BlZFBlcnNpc3RlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cmVz
ZXRJc29sYXRlZFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29udGV4dERhdGFGb3JDdXJyZW50V29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpp
c29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5k
b3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6Y2xlYXJJc29sYXRlZFNoZWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAo
VjhET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHRE
YXRhOjp3b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdp
bmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZXRTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JsZENv
bnRleHRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ybGRDb250ZXh0SGFuZGxlOjpX
b3JsZENvbnRleHRIYW5kbGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorCiAyMDEyLTA5LTEzICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTI4NTUyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhLmNwcAppbmRleCBhZjUwYTFlY2EzYWIyMTU4MWFiZDY0YWEwMGZmNWFmMzM4Y2JiOTdkLi43
Y2MyNGJjMzg2MWI2YWIyOGRjNDNhNmNjNDY4ODcwOTc0OTIyODQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01EYXRhLmNwcApAQCAtNDMsOSArNDMsOSBAQCBET01EYXRhU3RvcmUmIERP
TURhdGE6OmdldEN1cnJlbnRTdG9yZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudChpc29sYXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoZGF0YS0+ZG9tRGF0YVN0b3JlKCkgIT0gMCkpCiAgICAgICAgIHJldHVy
biAqZGF0YS0+ZG9tRGF0YVN0b3JlKCk7Ci0gICAgVjhET01XaW5kb3dTaGVsbCogY29udGV4dCA9
IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoY29udGV4
dCAhPSAwKSkKLSAgICAgICAgcmV0dXJuICpjb250ZXh0LT53b3JsZCgpLT5kb21EYXRhU3RvcmUo
KTsKKyAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBpc29sYXRlZERh
dGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0YSgpOworICAg
IGlmIChVTkxJS0VMWSghIWlzb2xhdGVkRGF0YSkpCisgICAgICAgIHJldHVybiAqaXNvbGF0ZWRE
YXRhLT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKICAgICByZXR1cm4gZGVmYXVsdFN0b3JlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0ZW50LmgKaW5k
ZXggZmNjZjRhYTU5Yjg4OWM5ZTIxNjY2OTE4YmU2NGZmNjZkZTA1ZTE0MS4uOGE2ODVmOTc0YjJj
OGQ3NjdjYzVkNDlhYzU3ODE5MzVjOTg1YWY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaApAQCAtNzgsNiArNzgsMTMgQEAgcHVibGljOgogICAg
ICAgICBtX2hhbmRsZS5DbGVhcigpOwogICAgIH0KIAorICAgIHY4OjpQZXJzaXN0ZW50PFQ+IGxl
YWtIYW5kbGUoKQorICAgIHsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8VD4gaGFuZGxlID0gbV9o
YW5kbGU7CisgICAgICAgIG1faGFuZGxlLkNsZWFyKCk7CisgICAgICAgIHJldHVybiBoYW5kbGU7
CisgICAgfQorCiBwcml2YXRlOgogICAgIHY4OjpQZXJzaXN0ZW50PFQ+IG1faGFuZGxlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5k
ZXggMjExYmE5NDdhMTcyNzFmYTYzZDM5ODE3ZmI2OGViOWRjMDk0YTE4NC4uYWNjNzMxOWMyZWE2
ODMxY2QzOWVmOWFhMjVkNzI4NDk1ZTU3NTgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTE0Niw3ICsxNDYsOCBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OnJlc2V0SXNvbGF0ZWRXb3JsZHMoKQogewogICAgIGZvciAoSXNvbGF0
ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNvbGF0ZWRXb3JsZHMuYmVnaW4oKTsKICAg
ICAgICAgIGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkcy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAg
IGl0ZXItPnNlY29uZC0+ZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgaXRlci0+c2Vj
b25kLT5jbGVhcklzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgZGVsZXRlIGl0ZXItPnNlY29uZDsK
ICAgICB9CiAgICAgbV9pc29sYXRlZFdvcmxkcy5jbGVhcigpOwogICAgIG1faXNvbGF0ZWRXb3Js
ZFNlY3VyaXR5T3JpZ2lucy5jbGVhcigpOwpAQCAtMzg5LDExICszOTAsMTIgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJRCwgY29uc3Qg
VmVjdG9yPFNjcmlwdFMKICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5TZXQoaSwgZXZhbHVhdGlv
blJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBNYXJrIHRlbXBvcmFyeSBzaGVsbCBm
b3Igd2VhayBkZXN0cnVjdGlvbi4KKyAgICAgICAgLy8gRGVzdHJveSB0ZW1wb3Jhcnkgd29ybGQu
CiAgICAgICAgIGlmICh3b3JsZElEID09IERPTVdyYXBwZXJXb3JsZDo6dW5pbml0aWFsaXplZFdv
cmxkSWQpIHsKICAgICAgICAgICAgIGludCBhY3R1YWxXb3JsZElkID0gaXNvbGF0ZWRXb3JsZFNo
ZWxsLT53b3JsZCgpLT53b3JsZElkKCk7CiAgICAgICAgICAgICBtX2lzb2xhdGVkV29ybGRzLnJl
bW92ZShhY3R1YWxXb3JsZElkKTsKLSAgICAgICAgICAgIGlzb2xhdGVkV29ybGRTaGVsbC0+ZGVz
dHJveUlzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgICAgIGlzb2xhdGVkV29ybGRTaGVsbC0+Y2xl
YXJJc29sYXRlZFNoZWxsKCk7CisgICAgICAgICAgICBkZWxldGUgaXNvbGF0ZWRXb3JsZFNoZWxs
OwogICAgICAgICB9CiAKICAgICAgICAgdjhSZXN1bHRzID0gZXZhbHVhdGVIYW5kbGVTY29wZS5D
bG9zZShyZXN1bHRBcnJheSk7CkBAIC00MjgsMTEgKzQzMCwxMSBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmZpbmlzaGVkV2l0aEV2ZW50KEV2ZW50KiBldmVudCkKIAogdjg6OkxvY2FsPHY4OjpD
b250ZXh0PiBTY3JpcHRDb250cm9sbGVyOjpjdXJyZW50V29ybGRDb250ZXh0KCkKIHsKLSAgICBp
ZiAoVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6Omdl
dEVudGVyZWQoKSkgewotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gY29udGV4
dCA9IGlzb2xhdGVkU2hlbGwtPmNvbnRleHQoKTsKLSAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0
eSgpIHx8IG1fZnJhbWUgIT0gdG9GcmFtZUlmTm90RGV0YWNoZWQoY29udGV4dCkpCisgICAgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiBpc29sYXRlZENvbnRleHQgPSBWOERPTVdpbmRvd1NoZWxsOjpl
bnRlcmVkSXNvbGF0ZWRDb250ZXh0KCk7CisgICAgaWYgKFVOTElLRUxZKCFpc29sYXRlZENvbnRl
eHQuSXNFbXB0eSgpKSkgeworICAgICAgICBpZiAobV9mcmFtZSAhPSB0b0ZyYW1lSWZOb3REZXRh
Y2hlZChpc29sYXRlZENvbnRleHQpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
Q29udGV4dD4oKTsKLSAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhj
b250ZXh0KTsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhpc29s
YXRlZENvbnRleHQpOwogICAgIH0KICAgICB3aW5kb3dTaGVsbCgpLT5pbml0aWFsaXplSWZOZWVk
ZWQoKTsKICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KHdpbmRvd1NoZWxs
KCktPmNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApp
bmRleCA1YzkwNDZmZGY3NzRhZmQzNDdhMjRiY2I2YmFhNmNjYzFjZThmY2VkLi41YTI1YjNlNjhj
MjQ4M2Q5MGM3ZWJlYTY5OGQ5OWIwNTc3ZWY4NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHAKQEAgLTMxMCw5ICszMTAsOSBAQCB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdv
cmxkQwogCiBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YUZvckN1cnJlbnRXb3JsZChG
cmFtZSogZnJhbWUpCiB7Ci0gICAgVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbDsKLSAg
ICBpZiAoVU5MSUtFTFkoISEoaXNvbGF0ZWRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVu
dGVyZWQoKSkpKQotICAgICAgICByZXR1cm4gaXNvbGF0ZWRTaGVsbC0+cGVyQ29udGV4dERhdGEo
KTsKKyAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBpc29sYXRlZFNo
ZWxsRGF0YTsKKyAgICBpZiAoVU5MSUtFTFkoISEoaXNvbGF0ZWRTaGVsbERhdGEgPSBWOERPTVdp
bmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0YSgpKSkpCisgICAgICAgIHJldHVy
biBpc29sYXRlZFNoZWxsRGF0YS0+cGVyQ29udGV4dERhdGEoKTsKICAgICByZXR1cm4gZnJhbWUt
PnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT5wZXJDb250ZXh0RGF0YSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDlmZTZk
N2NlYWI5ZWVhOGVkODZlNGVhYzdiMWI5YTYwMGQ2Yjc0NTEuLjE1ZWI1MmZhNzM5NjIxOTdmMDUw
OTA4OWRiMjQ0NTNhNTQwZjcwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0xNzEsMTQgKzE3MSwxNCBAQCBzdGF0aWMgdm9pZCBj
aGVja0RvY3VtZW50V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIERvY3Vt
ZW50KiBkb2N1bQogICAgIEFTU0VSVCghZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkgfHwgKFY4
RG9jdW1lbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlci0+
R2V0UHJvdG90eXBlKCkpKSA9PSBkb2N1bWVudCkpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRJc29s
YXRlZFdvcmxkRmllbGQoVjhET01XaW5kb3dTaGVsbCogc2hlbGwsIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gY29udGV4dCkKK3N0YXRpYyB2b2lkIHNldElzb2xhdGVkV29ybGRGaWVsZChWOERPTVdp
bmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjb250ZXh0KQogewotICAgIHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4dCktPlNldFBv
aW50ZXJJbkludGVybmFsRmllbGQoVjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5k
ZXgsIHNoZWxsKTsKKyAgICB0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5TZXRQb2ludGVy
SW5JbnRlcm5hbEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4LCBk
YXRhKTsKIH0KIAotVjhET01XaW5kb3dTaGVsbCogVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElz
b2xhdGVkV29ybGRDb250ZXh0KCkKK1Y4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERh
dGEqIFY4RE9NV2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250ZXh0RGF0YSh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxWOERPTVdpbmRv
d1NoZWxsKj4odG9Jbm5lckdsb2JhbE9iamVjdCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKS0+
R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRX
b3JsZEluZGV4KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PElzb2xhdGVkQ29udGV4dERhdGEq
Pih0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5HZXRQb2ludGVyRnJvbUludGVybmFsRmll
bGQoVjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRDb250ZXh0RGVidWdJZCh2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiB0YXJnZXRDb250ZXh0LCBpbnQgZGVidWdJZCkKQEAgLTIwOCwyMCArMjA4LDE0IEBAIGJv
b2wgVjhET01XaW5kb3dTaGVsbDo6aXNDb250ZXh0SW5pdGlhbGl6ZWQoKQogICAgIHJldHVybiAh
bV9jb250ZXh0LmlzRW1wdHkoKTsKIH0KIAotdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkZXN0cm95
SXNvbGF0ZWRTaGVsbCgpCi17Ci0gICAgZGlzcG9zZUNvbnRleHQodHJ1ZSk7Ci19Ci0KIHN0YXRp
YyB2b2lkIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFs
dWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVyKQogewotICAgIC8vIEhhbmRsZSB3aWxsIGJlIGRp
c3Bvc2VkIGluIGRlbGV0ZS4KLSAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhET01XaW5kb3dTaGVs
bCo+KHBhcmFtZXRlcik7CisgICAgb2JqZWN0LkRpc3Bvc2UoKTsKKyAgICBkZWxldGUgc3RhdGlj
X2Nhc3Q8VjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSo+KHBhcmFtZXRlcik7
CiB9CiAKLXZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQoYm9vbCB3ZWFrKQor
dm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKCFt
X2NvbnRleHQuZ2V0KCkuSXNXZWFrKCkpOwogICAgIG1fcGVyQ29udGV4dERhdGEuY2xlYXIoKTsK
IAogICAgIGlmIChtX2NvbnRleHQuaXNFbXB0eSgpKQpAQCAtMjI5LDE0ICsyMjMsMTQgQEAgdm9p
ZCBWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dChib29sIHdlYWspCiAKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dChtX2NvbnRl
eHQuZ2V0KCksIG1fd29ybGQtPndvcmxkSWQoKSk7CiAKLSAgICBpZiAoIXdlYWspCi0gICAgICAg
IG1fY29udGV4dC5jbGVhcigpOwotICAgIGVsc2UgeworICAgIGlmIChtX2lzb2xhdGVkQ29udGV4
dERhdGEpIHsKICAgICAgICAgQVNTRVJUKCFtX3dvcmxkLT5pc01haW5Xb3JsZCgpKTsKLSAgICAg
ICAgZGVzdHJveUdsb2JhbCgpOwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICAgICAgbV9jb250
ZXh0LmdldCgpLk1ha2VXZWFrKHRoaXMsIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk7Ci0g
ICAgfQorICAgICAgICAvLyBIZXJlIHdlIG11c3QgaW50ZW50aW9uYWxseSBsZWFrIHRoZSBwZXIg
Y29udGV4dCBkYXRhIHBvaW50ZXIgYXMgaXQgZ2V0cyBkZWxldGVkIGluIGlzb2xhdGVkQ29udGV4
dFdlYWtDYWxsYmFjay4KKyAgICAgICAgbV9jb250ZXh0LmxlYWtIYW5kbGUoKS5NYWtlV2Vhayht
X2lzb2xhdGVkQ29udGV4dERhdGEubGVha1B0cigpLCBpc29sYXRlZENvbnRleHRXZWFrQ2FsbGJh
Y2spOworICAgICAgICAvLyBUaGUgZ2xvYmFsIGhhbmRsZSBrZWVwcyBhIHJlZmVyZW5jZSB0byB0
aGUgY29udGV4dCwgc28gaXQgbXVzdCBiZSByZW1vdmVkLgorICAgICAgICBtX2dsb2JhbC5jbGVh
cigpOworICAgIH0gZWxzZQorICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKIAogICAgIC8vIEl0
J3MgbGlrZWx5IHRoYXQgZGlzcG9zaW5nIHRoZSBjb250ZXh0IGhhcyBjcmVhdGVkIGEgbG90IG9m
CiAgICAgLy8gZ2FyYmFnZS4gTm90aWZ5IFY4IGFib3V0IHRoaXMgc28gaXQnbGwgaGF2ZSBhIGNo
YW5jZSBvZiBjbGVhbmluZwpAQCAtMjUyLDYgKzI0NiwxMSBAQCB2b2lkIFY4RE9NV2luZG93U2hl
bGw6OmRlc3Ryb3lHbG9iYWwoKQogICAgIG1fZ2xvYmFsLmNsZWFyKCk7CiB9CiAKK3ZvaWQgVjhE
T01XaW5kb3dTaGVsbDo6Y2xlYXJJc29sYXRlZFNoZWxsKCkKK3sKKyAgICBkaXNwb3NlQ29udGV4
dCgpOworfQorCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmNsZWFyRm9yQ2xvc2UoKQogewogICAg
IGlmIChtX2NvbnRleHQuaXNFbXB0eSgpKQpAQCAtMzQ2LDE5ICszNDUsMjAgQEAgYm9vbCBWOERP
TVdpbmRvd1NoZWxsOjppbml0aWFsaXplSWZOZWVkZWQoKQogICAgICAgICB9CiAgICAgfQogCisg
ICAgbV9wZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQu
Z2V0KCkpOworICAgIGlmICghbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7CisgICAgICAgIGRp
c3Bvc2VDb250ZXh0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBG
bGFnIGNvbnRleHQgYXMgaXNvbGF0ZWQuCiAgICAgaWYgKCFpc01haW5Xb3JsZCkgewogICAgICAg
ICBWOERPTVdpbmRvd1NoZWxsKiBtYWluV2luZG93ID0gbV9mcmFtZS0+c2NyaXB0KCktPndpbmRv
d1NoZWxsKCk7CiAgICAgICAgIG1haW5XaW5kb3ctPmluaXRpYWxpemVJZk5lZWRlZCgpOwogICAg
ICAgICBpZiAoIW1haW5XaW5kb3ctPmNvbnRleHQoKS5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBz
ZXRJbmplY3RlZFNjcmlwdENvbnRleHREZWJ1Z0lkKG1fY29udGV4dC5nZXQoKSwgbV9mcmFtZS0+
c2NyaXB0KCktPmNvbnRleHREZWJ1Z0lkKG1haW5XaW5kb3ctPmNvbnRleHQoKSkpOwotICAgICAg
ICBzZXRJc29sYXRlZFdvcmxkRmllbGQodGhpcywgY29udGV4dCk7Ci0gICAgfQotCi0gICAgbV9w
ZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OwotICAgIGlmICghbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7Ci0gICAgICAgIGRpc3Bvc2VD
b250ZXh0KCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9pc29sYXRlZENvbnRl
eHREYXRhID0gSXNvbGF0ZWRDb250ZXh0RGF0YTo6Y3JlYXRlKG1fd29ybGQsIG1fcGVyQ29udGV4
dERhdGEucmVsZWFzZSgpLCBtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luKTsKKyAg
ICAgICAgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKG1faXNvbGF0ZWRDb250ZXh0RGF0YS5nZXQoKSwg
Y29udGV4dCk7CiAgICAgfQogCiAgICAgaWYgKCFpbnN0YWxsRE9NV2luZG93KCkpIHsKQEAgLTYx
OCw2ICs2MTgsOCBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1
cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPgogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChtX2ZyYW1lLCBzY3JpcHRT
dGF0ZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAgIH0KICAgICBtX2lzb2xhdGVkV29ybGRT
aGVsbFNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW47CisgICAgaWYgKG1faXNvbGF0ZWRD
b250ZXh0RGF0YSkKKyAgICAgICAgbV9pc29sYXRlZENvbnRleHREYXRhLT5zZXRTZWN1cml0eU9y
aWdpbihtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luKTsKIH0KIAogfSAvLyBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKaW5k
ZXggMDFkMjk4MTdmYzhkMzIxY2IxNGExOGUwODYzOGU0MzIyYWQ2OWRkOC4uYWM4MjA2NGIxOWM1
MGRiZDJhNDc1ZWU1Yzc5N2I3NDM4YWNiZDAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaApAQCAtNTMsNiArNTMsMzQgQEAgY2xhc3MgSFRNTERv
Y3VtZW50OwogLy8gcGVyc2lzdCBiZXR3ZWVuIG5hdmlnYXRpb25zLgogY2xhc3MgVjhET01XaW5k
b3dTaGVsbCB7CiBwdWJsaWM6CisKKyAgICAvLyBUaGlzIGNsYXNzIGhvbGRzIGFsbCB0aGUgZGF0
YSB0aGF0IGlzIGFjY2Vzc2libGUgZnJvbSBhIGNvbnRleHQgZm9yIGFuIGlzb2xhdGVkIHNoZWxs
LgorICAgIC8vIEl0IHN1cnZpdmVzIHVudGlsIHRoZSBjb250ZXh0IGlzIGRlbGV0ZWQuCisgICAg
Y2xhc3MgSXNvbGF0ZWRDb250ZXh0RGF0YSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KElzb2xhdGVkQ29udGV4dERhdGEpOworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NP
d25QdHI8SXNvbGF0ZWRDb250ZXh0RGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiB3b3JsZCwgUGFzc093blB0cjxWOFBlckNvbnRleHREYXRhPiBwZXJDb250ZXh0RGF0YSwK
KyAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
bikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJc29sYXRlZENv
bnRleHREYXRhKHdvcmxkLCBwZXJDb250ZXh0RGF0YSwgc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAg
ICAgfQorICAgICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5n
ZXQoKTsgfQorICAgICAgICBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSgpIHsgcmV0
dXJuIG1fcGVyQ29udGV4dERhdGEuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRTZWN1cml0eU9y
aWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pIHsgbV9zZWN1cml0eU9yaWdp
biA9IG9yaWdpbjsgfQorICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSB7
IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBJc29sYXRlZENvbnRleHREYXRhKFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCwg
UGFzc093blB0cjxWOFBlckNvbnRleHREYXRhPiBwZXJDb250ZXh0RGF0YSwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCisgICAgICAgICAgICA6IG1fd29ybGQod29y
bGQpCisgICAgICAgICAgICAsIG1fcGVyQ29udGV4dERhdGEocGVyQ29udGV4dERhdGEpCisgICAg
ICAgICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIHsgfQor
CisgICAgICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CisgICAgICAgIE93blB0
cjxWOFBlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOworICAgICAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNz
T3duUHRyPFY4RE9NV2luZG93U2hlbGw+IGNyZWF0ZShGcmFtZSosIFBhc3NSZWZQdHI8RE9NV3Jh
cHBlcldvcmxkPik7CiAKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gY29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAtNzYsNiArMTA0LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhckZvck5hdmlnYXRpb24oKTsKICAgICB2b2lkIGNsZWFyRm9y
Q2xvc2UoKTsKKyAgICB2b2lkIGNsZWFySXNvbGF0ZWRTaGVsbCgpOwogCiAgICAgdm9pZCBkZXN0
cm95R2xvYmFsKCk7CiAKQEAgLTkwLDI5ICsxMTksMzYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9pc29sYXRlZFdvcmxkU2hlbGxTZWN1cml0eU9yaWdpbi5nZXQoKTsKICAgICB9OwogCi0g
ICAgLy8gUmV0dXJucyB0aGUgaXNvbGF0ZWQgd29ybGQgYXNzb2NpYXRlZCB3aXRoCi0gICAgLy8g
djg6OkNvbnRleHQ6OkdldEVudGVyZWQoKS4gQmVjYXVzZSB3b3JsZHMgYXJlIGlzb2xhdGVkLCB0
aGUgZW50aXJlCi0gICAgLy8gSmF2YVNjcmlwdCBjYWxsIHN0YWNrIHNob3VsZCBiZSBmcm9tIHRo
ZSBzYW1lIGlzb2xhdGVkIHdvcmxkLgotICAgIC8vIFJldHVybnMgMCBpZiB0aGUgZW50ZXJlZCBj
b250ZXh0IGlzIGZyb20gdGhlIG1haW4gd29ybGQuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogQ29u
c2lkZXIgZWRnZSBjYXNlcyB3aXRoIERPTSBtdXRhdGlvbiBldmVudHMgdGhhdCBtaWdodAotICAg
IC8vIHZpb2xhdGUgdGhpcyBpbnZhcmlhbnQuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogVGhpcyBp
cyBwb29ybHkgbmFtZWQgYWZ0ZXIgdGhlIGRlbGV0aW9uIG9mIGlzb2xhdGVkIGNvbnRleHRzLgot
ICAgIHN0YXRpYyBWOERPTVdpbmRvd1NoZWxsKiBnZXRFbnRlcmVkKCkKKyAgICBpbmxpbmUgc3Rh
dGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gZW50ZXJlZElzb2xhdGVkQ29udGV4dCgpCisgICAg
eworICAgICAgICBpZiAoTElLRUxZKCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhp
c3QoKSkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0PigpOworICAg
ICAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKKyAgICAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
Y29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7CisgICAgICAgIElzb2xhdGVkQ29u
dGV4dERhdGEqIGlzb2xhdGVkQ29udGV4dERhdGEgPSB0b0lzb2xhdGVkQ29udGV4dERhdGEoY29u
dGV4dCk7CisgICAgICAgIGlmIChMSUtFTFkoIWlzb2xhdGVkQ29udGV4dERhdGEpKQorICAgICAg
ICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKKyAgICAgICAgcmV0dXJuIGNv
bnRleHQ7CisgICAgfQorCisgICAgaW5saW5lIHN0YXRpYyBJc29sYXRlZENvbnRleHREYXRhKiBl
bnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0YSgpCiAgICAgewotICAgICAgICBpZiAoIURPTVdyYXBw
ZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKQorICAgICAgICBpZiAoTElLRUxZKCFET01X
cmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkpCiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGVudGVyZWRJc29sYXRlZFdvcmxkQ29udGV4dCgpOwor
ICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0
RW50ZXJlZCgpOworICAgICAgICBJc29sYXRlZENvbnRleHREYXRhKiBpc29sYXRlZENvbnRleHRE
YXRhID0gdG9Jc29sYXRlZENvbnRleHREYXRhKGNvbnRleHQpOworICAgICAgICBpZiAoTElLRUxZ
KCFpc29sYXRlZENvbnRleHREYXRhKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gaXNvbGF0ZWRDb250ZXh0RGF0YTsKICAgICB9CiAKLSAgICB2b2lkIGRlc3Ryb3lJc29s
YXRlZFNoZWxsKCk7CiBwcml2YXRlOgogICAgIFY4RE9NV2luZG93U2hlbGwoRnJhbWUqLCBQYXNz
UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4pOwogCi0gICAgdm9pZCBkaXNwb3NlQ29udGV4dChib29s
IHdlYWsgPSBmYWxzZSk7CisgICAgdm9pZCBkaXNwb3NlQ29udGV4dCgpOwogCiAgICAgdm9pZCBz
ZXRTZWN1cml0eVRva2VuKCk7CiAKQEAgLTEyNiwxMiArMTYyLDEzIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjcmVhdGVDb250ZXh0KCk7CiAgICAgYm9vbCBpbnN0YWxsRE9NV2luZG93KCk7CiAKLSAg
ICBzdGF0aWMgVjhET01XaW5kb3dTaGVsbCogZW50ZXJlZElzb2xhdGVkV29ybGRDb250ZXh0KCk7
CisgICAgc3RhdGljIElzb2xhdGVkQ29udGV4dERhdGEqIHRvSXNvbGF0ZWRDb250ZXh0RGF0YSh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogCiAgICAgT3duUHRyPFY4UGVyQ29udGV4dERh
dGE+IG1fcGVyQ29udGV4dERhdGE7CisgICAgT3duUHRyPElzb2xhdGVkQ29udGV4dERhdGE+IG1f
aXNvbGF0ZWRDb250ZXh0RGF0YTsKIAogICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+
IG1fY29udGV4dDsKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZ2xvYmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBhZDFiY2FmZDlj
ZTBkY2MxZTFhZDE3YWE2ZWQ2MWZjNTJiZGIwMzEwLi5jNTQ1YTg2M2Q3MjA1MzhjZDNlNGUzYjhk
MzZkYzU1OWZjNmZhNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaApAQCAtMTE4LDE0ICsxMTgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKndyYXBwZXI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IFY4RE9NV2luZG93U2hlbGwqIGNvbnRleHQgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVk
KCk7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCFjb250ZXh0KSkgeworICAgICAgICAgICAgVjhE
T01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWREYXRhID0gVjhET01X
aW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKTsKKyAgICAgICAgICAgIGlm
IChMSUtFTFkoIWlzb2xhdGVkRGF0YSkpIHsKICAgICAgICAgICAgICAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Piogd3JhcHBlciA9IG5vZGUtPndyYXBwZXIoKTsKICAgICAgICAgICAgICAg
ICBpZiAoIXdyYXBwZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICp3cmFwcGVyOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGNvbnRleHQtPndvcmxkKCkt
PmRvbURhdGFTdG9yZSgpOworICAgICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGlzb2xh
dGVkRGF0YS0+d29ybGQoKS0+ZG9tRGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBET01Ob2RlTWFw
cGluZyYgZG9tTm9kZU1hcCA9IG5vZGUtPmlzQWN0aXZlTm9kZSgpID8gc3RvcmUtPmFjdGl2ZURv
bU5vZGVNYXAoKSA6IHN0b3JlLT5kb21Ob2RlTWFwKCk7CiAgICAgICAgICAgICByZXR1cm4gZG9t
Tm9kZU1hcC5nZXQobm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCmluZGV4IDE4MDI4MGFiYzFjMTMzOTM3ZWIx
NTQ1MjgzMjA3ZDdlNzBiNWMxZDQuLjA2OWFjMzYxNTk1ODAxMTMxOTU2MzhiMTVlMDg5MjEwYTRj
M2MxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4
dEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0
SGFuZGxlLmNwcApAQCAtNDIsMTQgKzQyLDEzIEBAIFdvcmxkQ29udGV4dEhhbmRsZTo6V29ybGRD
b250ZXh0SGFuZGxlKFdvcmxkVG9Vc2Ugd29ybGRUb1VzZSkKICAgICBpZiAod29ybGRUb1VzZSA9
PSBVc2VNYWluV29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFY4RE9NV2luZG93U2hlbGwq
IHNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpOwotICAgIGlmIChMSUtFTFko
IXNoZWxsKSkgeworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gaXNvbGF0ZWRDb250ZXh0ID0g
VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dCgpOworICAgIGlmIChMSUtF
TFkoaXNvbGF0ZWRDb250ZXh0LklzRW1wdHkoKSkpIHsKICAgICAgICAgbV93b3JsZFRvVXNlID0g
VXNlTWFpbldvcmxkOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKCFzaGVs
bC0+Y29udGV4dCgpLklzRW1wdHkoKSk7Ci0gICAgbV9jb250ZXh0ID0gU2hhcmVkUGVyc2lzdGVu
dDx2ODo6Q29udGV4dD46OmNyZWF0ZShzaGVsbC0+Y29udGV4dCgpKTsKKyAgICBtX2NvbnRleHQg
PSBTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6Y3JlYXRlKGlzb2xhdGVkQ29udGV4dCk7
CiB9CiAKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gV29ybGRDb250ZXh0SGFuZGxlOjphZGp1c3Rl
ZENvbnRleHQoU2NyaXB0Q29udHJvbGxlciogc2NyaXB0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCmluZGV4
IGQ2ODU3YmI5NjY2MDg4OGNlNmVlOTBlYmM3OThiY2E4ZGZkMjNkMzYuLmRhNDIzNmM5N2ZkZTRh
YmIwNDA3MGQ5ZmJjZTVlNzg2Y2YzOWIwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTEwOCw3ICsxMDgs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChEb2N1bWVudCogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IFY4RG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
LCBmb3JjZU5ld09iamVjdCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKLSAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkg
eworICAgIGlmIChWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0KCkuSXNF
bXB0eSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQogICAg
ICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdy
YXBwZXIod3JhcHBlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZTUwYTI2MDNl
NDQ3YTFmNjM0YzliNmYzYTliY2M4OGE4MjQ4M2FkNi4uMGU3YTNhZDEzOGVhZjJiODVkYThkOTdh
NWY5M2UxMTU5ZDEwMGQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xODMsNyArMTgzLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ28KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBWOEhUTUxEb2N1bWVudDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUsIGZvcmNlTmV3T2JqZWN0KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgp
KSB7CisgICAgaWYgKFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHQoKS5J
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAg
ICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50
V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZGExNjZhN2Fm
ZmYzYjdhYzU5NWEwMjgyYmVlZjk3NTgwZTVjYTgzZi4uYmY0N2Q1Zjc0ZDViMDk5MmE5NzhiYzUx
NmY3OTQzYzU5YjNkNmFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTVkdEb2N1bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IFY4U1ZHRG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBm
b3JjZU5ld09iamVjdCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gd3JhcHBlcjsKLSAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkgewor
ICAgIGlmIChWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0KCkuSXNFbXB0
eSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQogICAgICAg
ICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdyYXBw
ZXIod3JhcHBlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAppbmRl
eCAwNTBiN2ZiNGQzODZhNzFmOTdjYmVhNGE5NTllMTJiYWY3YTc3OTNiLi5lOTQ4NWY5MWEwNmNj
NGFiZWQwZWRhOTY1ZjhlYzZiYzU3ZjI3YWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVj
dG9yLmNwcApAQCAtNTUsOCArNTUsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRw
UmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwotICAgIGlm
IChWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZFdvcmxkU2hlbGwgPSBWOERPTVdpbmRvd1NoZWxs
OjpnZXRFbnRlcmVkKCkpCi0gICAgICAgIHNlY3VyaXR5T3JpZ2luID0gaXNvbGF0ZWRXb3JsZFNo
ZWxsLT5pc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoVjhET01XaW5kb3dT
aGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWRDb250ZXh0RGF0YSA9IFY4RE9NV2lu
ZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCkpCisgICAgICAgIHNlY3VyaXR5
T3JpZ2luID0gaXNvbGF0ZWRDb250ZXh0RGF0YS0+c2VjdXJpdHlPcmlnaW4oKTsKIAogICAgIFJl
ZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164227</attachid>
            <date>2012-09-14 14:35:30 -0700</date>
            <delta_ts>2012-09-17 02:20:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21916</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZjc5ODNhLi4wYzE4ZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjIg
QEAKIDIwMTItMDktMTQgIERhbiBDYXJuZXkgIDxkY2FybmV5QGdvb2dsZS5jb20+CiAKKyAgICAg
ICAgUmVtb3ZlIFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NjM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkIHdh
cyByZWZhY3RvcmVkIHNvIHRoYXQgdGhlIHdpbmRvdyBzaGVsbAorICAgICAgICBubyBsb25nZXIg
aGFzIHRvIGJlIGtlcHQgYWxpdmUgYnkgYSB2OCBjb250ZXh0IGJ1dCByYXRoZXIgYSBzbWFsbGVy
CisgICAgICAgIG9iamVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBm
dW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01EYXRhOjpnZXRDdXJyZW50U3RvcmUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBlcnNp
c3RlbnQ6OmxlYWtIYW5kbGUpOgorICAgICAgICAoU2NvcGVkUGVyc2lzdGVudCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpyZXNldElzb2xhdGVkV29ybGRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmN1cnJlbnRXb3JsZENvbnRleHQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb250ZXh0
RGF0YUZvckN1cnJlbnRXb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRJc29sYXRlZFdvcmxkRmllbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6dG9Jc29sYXRlZENvbnRleHREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Omlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpjbGVhcklzb2xhdGVkU2hlbGwpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjppbml0aWFsaXpl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6c2V0SXNvbGF0
ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmg6CisgICAgICAgIChWOERPTVdpbmRvd1NoZWxsKToKKyAgICAgICAgKElzb2xhdGVk
Q29udGV4dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6SXNvbGF0
ZWRDb250ZXh0RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hl
bGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OndvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OnBlckNvbnRleHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OnNldFNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xh
dGVkQ29udGV4dERhdGE6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6Oklzb2xhdGVkQ29udGV4dERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRD
b250ZXh0RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JsZENvbnRleHRIYW5kbGU6OldvcmxkQ29udGV4dEhhbmRsZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFj
ayk6CisKKzIwMTItMDktMTQgIERhbiBDYXJuZXkgIDxkY2FybmV5QGdvb2dsZS5jb20+CisKICAg
ICAgICAgUHJldmVudCB3b3JrZXJzIGZyb20gY2FsbGluZyBiYWNrIGludG8gb3RoZXIgd29ybGRz
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Njc5MAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCmluZGV4IGFmNTBhMWUuLjdjYzI0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCkBAIC00Myw5ICs0Myw5
IEBAIERPTURhdGFTdG9yZSYgRE9NRGF0YTo6Z2V0Q3VycmVudFN0b3JlKHY4OjpJc29sYXRlKiBp
c29sYXRlKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpj
dXJyZW50KGlzb2xhdGUpOwogICAgIGlmIChVTkxJS0VMWShkYXRhLT5kb21EYXRhU3RvcmUoKSAh
PSAwKSkKICAgICAgICAgcmV0dXJuICpkYXRhLT5kb21EYXRhU3RvcmUoKTsKLSAgICBWOERPTVdp
bmRvd1NoZWxsKiBjb250ZXh0ID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpOwotICAg
IGlmIChVTkxJS0VMWShjb250ZXh0ICE9IDApKQotICAgICAgICByZXR1cm4gKmNvbnRleHQtPndv
cmxkKCktPmRvbURhdGFTdG9yZSgpOworICAgIFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29u
dGV4dERhdGEqIGlzb2xhdGVkRGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRl
ZENvbnRleHREYXRhKCk7CisgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0ZWREYXRhKSkKKyAgICAg
ICAgcmV0dXJuICppc29sYXRlZERhdGEtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOwogICAgIHJl
dHVybiBkZWZhdWx0U3RvcmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
b3BlZFBlcnNpc3RlbnQuaAppbmRleCBmY2NmNGFhLi44YTY4NWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oCkBAIC03OCw2ICs3OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIG1faGFuZGxlLkNsZWFyKCk7CiAgICAgfQogCisgICAgdjg6OlBlcnNp
c3RlbnQ8VD4gbGVha0hhbmRsZSgpCisgICAgeworICAgICAgICB2ODo6UGVyc2lzdGVudDxUPiBo
YW5kbGUgPSBtX2hhbmRsZTsKKyAgICAgICAgbV9oYW5kbGUuQ2xlYXIoKTsKKyAgICAgICAgcmV0
dXJuIGhhbmRsZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdjg6OlBlcnNpc3RlbnQ8VD4gbV9o
YW5kbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCAyMTFiYTk0Li5hY2M3MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTQ2LDcgKzE0Niw4IEBAIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6cmVzZXRJc29sYXRlZFdvcmxkcygpCiB7CiAgICAgZm9yIChJc29s
YXRlZFdvcmxkTWFwOjppdGVyYXRvciBpdGVyID0gbV9pc29sYXRlZFdvcmxkcy5iZWdpbigpOwog
ICAgICAgICAgaXRlciAhPSBtX2lzb2xhdGVkV29ybGRzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAg
ICAgaXRlci0+c2Vjb25kLT5kZXN0cm95SXNvbGF0ZWRTaGVsbCgpOworICAgICAgICBpdGVyLT5z
ZWNvbmQtPmNsZWFySXNvbGF0ZWRTaGVsbCgpOworICAgICAgICBkZWxldGUgaXRlci0+c2Vjb25k
OwogICAgIH0KICAgICBtX2lzb2xhdGVkV29ybGRzLmNsZWFyKCk7CiAgICAgbV9pc29sYXRlZFdv
cmxkU2VjdXJpdHlPcmlnaW5zLmNsZWFyKCk7CkBAIC0zODksMTEgKzM5MCwxMiBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKGludCB3b3JsZElELCBjb25z
dCBWZWN0b3I8U2NyaXB0UwogICAgICAgICAgICAgcmVzdWx0QXJyYXktPlNldChpLCBldmFsdWF0
aW9uUmVzdWx0KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIE1hcmsgdGVtcG9yYXJ5IHNoZWxs
IGZvciB3ZWFrIGRlc3RydWN0aW9uLgorICAgICAgICAvLyBEZXN0cm95IHRlbXBvcmFyeSB3b3Js
ZC4KICAgICAgICAgaWYgKHdvcmxkSUQgPT0gRE9NV3JhcHBlcldvcmxkOjp1bmluaXRpYWxpemVk
V29ybGRJZCkgewogICAgICAgICAgICAgaW50IGFjdHVhbFdvcmxkSWQgPSBpc29sYXRlZFdvcmxk
U2hlbGwtPndvcmxkKCktPndvcmxkSWQoKTsKICAgICAgICAgICAgIG1faXNvbGF0ZWRXb3JsZHMu
cmVtb3ZlKGFjdHVhbFdvcmxkSWQpOwotICAgICAgICAgICAgaXNvbGF0ZWRXb3JsZFNoZWxsLT5k
ZXN0cm95SXNvbGF0ZWRTaGVsbCgpOworICAgICAgICAgICAgaXNvbGF0ZWRXb3JsZFNoZWxsLT5j
bGVhcklzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgICAgIGRlbGV0ZSBpc29sYXRlZFdvcmxkU2hl
bGw7CiAgICAgICAgIH0KIAogICAgICAgICB2OFJlc3VsdHMgPSBldmFsdWF0ZUhhbmRsZVNjb3Bl
LkNsb3NlKHJlc3VsdEFycmF5KTsKQEAgLTQyOCwxMSArNDMwLDExIEBAIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6ZmluaXNoZWRXaXRoRXZlbnQoRXZlbnQqIGV2ZW50KQogCiB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IFNjcmlwdENvbnRyb2xsZXI6OmN1cnJlbnRXb3JsZENvbnRleHQoKQogewotICAg
IGlmIChWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6
Z2V0RW50ZXJlZCgpKSB7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBjb250
ZXh0ID0gaXNvbGF0ZWRTaGVsbC0+Y29udGV4dCgpOwotICAgICAgICBpZiAoY29udGV4dC5Jc0Vt
cHR5KCkgfHwgbV9mcmFtZSAhPSB0b0ZyYW1lSWZOb3REZXRhY2hlZChjb250ZXh0KSkKKyAgICB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+IGlzb2xhdGVkQ29udGV4dCA9IFY4RE9NV2luZG93U2hlbGw6
OmVudGVyZWRJc29sYXRlZENvbnRleHQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzb2xhdGVkQ29u
dGV4dC5Jc0VtcHR5KCkpKSB7CisgICAgICAgIGlmIChtX2ZyYW1lICE9IHRvRnJhbWVJZk5vdERl
dGFjaGVkKGlzb2xhdGVkQ29udGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpDb250ZXh0PigpOwotICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3
KGNvbnRleHQpOworICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGlz
b2xhdGVkQ29udGV4dCk7CiAgICAgfQogICAgIHdpbmRvd1NoZWxsKCktPmluaXRpYWxpemVJZk5l
ZWRlZCgpOwogICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcod2luZG93U2hl
bGwoKS0+Y29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CmluZGV4IDVjOTA0NmYuLjVhMjViM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmNwcApAQCAtMzEwLDkgKzMxMCw5IEBAIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9W
OENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgV29ybGRDCiAK
IFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhRm9yQ3VycmVudFdvcmxkKEZyYW1lKiBm
cmFtZSkKIHsKLSAgICBWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZFNoZWxsOwotICAgIGlmIChV
TkxJS0VMWSghIShpc29sYXRlZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgp
KSkpCi0gICAgICAgIHJldHVybiBpc29sYXRlZFNoZWxsLT5wZXJDb250ZXh0RGF0YSgpOworICAg
IFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGEqIGlzb2xhdGVkU2hlbGxEYXRh
OworICAgIGlmIChVTkxJS0VMWSghIShpc29sYXRlZFNoZWxsRGF0YSA9IFY4RE9NV2luZG93U2hl
bGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCkpKSkKKyAgICAgICAgcmV0dXJuIGlzb2xh
dGVkU2hlbGxEYXRhLT5wZXJDb250ZXh0RGF0YSgpOwogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0
KCktPndpbmRvd1NoZWxsKCktPnBlckNvbnRleHREYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggOWZlNmQ3Yy4uMTVl
YjUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAKQEAgLTE3MSwxNCArMTcxLDE0IEBAIHN0YXRpYyB2b2lkIGNoZWNrRG9jdW1lbnRXcmFw
cGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgRG9jdW1lbnQqIGRvY3VtCiAgICAg
QVNTRVJUKCFkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSB8fCAoVjhEb2N1bWVudDo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh3cmFwcGVyLT5HZXRQcm90b3R5cGUoKSkp
ID09IGRvY3VtZW50KSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldElzb2xhdGVkV29ybGRGaWVsZChW
OERPTVdpbmRvd1NoZWxsKiBzaGVsbCwgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KQor
c3RhdGljIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKFY4RE9NV2luZG93U2hlbGw6Oklzb2xh
dGVkQ29udGV4dERhdGEqIGRhdGEsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiB7
Ci0gICAgdG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KS0+U2V0UG9pbnRlckluSW50ZXJuYWxG
aWVsZChWOERPTVdpbmRvdzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCwgc2hlbGwpOworICAg
IHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4dCktPlNldFBvaW50ZXJJbkludGVybmFsRmllbGQo
VjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgsIGRhdGEpOwogfQogCi1WOERP
TVdpbmRvd1NoZWxsKiBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRXb3JsZENvbnRl
eHQoKQorVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogVjhET01XaW5kb3dT
aGVsbDo6dG9Jc29sYXRlZENvbnRleHREYXRhKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4RE9NV2luZG93U2hlbGwqPih0b0lubmVy
R2xvYmFsT2JqZWN0KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpLT5HZXRQb2ludGVyRnJvbUlu
dGVybmFsRmllbGQoVjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SXNvbGF0ZWRDb250ZXh0RGF0YSo+KHRvSW5uZXJHbG9iYWxP
YmplY3QoY29udGV4dCktPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOERPTVdpbmRvdzo6
ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRJbmplY3Rl
ZFNjcmlwdENvbnRleHREZWJ1Z0lkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHRhcmdldENvbnRl
eHQsIGludCBkZWJ1Z0lkKQpAQCAtMjA4LDIwICsyMDgsMTQgQEAgYm9vbCBWOERPTVdpbmRvd1No
ZWxsOjppc0NvbnRleHRJbml0aWFsaXplZCgpCiAgICAgcmV0dXJuICFtX2NvbnRleHQuaXNFbXB0
eSgpOwogfQogCi12b2lkIFY4RE9NV2luZG93U2hlbGw6OmRlc3Ryb3lJc29sYXRlZFNoZWxsKCkK
LXsKLSAgICBkaXNwb3NlQ29udGV4dCh0cnVlKTsKLX0KLQogc3RhdGljIHZvaWQgaXNvbGF0ZWRD
b250ZXh0V2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lk
KiBwYXJhbWV0ZXIpCiB7Ci0gICAgLy8gSGFuZGxlIHdpbGwgYmUgZGlzcG9zZWQgaW4gZGVsZXRl
LgotICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOERPTVdpbmRvd1NoZWxsKj4ocGFyYW1ldGVyKTsK
KyAgICBvYmplY3QuRGlzcG9zZSgpOworICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOERPTVdpbmRv
d1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKj4ocGFyYW1ldGVyKTsKIH0KIAotdm9pZCBWOERP
TVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dChib29sIHdlYWspCit2b2lkIFY4RE9NV2luZG93
U2hlbGw6OmRpc3Bvc2VDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQoIW1fY29udGV4dC5nZXQoKS5J
c1dlYWsoKSk7CiAgICAgbV9wZXJDb250ZXh0RGF0YS5jbGVhcigpOwogCiAgICAgaWYgKG1fY29u
dGV4dC5pc0VtcHR5KCkpCkBAIC0yMjksMTQgKzIyMywxNCBAQCB2b2lkIFY4RE9NV2luZG93U2hl
bGw6OmRpc3Bvc2VDb250ZXh0KGJvb2wgd2VhaykKIAogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KG1fY29udGV4dC5nZXQoKSwgbV93b3Js
ZC0+d29ybGRJZCgpKTsKIAotICAgIGlmICghd2VhaykKLSAgICAgICAgbV9jb250ZXh0LmNsZWFy
KCk7Ci0gICAgZWxzZSB7CisgICAgaWYgKG1faXNvbGF0ZWRDb250ZXh0RGF0YSkgewogICAgICAg
ICBBU1NFUlQoIW1fd29ybGQtPmlzTWFpbldvcmxkKCkpOwotICAgICAgICBkZXN0cm95R2xvYmFs
KCk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOwotICAgICAgICBtX2NvbnRleHQuZ2V0KCkuTWFrZVdl
YWsodGhpcywgaXNvbGF0ZWRDb250ZXh0V2Vha0NhbGxiYWNrKTsKLSAgICB9CisgICAgICAgIC8v
IEhlcmUgd2UgbXVzdCBpbnRlbnRpb25hbGx5IGxlYWsgdGhlIHBlciBjb250ZXh0IGRhdGEgcG9p
bnRlciBhcyBpdCBnZXRzIGRlbGV0ZWQgaW4gaXNvbGF0ZWRDb250ZXh0V2Vha0NhbGxiYWNrLgor
ICAgICAgICBtX2NvbnRleHQubGVha0hhbmRsZSgpLk1ha2VXZWFrKG1faXNvbGF0ZWRDb250ZXh0
RGF0YS5sZWFrUHRyKCksIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk7CisgICAgICAgIC8v
IFRoZSBnbG9iYWwgaGFuZGxlIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0LCBzbyBp
dCBtdXN0IGJlIHJlbW92ZWQuCisgICAgICAgIG1fZ2xvYmFsLmNsZWFyKCk7CisgICAgfSBlbHNl
CisgICAgICAgIG1fY29udGV4dC5jbGVhcigpOwogCiAgICAgLy8gSXQncyBsaWtlbHkgdGhhdCBk
aXNwb3NpbmcgdGhlIGNvbnRleHQgaGFzIGNyZWF0ZWQgYSBsb3Qgb2YKICAgICAvLyBnYXJiYWdl
LiBOb3RpZnkgVjggYWJvdXQgdGhpcyBzbyBpdCdsbCBoYXZlIGEgY2hhbmNlIG9mIGNsZWFuaW5n
CkBAIC0yNTIsNiArMjQ2LDExIEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGVzdHJveUdsb2Jh
bCgpCiAgICAgbV9nbG9iYWwuY2xlYXIoKTsKIH0KIAordm9pZCBWOERPTVdpbmRvd1NoZWxsOjpj
bGVhcklzb2xhdGVkU2hlbGwoKQoreworICAgIGRpc3Bvc2VDb250ZXh0KCk7Cit9CisKIHZvaWQg
VjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JDbG9zZSgpCiB7CiAgICAgaWYgKG1fY29udGV4dC5p
c0VtcHR5KCkpCkBAIC0zNDYsMTkgKzM0NSwyMCBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6Omlu
aXRpYWxpemVJZk5lZWRlZCgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX3BlckNvbnRleHRE
YXRhID0gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYg
KCFtX3BlckNvbnRleHREYXRhLT5pbml0KCkpIHsKKyAgICAgICAgZGlzcG9zZUNvbnRleHQoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIEZsYWcgY29udGV4dCBhcyBp
c29sYXRlZC4KICAgICBpZiAoIWlzTWFpbldvcmxkKSB7CiAgICAgICAgIFY4RE9NV2luZG93U2hl
bGwqIG1haW5XaW5kb3cgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKTsKICAgICAg
ICAgbWFpbldpbmRvdy0+aW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAgICAgICAgIGlmICghbWFpbldp
bmRvdy0+Y29udGV4dCgpLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNldEluamVjdGVkU2NyaXB0
Q29udGV4dERlYnVnSWQobV9jb250ZXh0LmdldCgpLCBtX2ZyYW1lLT5zY3JpcHQoKS0+Y29udGV4
dERlYnVnSWQobWFpbldpbmRvdy0+Y29udGV4dCgpKSk7Ci0gICAgICAgIHNldElzb2xhdGVkV29y
bGRGaWVsZCh0aGlzLCBjb250ZXh0KTsKLSAgICB9Ci0KLSAgICBtX3BlckNvbnRleHREYXRhID0g
VjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFtX3Bl
ckNvbnRleHREYXRhLT5pbml0KCkpIHsKLSAgICAgICAgZGlzcG9zZUNvbnRleHQoKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2lzb2xhdGVkQ29udGV4dERhdGEgPSBJc29sYXRl
ZENvbnRleHREYXRhOjpjcmVhdGUobV93b3JsZCwgbV9wZXJDb250ZXh0RGF0YS5yZWxlYXNlKCks
IG1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4pOworICAgICAgICBzZXRJc29sYXRl
ZFdvcmxkRmllbGQobV9pc29sYXRlZENvbnRleHREYXRhLmdldCgpLCBjb250ZXh0KTsKICAgICB9
CiAKICAgICBpZiAoIWluc3RhbGxET01XaW5kb3coKSkgewpAQCAtNjE4LDYgKzYxOCw4IEBAIHZv
aWQgVjhET01XaW5kb3dTaGVsbDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KG1fZnJhbWUsIHNjcmlwdFN0YXRlLCBzZWN1cml0eU9y
aWdpbi5nZXQoKSk7CiAgICAgfQogICAgIG1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmln
aW4gPSBzZWN1cml0eU9yaWdpbjsKKyAgICBpZiAobV9pc29sYXRlZENvbnRleHREYXRhKQorICAg
ICAgICBtX2lzb2xhdGVkQ29udGV4dERhdGEtPnNldFNlY3VyaXR5T3JpZ2luKG1faXNvbGF0ZWRX
b3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4pOwogfQogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAppbmRleCAwMWQyOTgxLi5hYzgy
MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5o
CkBAIC01Myw2ICs1MywzNCBAQCBjbGFzcyBIVE1MRG9jdW1lbnQ7CiAvLyBwZXJzaXN0IGJldHdl
ZW4gbmF2aWdhdGlvbnMuCiBjbGFzcyBWOERPTVdpbmRvd1NoZWxsIHsKIHB1YmxpYzoKKworICAg
IC8vIFRoaXMgY2xhc3MgaG9sZHMgYWxsIHRoZSBkYXRhIHRoYXQgaXMgYWNjZXNzaWJsZSBmcm9t
IGEgY29udGV4dCBmb3IgYW4gaXNvbGF0ZWQgc2hlbGwuCisgICAgLy8gSXQgc3Vydml2ZXMgdW50
aWwgdGhlIGNvbnRleHQgaXMgZGVsZXRlZC4KKyAgICBjbGFzcyBJc29sYXRlZENvbnRleHREYXRh
IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSXNvbGF0ZWRDb250ZXh0RGF0YSk7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxJc29sYXRlZENvbnRleHREYXRh
PiBjcmVhdGUoUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IHdvcmxkLCBQYXNzT3duUHRyPFY4
UGVyQ29udGV4dERhdGE+IHBlckNvbnRleHREYXRhLAorICAgICAgICAgICAgICAgIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IElzb2xhdGVkQ29udGV4dERhdGEod29ybGQsIHBlckNvbnRl
eHREYXRhLCBzZWN1cml0eU9yaWdpbikpOworICAgICAgICB9CisgICAgICAgIERPTVdyYXBwZXJX
b3JsZCogd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CisgICAgICAgIFY4UGVyQ29u
dGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQo
KTsgfQorICAgICAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbikgeyBtX3NlY3VyaXR5T3JpZ2luID0gb3JpZ2luOyB9CisgICAgICAgIFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4u
Z2V0KCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIElzb2xhdGVkQ29udGV4dERhdGEoUGFz
c1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IHdvcmxkLCBQYXNzT3duUHRyPFY4UGVyQ29udGV4dERh
dGE+IHBlckNvbnRleHREYXRhLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbikKKyAgICAgICAgICAgIDogbV93b3JsZCh3b3JsZCkKKyAgICAgICAgICAgICwgbV9wZXJD
b250ZXh0RGF0YShwZXJDb250ZXh0RGF0YSkKKyAgICAgICAgICAgICwgbV9zZWN1cml0eU9yaWdp
bihzZWN1cml0eU9yaWdpbikKKyAgICAgICAgeyB9CisKKyAgICAgICAgUmVmUHRyPERPTVdyYXBw
ZXJXb3JsZD4gbV93b3JsZDsKKyAgICAgICAgT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IG1fcGVy
Q29udGV4dERhdGE7CisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9y
aWdpbjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NPd25QdHI8VjhET01XaW5kb3dTaGVsbD4g
Y3JlYXRlKEZyYW1lKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+KTsKIAogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CkBAIC03Niw2ICsxMDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyRm9y
TmF2aWdhdGlvbigpOwogICAgIHZvaWQgY2xlYXJGb3JDbG9zZSgpOworICAgIHZvaWQgY2xlYXJJ
c29sYXRlZFNoZWxsKCk7CiAKICAgICB2b2lkIGRlc3Ryb3lHbG9iYWwoKTsKIApAQCAtOTAsMjkg
KzExOSwzNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2lzb2xhdGVkV29ybGRTaGVsbFNl
Y3VyaXR5T3JpZ2luLmdldCgpOwogICAgIH07CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBpc29sYXRl
ZCB3b3JsZCBhc3NvY2lhdGVkIHdpdGgKLSAgICAvLyB2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgp
LiBCZWNhdXNlIHdvcmxkcyBhcmUgaXNvbGF0ZWQsIHRoZSBlbnRpcmUKLSAgICAvLyBKYXZhU2Ny
aXB0IGNhbGwgc3RhY2sgc2hvdWxkIGJlIGZyb20gdGhlIHNhbWUgaXNvbGF0ZWQgd29ybGQuCi0g
ICAgLy8gUmV0dXJucyAwIGlmIHRoZSBlbnRlcmVkIGNvbnRleHQgaXMgZnJvbSB0aGUgbWFpbiB3
b3JsZC4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBDb25zaWRlciBlZGdlIGNhc2VzIHdpdGggRE9N
IG11dGF0aW9uIGV2ZW50cyB0aGF0IG1pZ2h0Ci0gICAgLy8gdmlvbGF0ZSB0aGlzIGludmFyaWFu
dC4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBUaGlzIGlzIHBvb3JseSBuYW1lZCBhZnRlciB0aGUg
ZGVsZXRpb24gb2YgaXNvbGF0ZWQgY29udGV4dHMuCi0gICAgc3RhdGljIFY4RE9NV2luZG93U2hl
bGwqIGdldEVudGVyZWQoKQorICAgIGlubGluZSBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBlbnRlcmVkSXNvbGF0ZWRDb250ZXh0KCkKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkoIURP
TVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKSkKKyAgICAgICAgICAgIHJldHVy
biB2ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7CisgICAgICAgIGlmICghdjg6OkNvbnRleHQ6Oklu
Q29udGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsK
KyAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6Okdl
dEVudGVyZWQoKTsKKyAgICAgICAgSXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWRDb250ZXh0
RGF0YSA9IHRvSXNvbGF0ZWRDb250ZXh0RGF0YShjb250ZXh0KTsKKyAgICAgICAgaWYgKExJS0VM
WSghaXNvbGF0ZWRDb250ZXh0RGF0YSkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpDb250ZXh0PigpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9CisKKyAgICBpbmxp
bmUgc3RhdGljIElzb2xhdGVkQ29udGV4dERhdGEqIGVudGVyZWRJc29sYXRlZENvbnRleHREYXRh
KCkKICAgICB7Ci0gICAgICAgIGlmICghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4
aXN0KCkpCisgICAgICAgIGlmIChMSUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3Js
ZHNFeGlzdCgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAoIXY4OjpDb250
ZXh0OjpJbkNvbnRleHQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4g
ZW50ZXJlZElzb2xhdGVkV29ybGRDb250ZXh0KCk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7CisgICAgICAgIElzb2xh
dGVkQ29udGV4dERhdGEqIGlzb2xhdGVkQ29udGV4dERhdGEgPSB0b0lzb2xhdGVkQ29udGV4dERh
dGEoY29udGV4dCk7CisgICAgICAgIGlmIChMSUtFTFkoIWlzb2xhdGVkQ29udGV4dERhdGEpKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBpc29sYXRlZENvbnRleHREYXRh
OwogICAgIH0KIAotICAgIHZvaWQgZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKIHByaXZhdGU6CiAg
ICAgVjhET01XaW5kb3dTaGVsbChGcmFtZSosIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPik7
CiAKLSAgICB2b2lkIGRpc3Bvc2VDb250ZXh0KGJvb2wgd2VhayA9IGZhbHNlKTsKKyAgICB2b2lk
IGRpc3Bvc2VDb250ZXh0KCk7CiAKICAgICB2b2lkIHNldFNlY3VyaXR5VG9rZW4oKTsKIApAQCAt
MTI2LDEyICsxNjIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUNvbnRleHQoKTsKICAg
ICBib29sIGluc3RhbGxET01XaW5kb3coKTsKIAotICAgIHN0YXRpYyBWOERPTVdpbmRvd1NoZWxs
KiBlbnRlcmVkSXNvbGF0ZWRXb3JsZENvbnRleHQoKTsKKyAgICBzdGF0aWMgSXNvbGF0ZWRDb250
ZXh0RGF0YSogdG9Jc29sYXRlZENvbnRleHREYXRhKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsK
IAogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29y
bGQ7CiAKICAgICBPd25QdHI8VjhQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0RGF0YTsKKyAg
ICBPd25QdHI8SXNvbGF0ZWRDb250ZXh0RGF0YT4gbV9pc29sYXRlZENvbnRleHREYXRhOwogCiAg
ICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwogICAgIFNjb3BlZFBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9nbG9iYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5oCmluZGV4IGFkMWJjYWYuLmM1NDVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC0xMTgsMTQgKzExOCwxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAqd3JhcHBlcjsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgVjhET01XaW5kb3dTaGVsbCogY29udGV4dCA9IFY4RE9N
V2luZG93U2hlbGw6OmdldEVudGVyZWQoKTsKLSAgICAgICAgICAgIGlmIChMSUtFTFkoIWNvbnRl
eHQpKSB7CisgICAgICAgICAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRh
KiBpc29sYXRlZERhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0
RGF0YSgpOworICAgICAgICAgICAgaWYgKExJS0VMWSghaXNvbGF0ZWREYXRhKSkgewogICAgICAg
ICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KiB3cmFwcGVyID0gbm9kZS0+d3Jh
cHBlcigpOwogICAgICAgICAgICAgICAgIGlmICghd3JhcHBlcikKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gKndyYXBwZXI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBET01EYXRhU3RvcmUqIHN0
b3JlID0gY29udGV4dC0+d29ybGQoKS0+ZG9tRGF0YVN0b3JlKCk7CisgICAgICAgICAgICBET01E
YXRhU3RvcmUqIHN0b3JlID0gaXNvbGF0ZWREYXRhLT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsK
ICAgICAgICAgICAgIERPTU5vZGVNYXBwaW5nJiBkb21Ob2RlTWFwID0gbm9kZS0+aXNBY3RpdmVO
b2RlKCkgPyBzdG9yZS0+YWN0aXZlRG9tTm9kZU1hcCgpIDogc3RvcmUtPmRvbU5vZGVNYXAoKTsK
ICAgICAgICAgICAgIHJldHVybiBkb21Ob2RlTWFwLmdldChub2RlKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKaW5k
ZXggMzRiOWMxOS4uNjkzOGQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV29ybGRDb250ZXh0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCkBAIC01NywxNCArNTcsMTMgQEAgV29ybGRDb250ZXh0
SGFuZGxlOjpXb3JsZENvbnRleHRIYW5kbGUoV29ybGRUb1VzZSB3b3JsZFRvVXNlKQogICAgIH0K
ICNlbmRpZgogCi0gICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBWOERPTVdpbmRvd1NoZWxs
OjpnZXRFbnRlcmVkKCk7Ci0gICAgaWYgKExJS0VMWSghc2hlbGwpKSB7CisgICAgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiBpc29sYXRlZENvbnRleHQgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVk
SXNvbGF0ZWRDb250ZXh0KCk7CisgICAgaWYgKExJS0VMWShpc29sYXRlZENvbnRleHQuSXNFbXB0
eSgpKSkgewogICAgICAgICBtX3dvcmxkVG9Vc2UgPSBVc2VNYWluV29ybGQ7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoIXNoZWxsLT5jb250ZXh0KCkuSXNFbXB0eSgpKTsK
LSAgICBtX2NvbnRleHQgPSBTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6Y3JlYXRlKHNo
ZWxsLT5jb250ZXh0KCkpOworICAgIG1fY29udGV4dCA9IFNoYXJlZFBlcnNpc3RlbnQ8djg6OkNv
bnRleHQ+OjpjcmVhdGUoaXNvbGF0ZWRDb250ZXh0KTsKIH0KIAogdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBXb3JsZENvbnRleHRIYW5kbGU6OmFkanVzdGVkQ29udGV4dChTY3JpcHRDb250cm9sbGVy
KiBzY3JpcHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZDY4NTdiYi4uZGE0MjM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3Vz
dG9tLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERv
Y3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6d3JhcChpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKICAgICBpZiAod3JhcHBl
ci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5k
b3dTaGVsbDo6Z2V0RW50ZXJlZCgpKSB7CisgICAgaWYgKFY4RE9NV2luZG93U2hlbGw6OmVudGVy
ZWRJc29sYXRlZENvbnRleHQoKS5Jc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IGltcGwtPmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1No
ZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3Vz
dG9tLmNwcAppbmRleCBlNTBhMjYwLi4wZTdhM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAg
LTE4Myw3ICsxODMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MRG9jdW1lbnQq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25DbwogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGlmICh3cmFwcGVyLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1NoZWxs
OjpnZXRFbnRlcmVkKCkpIHsKKyAgICBpZiAoVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xh
dGVkQ29udGV4dCgpLklzRW1wdHkoKSkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1w
bC0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+
dXBkYXRlRG9jdW1lbnRXcmFwcGVyKHdyYXBwZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcApp
bmRleCBkYTE2NmE3Li5iZjQ3ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNWR0RvY3VtZW50KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29uCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhTVkdEb2N1bWVudDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUsIGZvcmNlTmV3T2JqZWN0KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgp
KSB7CisgICAgaWYgKFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHQoKS5J
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAg
ICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50
V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3Bw
CmluZGV4IDA1MGI3ZmIuLmU5NDg1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3Iu
Y3BwCkBAIC01NSw4ICs1NSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1
ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
IAogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47Ci0gICAgaWYgKFY4
RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkV29ybGRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6Omdl
dEVudGVyZWQoKSkKLSAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBpc29sYXRlZFdvcmxkU2hlbGwt
Pmlzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbigpOworICAgIGlmIChWOERPTVdpbmRvd1NoZWxs
OjpJc29sYXRlZENvbnRleHREYXRhKiBpc29sYXRlZENvbnRleHREYXRhID0gVjhET01XaW5kb3dT
aGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKSkKKyAgICAgICAgc2VjdXJpdHlPcmln
aW4gPSBpc29sYXRlZENvbnRleHREYXRhLT5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgUmVmUHRy
PFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgc2VjdXJpdHlPcmlnaW4pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164358</attachid>
            <date>2012-09-17 02:20:08 -0700</date>
            <delta_ts>2012-09-17 04:57:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20120917111936.patch</filename>
            <type>text/plain</type>
            <size>23569</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU0NTQ5MTczZGE1ZTIx
ZDZjYzI4YmNiYzlmOTQ3NWNkOWIwYjZjNS4uZmM4MmNmYTMzMjM0MWNiYmVhNGMwYmNkOWZmNGZj
MTlkZWU1YjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTE2ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCB3YXMgcmVmYWN0b3JlZCBzbyB0aGF0
IHRoZSB3aW5kb3cgc2hlbGwKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyB0byBiZSBrZXB0IGFsaXZl
IGJ5IGEgdjggY29udGV4dCBidXQgcmF0aGVyIGEgc21hbGxlcgorICAgICAgICBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0
YTo6Z2V0Q3VycmVudFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQZXJzaXN0ZW50OjpsZWFrSGFuZGxlKToK
KyAgICAgICAgKFNjb3BlZFBlcnNpc3RlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cmVz
ZXRJc29sYXRlZFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29udGV4dERhdGFGb3JDdXJyZW50V29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpp
c29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5k
b3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6Y2xlYXJJc29sYXRlZFNoZWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAo
VjhET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHRE
YXRhOjp3b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdp
bmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZXRTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JsZENv
bnRleHRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ybGRDb250ZXh0SGFuZGxlOjpX
b3JsZENvbnRleHRIYW5kbGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorCiAyMDEyLTA5LTE2ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0g
d2luIGJ1aWxkIGZpeCAtIGxpc3RpbmcgYSBmaWxlIHRoYXQgZG9lc24ndCBleGlzdCBpcyBhIGZh
dGFsIGVycm9ycyBpbiB0aGUgbXN2cyBneXAgZ2VuZXJhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhLmNwcAppbmRleCBhZjUwYTFlY2EzYWIyMTU4MWFiZDY0YWEwMGZmNWFmMzM4
Y2JiOTdkLi43Y2MyNGJjMzg2MWI2YWIyOGRjNDNhNmNjNDY4ODcwOTc0OTIyODQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcApAQCAtNDMsOSArNDMsOSBAQCBET01EYXRh
U3RvcmUmIERPTURhdGE6OmdldEN1cnJlbnRTdG9yZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAg
ICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudChpc29s
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoZGF0YS0+ZG9tRGF0YVN0b3JlKCkgIT0gMCkpCiAgICAg
ICAgIHJldHVybiAqZGF0YS0+ZG9tRGF0YVN0b3JlKCk7Ci0gICAgVjhET01XaW5kb3dTaGVsbCog
Y29udGV4dCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKTsKLSAgICBpZiAoVU5MSUtF
TFkoY29udGV4dCAhPSAwKSkKLSAgICAgICAgcmV0dXJuICpjb250ZXh0LT53b3JsZCgpLT5kb21E
YXRhU3RvcmUoKTsKKyAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBp
c29sYXRlZERhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0
YSgpOworICAgIGlmIChVTkxJS0VMWSghIWlzb2xhdGVkRGF0YSkpCisgICAgICAgIHJldHVybiAq
aXNvbGF0ZWREYXRhLT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKICAgICByZXR1cm4gZGVmYXVs
dFN0b3JlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29w
ZWRQZXJzaXN0ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50LmgKaW5kZXggZmNjZjRhYTU5Yjg4OWM5ZTIxNjY2OTE4YmU2NGZmNjZkZTA1ZTE0MS4uOGE2
ODVmOTc0YjJjOGQ3NjdjYzVkNDlhYzU3ODE5MzVjOTg1YWY0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaApAQCAtNzgsNiArNzgsMTMgQEAgcHVi
bGljOgogICAgICAgICBtX2hhbmRsZS5DbGVhcigpOwogICAgIH0KIAorICAgIHY4OjpQZXJzaXN0
ZW50PFQ+IGxlYWtIYW5kbGUoKQorICAgIHsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8VD4gaGFu
ZGxlID0gbV9oYW5kbGU7CisgICAgICAgIG1faGFuZGxlLkNsZWFyKCk7CisgICAgICAgIHJldHVy
biBoYW5kbGU7CisgICAgfQorCiBwcml2YXRlOgogICAgIHY4OjpQZXJzaXN0ZW50PFQ+IG1faGFu
ZGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggZmI5ZDU1N2U5MmI0NjUwOTc4MzkwYzEzMWUwODM5Mjk5YTMxZGY2My4uNzhj
YjViOWUzMDQwMGIyZDUzOGI0NDc3Zjk1NGUzOGJiODM4MTJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTE0Niw3ICsxNDYsOCBA
QCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnJlc2V0SXNvbGF0ZWRXb3JsZHMoKQogewogICAgIGZv
ciAoSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNvbGF0ZWRXb3JsZHMuYmVn
aW4oKTsKICAgICAgICAgIGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkcy5lbmQoKTsgKytpdGVyKSB7
Ci0gICAgICAgIGl0ZXItPnNlY29uZC0+ZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAg
aXRlci0+c2Vjb25kLT5jbGVhcklzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgZGVsZXRlIGl0ZXIt
PnNlY29uZDsKICAgICB9CiAgICAgbV9pc29sYXRlZFdvcmxkcy5jbGVhcigpOwogICAgIG1faXNv
bGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lucy5jbGVhcigpOwpAQCAtMzg5LDExICszOTAsMTIgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJ
RCwgY29uc3QgVmVjdG9yPFNjcmlwdFMKICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5TZXQoaSwg
ZXZhbHVhdGlvblJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBNYXJrIHRlbXBvcmFy
eSBzaGVsbCBmb3Igd2VhayBkZXN0cnVjdGlvbi4KKyAgICAgICAgLy8gRGVzdHJveSB0ZW1wb3Jh
cnkgd29ybGQuCiAgICAgICAgIGlmICh3b3JsZElEID09IERPTVdyYXBwZXJXb3JsZDo6dW5pbml0
aWFsaXplZFdvcmxkSWQpIHsKICAgICAgICAgICAgIGludCBhY3R1YWxXb3JsZElkID0gaXNvbGF0
ZWRXb3JsZFNoZWxsLT53b3JsZCgpLT53b3JsZElkKCk7CiAgICAgICAgICAgICBtX2lzb2xhdGVk
V29ybGRzLnJlbW92ZShhY3R1YWxXb3JsZElkKTsKLSAgICAgICAgICAgIGlzb2xhdGVkV29ybGRT
aGVsbC0+ZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgICAgIGlzb2xhdGVkV29ybGRT
aGVsbC0+Y2xlYXJJc29sYXRlZFNoZWxsKCk7CisgICAgICAgICAgICBkZWxldGUgaXNvbGF0ZWRX
b3JsZFNoZWxsOwogICAgICAgICB9CiAKICAgICAgICAgdjhSZXN1bHRzID0gZXZhbHVhdGVIYW5k
bGVTY29wZS5DbG9zZShyZXN1bHRBcnJheSk7CkBAIC00MjgsMTEgKzQzMCwxMiBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmZpbmlzaGVkV2l0aEV2ZW50KEV2ZW50KiBldmVudCkKIAogdjg6Okxv
Y2FsPHY4OjpDb250ZXh0PiBTY3JpcHRDb250cm9sbGVyOjpjdXJyZW50V29ybGRDb250ZXh0KCkK
IHsKLSAgICBpZiAoVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbCA9IFY4RE9NV2luZG93
U2hlbGw6OmdldEVudGVyZWQoKSkgewotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4
dD4gY29udGV4dCA9IGlzb2xhdGVkU2hlbGwtPmNvbnRleHQoKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQuSXNFbXB0eSgpIHx8IG1fZnJhbWUgIT0gdG9GcmFtZUlmTm90RGV0YWNoZWQoY29udGV4dCkp
CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWRDb250
ZXh0RGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCk7
CisgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0ZWRDb250ZXh0RGF0YSkpIHsKKyAgICAgICAgVjhE
T01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbCA9IGV4aXN0aW5nV2luZG93U2hlbGxJbnRlcm5h
bChpc29sYXRlZENvbnRleHREYXRhLT53b3JsZCgpKTsKKyAgICAgICAgaWYgKCFpc29sYXRlZFNo
ZWxsIHx8IGlzb2xhdGVkU2hlbGwtPmNvbnRleHQoKS5Jc0VtcHR5KCkgfHwgbV9mcmFtZSAhPSB0
b0ZyYW1lSWZOb3REZXRhY2hlZChpc29sYXRlZFNoZWxsLT5jb250ZXh0KCkpKQogICAgICAgICAg
ICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKLSAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD46Ok5ldyhpc29sYXRlZFNoZWxsLT5jb250ZXh0KCkpOwogICAgIH0KICAg
ICB3aW5kb3dTaGVsbCgpLT5pbml0aWFsaXplSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpDb250ZXh0Pjo6TmV3KHdpbmRvd1NoZWxsKCktPmNvbnRleHQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA1YzkwNDZmZGY3NzRhZmQzNDdh
MjRiY2I2YmFhNmNjYzFjZThmY2VkLi41YTI1YjNlNjhjMjQ4M2Q5MGM3ZWJlYTY5OGQ5OWIwNTc3
ZWY4NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTMx
MCw5ICszMTAsOSBAQCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdvcmxkQwogCiBWOFBlckNvbnRleHREYXRh
KiBwZXJDb250ZXh0RGF0YUZvckN1cnJlbnRXb3JsZChGcmFtZSogZnJhbWUpCiB7Ci0gICAgVjhE
T01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbDsKLSAgICBpZiAoVU5MSUtFTFkoISEoaXNvbGF0
ZWRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkpKQotICAgICAgICByZXR1
cm4gaXNvbGF0ZWRTaGVsbC0+cGVyQ29udGV4dERhdGEoKTsKKyAgICBWOERPTVdpbmRvd1NoZWxs
OjpJc29sYXRlZENvbnRleHREYXRhKiBpc29sYXRlZFNoZWxsRGF0YTsKKyAgICBpZiAoVU5MSUtF
TFkoISEoaXNvbGF0ZWRTaGVsbERhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0
ZWRDb250ZXh0RGF0YSgpKSkpCisgICAgICAgIHJldHVybiBpc29sYXRlZFNoZWxsRGF0YS0+cGVy
Q29udGV4dERhdGEoKTsKICAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgp
LT5wZXJDb250ZXh0RGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDlmZTZkN2NlYWI5ZWVhOGVkODZlNGVhYzdiMWI5
YTYwMGQ2Yjc0NTEuLmRhM2JlNDVhOTkyY2NlNjcwNTdhN2IzMWY4ZWYwMTAwZjlkNjViNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBA
IC0xNzEsMTQgKzE3MSwxNSBAQCBzdGF0aWMgdm9pZCBjaGVja0RvY3VtZW50V3JhcHBlcih2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIERvY3VtZW50KiBkb2N1bQogICAgIEFTU0VSVCgh
ZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkgfHwgKFY4RG9jdW1lbnQ6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlci0+R2V0UHJvdG90eXBlKCkpKSA9PSBkb2N1
bWVudCkpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRJc29sYXRlZFdvcmxkRmllbGQoVjhET01XaW5k
b3dTaGVsbCogc2hlbGwsIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCkKK3N0YXRpYyB2
b2lkIHNldElzb2xhdGVkV29ybGRGaWVsZChWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRl
eHREYXRhKiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewotICAgIHRv
SW5uZXJHbG9iYWxPYmplY3QoY29udGV4dCktPlNldFBvaW50ZXJJbkludGVybmFsRmllbGQoVjhE
T01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgsIHNoZWxsKTsKKyAgICB0b0lubmVy
R2xvYmFsT2JqZWN0KGNvbnRleHQpLT5TZXRQb2ludGVySW5JbnRlcm5hbEZpZWxkKFY4RE9NV2lu
ZG93OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4LCBkYXRhKTsKIH0KIAotVjhET01XaW5kb3dT
aGVsbCogVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkV29ybGRDb250ZXh0KCkKK1Y4
RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGEqIFY4RE9NV2luZG93U2hlbGw6OnRv
SXNvbGF0ZWRDb250ZXh0RGF0YSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGlubmVyR2xvYmFsKQog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxWOERPTVdpbmRvd1NoZWxsKj4odG9Jbm5lckdsb2Jh
bE9iamVjdCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKS0+R2V0UG9pbnRlckZyb21JbnRlcm5h
bEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4KSk7CisgICAgQVNT
RVJUKFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKGlubmVyR2xvYmFsLCAmVjhET01XaW5k
b3c6OmluZm8pKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SXNvbGF0ZWRDb250ZXh0RGF0YSo+
KGlubmVyR2xvYmFsLT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQoVjhET01XaW5kb3c6OmVu
dGVyZWRJc29sYXRlZFdvcmxkSW5kZXgpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRT
Y3JpcHRDb250ZXh0RGVidWdJZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB0YXJnZXRDb250ZXh0
LCBpbnQgZGVidWdJZCkKQEAgLTIwOCwyMCArMjA5LDE0IEBAIGJvb2wgVjhET01XaW5kb3dTaGVs
bDo6aXNDb250ZXh0SW5pdGlhbGl6ZWQoKQogICAgIHJldHVybiAhbV9jb250ZXh0LmlzRW1wdHko
KTsKIH0KIAotdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkZXN0cm95SXNvbGF0ZWRTaGVsbCgpCi17
Ci0gICAgZGlzcG9zZUNvbnRleHQodHJ1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGlzb2xhdGVkQ29u
dGV4dFdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCog
cGFyYW1ldGVyKQogewotICAgIC8vIEhhbmRsZSB3aWxsIGJlIGRpc3Bvc2VkIGluIGRlbGV0ZS4K
LSAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhET01XaW5kb3dTaGVsbCo+KHBhcmFtZXRlcik7Cisg
ICAgb2JqZWN0LkRpc3Bvc2UoKTsKKyAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhET01XaW5kb3dT
aGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSo+KHBhcmFtZXRlcik7CiB9CiAKLXZvaWQgVjhET01X
aW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQoYm9vbCB3ZWFrKQordm9pZCBWOERPTVdpbmRvd1No
ZWxsOjpkaXNwb3NlQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRleHQuZ2V0KCkuSXNX
ZWFrKCkpOwogICAgIG1fcGVyQ29udGV4dERhdGEuY2xlYXIoKTsKIAogICAgIGlmIChtX2NvbnRl
eHQuaXNFbXB0eSgpKQpAQCAtMjI5LDE0ICsyMjQsMTQgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxs
OjpkaXNwb3NlQ29udGV4dChib29sIHdlYWspCiAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dChtX2NvbnRleHQuZ2V0KCksIG1fd29ybGQt
PndvcmxkSWQoKSk7CiAKLSAgICBpZiAoIXdlYWspCi0gICAgICAgIG1fY29udGV4dC5jbGVhcigp
OwotICAgIGVsc2UgeworICAgIGlmIChtX2lzb2xhdGVkQ29udGV4dERhdGEpIHsKICAgICAgICAg
QVNTRVJUKCFtX3dvcmxkLT5pc01haW5Xb3JsZCgpKTsKLSAgICAgICAgZGVzdHJveUdsb2JhbCgp
OwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICAgICAgbV9jb250ZXh0LmdldCgpLk1ha2VXZWFr
KHRoaXMsIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk7Ci0gICAgfQorICAgICAgICAvLyBI
ZXJlIHdlIG11c3QgaW50ZW50aW9uYWxseSBsZWFrIHRoZSBwZXIgY29udGV4dCBkYXRhIHBvaW50
ZXIgYXMgaXQgZ2V0cyBkZWxldGVkIGluIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjay4KKyAg
ICAgICAgbV9jb250ZXh0LmxlYWtIYW5kbGUoKS5NYWtlV2VhayhtX2lzb2xhdGVkQ29udGV4dERh
dGEubGVha1B0cigpLCBpc29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOworICAgICAgICAvLyBU
aGUgZ2xvYmFsIGhhbmRsZSBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4dCwgc28gaXQg
bXVzdCBiZSByZW1vdmVkLgorICAgICAgICBtX2dsb2JhbC5jbGVhcigpOworICAgIH0gZWxzZQor
ICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKIAogICAgIC8vIEl0J3MgbGlrZWx5IHRoYXQgZGlz
cG9zaW5nIHRoZSBjb250ZXh0IGhhcyBjcmVhdGVkIGEgbG90IG9mCiAgICAgLy8gZ2FyYmFnZS4g
Tm90aWZ5IFY4IGFib3V0IHRoaXMgc28gaXQnbGwgaGF2ZSBhIGNoYW5jZSBvZiBjbGVhbmluZwpA
QCAtMjUyLDYgKzI0NywxMSBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRlc3Ryb3lHbG9iYWwo
KQogICAgIG1fZ2xvYmFsLmNsZWFyKCk7CiB9CiAKK3ZvaWQgVjhET01XaW5kb3dTaGVsbDo6Y2xl
YXJJc29sYXRlZFNoZWxsKCkKK3sKKyAgICBkaXNwb3NlQ29udGV4dCgpOworfQorCiB2b2lkIFY4
RE9NV2luZG93U2hlbGw6OmNsZWFyRm9yQ2xvc2UoKQogewogICAgIGlmIChtX2NvbnRleHQuaXNF
bXB0eSgpKQpAQCAtMzQ2LDE5ICszNDYsMjAgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbml0
aWFsaXplSWZOZWVkZWQoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9wZXJDb250ZXh0RGF0
YSA9IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmICgh
bV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7CisgICAgICAgIGRpc3Bvc2VDb250ZXh0KCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBGbGFnIGNvbnRleHQgYXMgaXNv
bGF0ZWQuCiAgICAgaWYgKCFpc01haW5Xb3JsZCkgewogICAgICAgICBWOERPTVdpbmRvd1NoZWxs
KiBtYWluV2luZG93ID0gbV9mcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCk7CiAgICAgICAg
IG1haW5XaW5kb3ctPmluaXRpYWxpemVJZk5lZWRlZCgpOwogICAgICAgICBpZiAoIW1haW5XaW5k
b3ctPmNvbnRleHQoKS5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzZXRJbmplY3RlZFNjcmlwdENv
bnRleHREZWJ1Z0lkKG1fY29udGV4dC5nZXQoKSwgbV9mcmFtZS0+c2NyaXB0KCktPmNvbnRleHRE
ZWJ1Z0lkKG1haW5XaW5kb3ctPmNvbnRleHQoKSkpOwotICAgICAgICBzZXRJc29sYXRlZFdvcmxk
RmllbGQodGhpcywgY29udGV4dCk7Ci0gICAgfQotCi0gICAgbV9wZXJDb250ZXh0RGF0YSA9IFY4
UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwotICAgIGlmICghbV9wZXJD
b250ZXh0RGF0YS0+aW5pdCgpKSB7Ci0gICAgICAgIGRpc3Bvc2VDb250ZXh0KCk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9pc29sYXRlZENvbnRleHREYXRhID0gSXNvbGF0ZWRD
b250ZXh0RGF0YTo6Y3JlYXRlKG1fd29ybGQsIG1fcGVyQ29udGV4dERhdGEucmVsZWFzZSgpLCBt
X2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgc2V0SXNvbGF0ZWRX
b3JsZEZpZWxkKG1faXNvbGF0ZWRDb250ZXh0RGF0YS5nZXQoKSwgY29udGV4dCk7CiAgICAgfQog
CiAgICAgaWYgKCFpbnN0YWxsRE9NV2luZG93KCkpIHsKQEAgLTYxOCw2ICs2MTksOCBAQCB2b2lk
IFY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPgogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZUlzb2xhdGVkQ29udGV4dChtX2ZyYW1lLCBzY3JpcHRTdGF0ZSwgc2VjdXJpdHlPcmln
aW4uZ2V0KCkpOwogICAgIH0KICAgICBtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2lu
ID0gc2VjdXJpdHlPcmlnaW47CisgICAgaWYgKG1faXNvbGF0ZWRDb250ZXh0RGF0YSkKKyAgICAg
ICAgbV9pc29sYXRlZENvbnRleHREYXRhLT5zZXRTZWN1cml0eU9yaWdpbihtX2lzb2xhdGVkV29y
bGRTaGVsbFNlY3VyaXR5T3JpZ2luKTsKIH0KIAogfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKaW5kZXggMDFkMjk4MTdmYzhkMzIx
Y2IxNGExOGUwODYzOGU0MzIyYWQ2OWRkOC4uNTA0OWZmMGJiZDI4NzZhOTI1ZmY3MzE0OTFmM2Nj
NjAzNDdlNDhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
aW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuaApAQCAtNTMsNiArNTMsMzUgQEAgY2xhc3MgSFRNTERvY3VtZW50OwogLy8gcGVyc2lz
dCBiZXR3ZWVuIG5hdmlnYXRpb25zLgogY2xhc3MgVjhET01XaW5kb3dTaGVsbCB7CiBwdWJsaWM6
CisKKyAgICAvLyBUaGlzIGNsYXNzIGhvbGRzIGFsbCB0aGUgZGF0YSB0aGF0IGlzIGFjY2Vzc2li
bGUgZnJvbSBhIGNvbnRleHQgZm9yIGFuIGlzb2xhdGVkIHNoZWxsLgorICAgIC8vIEl0IHN1cnZp
dmVzIHVudGlsIHRoZSBjb250ZXh0IGlzIGRlbGV0ZWQuCisgICAgY2xhc3MgSXNvbGF0ZWRDb250
ZXh0RGF0YSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElzb2xhdGVkQ29udGV4dERh
dGEpOworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8SXNvbGF0ZWRDb250
ZXh0RGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCwgUGFzc093
blB0cjxWOFBlckNvbnRleHREYXRhPiBwZXJDb250ZXh0RGF0YSwKKyAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJc29sYXRlZENvbnRleHREYXRhKHdvcmxkLCBw
ZXJDb250ZXh0RGF0YSwgc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAgICAgfQorICAgICAgICBET01X
cmFwcGVyV29ybGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQorICAgICAgICBW
OFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSgpIHsgcmV0dXJuIG1fcGVyQ29udGV4dERh
dGEuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4pIHsgbV9zZWN1cml0eU9yaWdpbiA9IG9yaWdpbjsgfQorICAg
ICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3NlY3VyaXR5
T3JpZ2luLmdldCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBJc29sYXRlZENvbnRleHRE
YXRhKFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCwgUGFzc093blB0cjxWOFBlckNv
bnRleHREYXRhPiBwZXJDb250ZXh0RGF0YSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4pCisgICAgICAgICAgICA6IG1fd29ybGQod29ybGQpCisgICAgICAgICAgICAs
IG1fcGVyQ29udGV4dERhdGEocGVyQ29udGV4dERhdGEpCisgICAgICAgICAgICAsIG1fc2VjdXJp
dHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CisgICAgICAgIE93blB0cjxWOFBlckNv
bnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fc2VjdXJpdHlPcmlnaW47CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFY4
RE9NV2luZG93U2hlbGw+IGNyZWF0ZShGcmFtZSosIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxk
Pik7CiAKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gY29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAtNzYsNiArMTA1LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjbGVhckZvck5hdmlnYXRpb24oKTsKICAgICB2b2lkIGNsZWFyRm9yQ2xvc2UoKTsK
KyAgICB2b2lkIGNsZWFySXNvbGF0ZWRTaGVsbCgpOwogCiAgICAgdm9pZCBkZXN0cm95R2xvYmFs
KCk7CiAKQEAgLTkwLDI5ICsxMjAsMjUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pc29s
YXRlZFdvcmxkU2hlbGxTZWN1cml0eU9yaWdpbi5nZXQoKTsKICAgICB9OwogCi0gICAgLy8gUmV0
dXJucyB0aGUgaXNvbGF0ZWQgd29ybGQgYXNzb2NpYXRlZCB3aXRoCi0gICAgLy8gdjg6OkNvbnRl
eHQ6OkdldEVudGVyZWQoKS4gQmVjYXVzZSB3b3JsZHMgYXJlIGlzb2xhdGVkLCB0aGUgZW50aXJl
Ci0gICAgLy8gSmF2YVNjcmlwdCBjYWxsIHN0YWNrIHNob3VsZCBiZSBmcm9tIHRoZSBzYW1lIGlz
b2xhdGVkIHdvcmxkLgotICAgIC8vIFJldHVybnMgMCBpZiB0aGUgZW50ZXJlZCBjb250ZXh0IGlz
IGZyb20gdGhlIG1haW4gd29ybGQuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgZWRn
ZSBjYXNlcyB3aXRoIERPTSBtdXRhdGlvbiBldmVudHMgdGhhdCBtaWdodAotICAgIC8vIHZpb2xh
dGUgdGhpcyBpbnZhcmlhbnQuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBwb29ybHkg
bmFtZWQgYWZ0ZXIgdGhlIGRlbGV0aW9uIG9mIGlzb2xhdGVkIGNvbnRleHRzLgotICAgIHN0YXRp
YyBWOERPTVdpbmRvd1NoZWxsKiBnZXRFbnRlcmVkKCkKKyAgICBpbmxpbmUgc3RhdGljIElzb2xh
dGVkQ29udGV4dERhdGEqIGVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCkKICAgICB7Ci0gICAg
ICAgIGlmICghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpCisgICAgICAg
IGlmIChMSUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQo
KSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gZW50ZXJlZElzb2xhdGVk
V29ybGRDb250ZXh0KCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJHbG9i
YWwgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVk
KCktPkdsb2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CisgICAgICAgIElzb2xhdGVkQ29udGV4dERh
dGEqIGlzb2xhdGVkQ29udGV4dERhdGEgPSB0b0lzb2xhdGVkQ29udGV4dERhdGEoaW5uZXJHbG9i
YWwpOworICAgICAgICBpZiAoTElLRUxZKCFpc29sYXRlZENvbnRleHREYXRhKSkKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gaXNvbGF0ZWRDb250ZXh0RGF0YTsKICAgICB9
CiAKLSAgICB2b2lkIGRlc3Ryb3lJc29sYXRlZFNoZWxsKCk7CisgICAgc3RhdGljIElzb2xhdGVk
Q29udGV4dERhdGEqIHRvSXNvbGF0ZWRDb250ZXh0RGF0YSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGlubmVyR2xvYmFsKTsKKwogcHJpdmF0ZToKICAgICBWOERPTVdpbmRvd1NoZWxsKEZyYW1lKiwg
UGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+KTsKIAotICAgIHZvaWQgZGlzcG9zZUNvbnRleHQo
Ym9vbCB3ZWFrID0gZmFsc2UpOworICAgIHZvaWQgZGlzcG9zZUNvbnRleHQoKTsKIAogICAgIHZv
aWQgc2V0U2VjdXJpdHlUb2tlbigpOwogCkBAIC0xMjYsMTIgKzE1MiwxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY3JlYXRlQ29udGV4dCgpOwogICAgIGJvb2wgaW5zdGFsbERPTVdpbmRvdygpOwog
Ci0gICAgc3RhdGljIFY4RE9NV2luZG93U2hlbGwqIGVudGVyZWRJc29sYXRlZFdvcmxkQ29udGV4
dCgpOwotCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4g
bV93b3JsZDsKIAogICAgIE93blB0cjxWOFBlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRh
OworICAgIE93blB0cjxJc29sYXRlZENvbnRleHREYXRhPiBtX2lzb2xhdGVkQ29udGV4dERhdGE7
CiAKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgU2Nv
cGVkUGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX2dsb2JhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggYWQxYmNhZmQ5Y2UwZGNjMWUxYWQxN2FhNmVkNjFm
YzUyYmRiMDMxMC4uYzU0NWE4NjNkNzIwNTM4Y2QzZTRlM2I4ZDM2ZGM1NTlmYzZmYTcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTExOCwxNCArMTE4
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICp3
cmFwcGVyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBj
b250ZXh0ID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpOwotICAgICAgICAgICAgaWYg
KExJS0VMWSghY29udGV4dCkpIHsKKyAgICAgICAgICAgIFY4RE9NV2luZG93U2hlbGw6Oklzb2xh
dGVkQ29udGV4dERhdGEqIGlzb2xhdGVkRGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJ
c29sYXRlZENvbnRleHREYXRhKCk7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFpc29sYXRlZERh
dGEpKSB7CiAgICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIHdyYXBw
ZXIgPSBub2RlLT53cmFwcGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVyKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogICAgICAg
ICAgICAgICAgIHJldHVybiAqd3JhcHBlcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIERP
TURhdGFTdG9yZSogc3RvcmUgPSBjb250ZXh0LT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKKyAg
ICAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBpc29sYXRlZERhdGEtPndvcmxkKCktPmRv
bURhdGFTdG9yZSgpOwogICAgICAgICAgICAgRE9NTm9kZU1hcHBpbmcmIGRvbU5vZGVNYXAgPSBu
b2RlLT5pc0FjdGl2ZU5vZGUoKSA/IHN0b3JlLT5hY3RpdmVEb21Ob2RlTWFwKCkgOiBzdG9yZS0+
ZG9tTm9kZU1hcCgpOwogICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVNYXAuZ2V0KG5vZGUpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENv
bnRleHRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0
SGFuZGxlLmNwcAppbmRleCAzNGI5YzE5YmY1OTgwODUxZjJmMjZiMmZiYTNjYjRlNzM4MjY1OWY5
Li4zMTk5ZGZkOWEwNTJiZGE4N2JjOWZhZGQ3MTRlMmJhMTk3M2I4N2FmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKQEAgLTQ0LDI3
ICs0NCwyOCBAQCBXb3JsZENvbnRleHRIYW5kbGU6OldvcmxkQ29udGV4dEhhbmRsZShXb3JsZFRv
VXNlIHdvcmxkVG9Vc2UpCiAgICAgaWYgKHdvcmxkVG9Vc2UgPT0gVXNlTWFpbldvcmxkIHx8IHdv
cmxkVG9Vc2UgPT0gVXNlV29ya2VyV29ybGQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICgh
djg6OkNvbnRleHQ6OkluQ29udGV4dCgpKSB7CisgICAgICAgIG1fd29ybGRUb1VzZSA9IFVzZU1h
aW5Xb3JsZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIEFTU0VSVCgh
Y29udGV4dC5Jc0VtcHR5KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJHbG9i
YWwgPSB0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRleHQpOwogI2lmIEVOQUJMRShXT1JLRVJTKQot
ICAgIC8vIEZJWE1FIFdlIGFyZSBkdXBsaWNhdGluZyBhIGxvdCBvZiBlZmZvcnQgaGVyZSBjaGVj
a2luZyB0aGUgY29udGV4dCBmb3IgdGhlIHdvcmtlciBhbmQgZm9yIHRoZSBpc29sYXRlZCB3b3Js
ZC4KLSAgICBpZiAodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKSB7Ci0gICAgICAgIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOwotICAg
ICAgICBpZiAoIWNvbnRleHQuSXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFko
IVY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4
dCksICZWOERPTVdpbmRvdzo6aW5mbykpKSB7Ci0gICAgICAgICAgICAgICAgbV93b3JsZFRvVXNl
ID0gVXNlV29ya2VyV29ybGQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICB9CisgICAgaWYgKFVOTElLRUxZKCFWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9m
VHlwZShpbm5lckdsb2JhbCwgJlY4RE9NV2luZG93OjppbmZvKSkpIHsKKyAgICAgICAgbV93b3Js
ZFRvVXNlID0gVXNlV29ya2VyV29ybGQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYK
IAotICAgIFY4RE9NV2luZG93U2hlbGwqIHNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50
ZXJlZCgpOwotICAgIGlmIChMSUtFTFkoIXNoZWxsKSkgeworICAgIFY4RE9NV2luZG93U2hlbGw6
Oklzb2xhdGVkQ29udGV4dERhdGEqIGRhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjp0b0lzb2xhdGVk
Q29udGV4dERhdGEoaW5uZXJHbG9iYWwpOworICAgIGlmIChMSUtFTFkoIWRhdGEpKSB7CiAgICAg
ICAgIG1fd29ybGRUb1VzZSA9IFVzZU1haW5Xb3JsZDsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIEFTU0VSVCghc2hlbGwtPmNvbnRleHQoKS5Jc0VtcHR5KCkpOwotICAgIG1fY29udGV4
dCA9IFNoYXJlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+OjpjcmVhdGUoc2hlbGwtPmNvbnRleHQo
KSk7CisgICAgbV9jb250ZXh0ID0gU2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD46OmNyZWF0
ZShjb250ZXh0KTsKIH0KIAogdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBXb3JsZENvbnRleHRIYW5k
bGU6OmFkanVzdGVkQ29udGV4dChTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3Rv
bS5jcHAKaW5kZXggZDY4NTdiYjk2NjYwODg4Y2U2ZWU5MGViYzc5OGJjYThkZmQyM2QzNi4uNDYz
ZDAwYzU2Nzg3NjBjNGQxZGQ1ZDdjYjYzNTY0NTM4ZGJkM2NkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApAQCAt
MTA4LDcgKzEwOCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERvY3VtZW50KiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0
RW50ZXJlZCgpKSB7CisgICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRD
b250ZXh0RGF0YSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgp
KQogICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1
bWVudFdyYXBwZXIod3JhcHBlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZTUw
YTI2MDNlNDQ3YTFmNjM0YzliNmYzYTliY2M4OGE4MjQ4M2FkNi4uODhkZTgxMjIwMDBmNTZlZDJi
MGJjZjVhZGE0ZTJlZDU5ZjhhNGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xODMsNyAr
MTgzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ28KICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBWOEhUTUxEb2N1bWVudDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50
ZXJlZCgpKSB7CisgICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250
ZXh0RGF0YSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQog
ICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVu
dFdyYXBwZXIod3JhcHBlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGRhMTY2YTdh
ZmZmM2I3YWM1OTVhMDI4MmJlZWY5NzU4MGU1Y2E4M2YuLjNjODJjODE3Y2I5NTRjYTA5Y2ZhM2Y1
ZDNiOTVmOGVmZWZiODlhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU1ZHRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db24KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBWOFNWR0RvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwg
Zm9yY2VOZXdPYmplY3QpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsK
KyAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCkp
IHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAgICAgICAgICAg
ICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3
cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDA1
MGI3ZmI0ZDM4NmE3MWY5N2NiZWE0YTk1OWUxMmJhZjdhNzc5M2IuLmU5NDg1ZjkxYTA2Y2M0YWJl
ZDBlZGE5NjVmOGVjNmJjNTdmMjdhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3Iu
Y3BwCkBAIC01NSw4ICs1NSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1
ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
IAogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47Ci0gICAgaWYgKFY4
RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkV29ybGRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6Omdl
dEVudGVyZWQoKSkKLSAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBpc29sYXRlZFdvcmxkU2hlbGwt
Pmlzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbigpOworICAgIGlmIChWOERPTVdpbmRvd1NoZWxs
OjpJc29sYXRlZENvbnRleHREYXRhKiBpc29sYXRlZENvbnRleHREYXRhID0gVjhET01XaW5kb3dT
aGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKSkKKyAgICAgICAgc2VjdXJpdHlPcmln
aW4gPSBpc29sYXRlZENvbnRleHREYXRhLT5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgUmVmUHRy
PFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgc2VjdXJpdHlPcmlnaW4pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164371</attachid>
            <date>2012-09-17 04:57:24 -0700</date>
            <delta_ts>2012-09-28 09:48:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20120917135652.patch</filename>
            <type>text/plain</type>
            <size>24021</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU0NTQ5MTczZGE1ZTIx
ZDZjYzI4YmNiYzlmOTQ3NWNkOWIwYjZjNS4uZmM4MmNmYTMzMjM0MWNiYmVhNGMwYmNkOWZmNGZj
MTlkZWU1YjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTE2ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCB3YXMgcmVmYWN0b3JlZCBzbyB0aGF0
IHRoZSB3aW5kb3cgc2hlbGwKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyB0byBiZSBrZXB0IGFsaXZl
IGJ5IGEgdjggY29udGV4dCBidXQgcmF0aGVyIGEgc21hbGxlcgorICAgICAgICBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0
YTo6Z2V0Q3VycmVudFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQZXJzaXN0ZW50OjpsZWFrSGFuZGxlKToK
KyAgICAgICAgKFNjb3BlZFBlcnNpc3RlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cmVz
ZXRJc29sYXRlZFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29udGV4dERhdGFGb3JDdXJyZW50V29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpp
c29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5k
b3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6Y2xlYXJJc29sYXRlZFNoZWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAo
VjhET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHRE
YXRhOjp3b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdp
bmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZXRTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JsZENv
bnRleHRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ybGRDb250ZXh0SGFuZGxlOjpX
b3JsZENvbnRleHRIYW5kbGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorCiAyMDEyLTA5LTE2ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0g
d2luIGJ1aWxkIGZpeCAtIGxpc3RpbmcgYSBmaWxlIHRoYXQgZG9lc24ndCBleGlzdCBpcyBhIGZh
dGFsIGVycm9ycyBpbiB0aGUgbXN2cyBneXAgZ2VuZXJhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhLmNwcAppbmRleCBhZjUwYTFlY2EzYWIyMTU4MWFiZDY0YWEwMGZmNWFmMzM4
Y2JiOTdkLi43Y2MyNGJjMzg2MWI2YWIyOGRjNDNhNmNjNDY4ODcwOTc0OTIyODQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcApAQCAtNDMsOSArNDMsOSBAQCBET01EYXRh
U3RvcmUmIERPTURhdGE6OmdldEN1cnJlbnRTdG9yZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAg
ICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudChpc29s
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoZGF0YS0+ZG9tRGF0YVN0b3JlKCkgIT0gMCkpCiAgICAg
ICAgIHJldHVybiAqZGF0YS0+ZG9tRGF0YVN0b3JlKCk7Ci0gICAgVjhET01XaW5kb3dTaGVsbCog
Y29udGV4dCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKTsKLSAgICBpZiAoVU5MSUtF
TFkoY29udGV4dCAhPSAwKSkKLSAgICAgICAgcmV0dXJuICpjb250ZXh0LT53b3JsZCgpLT5kb21E
YXRhU3RvcmUoKTsKKyAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBp
c29sYXRlZERhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0
YSgpOworICAgIGlmIChVTkxJS0VMWSghIWlzb2xhdGVkRGF0YSkpCisgICAgICAgIHJldHVybiAq
aXNvbGF0ZWREYXRhLT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKICAgICByZXR1cm4gZGVmYXVs
dFN0b3JlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29w
ZWRQZXJzaXN0ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50LmgKaW5kZXggZmNjZjRhYTU5Yjg4OWM5ZTIxNjY2OTE4YmU2NGZmNjZkZTA1ZTE0MS4uOGE2
ODVmOTc0YjJjOGQ3NjdjYzVkNDlhYzU3ODE5MzVjOTg1YWY0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaApAQCAtNzgsNiArNzgsMTMgQEAgcHVi
bGljOgogICAgICAgICBtX2hhbmRsZS5DbGVhcigpOwogICAgIH0KIAorICAgIHY4OjpQZXJzaXN0
ZW50PFQ+IGxlYWtIYW5kbGUoKQorICAgIHsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8VD4gaGFu
ZGxlID0gbV9oYW5kbGU7CisgICAgICAgIG1faGFuZGxlLkNsZWFyKCk7CisgICAgICAgIHJldHVy
biBoYW5kbGU7CisgICAgfQorCiBwcml2YXRlOgogICAgIHY4OjpQZXJzaXN0ZW50PFQ+IG1faGFu
ZGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggZmI5ZDU1N2U5MmI0NjUwOTc4MzkwYzEzMWUwODM5Mjk5YTMxZGY2My4uNThi
ZTFjM2RhNTUxMjMwNmRlOTBhM2U1YzA0YjE2YzgxYWE4YjQ1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTE0Niw3ICsxNDYsOCBA
QCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnJlc2V0SXNvbGF0ZWRXb3JsZHMoKQogewogICAgIGZv
ciAoSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNvbGF0ZWRXb3JsZHMuYmVn
aW4oKTsKICAgICAgICAgIGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkcy5lbmQoKTsgKytpdGVyKSB7
Ci0gICAgICAgIGl0ZXItPnNlY29uZC0+ZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAg
aXRlci0+c2Vjb25kLT5jbGVhcklzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgZGVsZXRlIGl0ZXIt
PnNlY29uZDsKICAgICB9CiAgICAgbV9pc29sYXRlZFdvcmxkcy5jbGVhcigpOwogICAgIG1faXNv
bGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lucy5jbGVhcigpOwpAQCAtMzg5LDExICszOTAsMTIgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJ
RCwgY29uc3QgVmVjdG9yPFNjcmlwdFMKICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5TZXQoaSwg
ZXZhbHVhdGlvblJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBNYXJrIHRlbXBvcmFy
eSBzaGVsbCBmb3Igd2VhayBkZXN0cnVjdGlvbi4KKyAgICAgICAgLy8gRGVzdHJveSB0ZW1wb3Jh
cnkgd29ybGQuCiAgICAgICAgIGlmICh3b3JsZElEID09IERPTVdyYXBwZXJXb3JsZDo6dW5pbml0
aWFsaXplZFdvcmxkSWQpIHsKICAgICAgICAgICAgIGludCBhY3R1YWxXb3JsZElkID0gaXNvbGF0
ZWRXb3JsZFNoZWxsLT53b3JsZCgpLT53b3JsZElkKCk7CiAgICAgICAgICAgICBtX2lzb2xhdGVk
V29ybGRzLnJlbW92ZShhY3R1YWxXb3JsZElkKTsKLSAgICAgICAgICAgIGlzb2xhdGVkV29ybGRT
aGVsbC0+ZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgICAgIGlzb2xhdGVkV29ybGRT
aGVsbC0+Y2xlYXJJc29sYXRlZFNoZWxsKCk7CisgICAgICAgICAgICBkZWxldGUgaXNvbGF0ZWRX
b3JsZFNoZWxsOwogICAgICAgICB9CiAKICAgICAgICAgdjhSZXN1bHRzID0gZXZhbHVhdGVIYW5k
bGVTY29wZS5DbG9zZShyZXN1bHRBcnJheSk7CkBAIC00MjgsMTEgKzQzMCwyMCBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmZpbmlzaGVkV2l0aEV2ZW50KEV2ZW50KiBldmVudCkKIAogdjg6Okxv
Y2FsPHY4OjpDb250ZXh0PiBTY3JpcHRDb250cm9sbGVyOjpjdXJyZW50V29ybGRDb250ZXh0KCkK
IHsKLSAgICBpZiAoVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbCA9IFY4RE9NV2luZG93
U2hlbGw6OmdldEVudGVyZWQoKSkgewotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4
dD4gY29udGV4dCA9IGlzb2xhdGVkU2hlbGwtPmNvbnRleHQoKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQuSXNFbXB0eSgpIHx8IG1fZnJhbWUgIT0gdG9GcmFtZUlmTm90RGV0YWNoZWQoY29udGV4dCkp
CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWRDb250
ZXh0RGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCk7
CisgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0ZWRDb250ZXh0RGF0YSkpIHsKKyAgICAgICAgVjhE
T01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbCA9IGV4aXN0aW5nV2luZG93U2hlbGxJbnRlcm5h
bChpc29sYXRlZENvbnRleHREYXRhLT53b3JsZCgpKTsKKyAgICAgICAgLy8gQSB0ZW1wb3Jhcnkg
aXNvbGF0ZWQgd29ybGQgaGFzIGJlZW4gZGVsZXRlZCwgc28gdXNlIHRoZSBjdXJyZW50IGNvbnRl
eHQuCisgICAgICAgIGlmIChVTkxJS0VMWSghaXNvbGF0ZWRTaGVsbCkpIHsKKyAgICAgICAgICAg
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0RW50ZXJl
ZCgpOworICAgICAgICAgICAgaWYgKG1fZnJhbWUgIT0gdG9GcmFtZUlmTm90RGV0YWNoZWQoY29u
dGV4dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsK
KyAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoY29udGV4dCk7
CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhlIHNoZWxsIGV4aXN0cywgYnV0IHBvdGVudGlhbGx5
IGl0IGhhcyBhIG5ldyBjb250ZXh0LCBzbyB1c2UgaXQuCisgICAgICAgIGlmIChpc29sYXRlZFNo
ZWxsLT5jb250ZXh0KCkuSXNFbXB0eSgpIHx8IG1fZnJhbWUgIT0gdG9GcmFtZUlmTm90RGV0YWNo
ZWQoaXNvbGF0ZWRTaGVsbC0+Y29udGV4dCgpKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+KCk7Ci0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+
OjpOZXcoY29udGV4dCk7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpO
ZXcoaXNvbGF0ZWRTaGVsbC0+Y29udGV4dCgpKTsKICAgICB9CiAgICAgd2luZG93U2hlbGwoKS0+
aW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46
Ok5ldyh3aW5kb3dTaGVsbCgpLT5jb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAKaW5kZXggNWM5MDQ2ZmRmNzc0YWZkMzQ3YTI0YmNiNmJhYTZjY2MxY2U4
ZmNlZC4uNWEyNWIzZTY4YzI0ODNkOTBjN2ViZWE2OThkOTliMDU3N2VmODZkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC0zMTAsOSArMzEwLDkgQEAgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBXb3JsZEMKIAogVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGFG
b3JDdXJyZW50V29ybGQoRnJhbWUqIGZyYW1lKQogewotICAgIFY4RE9NV2luZG93U2hlbGwqIGlz
b2xhdGVkU2hlbGw7Ci0gICAgaWYgKFVOTElLRUxZKCEhKGlzb2xhdGVkU2hlbGwgPSBWOERPTVdp
bmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpKSkKLSAgICAgICAgcmV0dXJuIGlzb2xhdGVkU2hlbGwt
PnBlckNvbnRleHREYXRhKCk7CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0
RGF0YSogaXNvbGF0ZWRTaGVsbERhdGE7CisgICAgaWYgKFVOTElLRUxZKCEhKGlzb2xhdGVkU2hl
bGxEYXRhID0gVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKSkp
KQorICAgICAgICByZXR1cm4gaXNvbGF0ZWRTaGVsbERhdGEtPnBlckNvbnRleHREYXRhKCk7CiAg
ICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+cGVyQ29udGV4dERhdGEo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5k
b3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxs
LmNwcAppbmRleCA5ZmU2ZDdjZWFiOWVlYThlZDg2ZTRlYWM3YjFiOWE2MDBkNmI3NDUxLi5hMmY2
YjllZWVhNTY4YzMwMTNkMGY4OTIxNWZmOTgwZWU5NmEwMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTcxLDE0ICsxNzEsMTUg
QEAgc3RhdGljIHZvaWQgY2hlY2tEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyLCBEb2N1bWVudCogZG9jdW0KICAgICBBU1NFUlQoIWRvY3VtZW50LT5pc0hUTUxE
b2N1bWVudCgpIHx8IChWOERvY3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHdyYXBwZXItPkdldFByb3RvdHlwZSgpKSkgPT0gZG9jdW1lbnQpKTsKIH0KIAotc3Rh
dGljIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKFY4RE9NV2luZG93U2hlbGwqIHNoZWxsLCB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCitzdGF0aWMgdm9pZCBzZXRJc29sYXRlZFdv
cmxkRmllbGQoVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogZGF0YSwgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKIHsKLSAgICB0b0lubmVyR2xvYmFsT2JqZWN0
KGNvbnRleHQpLT5TZXRQb2ludGVySW5JbnRlcm5hbEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVk
SXNvbGF0ZWRXb3JsZEluZGV4LCBzaGVsbCk7CisgICAgdG9Jbm5lckdsb2JhbE9iamVjdChjb250
ZXh0KS0+U2V0UG9pbnRlckluSW50ZXJuYWxGaWVsZChWOERPTVdpbmRvdzo6ZW50ZXJlZElzb2xh
dGVkV29ybGRJbmRleCwgZGF0YSk7CiB9CiAKLVY4RE9NV2luZG93U2hlbGwqIFY4RE9NV2luZG93
U2hlbGw6OmVudGVyZWRJc29sYXRlZFdvcmxkQ29udGV4dCgpCitWOERPTVdpbmRvd1NoZWxsOjpJ
c29sYXRlZENvbnRleHREYXRhKiBWOERPTVdpbmRvd1NoZWxsOjp0b0lzb2xhdGVkQ29udGV4dERh
dGEodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbCkKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VjhET01XaW5kb3dTaGVsbCo+KHRvSW5uZXJHbG9iYWxPYmplY3Qodjg6OkNvbnRl
eHQ6OkdldEVudGVyZWQoKSktPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOERPTVdpbmRv
dzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCkpOworICAgIEFTU0VSVChpbm5lckdsb2JhbC0+
SW50ZXJuYWxGaWVsZENvdW50KCkgPj0gVjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxk
SW5kZXgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJc29sYXRlZENvbnRleHREYXRhKj4oaW5u
ZXJHbG9iYWwtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOERPTVdpbmRvdzo6ZW50ZXJl
ZElzb2xhdGVkV29ybGRJbmRleCkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRJbmplY3RlZFNjcmlw
dENvbnRleHREZWJ1Z0lkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHRhcmdldENvbnRleHQsIGlu
dCBkZWJ1Z0lkKQpAQCAtMjA4LDIwICsyMDksMTQgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjpp
c0NvbnRleHRJbml0aWFsaXplZCgpCiAgICAgcmV0dXJuICFtX2NvbnRleHQuaXNFbXB0eSgpOwog
fQogCi12b2lkIFY4RE9NV2luZG93U2hlbGw6OmRlc3Ryb3lJc29sYXRlZFNoZWxsKCkKLXsKLSAg
ICBkaXNwb3NlQ29udGV4dCh0cnVlKTsKLX0KLQogc3RhdGljIHZvaWQgaXNvbGF0ZWRDb250ZXh0
V2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJh
bWV0ZXIpCiB7Ci0gICAgLy8gSGFuZGxlIHdpbGwgYmUgZGlzcG9zZWQgaW4gZGVsZXRlLgotICAg
IGRlbGV0ZSBzdGF0aWNfY2FzdDxWOERPTVdpbmRvd1NoZWxsKj4ocGFyYW1ldGVyKTsKKyAgICBv
YmplY3QuRGlzcG9zZSgpOworICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOERPTVdpbmRvd1NoZWxs
OjpJc29sYXRlZENvbnRleHREYXRhKj4ocGFyYW1ldGVyKTsKIH0KIAotdm9pZCBWOERPTVdpbmRv
d1NoZWxsOjpkaXNwb3NlQ29udGV4dChib29sIHdlYWspCit2b2lkIFY4RE9NV2luZG93U2hlbGw6
OmRpc3Bvc2VDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQoIW1fY29udGV4dC5nZXQoKS5Jc1dlYWso
KSk7CiAgICAgbV9wZXJDb250ZXh0RGF0YS5jbGVhcigpOwogCiAgICAgaWYgKG1fY29udGV4dC5p
c0VtcHR5KCkpCkBAIC0yMjksMTQgKzIyNCwxNCBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRp
c3Bvc2VDb250ZXh0KGJvb2wgd2VhaykKIAogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KG1fY29udGV4dC5nZXQoKSwgbV93b3JsZC0+d29y
bGRJZCgpKTsKIAotICAgIGlmICghd2VhaykKLSAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0g
ICAgZWxzZSB7CisgICAgaWYgKG1faXNvbGF0ZWRDb250ZXh0RGF0YSkgewogICAgICAgICBBU1NF
UlQoIW1fd29ybGQtPmlzTWFpbldvcmxkKCkpOwotICAgICAgICBkZXN0cm95R2xvYmFsKCk7Ci0g
ICAgICAgIG1fZnJhbWUgPSAwOwotICAgICAgICBtX2NvbnRleHQuZ2V0KCkuTWFrZVdlYWsodGhp
cywgaXNvbGF0ZWRDb250ZXh0V2Vha0NhbGxiYWNrKTsKLSAgICB9CisgICAgICAgIC8vIEhlcmUg
d2UgbXVzdCBpbnRlbnRpb25hbGx5IGxlYWsgdGhlIHBlciBjb250ZXh0IGRhdGEgcG9pbnRlciBh
cyBpdCBnZXRzIGRlbGV0ZWQgaW4gaXNvbGF0ZWRDb250ZXh0V2Vha0NhbGxiYWNrLgorICAgICAg
ICBtX2NvbnRleHQubGVha0hhbmRsZSgpLk1ha2VXZWFrKG1faXNvbGF0ZWRDb250ZXh0RGF0YS5s
ZWFrUHRyKCksIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk7CisgICAgICAgIC8vIFRoZSBn
bG9iYWwgaGFuZGxlIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0LCBzbyBpdCBtdXN0
IGJlIHJlbW92ZWQuCisgICAgICAgIG1fZ2xvYmFsLmNsZWFyKCk7CisgICAgfSBlbHNlCisgICAg
ICAgIG1fY29udGV4dC5jbGVhcigpOwogCiAgICAgLy8gSXQncyBsaWtlbHkgdGhhdCBkaXNwb3Np
bmcgdGhlIGNvbnRleHQgaGFzIGNyZWF0ZWQgYSBsb3Qgb2YKICAgICAvLyBnYXJiYWdlLiBOb3Rp
ZnkgVjggYWJvdXQgdGhpcyBzbyBpdCdsbCBoYXZlIGEgY2hhbmNlIG9mIGNsZWFuaW5nCkBAIC0y
NTIsNiArMjQ3LDExIEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGVzdHJveUdsb2JhbCgpCiAg
ICAgbV9nbG9iYWwuY2xlYXIoKTsKIH0KIAordm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjbGVhcklz
b2xhdGVkU2hlbGwoKQoreworICAgIGRpc3Bvc2VDb250ZXh0KCk7Cit9CisKIHZvaWQgVjhET01X
aW5kb3dTaGVsbDo6Y2xlYXJGb3JDbG9zZSgpCiB7CiAgICAgaWYgKG1fY29udGV4dC5pc0VtcHR5
KCkpCkBAIC0zNDYsMTkgKzM0NiwyMCBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6OmluaXRpYWxp
emVJZk5lZWRlZCgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX3BlckNvbnRleHREYXRhID0g
VjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKCFtX3Bl
ckNvbnRleHREYXRhLT5pbml0KCkpIHsKKyAgICAgICAgZGlzcG9zZUNvbnRleHQoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIEZsYWcgY29udGV4dCBhcyBpc29sYXRl
ZC4KICAgICBpZiAoIWlzTWFpbldvcmxkKSB7CiAgICAgICAgIFY4RE9NV2luZG93U2hlbGwqIG1h
aW5XaW5kb3cgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKTsKICAgICAgICAgbWFp
bldpbmRvdy0+aW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAgICAgICAgIGlmICghbWFpbldpbmRvdy0+
Y29udGV4dCgpLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNldEluamVjdGVkU2NyaXB0Q29udGV4
dERlYnVnSWQobV9jb250ZXh0LmdldCgpLCBtX2ZyYW1lLT5zY3JpcHQoKS0+Y29udGV4dERlYnVn
SWQobWFpbldpbmRvdy0+Y29udGV4dCgpKSk7Ci0gICAgICAgIHNldElzb2xhdGVkV29ybGRGaWVs
ZCh0aGlzLCBjb250ZXh0KTsKLSAgICB9Ci0KLSAgICBtX3BlckNvbnRleHREYXRhID0gVjhQZXJD
b250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFtX3BlckNvbnRl
eHREYXRhLT5pbml0KCkpIHsKLSAgICAgICAgZGlzcG9zZUNvbnRleHQoKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBtX2lzb2xhdGVkQ29udGV4dERhdGEgPSBJc29sYXRlZENvbnRl
eHREYXRhOjpjcmVhdGUobV93b3JsZCwgbV9wZXJDb250ZXh0RGF0YS5yZWxlYXNlKCksIG1faXNv
bGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4pOworICAgICAgICBzZXRJc29sYXRlZFdvcmxk
RmllbGQobV9pc29sYXRlZENvbnRleHREYXRhLmdldCgpLCBjb250ZXh0KTsKICAgICB9CiAKICAg
ICBpZiAoIWluc3RhbGxET01XaW5kb3coKSkgewpAQCAtNjE4LDYgKzYxOSw4IEBAIHZvaWQgVjhE
T01XaW5kb3dTaGVsbDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3Jl
YXRlSXNvbGF0ZWRDb250ZXh0KG1fZnJhbWUsIHNjcmlwdFN0YXRlLCBzZWN1cml0eU9yaWdpbi5n
ZXQoKSk7CiAgICAgfQogICAgIG1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4gPSBz
ZWN1cml0eU9yaWdpbjsKKyAgICBpZiAobV9pc29sYXRlZENvbnRleHREYXRhKQorICAgICAgICBt
X2lzb2xhdGVkQ29udGV4dERhdGEtPnNldFNlY3VyaXR5T3JpZ2luKG1faXNvbGF0ZWRXb3JsZFNo
ZWxsU2VjdXJpdHlPcmlnaW4pOwogfQogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAppbmRleCAwMWQyOTgxN2ZjOGQzMjFjYjE0
YTE4ZTA4NjM4ZTQzMjJhZDY5ZGQ4Li41MDQ5ZmYwYmJkMjg3NmE5MjVmZjczMTQ5MWYzY2M2MDM0
N2U0OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5oCkBAIC01Myw2ICs1MywzNSBAQCBjbGFzcyBIVE1MRG9jdW1lbnQ7CiAvLyBwZXJzaXN0IGJl
dHdlZW4gbmF2aWdhdGlvbnMuCiBjbGFzcyBWOERPTVdpbmRvd1NoZWxsIHsKIHB1YmxpYzoKKwor
ICAgIC8vIFRoaXMgY2xhc3MgaG9sZHMgYWxsIHRoZSBkYXRhIHRoYXQgaXMgYWNjZXNzaWJsZSBm
cm9tIGEgY29udGV4dCBmb3IgYW4gaXNvbGF0ZWQgc2hlbGwuCisgICAgLy8gSXQgc3Vydml2ZXMg
dW50aWwgdGhlIGNvbnRleHQgaXMgZGVsZXRlZC4KKyAgICBjbGFzcyBJc29sYXRlZENvbnRleHRE
YXRhIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSXNvbGF0ZWRDb250ZXh0RGF0YSk7
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxJc29sYXRlZENvbnRleHRE
YXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IHdvcmxkLCBQYXNzT3duUHRy
PFY4UGVyQ29udGV4dERhdGE+IHBlckNvbnRleHREYXRhLAorICAgICAgICAgICAgICAgIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IElzb2xhdGVkQ29udGV4dERhdGEod29ybGQsIHBlckNv
bnRleHREYXRhLCBzZWN1cml0eU9yaWdpbikpOworICAgICAgICB9CisgICAgICAgIERPTVdyYXBw
ZXJXb3JsZCogd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CisgICAgICAgIFY4UGVy
Q29udGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5n
ZXQoKTsgfQorICAgICAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbikgeyBtX3NlY3VyaXR5T3JpZ2luID0gb3JpZ2luOyB9CisgICAgICAg
IFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmln
aW4uZ2V0KCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIElzb2xhdGVkQ29udGV4dERhdGEo
UGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IHdvcmxkLCBQYXNzT3duUHRyPFY4UGVyQ29udGV4
dERhdGE+IHBlckNvbnRleHREYXRhLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbikKKyAgICAgICAgICAgIDogbV93b3JsZCh3b3JsZCkKKyAgICAgICAgICAgICwgbV9w
ZXJDb250ZXh0RGF0YShwZXJDb250ZXh0RGF0YSkKKyAgICAgICAgICAgICwgbV9zZWN1cml0eU9y
aWdpbihzZWN1cml0eU9yaWdpbikKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVm
UHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKKyAgICAgICAgT3duUHRyPFY4UGVyQ29udGV4
dERhdGE+IG1fcGVyQ29udGV4dERhdGE7CisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
bV9zZWN1cml0eU9yaWdpbjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NPd25QdHI8VjhET01X
aW5kb3dTaGVsbD4gY3JlYXRlKEZyYW1lKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+KTsK
IAogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC03Niw2ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyRm9yTmF2aWdhdGlvbigpOwogICAgIHZvaWQgY2xlYXJGb3JDbG9zZSgpOworICAg
IHZvaWQgY2xlYXJJc29sYXRlZFNoZWxsKCk7CiAKICAgICB2b2lkIGRlc3Ryb3lHbG9iYWwoKTsK
IApAQCAtOTAsMjkgKzEyMCwyNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2lzb2xhdGVk
V29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luLmdldCgpOwogICAgIH07CiAKLSAgICAvLyBSZXR1cm5z
IHRoZSBpc29sYXRlZCB3b3JsZCBhc3NvY2lhdGVkIHdpdGgKLSAgICAvLyB2ODo6Q29udGV4dDo6
R2V0RW50ZXJlZCgpLiBCZWNhdXNlIHdvcmxkcyBhcmUgaXNvbGF0ZWQsIHRoZSBlbnRpcmUKLSAg
ICAvLyBKYXZhU2NyaXB0IGNhbGwgc3RhY2sgc2hvdWxkIGJlIGZyb20gdGhlIHNhbWUgaXNvbGF0
ZWQgd29ybGQuCi0gICAgLy8gUmV0dXJucyAwIGlmIHRoZSBlbnRlcmVkIGNvbnRleHQgaXMgZnJv
bSB0aGUgbWFpbiB3b3JsZC4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBDb25zaWRlciBlZGdlIGNh
c2VzIHdpdGggRE9NIG11dGF0aW9uIGV2ZW50cyB0aGF0IG1pZ2h0Ci0gICAgLy8gdmlvbGF0ZSB0
aGlzIGludmFyaWFudC4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBUaGlzIGlzIHBvb3JseSBuYW1l
ZCBhZnRlciB0aGUgZGVsZXRpb24gb2YgaXNvbGF0ZWQgY29udGV4dHMuCi0gICAgc3RhdGljIFY4
RE9NV2luZG93U2hlbGwqIGdldEVudGVyZWQoKQorICAgIGlubGluZSBzdGF0aWMgSXNvbGF0ZWRD
b250ZXh0RGF0YSogZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKQogICAgIHsKLSAgICAgICAg
aWYgKCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkKKyAgICAgICAgaWYg
KExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBlbnRlcmVkSXNvbGF0ZWRXb3Js
ZENvbnRleHQoKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKS0+
R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKKyAgICAgICAgSXNvbGF0ZWRDb250ZXh0RGF0YSog
aXNvbGF0ZWRDb250ZXh0RGF0YSA9IHRvSXNvbGF0ZWRDb250ZXh0RGF0YShpbm5lckdsb2JhbCk7
CisgICAgICAgIGlmIChMSUtFTFkoIWlzb2xhdGVkQ29udGV4dERhdGEpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBpc29sYXRlZENvbnRleHREYXRhOwogICAgIH0KIAot
ICAgIHZvaWQgZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKKyAgICBzdGF0aWMgSXNvbGF0ZWRDb250
ZXh0RGF0YSogdG9Jc29sYXRlZENvbnRleHREYXRhKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5u
ZXJHbG9iYWwpOworCiBwcml2YXRlOgogICAgIFY4RE9NV2luZG93U2hlbGwoRnJhbWUqLCBQYXNz
UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4pOwogCi0gICAgdm9pZCBkaXNwb3NlQ29udGV4dChib29s
IHdlYWsgPSBmYWxzZSk7CisgICAgdm9pZCBkaXNwb3NlQ29udGV4dCgpOwogCiAgICAgdm9pZCBz
ZXRTZWN1cml0eVRva2VuKCk7CiAKQEAgLTEyNiwxMiArMTUyLDExIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjcmVhdGVDb250ZXh0KCk7CiAgICAgYm9vbCBpbnN0YWxsRE9NV2luZG93KCk7CiAKLSAg
ICBzdGF0aWMgVjhET01XaW5kb3dTaGVsbCogZW50ZXJlZElzb2xhdGVkV29ybGRDb250ZXh0KCk7
Ci0KICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dv
cmxkOwogCiAgICAgT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7Cisg
ICAgT3duUHRyPElzb2xhdGVkQ29udGV4dERhdGE+IG1faXNvbGF0ZWRDb250ZXh0RGF0YTsKIAog
ICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29udGV4dDsKICAgICBTY29wZWRQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZ2xvYmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuaAppbmRleCBhZDFiY2FmZDljZTBkY2MxZTFhZDE3YWE2ZWQ2MWZjNTJi
ZGIwMzEwLi5jNTQ1YTg2M2Q3MjA1MzhjZDNlNGUzYjhkMzZkYzU1OWZjNmZhNzBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtMTE4LDE0ICsxMTgsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gKndyYXBw
ZXI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFY4RE9NV2luZG93U2hlbGwqIGNvbnRl
eHQgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCk7Ci0gICAgICAgICAgICBpZiAoTElL
RUxZKCFjb250ZXh0KSkgeworICAgICAgICAgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRD
b250ZXh0RGF0YSogaXNvbGF0ZWREYXRhID0gVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xh
dGVkQ29udGV4dERhdGEoKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlzb2xhdGVkRGF0YSkp
IHsKICAgICAgICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Piogd3JhcHBlciA9
IG5vZGUtPndyYXBwZXIoKTsKICAgICAgICAgICAgICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuICp3cmFwcGVyOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgRE9NRGF0
YVN0b3JlKiBzdG9yZSA9IGNvbnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOworICAgICAg
ICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGlzb2xhdGVkRGF0YS0+d29ybGQoKS0+ZG9tRGF0
YVN0b3JlKCk7CiAgICAgICAgICAgICBET01Ob2RlTWFwcGluZyYgZG9tTm9kZU1hcCA9IG5vZGUt
PmlzQWN0aXZlTm9kZSgpID8gc3RvcmUtPmFjdGl2ZURvbU5vZGVNYXAoKSA6IHN0b3JlLT5kb21O
b2RlTWFwKCk7CiAgICAgICAgICAgICByZXR1cm4gZG9tTm9kZU1hcC5nZXQobm9kZSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4
dEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5k
bGUuY3BwCmluZGV4IDM0YjljMTliZjU5ODA4NTFmMmYyNmIyZmJhM2NiNGU3MzgyNjU5ZjkuLjMx
OTlkZmQ5YTA1MmJkYTg3YmM5ZmFkZDcxNGUyYmExOTczYjg3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcApAQCAtNDQsMjcgKzQ0
LDI4IEBAIFdvcmxkQ29udGV4dEhhbmRsZTo6V29ybGRDb250ZXh0SGFuZGxlKFdvcmxkVG9Vc2Ug
d29ybGRUb1VzZSkKICAgICBpZiAod29ybGRUb1VzZSA9PSBVc2VNYWluV29ybGQgfHwgd29ybGRU
b1VzZSA9PSBVc2VXb3JrZXJXb3JsZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCF2ODo6
Q29udGV4dDo6SW5Db250ZXh0KCkpIHsKKyAgICAgICAgbV93b3JsZFRvVXNlID0gVXNlTWFpbldv
cmxkOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgQVNTRVJUKCFjb250
ZXh0LklzRW1wdHkoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbCA9
IHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4dCk7CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAg
Ly8gRklYTUUgV2UgYXJlIGR1cGxpY2F0aW5nIGEgbG90IG9mIGVmZm9ydCBoZXJlIGNoZWNraW5n
IHRoZSBjb250ZXh0IGZvciB0aGUgd29ya2VyIGFuZCBmb3IgdGhlIGlzb2xhdGVkIHdvcmxkLgot
ICAgIGlmICh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7Ci0gICAgICAg
IGlmICghY29udGV4dC5Jc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghVjhE
T01XcmFwcGVyOjppc1dyYXBwZXJPZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KSwg
JlY4RE9NV2luZG93OjppbmZvKSkpIHsKLSAgICAgICAgICAgICAgICBtX3dvcmxkVG9Vc2UgPSBV
c2VXb3JrZXJXb3JsZDsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIVY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBl
KGlubmVyR2xvYmFsLCAmVjhET01XaW5kb3c6OmluZm8pKSkgeworICAgICAgICBtX3dvcmxkVG9V
c2UgPSBVc2VXb3JrZXJXb3JsZDsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0g
ICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVk
KCk7Ci0gICAgaWYgKExJS0VMWSghc2hlbGwpKSB7CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNv
bGF0ZWRDb250ZXh0RGF0YSogZGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250
ZXh0RGF0YShpbm5lckdsb2JhbCk7CisgICAgaWYgKExJS0VMWSghZGF0YSkpIHsKICAgICAgICAg
bV93b3JsZFRvVXNlID0gVXNlTWFpbldvcmxkOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQVNTRVJUKCFzaGVsbC0+Y29udGV4dCgpLklzRW1wdHkoKSk7Ci0gICAgbV9jb250ZXh0ID0g
U2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD46OmNyZWF0ZShzaGVsbC0+Y29udGV4dCgpKTsK
KyAgICBtX2NvbnRleHQgPSBTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6Y3JlYXRlKGNv
bnRleHQpOwogfQogCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFdvcmxkQ29udGV4dEhhbmRsZTo6
YWRqdXN0ZWRDb250ZXh0KFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNw
cAppbmRleCBkNjg1N2JiOTY2NjA4ODhjZTZlZTkwZWJjNzk4YmNhOGRmZDIzZDM2Li40NjNkMDBj
NTY3ODc2MGM0ZDFkZDVkN2NiNjM1NjQ1MzhkYmQzY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMDgs
NyArMTA4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXgKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBWOERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRl
cmVkKCkpIHsKKyAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRl
eHREYXRhKCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAg
ICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50
V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBlNTBhMjYw
M2U0NDdhMWY2MzRjOWI2ZjNhOWJjYzg4YTgyNDgzYWQ2Li44OGRlODEyMjAwMGY1NmVkMmIwYmNm
NWFkYTRlMmVkNTlmOGE0YzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MRG9jdW1lbnQqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25DbwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVk
KCkpIHsKKyAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHRE
YXRhKCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAgICAg
ICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3Jh
cHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZGExNjZhN2FmZmYz
YjdhYzU5NWEwMjgyYmVlZjk3NTgwZTVjYTgzZi4uM2M4MmM4MTdjYjk1NGNhMDljZmEzZjVkM2I5
NWY4ZWZlZmI4OWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTVkdEb2N1bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IFY4U1ZHRG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3Jj
ZU5ld09iamVjdCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKLSAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkgeworICAg
IGlmICghVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKSkgewog
ICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbC0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZy
YW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+dXBkYXRlRG9jdW1lbnRXcmFwcGVyKHdyYXBw
ZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDUwYjdm
YjRkMzg2YTcxZjk3Y2JlYTRhOTU5ZTEyYmFmN2E3NzkzYi4uZTk0ODVmOTFhMDZjYzRhYmVkMGVk
YTk2NWY4ZWM2YmM1N2YyN2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAK
QEAgLTU1LDggKzU1LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6
OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCiAg
ICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKLSAgICBpZiAoVjhET01X
aW5kb3dTaGVsbCogaXNvbGF0ZWRXb3JsZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50
ZXJlZCgpKQotICAgICAgICBzZWN1cml0eU9yaWdpbiA9IGlzb2xhdGVkV29ybGRTaGVsbC0+aXNv
bGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKFY4RE9NV2luZG93U2hlbGw6Oklz
b2xhdGVkQ29udGV4dERhdGEqIGlzb2xhdGVkQ29udGV4dERhdGEgPSBWOERPTVdpbmRvd1NoZWxs
OjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0YSgpKQorICAgICAgICBzZWN1cml0eU9yaWdpbiA9
IGlzb2xhdGVkQ29udGV4dERhdGEtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICBSZWZQdHI8WE1M
SHR0cFJlcXVlc3Q+IHhtbEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShjb250
ZXh0LCBzZWN1cml0eU9yaWdpbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166267</attachid>
            <date>2012-09-28 09:48:46 -0700</date>
            <delta_ts>2012-09-28 16:47:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20120928124802.patch</filename>
            <type>text/plain</type>
            <size>23976</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxZTQ4MGE2ZjUyMTI1
NWQ0MTExMzc1YmQyN2IxZmVjM2JkZTI1ZC4uN2E2OTNmZjE4NmY0ZjUwMzhjYmJmMmE2OTkxZGQy
ZDM2MTVkNDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTI4ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCB3YXMgcmVmYWN0b3JlZCBzbyB0aGF0
IHRoZSB3aW5kb3cgc2hlbGwKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyB0byBiZSBrZXB0IGFsaXZl
IGJ5IGEgdjggY29udGV4dCBidXQgcmF0aGVyIGEgc21hbGxlcgorICAgICAgICBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0
YTo6Z2V0Q3VycmVudFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQZXJzaXN0ZW50OjpsZWFrSGFuZGxlKToK
KyAgICAgICAgKFNjb3BlZFBlcnNpc3RlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cmVz
ZXRJc29sYXRlZFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29udGV4dERhdGFGb3JDdXJyZW50V29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpp
c29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5k
b3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6Y2xlYXJJc29sYXRlZFNoZWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAo
VjhET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHRE
YXRhOjp3b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdp
bmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZXRTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JsZENv
bnRleHRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ybGRDb250ZXh0SGFuZGxlOjpX
b3JsZENvbnRleHRIYW5kbGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorCiAyMDEyLTA5LTI4ICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGRlZmluZSBDaHVua2VkUmVhZGVyIGludGVyZmFjZSBmb3IgY29tcGlsYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAKaW5kZXggYWY1MGExZWNhM2FiMjE1ODFh
YmQ2NGFhMDBmZjVhZjMzOGNiYjk3ZC4uN2NjMjRiYzM4NjFiNmFiMjhkYzQzYTZjYzQ2ODg3MDk3
NDkyMjg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAKQEAgLTQzLDkg
KzQzLDkgQEAgRE9NRGF0YVN0b3JlJiBET01EYXRhOjpnZXRDdXJyZW50U3RvcmUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmN1cnJlbnQoaXNvbGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKGRhdGEtPmRvbURhdGFTdG9y
ZSgpICE9IDApKQogICAgICAgICByZXR1cm4gKmRhdGEtPmRvbURhdGFTdG9yZSgpOwotICAgIFY4
RE9NV2luZG93U2hlbGwqIGNvbnRleHQgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCk7
Ci0gICAgaWYgKFVOTElLRUxZKGNvbnRleHQgIT0gMCkpCi0gICAgICAgIHJldHVybiAqY29udGV4
dC0+d29ybGQoKS0+ZG9tRGF0YVN0b3JlKCk7CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0
ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWREYXRhID0gVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElz
b2xhdGVkQ29udGV4dERhdGEoKTsKKyAgICBpZiAoVU5MSUtFTFkoISFpc29sYXRlZERhdGEpKQor
ICAgICAgICByZXR1cm4gKmlzb2xhdGVkRGF0YS0+d29ybGQoKS0+ZG9tRGF0YVN0b3JlKCk7CiAg
ICAgcmV0dXJuIGRlZmF1bHRTdG9yZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NvcGVkUGVyc2lzdGVudC5oCmluZGV4IGZjY2Y0YWE1OWI4ODljOWUyMTY2NjkxOGJlNjRm
ZjY2ZGUwNWUxNDEuLjhhNjg1Zjk3NGIyYzhkNzY3Y2M1ZDQ5YWM1NzgxOTM1Yzk4NWFmNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0ZW50LmgKQEAgLTc4
LDYgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9oYW5kbGUuQ2xlYXIoKTsKICAgICB9CiAK
KyAgICB2ODo6UGVyc2lzdGVudDxUPiBsZWFrSGFuZGxlKCkKKyAgICB7CisgICAgICAgIHY4OjpQ
ZXJzaXN0ZW50PFQ+IGhhbmRsZSA9IG1faGFuZGxlOworICAgICAgICBtX2hhbmRsZS5DbGVhcigp
OworICAgICAgICByZXR1cm4gaGFuZGxlOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2ODo6UGVy
c2lzdGVudDxUPiBtX2hhbmRsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDJmY2FjYTYyYzhhZDQyYTZmMWI0MTJhOTI2ZDAy
OGRiZjdjYjlkNzIuLjMwMjNlNzllYjNkNWI2Y2FiZWIxN2I5ZDJmZjRiODVlNWNkMGI5NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC0xNDYsNyArMTQ2LDggQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpyZXNldElzb2xhdGVkV29y
bGRzKCkKIHsKICAgICBmb3IgKElzb2xhdGVkV29ybGRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2lz
b2xhdGVkV29ybGRzLmJlZ2luKCk7CiAgICAgICAgICBpdGVyICE9IG1faXNvbGF0ZWRXb3JsZHMu
ZW5kKCk7ICsraXRlcikgewotICAgICAgICBpdGVyLT5zZWNvbmQtPmRlc3Ryb3lJc29sYXRlZFNo
ZWxsKCk7CisgICAgICAgIGl0ZXItPnNlY29uZC0+Y2xlYXJJc29sYXRlZFNoZWxsKCk7CisgICAg
ICAgIGRlbGV0ZSBpdGVyLT5zZWNvbmQ7CiAgICAgfQogICAgIG1faXNvbGF0ZWRXb3JsZHMuY2xl
YXIoKTsKICAgICBtX2lzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbnMuY2xlYXIoKTsKQEAgLTM5
MCwxMSArMzkxLDEyIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbklzb2xhdGVk
V29ybGQoaW50IHdvcmxkSUQsIGNvbnN0IFZlY3RvcjxTY3JpcHRTCiAgICAgICAgICAgICByZXN1
bHRBcnJheS0+U2V0KGksIGV2YWx1YXRpb25SZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gTWFyayB0ZW1wb3Jhcnkgc2hlbGwgZm9yIHdlYWsgZGVzdHJ1Y3Rpb24uCisgICAgICAgIC8v
IERlc3Ryb3kgdGVtcG9yYXJ5IHdvcmxkLgogICAgICAgICBpZiAod29ybGRJRCA9PSBET01XcmFw
cGVyV29ybGQ6OnVuaW5pdGlhbGl6ZWRXb3JsZElkKSB7CiAgICAgICAgICAgICBpbnQgYWN0dWFs
V29ybGRJZCA9IGlzb2xhdGVkV29ybGRTaGVsbC0+d29ybGQoKS0+d29ybGRJZCgpOwogICAgICAg
ICAgICAgbV9pc29sYXRlZFdvcmxkcy5yZW1vdmUoYWN0dWFsV29ybGRJZCk7Ci0gICAgICAgICAg
ICBpc29sYXRlZFdvcmxkU2hlbGwtPmRlc3Ryb3lJc29sYXRlZFNoZWxsKCk7CisgICAgICAgICAg
ICBpc29sYXRlZFdvcmxkU2hlbGwtPmNsZWFySXNvbGF0ZWRTaGVsbCgpOworICAgICAgICAgICAg
ZGVsZXRlIGlzb2xhdGVkV29ybGRTaGVsbDsKICAgICAgICAgfQogCiAgICAgICAgIHY4UmVzdWx0
cyA9IGV2YWx1YXRlSGFuZGxlU2NvcGUuQ2xvc2UocmVzdWx0QXJyYXkpOwpAQCAtNDI5LDExICs0
MzEsMjAgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpmaW5pc2hlZFdpdGhFdmVudChFdmVudCog
ZXZlbnQpCiAKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gU2NyaXB0Q29udHJvbGxlcjo6Y3VycmVu
dFdvcmxkQ29udGV4dCgpCiB7Ci0gICAgaWYgKFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkU2hl
bGwgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKLSAgICAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpc29sYXRlZFNoZWxsLT5jb250ZXh0KCk7Ci0g
ICAgICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSB8fCBtX2ZyYW1lICE9IHRvRnJhbWVJZk5vdERl
dGFjaGVkKGNvbnRleHQpKQorICAgIFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERh
dGEqIGlzb2xhdGVkQ29udGV4dERhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0
ZWRDb250ZXh0RGF0YSgpOworICAgIGlmIChVTkxJS0VMWSghIWlzb2xhdGVkQ29udGV4dERhdGEp
KSB7CisgICAgICAgIFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkU2hlbGwgPSBleGlzdGluZ1dp
bmRvd1NoZWxsSW50ZXJuYWwoaXNvbGF0ZWRDb250ZXh0RGF0YS0+d29ybGQoKSk7CisgICAgICAg
IC8vIEEgdGVtcG9yYXJ5IGlzb2xhdGVkIHdvcmxkIGhhcyBiZWVuIGRlbGV0ZWQsIHNvIHVzZSB0
aGUgY3VycmVudCBjb250ZXh0LgorICAgICAgICBpZiAoVU5MSUtFTFkoIWlzb2xhdGVkU2hlbGwp
KSB7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNv
bnRleHQ6OkdldEVudGVyZWQoKTsKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lICE9IHRvRnJhbWVJ
Zk5vdERldGFjaGVkKGNvbnRleHQpKQorICAgICAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+KCk7CisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0
Pjo6TmV3KGNvbnRleHQpOworICAgICAgICB9CisgICAgICAgIC8vIFRoZSBzaGVsbCBleGlzdHMs
IGJ1dCBwb3RlbnRpYWxseSBpdCBoYXMgYSBuZXcgY29udGV4dCwgc28gdXNlIGl0LgorICAgICAg
ICBpZiAoaXNvbGF0ZWRTaGVsbC0+Y29udGV4dCgpLklzRW1wdHkoKSB8fCBtX2ZyYW1lICE9IHRv
RnJhbWVJZk5vdERldGFjaGVkKGlzb2xhdGVkU2hlbGwtPmNvbnRleHQoKSkpCiAgICAgICAgICAg
ICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0PigpOwotICAgICAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQpOworICAgICAgICByZXR1cm4gdjg6OkxvY2Fs
PHY4OjpDb250ZXh0Pjo6TmV3KGlzb2xhdGVkU2hlbGwtPmNvbnRleHQoKSk7CiAgICAgfQogICAg
IHdpbmRvd1NoZWxsKCktPmluaXRpYWxpemVJZk5lZWRlZCgpOwogICAgIHJldHVybiB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+OjpOZXcod2luZG93U2hlbGwoKS0+Y29udGV4dCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGQyMmU3NzUwNzVkMzkyZTdjNDdh
ZTIzMjlkYjBlNzAzNWJiMzZlZjMuLmQ3OTZiZDk2M2RjYTgzMjliZDUyN2RlY2NiYmNmY2E2NmIy
YjY3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMzEx
LDkgKzMxMSw5IEBAIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgV29ybGRDCiAKIFY4UGVyQ29udGV4dERhdGEq
IHBlckNvbnRleHREYXRhRm9yQ3VycmVudFdvcmxkKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBWOERP
TVdpbmRvd1NoZWxsKiBpc29sYXRlZFNoZWxsOwotICAgIGlmIChVTkxJS0VMWSghIShpc29sYXRl
ZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKSkpCi0gICAgICAgIHJldHVy
biBpc29sYXRlZFNoZWxsLT5wZXJDb250ZXh0RGF0YSgpOworICAgIFY4RE9NV2luZG93U2hlbGw6
Oklzb2xhdGVkQ29udGV4dERhdGEqIGlzb2xhdGVkU2hlbGxEYXRhOworICAgIGlmIChVTkxJS0VM
WSghIShpc29sYXRlZFNoZWxsRGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRl
ZENvbnRleHREYXRhKCkpKSkKKyAgICAgICAgcmV0dXJuIGlzb2xhdGVkU2hlbGxEYXRhLT5wZXJD
b250ZXh0RGF0YSgpOwogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCkt
PnBlckNvbnRleHREYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggMTkzNmFlOGQwYTRiODNkYTEwNGJjZDFlNWM5NDUy
Y2EzYzczOTQ4OC4uZDRlMDViZDMyMjFiNDE4MTkzYmM5YTdkZmY4NzBjYTg2NmFjNTk3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAg
LTE3MCwxNCArMTcwLDE1IEBAIHN0YXRpYyB2b2lkIGNoZWNrRG9jdW1lbnRXcmFwcGVyKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgRG9jdW1lbnQqIGRvY3VtCiAgICAgQVNTRVJUKCFk
b2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSB8fCAoVjhEb2N1bWVudDo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh3cmFwcGVyLT5HZXRQcm90b3R5cGUoKSkpID09IGRvY3Vt
ZW50KSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldElzb2xhdGVkV29ybGRGaWVsZChWOERPTVdpbmRv
d1NoZWxsKiBzaGVsbCwgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KQorc3RhdGljIHZv
aWQgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4
dERhdGEqIGRhdGEsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiB7Ci0gICAgdG9J
bm5lckdsb2JhbE9iamVjdChjb250ZXh0KS0+U2V0UG9pbnRlckluSW50ZXJuYWxGaWVsZChWOERP
TVdpbmRvdzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCwgc2hlbGwpOworICAgIHRvSW5uZXJH
bG9iYWxPYmplY3QoY29udGV4dCktPlNldFBvaW50ZXJJbkludGVybmFsRmllbGQoVjhET01XaW5k
b3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgsIGRhdGEpOwogfQogCi1WOERPTVdpbmRvd1No
ZWxsKiBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRXb3JsZENvbnRleHQoKQorVjhE
T01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogVjhET01XaW5kb3dTaGVsbDo6dG9J
c29sYXRlZENvbnRleHREYXRhKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJHbG9iYWwpCiB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4RE9NV2luZG93U2hlbGwqPih0b0lubmVyR2xvYmFs
T2JqZWN0KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpLT5HZXRQb2ludGVyRnJvbUludGVybmFs
RmllbGQoVjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgpKTsKKyAgICBBU1NF
UlQoaW5uZXJHbG9iYWwtPkludGVybmFsRmllbGRDb3VudCgpID49IFY4RE9NV2luZG93OjplbnRl
cmVkSXNvbGF0ZWRXb3JsZEluZGV4KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SXNvbGF0ZWRD
b250ZXh0RGF0YSo+KGlubmVyR2xvYmFsLT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQoVjhE
T01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgpKTsKIH0KIAogc3RhdGljIHZvaWQg
c2V0SW5qZWN0ZWRTY3JpcHRDb250ZXh0RGVidWdJZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB0
YXJnZXRDb250ZXh0LCBpbnQgZGVidWdJZCkKQEAgLTIwNywyMCArMjA4LDE0IEBAIGJvb2wgVjhE
T01XaW5kb3dTaGVsbDo6aXNDb250ZXh0SW5pdGlhbGl6ZWQoKQogICAgIHJldHVybiAhbV9jb250
ZXh0LmlzRW1wdHkoKTsKIH0KIAotdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkZXN0cm95SXNvbGF0
ZWRTaGVsbCgpCi17Ci0gICAgZGlzcG9zZUNvbnRleHQodHJ1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lk
IGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9i
amVjdCwgdm9pZCogcGFyYW1ldGVyKQogewotICAgIC8vIEhhbmRsZSB3aWxsIGJlIGRpc3Bvc2Vk
IGluIGRlbGV0ZS4KLSAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhET01XaW5kb3dTaGVsbCo+KHBh
cmFtZXRlcik7CisgICAgb2JqZWN0LkRpc3Bvc2UoKTsKKyAgICBkZWxldGUgc3RhdGljX2Nhc3Q8
VjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSo+KHBhcmFtZXRlcik7CiB9CiAK
LXZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQoYm9vbCB3ZWFrKQordm9pZCBW
OERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRl
eHQuZ2V0KCkuSXNXZWFrKCkpOwogICAgIG1fcGVyQ29udGV4dERhdGEuY2xlYXIoKTsKIAogICAg
IGlmIChtX2NvbnRleHQuaXNFbXB0eSgpKQpAQCAtMjI4LDE0ICsyMjMsMTQgQEAgdm9pZCBWOERP
TVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dChib29sIHdlYWspCiAKICAgICBtX2ZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCktPndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dChtX2NvbnRleHQuZ2V0
KCksIG1fd29ybGQtPndvcmxkSWQoKSk7CiAKLSAgICBpZiAoIXdlYWspCi0gICAgICAgIG1fY29u
dGV4dC5jbGVhcigpOwotICAgIGVsc2UgeworICAgIGlmIChtX2lzb2xhdGVkQ29udGV4dERhdGEp
IHsKICAgICAgICAgQVNTRVJUKCFtX3dvcmxkLT5pc01haW5Xb3JsZCgpKTsKLSAgICAgICAgZGVz
dHJveUdsb2JhbCgpOwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICAgICAgbV9jb250ZXh0Lmdl
dCgpLk1ha2VXZWFrKHRoaXMsIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk7Ci0gICAgfQor
ICAgICAgICAvLyBIZXJlIHdlIG11c3QgaW50ZW50aW9uYWxseSBsZWFrIHRoZSBwZXIgY29udGV4
dCBkYXRhIHBvaW50ZXIgYXMgaXQgZ2V0cyBkZWxldGVkIGluIGlzb2xhdGVkQ29udGV4dFdlYWtD
YWxsYmFjay4KKyAgICAgICAgbV9jb250ZXh0LmxlYWtIYW5kbGUoKS5NYWtlV2VhayhtX2lzb2xh
dGVkQ29udGV4dERhdGEubGVha1B0cigpLCBpc29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOwor
ICAgICAgICAvLyBUaGUgZ2xvYmFsIGhhbmRsZSBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgY29u
dGV4dCwgc28gaXQgbXVzdCBiZSByZW1vdmVkLgorICAgICAgICBtX2dsb2JhbC5jbGVhcigpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKIAogICAgIC8vIEl0J3MgbGlr
ZWx5IHRoYXQgZGlzcG9zaW5nIHRoZSBjb250ZXh0IGhhcyBjcmVhdGVkIGEgbG90IG9mCiAgICAg
Ly8gZ2FyYmFnZS4gTm90aWZ5IFY4IGFib3V0IHRoaXMgc28gaXQnbGwgaGF2ZSBhIGNoYW5jZSBv
ZiBjbGVhbmluZwpAQCAtMjUxLDYgKzI0NiwxMSBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRl
c3Ryb3lHbG9iYWwoKQogICAgIG1fZ2xvYmFsLmNsZWFyKCk7CiB9CiAKK3ZvaWQgVjhET01XaW5k
b3dTaGVsbDo6Y2xlYXJJc29sYXRlZFNoZWxsKCkKK3sKKyAgICBkaXNwb3NlQ29udGV4dCgpOwor
fQorCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmNsZWFyRm9yQ2xvc2UoKQogewogICAgIGlmICht
X2NvbnRleHQuaXNFbXB0eSgpKQpAQCAtMzQ1LDE5ICszNDUsMjAgQEAgYm9vbCBWOERPTVdpbmRv
d1NoZWxsOjppbml0aWFsaXplSWZOZWVkZWQoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9w
ZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OworICAgIGlmICghbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7CisgICAgICAgIGRpc3Bvc2VD
b250ZXh0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBGbGFnIGNv
bnRleHQgYXMgaXNvbGF0ZWQuCiAgICAgaWYgKCFpc01haW5Xb3JsZCkgewogICAgICAgICBWOERP
TVdpbmRvd1NoZWxsKiBtYWluV2luZG93ID0gbV9mcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxs
KCk7CiAgICAgICAgIG1haW5XaW5kb3ctPmluaXRpYWxpemVJZk5lZWRlZCgpOwogICAgICAgICBp
ZiAoIW1haW5XaW5kb3ctPmNvbnRleHQoKS5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzZXRJbmpl
Y3RlZFNjcmlwdENvbnRleHREZWJ1Z0lkKG1fY29udGV4dC5nZXQoKSwgbV9mcmFtZS0+c2NyaXB0
KCktPmNvbnRleHREZWJ1Z0lkKG1haW5XaW5kb3ctPmNvbnRleHQoKSkpOwotICAgICAgICBzZXRJ
c29sYXRlZFdvcmxkRmllbGQodGhpcywgY29udGV4dCk7Ci0gICAgfQotCi0gICAgbV9wZXJDb250
ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwotICAg
IGlmICghbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7Ci0gICAgICAgIGRpc3Bvc2VDb250ZXh0
KCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9pc29sYXRlZENvbnRleHREYXRh
ID0gSXNvbGF0ZWRDb250ZXh0RGF0YTo6Y3JlYXRlKG1fd29ybGQsIG1fcGVyQ29udGV4dERhdGEu
cmVsZWFzZSgpLCBtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAg
c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKG1faXNvbGF0ZWRDb250ZXh0RGF0YS5nZXQoKSwgY29udGV4
dCk7CiAgICAgfQogCiAgICAgaWYgKCFpbnN0YWxsRE9NV2luZG93KCkpIHsKQEAgLTYxNyw2ICs2
MTgsOCBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9y
aWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPgogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChtX2ZyYW1lLCBzY3JpcHRTdGF0ZSwg
c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAgIH0KICAgICBtX2lzb2xhdGVkV29ybGRTaGVsbFNl
Y3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW47CisgICAgaWYgKG1faXNvbGF0ZWRDb250ZXh0
RGF0YSkKKyAgICAgICAgbV9pc29sYXRlZENvbnRleHREYXRhLT5zZXRTZWN1cml0eU9yaWdpbiht
X2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luKTsKIH0KIAogfSAvLyBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKaW5kZXggMDFk
Mjk4MTdmYzhkMzIxY2IxNGExOGUwODYzOGU0MzIyYWQ2OWRkOC4uMjYxZWFkYTQ3YWFlNmNjMWM4
OTlmZDQ3N2Q1YzA1ZWQ5YzQ1Y2VjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuaApAQCAtNTMsNiArNTMsMzUgQEAgY2xhc3MgSFRNTERvY3VtZW50
OwogLy8gcGVyc2lzdCBiZXR3ZWVuIG5hdmlnYXRpb25zLgogY2xhc3MgVjhET01XaW5kb3dTaGVs
bCB7CiBwdWJsaWM6CisKKyAgICAvLyBUaGlzIGNsYXNzIGhvbGRzIGFsbCB0aGUgZGF0YSB0aGF0
IGlzIGFjY2Vzc2libGUgZnJvbSBhIGNvbnRleHQgZm9yIGFuIGlzb2xhdGVkIHNoZWxsLgorICAg
IC8vIEl0IHN1cnZpdmVzIHVudGlsIHRoZSBjb250ZXh0IGlzIGRlbGV0ZWQuCisgICAgY2xhc3Mg
SXNvbGF0ZWRDb250ZXh0RGF0YSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElzb2xh
dGVkQ29udGV4dERhdGEpOworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8
SXNvbGF0ZWRDb250ZXh0RGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3
b3JsZCwgUGFzc093blB0cjxWOFBlckNvbnRleHREYXRhPiBwZXJDb250ZXh0RGF0YSwKKyAgICAg
ICAgICAgIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IElzb2xhdGVkQ29udGV4dERhdGEo
d29ybGQsIHBlckNvbnRleHREYXRhLCBzZWN1cml0eU9yaWdpbikpOworICAgICAgICB9CisgICAg
ICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9Cisg
ICAgICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJD
b250ZXh0RGF0YS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikgeyBtX3NlY3VyaXR5T3JpZ2luID0gb3JpZ2lu
OyB9CisgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1f
c2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIElzb2xhdGVk
Q29udGV4dERhdGEoUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IHdvcmxkLCBQYXNzT3duUHRy
PFY4UGVyQ29udGV4dERhdGE+IHBlckNvbnRleHREYXRhLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbikKKyAgICAgICAgICAgIDogbV93b3JsZCh3b3JsZCkKKyAgICAg
ICAgICAgICwgbV9wZXJDb250ZXh0RGF0YShwZXJDb250ZXh0RGF0YSkKKyAgICAgICAgICAgICwg
bV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKKyAgICAgICAgT3duUHRy
PFY4UGVyQ29udGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7CisgICAgICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NP
d25QdHI8VjhET01XaW5kb3dTaGVsbD4gY3JlYXRlKEZyYW1lKiwgUGFzc1JlZlB0cjxET01XcmFw
cGVyV29ybGQ+KTsKIAogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBjb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC03Niw2ICsxMDUsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNsZWFyRm9yTmF2aWdhdGlvbigpOwogICAgIHZvaWQgY2xlYXJGb3JD
bG9zZSgpOworICAgIHZvaWQgY2xlYXJJc29sYXRlZFNoZWxsKCk7CiAKICAgICB2b2lkIGRlc3Ry
b3lHbG9iYWwoKTsKIApAQCAtOTAsMjkgKzEyMCwyNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luLmdldCgpOwogICAgIH07CiAKLSAg
ICAvLyBSZXR1cm5zIHRoZSBpc29sYXRlZCB3b3JsZCBhc3NvY2lhdGVkIHdpdGgKLSAgICAvLyB2
ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpLiBCZWNhdXNlIHdvcmxkcyBhcmUgaXNvbGF0ZWQsIHRo
ZSBlbnRpcmUKLSAgICAvLyBKYXZhU2NyaXB0IGNhbGwgc3RhY2sgc2hvdWxkIGJlIGZyb20gdGhl
IHNhbWUgaXNvbGF0ZWQgd29ybGQuCi0gICAgLy8gUmV0dXJucyAwIGlmIHRoZSBlbnRlcmVkIGNv
bnRleHQgaXMgZnJvbSB0aGUgbWFpbiB3b3JsZC4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBDb25z
aWRlciBlZGdlIGNhc2VzIHdpdGggRE9NIG11dGF0aW9uIGV2ZW50cyB0aGF0IG1pZ2h0Ci0gICAg
Ly8gdmlvbGF0ZSB0aGlzIGludmFyaWFudC4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHBvb3JseSBuYW1lZCBhZnRlciB0aGUgZGVsZXRpb24gb2YgaXNvbGF0ZWQgY29udGV4dHMuCi0g
ICAgc3RhdGljIFY4RE9NV2luZG93U2hlbGwqIGdldEVudGVyZWQoKQorICAgIGlubGluZSBzdGF0
aWMgSXNvbGF0ZWRDb250ZXh0RGF0YSogZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKQogICAg
IHsKLSAgICAgICAgaWYgKCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkK
KyAgICAgICAgaWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0
KCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmICghdjg6OkNvbnRleHQ6Oklu
Q29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBlbnRlcmVk
SXNvbGF0ZWRXb3JsZENvbnRleHQoKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBp
bm5lckdsb2JhbCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qodjg6OkNvbnRleHQ6Okdl
dEVudGVyZWQoKS0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKKyAgICAgICAgSXNvbGF0ZWRD
b250ZXh0RGF0YSogaXNvbGF0ZWRDb250ZXh0RGF0YSA9IHRvSXNvbGF0ZWRDb250ZXh0RGF0YShp
bm5lckdsb2JhbCk7CisgICAgICAgIGlmIChMSUtFTFkoIWlzb2xhdGVkQ29udGV4dERhdGEpKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBpc29sYXRlZENvbnRleHREYXRh
OwogICAgIH0KIAotICAgIHZvaWQgZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKKyAgICBzdGF0aWMg
SXNvbGF0ZWRDb250ZXh0RGF0YSogdG9Jc29sYXRlZENvbnRleHREYXRhKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaW5uZXJHbG9iYWwpOworCiBwcml2YXRlOgogICAgIFY4RE9NV2luZG93U2hlbGwo
RnJhbWUqLCBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4pOwogCi0gICAgdm9pZCBkaXNwb3Nl
Q29udGV4dChib29sIHdlYWsgPSBmYWxzZSk7CisgICAgdm9pZCBkaXNwb3NlQ29udGV4dCgpOwog
CiAgICAgdm9pZCBzZXRTZWN1cml0eVRva2VuKCk7CiAKQEAgLTEyNiwxMiArMTUyLDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjcmVhdGVDb250ZXh0KCk7CiAgICAgYm9vbCBpbnN0YWxsRE9NV2lu
ZG93KCk7CiAKLSAgICBzdGF0aWMgVjhET01XaW5kb3dTaGVsbCogZW50ZXJlZElzb2xhdGVkV29y
bGRDb250ZXh0KCk7Ci0KICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBSZWZQdHI8RE9NV3JhcHBl
cldvcmxkPiBtX3dvcmxkOwogCiAgICAgT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IG1fcGVyQ29u
dGV4dERhdGE7CisgICAgT3duUHRyPElzb2xhdGVkQ29udGV4dERhdGE+IG1faXNvbGF0ZWRDb250
ZXh0RGF0YTsKIAogICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29udGV4dDsK
ICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZ2xvYmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBhZDFiY2FmZDljZTBkY2MxZTFhZDE3
YWE2ZWQ2MWZjNTJiZGIwMzEwLi5jNTQ1YTg2M2Q3MjA1MzhjZDNlNGUzYjhkMzZkYzU1OWZjNmZh
NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtMTE4
LDE0ICsxMTgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKndyYXBwZXI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFY4RE9NV2luZG93
U2hlbGwqIGNvbnRleHQgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCk7Ci0gICAgICAg
ICAgICBpZiAoTElLRUxZKCFjb250ZXh0KSkgeworICAgICAgICAgICAgVjhET01XaW5kb3dTaGVs
bDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWREYXRhID0gVjhET01XaW5kb3dTaGVsbDo6
ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlz
b2xhdGVkRGF0YSkpIHsKICAgICAgICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
Piogd3JhcHBlciA9IG5vZGUtPndyYXBwZXIoKTsKICAgICAgICAgICAgICAgICBpZiAoIXdyYXBw
ZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuICp3cmFwcGVyOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGNvbnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9y
ZSgpOworICAgICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGlzb2xhdGVkRGF0YS0+d29y
bGQoKS0+ZG9tRGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBET01Ob2RlTWFwcGluZyYgZG9tTm9k
ZU1hcCA9IG5vZGUtPmlzQWN0aXZlTm9kZSgpID8gc3RvcmUtPmFjdGl2ZURvbU5vZGVNYXAoKSA6
IHN0b3JlLT5kb21Ob2RlTWFwKCk7CiAgICAgICAgICAgICByZXR1cm4gZG9tTm9kZU1hcC5nZXQo
bm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Js
ZENvbnRleHRIYW5kbGUuY3BwCmluZGV4IDM0YjljMTliZjU5ODA4NTFmMmYyNmIyZmJhM2NiNGU3
MzgyNjU5ZjkuLjMxOTlkZmQ5YTA1MmJkYTg3YmM5ZmFkZDcxNGUyYmExOTczYjg3YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcApA
QCAtNDQsMjcgKzQ0LDI4IEBAIFdvcmxkQ29udGV4dEhhbmRsZTo6V29ybGRDb250ZXh0SGFuZGxl
KFdvcmxkVG9Vc2Ugd29ybGRUb1VzZSkKICAgICBpZiAod29ybGRUb1VzZSA9PSBVc2VNYWluV29y
bGQgfHwgd29ybGRUb1VzZSA9PSBVc2VXb3JrZXJXb3JsZCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpIHsKKyAgICAgICAgbV93b3JsZFRvVXNl
ID0gVXNlTWFpbldvcmxkOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAg
QVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBp
bm5lckdsb2JhbCA9IHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4dCk7CiAjaWYgRU5BQkxFKFdP
UktFUlMpCi0gICAgLy8gRklYTUUgV2UgYXJlIGR1cGxpY2F0aW5nIGEgbG90IG9mIGVmZm9ydCBo
ZXJlIGNoZWNraW5nIHRoZSBjb250ZXh0IGZvciB0aGUgd29ya2VyIGFuZCBmb3IgdGhlIGlzb2xh
dGVkIHdvcmxkLgotICAgIGlmICh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpIHsKLSAgICAgICAg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50
KCk7Ci0gICAgICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChV
TkxJS0VMWSghVjhET01XcmFwcGVyOjppc1dyYXBwZXJPZlR5cGUodG9Jbm5lckdsb2JhbE9iamVj
dChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKSkpIHsKLSAgICAgICAgICAgICAgICBtX3dv
cmxkVG9Vc2UgPSBVc2VXb3JrZXJXb3JsZDsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIVY4RE9NV3JhcHBlcjo6aXNX
cmFwcGVyT2ZUeXBlKGlubmVyR2xvYmFsLCAmVjhET01XaW5kb3c6OmluZm8pKSkgeworICAgICAg
ICBtX3dvcmxkVG9Vc2UgPSBVc2VXb3JrZXJXb3JsZDsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgogCi0gICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBWOERPTVdpbmRvd1NoZWxs
OjpnZXRFbnRlcmVkKCk7Ci0gICAgaWYgKExJS0VMWSghc2hlbGwpKSB7CisgICAgVjhET01XaW5k
b3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogZGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OnRv
SXNvbGF0ZWRDb250ZXh0RGF0YShpbm5lckdsb2JhbCk7CisgICAgaWYgKExJS0VMWSghZGF0YSkp
IHsKICAgICAgICAgbV93b3JsZFRvVXNlID0gVXNlTWFpbldvcmxkOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgQVNTRVJUKCFzaGVsbC0+Y29udGV4dCgpLklzRW1wdHkoKSk7Ci0gICAg
bV9jb250ZXh0ID0gU2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD46OmNyZWF0ZShzaGVsbC0+
Y29udGV4dCgpKTsKKyAgICBtX2NvbnRleHQgPSBTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0
Pjo6Y3JlYXRlKGNvbnRleHQpOwogfQogCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFdvcmxkQ29u
dGV4dEhhbmRsZTo6YWRqdXN0ZWRDb250ZXh0KFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcAppbmRleCBkNjg1N2JiOTY2NjA4ODhjZTZlZTkwZWJjNzk4YmNhOGRmZDIz
ZDM2Li40NjNkMDBjNTY3ODc2MGM0ZDFkZDVkN2NiNjM1NjQ1MzhkYmQzY2RlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20u
Y3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRG9jdW1l
bnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXgKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGlmICh3cmFwcGVyLklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1No
ZWxsOjpnZXRFbnRlcmVkKCkpIHsKKyAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJ
c29sYXRlZENvbnRleHREYXRhKCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwt
PmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVw
ZGF0ZURvY3VtZW50V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApp
bmRleCBlNTBhMjYwM2U0NDdhMWY2MzRjOWI2ZjNhOWJjYzg4YTgyNDgzYWQ2Li44OGRlODEyMjAw
MGY1NmVkMmIwYmNmNWFkYTRlMmVkNTlmOGE0YzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAg
LTE4Myw3ICsxODMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MRG9jdW1lbnQq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25DbwogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGlmICh3cmFwcGVyLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1NoZWxs
OjpnZXRFbnRlcmVkKCkpIHsKKyAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29s
YXRlZENvbnRleHREYXRhKCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZy
YW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0
ZURvY3VtZW50V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXgg
ZGExNjZhN2FmZmYzYjdhYzU5NWEwMjgyYmVlZjk3NTgwZTVjYTgzZi4uM2M4MmM4MTdjYjk1NGNh
MDljZmEzZjVkM2I5NWY4ZWZlZmI4OWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTVkdEb2N1bWVudCogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IFY4U1ZHRG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlLCBmb3JjZU5ld09iamVjdCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVy
ZWQoKSkgeworICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4
dERhdGEoKSkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbC0+ZnJhbWUoKSkKICAg
ICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+dXBkYXRlRG9jdW1lbnRX
cmFwcGVyKHdyYXBwZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggMDUwYjdmYjRkMzg2YTcxZjk3Y2JlYTRhOTU5ZTEyYmFmN2E3NzkzYi4uZTk0ODVmOTFh
MDZjYzRhYmVkMGVkYTk2NWY4ZWM2YmM1N2YyN2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25z
dHJ1Y3Rvci5jcHAKQEAgLTU1LDggKzU1LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1M
SHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKLSAg
ICBpZiAoVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWRXb3JsZFNoZWxsID0gVjhET01XaW5kb3dT
aGVsbDo6Z2V0RW50ZXJlZCgpKQotICAgICAgICBzZWN1cml0eU9yaWdpbiA9IGlzb2xhdGVkV29y
bGRTaGVsbC0+aXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKFY4RE9NV2lu
ZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGEqIGlzb2xhdGVkQ29udGV4dERhdGEgPSBWOERP
TVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0YSgpKQorICAgICAgICBzZWN1
cml0eU9yaWdpbiA9IGlzb2xhdGVkQ29udGV4dERhdGEtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAg
ICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhtbEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZShjb250ZXh0LCBzZWN1cml0eU9yaWdpbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166330</attachid>
            <date>2012-09-28 16:47:23 -0700</date>
            <delta_ts>2012-09-30 08:52:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20120928194640.patch</filename>
            <type>text/plain</type>
            <size>23962</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRlMWJmZTcwMzljOGM1
NzljNTNjNGQwYzEwMmY2NzM3NWI3ODAyMS4uNDNlOGYwZDU2OTM0NTY1OGU4OGJiYzAxMzRiNjY4
NzBjNzI1NjgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTI4ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCB3YXMgcmVmYWN0b3JlZCBzbyB0aGF0
IHRoZSB3aW5kb3cgc2hlbGwKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyB0byBiZSBrZXB0IGFsaXZl
IGJ5IGEgdjggY29udGV4dCBidXQgcmF0aGVyIGEgc21hbGxlcgorICAgICAgICBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0
YTo6Z2V0Q3VycmVudFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQZXJzaXN0ZW50OjpsZWFrSGFuZGxlKToK
KyAgICAgICAgKFNjb3BlZFBlcnNpc3RlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cmVz
ZXRJc29sYXRlZFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29udGV4dERhdGFGb3JDdXJyZW50V29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpp
c29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5k
b3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6Y2xlYXJJc29sYXRlZFNoZWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAo
VjhET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHRE
YXRhOjp3b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdp
bmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZXRTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JsZENv
bnRleHRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ybGRDb250ZXh0SGFuZGxlOjpX
b3JsZENvbnRleHRIYW5kbGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorCiAyMDEyLTA5LTI4ICBF
bWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXByb3ZlIHNhdHVy
YXRpb24gYXJpdGhtZXRpYyBzdXBwb3J0IGluIEZyYWN0aW9uYWxMYXlvdXRVbml0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCmluZGV4IGFmNTBhMWVjYTNhYjIxNTgxYWJkNjRh
YTAwZmY1YWYzMzhjYmI5N2QuLjdjYzI0YmMzODYxYjZhYjI4ZGM0M2E2Y2M0Njg4NzA5NzQ5MjI4
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCkBAIC00Myw5ICs0Myw5
IEBAIERPTURhdGFTdG9yZSYgRE9NRGF0YTo6Z2V0Q3VycmVudFN0b3JlKHY4OjpJc29sYXRlKiBp
c29sYXRlKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpj
dXJyZW50KGlzb2xhdGUpOwogICAgIGlmIChVTkxJS0VMWShkYXRhLT5kb21EYXRhU3RvcmUoKSAh
PSAwKSkKICAgICAgICAgcmV0dXJuICpkYXRhLT5kb21EYXRhU3RvcmUoKTsKLSAgICBWOERPTVdp
bmRvd1NoZWxsKiBjb250ZXh0ID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpOwotICAg
IGlmIChVTkxJS0VMWShjb250ZXh0ICE9IDApKQotICAgICAgICByZXR1cm4gKmNvbnRleHQtPndv
cmxkKCktPmRvbURhdGFTdG9yZSgpOworICAgIFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29u
dGV4dERhdGEqIGlzb2xhdGVkRGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRl
ZENvbnRleHREYXRhKCk7CisgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0ZWREYXRhKSkKKyAgICAg
ICAgcmV0dXJuICppc29sYXRlZERhdGEtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOwogICAgIHJl
dHVybiBkZWZhdWx0U3RvcmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
b3BlZFBlcnNpc3RlbnQuaAppbmRleCBmY2NmNGFhNTliODg5YzllMjE2NjY5MThiZTY0ZmY2NmRl
MDVlMTQxLi44YTY4NWY5NzRiMmM4ZDc2N2NjNWQ0OWFjNTc4MTkzNWM5ODVhZjRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oCkBAIC03OCw2ICs3
OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1faGFuZGxlLkNsZWFyKCk7CiAgICAgfQogCisgICAg
djg6OlBlcnNpc3RlbnQ8VD4gbGVha0hhbmRsZSgpCisgICAgeworICAgICAgICB2ODo6UGVyc2lz
dGVudDxUPiBoYW5kbGUgPSBtX2hhbmRsZTsKKyAgICAgICAgbV9oYW5kbGUuQ2xlYXIoKTsKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8VD4gbV9oYW5kbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCA0ODAwYWRlOTE0ZTIwMjE4Y2U5YmYzODdhYjFlZDdhZjUy
OTk1ZmU5Li45MWYzMDVlNzc3N2YxMmM4YjllMTQ2NjQyNTkzODBhY2NiZTFjYmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTQ2
LDcgKzE0Niw4IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6cmVzZXRJc29sYXRlZFdvcmxkcygp
CiB7CiAgICAgZm9yIChJc29sYXRlZFdvcmxkTWFwOjppdGVyYXRvciBpdGVyID0gbV9pc29sYXRl
ZFdvcmxkcy5iZWdpbigpOwogICAgICAgICAgaXRlciAhPSBtX2lzb2xhdGVkV29ybGRzLmVuZCgp
OyArK2l0ZXIpIHsKLSAgICAgICAgaXRlci0+c2Vjb25kLT5kZXN0cm95SXNvbGF0ZWRTaGVsbCgp
OworICAgICAgICBpdGVyLT5zZWNvbmQtPmNsZWFySXNvbGF0ZWRTaGVsbCgpOworICAgICAgICBk
ZWxldGUgaXRlci0+c2Vjb25kOwogICAgIH0KICAgICBtX2lzb2xhdGVkV29ybGRzLmNsZWFyKCk7
CiAgICAgbV9pc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW5zLmNsZWFyKCk7CkBAIC0zOTAsMTEg
KzM5MSwxMiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxk
KGludCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0UwogICAgICAgICAgICAgcmVzdWx0QXJy
YXktPlNldChpLCBldmFsdWF0aW9uUmVzdWx0KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIE1h
cmsgdGVtcG9yYXJ5IHNoZWxsIGZvciB3ZWFrIGRlc3RydWN0aW9uLgorICAgICAgICAvLyBEZXN0
cm95IHRlbXBvcmFyeSB3b3JsZC4KICAgICAgICAgaWYgKHdvcmxkSUQgPT0gRE9NV3JhcHBlcldv
cmxkOjp1bmluaXRpYWxpemVkV29ybGRJZCkgewogICAgICAgICAgICAgaW50IGFjdHVhbFdvcmxk
SWQgPSBpc29sYXRlZFdvcmxkU2hlbGwtPndvcmxkKCktPndvcmxkSWQoKTsKICAgICAgICAgICAg
IG1faXNvbGF0ZWRXb3JsZHMucmVtb3ZlKGFjdHVhbFdvcmxkSWQpOwotICAgICAgICAgICAgaXNv
bGF0ZWRXb3JsZFNoZWxsLT5kZXN0cm95SXNvbGF0ZWRTaGVsbCgpOworICAgICAgICAgICAgaXNv
bGF0ZWRXb3JsZFNoZWxsLT5jbGVhcklzb2xhdGVkU2hlbGwoKTsKKyAgICAgICAgICAgIGRlbGV0
ZSBpc29sYXRlZFdvcmxkU2hlbGw7CiAgICAgICAgIH0KIAogICAgICAgICB2OFJlc3VsdHMgPSBl
dmFsdWF0ZUhhbmRsZVNjb3BlLkNsb3NlKHJlc3VsdEFycmF5KTsKQEAgLTQyOSwxMSArNDMxLDIw
IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZmluaXNoZWRXaXRoRXZlbnQoRXZlbnQqIGV2ZW50
KQogCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFNjcmlwdENvbnRyb2xsZXI6OmN1cnJlbnRXb3Js
ZENvbnRleHQoKQogewotICAgIGlmIChWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZFNoZWxsID0g
VjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKSB7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpDb250ZXh0PiBjb250ZXh0ID0gaXNvbGF0ZWRTaGVsbC0+Y29udGV4dCgpOwotICAgICAg
ICBpZiAoY29udGV4dC5Jc0VtcHR5KCkgfHwgbV9mcmFtZSAhPSB0b0ZyYW1lSWZOb3REZXRhY2hl
ZChjb250ZXh0KSkKKyAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBp
c29sYXRlZENvbnRleHREYXRhID0gVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29u
dGV4dERhdGEoKTsKKyAgICBpZiAoVU5MSUtFTFkoISFpc29sYXRlZENvbnRleHREYXRhKSkgewor
ICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZFNoZWxsID0gZXhpc3RpbmdXaW5kb3dT
aGVsbEludGVybmFsKGlzb2xhdGVkQ29udGV4dERhdGEtPndvcmxkKCkpOworICAgICAgICAvLyBB
IHRlbXBvcmFyeSBpc29sYXRlZCB3b3JsZCBoYXMgYmVlbiBkZWxldGVkLCBzbyB1c2UgdGhlIGN1
cnJlbnQgY29udGV4dC4KKyAgICAgICAgaWYgKFVOTElLRUxZKCFpc29sYXRlZFNoZWxsKSkgewor
ICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0
OjpHZXRFbnRlcmVkKCk7CisgICAgICAgICAgICBpZiAobV9mcmFtZSAhPSB0b0ZyYW1lSWZOb3RE
ZXRhY2hlZChjb250ZXh0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpD
b250ZXh0PigpOworICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5l
dyhjb250ZXh0KTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUgc2hlbGwgZXhpc3RzLCBidXQg
cG90ZW50aWFsbHkgaXQgaGFzIGEgbmV3IGNvbnRleHQsIHNvIHVzZSBpdC4KKyAgICAgICAgaWYg
KGlzb2xhdGVkU2hlbGwtPmNvbnRleHQoKS5Jc0VtcHR5KCkgfHwgbV9mcmFtZSAhPSB0b0ZyYW1l
SWZOb3REZXRhY2hlZChpc29sYXRlZFNoZWxsLT5jb250ZXh0KCkpKQogICAgICAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKLSAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
Q29udGV4dD46Ok5ldyhpc29sYXRlZFNoZWxsLT5jb250ZXh0KCkpOwogICAgIH0KICAgICB3aW5k
b3dTaGVsbCgpLT5pbml0aWFsaXplSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpDb250ZXh0Pjo6TmV3KHdpbmRvd1NoZWxsKCktPmNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBkMjJlNzc1MDc1ZDM5MmU3YzQ3YWUyMzI5
ZGIwZTcwMzViYjM2ZWYzLi42YWVhYjQxYWFmMjU4NWRhZWI3MzUyNWE2NDI4OWE5NTRkN2ZhNzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTMxMSw5ICsz
MTEsOSBAQCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdvcmxkQwogCiBWOFBlckNvbnRleHREYXRhKiBwZXJD
b250ZXh0RGF0YUZvckN1cnJlbnRXb3JsZChGcmFtZSogZnJhbWUpCiB7Ci0gICAgVjhET01XaW5k
b3dTaGVsbCogaXNvbGF0ZWRTaGVsbDsKLSAgICBpZiAoVU5MSUtFTFkoISEoaXNvbGF0ZWRTaGVs
bCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkpKQotICAgICAgICByZXR1cm4gaXNv
bGF0ZWRTaGVsbC0+cGVyQ29udGV4dERhdGEoKTsKKyAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29s
YXRlZENvbnRleHREYXRhKiBpc29sYXRlZFNoZWxsRGF0YSA9IDA7CisgICAgaWYgKFVOTElLRUxZ
KCEhKGlzb2xhdGVkU2hlbGxEYXRhID0gVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVk
Q29udGV4dERhdGEoKSkpKQorICAgICAgICByZXR1cm4gaXNvbGF0ZWRTaGVsbERhdGEtPnBlckNv
bnRleHREYXRhKCk7CiAgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+
cGVyQ29udGV4dERhdGEoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCA4MWVhMjFhM2I4ZWQ1NGYzYTdhZTYyNzUwNjdjZjIy
YWQyYzY4YjQ4Li4wNzJkYWQzNGZjYjAxZmE2MjI3MmUyYjc2ZDhhMjI5MTFiZTAzNDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAt
MTcwLDE0ICsxNzAsMTUgQEAgc3RhdGljIHZvaWQgY2hlY2tEb2N1bWVudFdyYXBwZXIodjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBEb2N1bWVudCogZG9jdW0KICAgICBBU1NFUlQoIWRv
Y3VtZW50LT5pc0hUTUxEb2N1bWVudCgpIHx8IChWOERvY3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXItPkdldFByb3RvdHlwZSgpKSkgPT0gZG9jdW1l
bnQpKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKFY4RE9NV2luZG93
U2hlbGwqIHNoZWxsLCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCitzdGF0aWMgdm9p
ZCBzZXRJc29sYXRlZFdvcmxkRmllbGQoVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0
RGF0YSogZGF0YSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKIHsKLSAgICB0b0lu
bmVyR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5TZXRQb2ludGVySW5JbnRlcm5hbEZpZWxkKFY4RE9N
V2luZG93OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4LCBzaGVsbCk7CisgICAgdG9Jbm5lckds
b2JhbE9iamVjdChjb250ZXh0KS0+U2V0UG9pbnRlckluSW50ZXJuYWxGaWVsZChWOERPTVdpbmRv
dzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCwgZGF0YSk7CiB9CiAKLVY4RE9NV2luZG93U2hl
bGwqIFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZFdvcmxkQ29udGV4dCgpCitWOERP
TVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBWOERPTVdpbmRvd1NoZWxsOjp0b0lz
b2xhdGVkQ29udGV4dERhdGEodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbCkKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VjhET01XaW5kb3dTaGVsbCo+KHRvSW5uZXJHbG9iYWxP
YmplY3Qodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSktPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxG
aWVsZChWOERPTVdpbmRvdzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCkpOworICAgIEFTU0VS
VChpbm5lckdsb2JhbC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPj0gVjhET01XaW5kb3c6OmVudGVy
ZWRJc29sYXRlZFdvcmxkSW5kZXgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJc29sYXRlZENv
bnRleHREYXRhKj4oaW5uZXJHbG9iYWwtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOERP
TVdpbmRvdzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCkpOwogfQogCiBzdGF0aWMgdm9pZCBz
ZXRJbmplY3RlZFNjcmlwdENvbnRleHREZWJ1Z0lkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHRh
cmdldENvbnRleHQsIGludCBkZWJ1Z0lkKQpAQCAtMjA3LDIwICsyMDgsMTQgQEAgYm9vbCBWOERP
TVdpbmRvd1NoZWxsOjppc0NvbnRleHRJbml0aWFsaXplZCgpCiAgICAgcmV0dXJuICFtX2NvbnRl
eHQuaXNFbXB0eSgpOwogfQogCi12b2lkIFY4RE9NV2luZG93U2hlbGw6OmRlc3Ryb3lJc29sYXRl
ZFNoZWxsKCkKLXsKLSAgICBkaXNwb3NlQ29udGV4dCh0cnVlKTsKLX0KLQogc3RhdGljIHZvaWQg
aXNvbGF0ZWRDb250ZXh0V2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2Jq
ZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCiB7Ci0gICAgLy8gSGFuZGxlIHdpbGwgYmUgZGlzcG9zZWQg
aW4gZGVsZXRlLgotICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOERPTVdpbmRvd1NoZWxsKj4ocGFy
YW1ldGVyKTsKKyAgICBvYmplY3QuRGlzcG9zZSgpOworICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxW
OERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKj4ocGFyYW1ldGVyKTsKIH0KIAot
dm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dChib29sIHdlYWspCit2b2lkIFY4
RE9NV2luZG93U2hlbGw6OmRpc3Bvc2VDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQoIW1fY29udGV4
dC5nZXQoKS5Jc1dlYWsoKSk7CiAgICAgbV9wZXJDb250ZXh0RGF0YS5jbGVhcigpOwogCiAgICAg
aWYgKG1fY29udGV4dC5pc0VtcHR5KCkpCkBAIC0yMjgsMTQgKzIyMywxNCBAQCB2b2lkIFY4RE9N
V2luZG93U2hlbGw6OmRpc3Bvc2VDb250ZXh0KGJvb2wgd2VhaykKIAogICAgIG1fZnJhbWUtPmxv
YWRlcigpLT5jbGllbnQoKS0+d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KG1fY29udGV4dC5nZXQo
KSwgbV93b3JsZC0+d29ybGRJZCgpKTsKIAotICAgIGlmICghd2VhaykKLSAgICAgICAgbV9jb250
ZXh0LmNsZWFyKCk7Ci0gICAgZWxzZSB7CisgICAgaWYgKG1faXNvbGF0ZWRDb250ZXh0RGF0YSkg
ewogICAgICAgICBBU1NFUlQoIW1fd29ybGQtPmlzTWFpbldvcmxkKCkpOwotICAgICAgICBkZXN0
cm95R2xvYmFsKCk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOwotICAgICAgICBtX2NvbnRleHQuZ2V0
KCkuTWFrZVdlYWsodGhpcywgaXNvbGF0ZWRDb250ZXh0V2Vha0NhbGxiYWNrKTsKLSAgICB9Cisg
ICAgICAgIC8vIEhlcmUgd2UgbXVzdCBpbnRlbnRpb25hbGx5IGxlYWsgdGhlIHBlciBjb250ZXh0
IGRhdGEgcG9pbnRlciBhcyBpdCBnZXRzIGRlbGV0ZWQgaW4gaXNvbGF0ZWRDb250ZXh0V2Vha0Nh
bGxiYWNrLgorICAgICAgICBtX2NvbnRleHQubGVha0hhbmRsZSgpLk1ha2VXZWFrKG1faXNvbGF0
ZWRDb250ZXh0RGF0YS5sZWFrUHRyKCksIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk7Cisg
ICAgICAgIC8vIFRoZSBnbG9iYWwgaGFuZGxlIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBjb250
ZXh0LCBzbyBpdCBtdXN0IGJlIHJlbW92ZWQuCisgICAgICAgIG1fZ2xvYmFsLmNsZWFyKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIG1fY29udGV4dC5jbGVhcigpOwogCiAgICAgLy8gSXQncyBsaWtl
bHkgdGhhdCBkaXNwb3NpbmcgdGhlIGNvbnRleHQgaGFzIGNyZWF0ZWQgYSBsb3Qgb2YKICAgICAv
LyBnYXJiYWdlLiBOb3RpZnkgVjggYWJvdXQgdGhpcyBzbyBpdCdsbCBoYXZlIGEgY2hhbmNlIG9m
IGNsZWFuaW5nCkBAIC0yNTEsNiArMjQ2LDExIEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGVz
dHJveUdsb2JhbCgpCiAgICAgbV9nbG9iYWwuY2xlYXIoKTsKIH0KIAordm9pZCBWOERPTVdpbmRv
d1NoZWxsOjpjbGVhcklzb2xhdGVkU2hlbGwoKQoreworICAgIGRpc3Bvc2VDb250ZXh0KCk7Cit9
CisKIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JDbG9zZSgpCiB7CiAgICAgaWYgKG1f
Y29udGV4dC5pc0VtcHR5KCkpCkBAIC0zNDUsMTkgKzM0NSwyMCBAQCBib29sIFY4RE9NV2luZG93
U2hlbGw6OmluaXRpYWxpemVJZk5lZWRlZCgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX3Bl
ckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7
CisgICAgaWYgKCFtX3BlckNvbnRleHREYXRhLT5pbml0KCkpIHsKKyAgICAgICAgZGlzcG9zZUNv
bnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIEZsYWcgY29u
dGV4dCBhcyBpc29sYXRlZC4KICAgICBpZiAoIWlzTWFpbldvcmxkKSB7CiAgICAgICAgIFY4RE9N
V2luZG93U2hlbGwqIG1haW5XaW5kb3cgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwo
KTsKICAgICAgICAgbWFpbldpbmRvdy0+aW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAgICAgICAgIGlm
ICghbWFpbldpbmRvdy0+Y29udGV4dCgpLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNldEluamVj
dGVkU2NyaXB0Q29udGV4dERlYnVnSWQobV9jb250ZXh0LmdldCgpLCBtX2ZyYW1lLT5zY3JpcHQo
KS0+Y29udGV4dERlYnVnSWQobWFpbldpbmRvdy0+Y29udGV4dCgpKSk7Ci0gICAgICAgIHNldElz
b2xhdGVkV29ybGRGaWVsZCh0aGlzLCBjb250ZXh0KTsKLSAgICB9Ci0KLSAgICBtX3BlckNvbnRl
eHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAg
aWYgKCFtX3BlckNvbnRleHREYXRhLT5pbml0KCkpIHsKLSAgICAgICAgZGlzcG9zZUNvbnRleHQo
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2lzb2xhdGVkQ29udGV4dERhdGEg
PSBJc29sYXRlZENvbnRleHREYXRhOjpjcmVhdGUobV93b3JsZCwgbV9wZXJDb250ZXh0RGF0YS5y
ZWxlYXNlKCksIG1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4pOworICAgICAgICBz
ZXRJc29sYXRlZFdvcmxkRmllbGQobV9pc29sYXRlZENvbnRleHREYXRhLmdldCgpLCBjb250ZXh0
KTsKICAgICB9CiAKICAgICBpZiAoIWluc3RhbGxET01XaW5kb3coKSkgewpAQCAtNjE3LDYgKzYx
OCw4IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3Jp
Z2luKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KG1fZnJhbWUsIHNjcmlwdFN0YXRlLCBz
ZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAgICAgfQogICAgIG1faXNvbGF0ZWRXb3JsZFNoZWxsU2Vj
dXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpbjsKKyAgICBpZiAobV9pc29sYXRlZENvbnRleHRE
YXRhKQorICAgICAgICBtX2lzb2xhdGVkQ29udGV4dERhdGEtPnNldFNlY3VyaXR5T3JpZ2luKG1f
aXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4pOwogfQogCiB9IC8vIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAppbmRleCAwMWQy
OTgxN2ZjOGQzMjFjYjE0YTE4ZTA4NjM4ZTQzMjJhZDY5ZGQ4Li5kZTJjMmEyMGQ4ZTdmNGVhYWM1
MWU0ZmQ0N2IwOTA3N2QzZWQ1NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5oCkBAIC01Myw2ICs1MywzNCBAQCBjbGFzcyBIVE1MRG9jdW1lbnQ7
CiAvLyBwZXJzaXN0IGJldHdlZW4gbmF2aWdhdGlvbnMuCiBjbGFzcyBWOERPTVdpbmRvd1NoZWxs
IHsKIHB1YmxpYzoKKworICAgIC8vIFRoaXMgY2xhc3MgaG9sZHMgYWxsIHRoZSBkYXRhIHRoYXQg
aXMgYWNjZXNzaWJsZSBmcm9tIGEgY29udGV4dCBmb3IgYW4gaXNvbGF0ZWQgc2hlbGwuCisgICAg
Ly8gSXQgc3Vydml2ZXMgdW50aWwgdGhlIGNvbnRleHQgaXMgZGVsZXRlZC4KKyAgICBjbGFzcyBJ
c29sYXRlZENvbnRleHREYXRhIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSXNvbGF0
ZWRDb250ZXh0RGF0YSk7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxJ
c29sYXRlZENvbnRleHREYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IHdv
cmxkLCBQYXNzT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IHBlckNvbnRleHREYXRhLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJc29sYXRlZENvbnRleHREYXRhKHdvcmxkLCBwZXJDb250
ZXh0RGF0YSwgc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAgICAgfQorICAgICAgICBET01XcmFwcGVy
V29ybGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQorICAgICAgICBWOFBlckNv
bnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSgpIHsgcmV0dXJuIG1fcGVyQ29udGV4dERhdGEuZ2V0
KCk7IH0KKyAgICAgICAgdm9pZCBzZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4pIHsgbV9zZWN1cml0eU9yaWdpbiA9IG9yaWdpbjsgfQorICAgICAgICBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2lu
LmdldCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBJc29sYXRlZENvbnRleHREYXRhKFBh
c3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCwgUGFzc093blB0cjxWOFBlckNvbnRleHRE
YXRhPiBwZXJDb250ZXh0RGF0YSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4pCisgICAgICAgICAgICA6IG1fd29ybGQod29ybGQpCisgICAgICAgICAgICAsIG1fcGVy
Q29udGV4dERhdGEocGVyQ29udGV4dERhdGEpCisgICAgICAgICAgICAsIG1fc2VjdXJpdHlPcmln
aW4oc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0
cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CisgICAgICAgIE93blB0cjxWOFBlckNvbnRleHRE
YXRhPiBtX3BlckNvbnRleHREYXRhOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1f
c2VjdXJpdHlPcmlnaW47CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFY4RE9NV2lu
ZG93U2hlbGw+IGNyZWF0ZShGcmFtZSosIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPik7CiAK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQpAQCAtNzYsNiArMTA0LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBjbGVhckZvck5hdmlnYXRpb24oKTsKICAgICB2b2lkIGNsZWFyRm9yQ2xvc2UoKTsKKyAgICB2
b2lkIGNsZWFySXNvbGF0ZWRTaGVsbCgpOwogCiAgICAgdm9pZCBkZXN0cm95R2xvYmFsKCk7CiAK
QEAgLTkwLDI5ICsxMTksMjUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pc29sYXRlZFdv
cmxkU2hlbGxTZWN1cml0eU9yaWdpbi5nZXQoKTsKICAgICB9OwogCi0gICAgLy8gUmV0dXJucyB0
aGUgaXNvbGF0ZWQgd29ybGQgYXNzb2NpYXRlZCB3aXRoCi0gICAgLy8gdjg6OkNvbnRleHQ6Okdl
dEVudGVyZWQoKS4gQmVjYXVzZSB3b3JsZHMgYXJlIGlzb2xhdGVkLCB0aGUgZW50aXJlCi0gICAg
Ly8gSmF2YVNjcmlwdCBjYWxsIHN0YWNrIHNob3VsZCBiZSBmcm9tIHRoZSBzYW1lIGlzb2xhdGVk
IHdvcmxkLgotICAgIC8vIFJldHVybnMgMCBpZiB0aGUgZW50ZXJlZCBjb250ZXh0IGlzIGZyb20g
dGhlIG1haW4gd29ybGQuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgZWRnZSBjYXNl
cyB3aXRoIERPTSBtdXRhdGlvbiBldmVudHMgdGhhdCBtaWdodAotICAgIC8vIHZpb2xhdGUgdGhp
cyBpbnZhcmlhbnQuCi0gICAgLy8KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBwb29ybHkgbmFtZWQg
YWZ0ZXIgdGhlIGRlbGV0aW9uIG9mIGlzb2xhdGVkIGNvbnRleHRzLgotICAgIHN0YXRpYyBWOERP
TVdpbmRvd1NoZWxsKiBnZXRFbnRlcmVkKCkKKyAgICBpbmxpbmUgc3RhdGljIElzb2xhdGVkQ29u
dGV4dERhdGEqIGVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCkKICAgICB7Ci0gICAgICAgIGlm
ICghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpCisgICAgICAgIGlmIChM
SUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gZW50ZXJlZElzb2xhdGVkV29ybGRD
b250ZXh0KCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJHbG9iYWwgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCktPkds
b2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CisgICAgICAgIElzb2xhdGVkQ29udGV4dERhdGEqIGlz
b2xhdGVkQ29udGV4dERhdGEgPSB0b0lzb2xhdGVkQ29udGV4dERhdGEoaW5uZXJHbG9iYWwpOwor
ICAgICAgICBpZiAoTElLRUxZKCFpc29sYXRlZENvbnRleHREYXRhKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gaXNvbGF0ZWRDb250ZXh0RGF0YTsKICAgICB9CiAKLSAg
ICB2b2lkIGRlc3Ryb3lJc29sYXRlZFNoZWxsKCk7CisgICAgc3RhdGljIElzb2xhdGVkQ29udGV4
dERhdGEqIHRvSXNvbGF0ZWRDb250ZXh0RGF0YSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGlubmVy
R2xvYmFsKTsKKwogcHJpdmF0ZToKICAgICBWOERPTVdpbmRvd1NoZWxsKEZyYW1lKiwgUGFzc1Jl
ZlB0cjxET01XcmFwcGVyV29ybGQ+KTsKIAotICAgIHZvaWQgZGlzcG9zZUNvbnRleHQoYm9vbCB3
ZWFrID0gZmFsc2UpOworICAgIHZvaWQgZGlzcG9zZUNvbnRleHQoKTsKIAogICAgIHZvaWQgc2V0
U2VjdXJpdHlUb2tlbigpOwogCkBAIC0xMjYsMTIgKzE1MSwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlQ29udGV4dCgpOwogICAgIGJvb2wgaW5zdGFsbERPTVdpbmRvdygpOwogCi0gICAg
c3RhdGljIFY4RE9NV2luZG93U2hlbGwqIGVudGVyZWRJc29sYXRlZFdvcmxkQ29udGV4dCgpOwot
CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3Js
ZDsKIAogICAgIE93blB0cjxWOFBlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOworICAg
IE93blB0cjxJc29sYXRlZENvbnRleHREYXRhPiBtX2lzb2xhdGVkQ29udGV4dERhdGE7CiAKICAg
ICBTY29wZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgU2NvcGVkUGVy
c2lzdGVudDx2ODo6T2JqZWN0PiBtX2dsb2JhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmgKaW5kZXggYWQxYmNhZmQ5Y2UwZGNjMWUxYWQxN2FhNmVkNjFmYzUyYmRi
MDMxMC4uYzU0NWE4NjNkNzIwNTM4Y2QzZTRlM2I4ZDM2ZGM1NTlmYzZmYTcwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTExOCwxNCArMTE4LDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICp3cmFwcGVy
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBjb250ZXh0
ID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpOwotICAgICAgICAgICAgaWYgKExJS0VM
WSghY29udGV4dCkpIHsKKyAgICAgICAgICAgIFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29u
dGV4dERhdGEqIGlzb2xhdGVkRGF0YSA9IFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRl
ZENvbnRleHREYXRhKCk7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFpc29sYXRlZERhdGEpKSB7
CiAgICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIHdyYXBwZXIgPSBu
b2RlLT53cmFwcGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogICAgICAgICAgICAg
ICAgIHJldHVybiAqd3JhcHBlcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIERPTURhdGFT
dG9yZSogc3RvcmUgPSBjb250ZXh0LT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKKyAgICAgICAg
ICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBpc29sYXRlZERhdGEtPndvcmxkKCktPmRvbURhdGFT
dG9yZSgpOwogICAgICAgICAgICAgRE9NTm9kZU1hcHBpbmcmIGRvbU5vZGVNYXAgPSBub2RlLT5p
c0FjdGl2ZU5vZGUoKSA/IHN0b3JlLT5hY3RpdmVEb21Ob2RlTWFwKCkgOiBzdG9yZS0+ZG9tTm9k
ZU1hcCgpOwogICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVNYXAuZ2V0KG5vZGUpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxl
LmNwcAppbmRleCAzNGI5YzE5YmY1OTgwODUxZjJmMjZiMmZiYTNjYjRlNzM4MjY1OWY5Li4zMTk5
ZGZkOWEwNTJiZGE4N2JjOWZhZGQ3MTRlMmJhMTk3M2I4N2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKQEAgLTQ0LDI3ICs0NCwy
OCBAQCBXb3JsZENvbnRleHRIYW5kbGU6OldvcmxkQ29udGV4dEhhbmRsZShXb3JsZFRvVXNlIHdv
cmxkVG9Vc2UpCiAgICAgaWYgKHdvcmxkVG9Vc2UgPT0gVXNlTWFpbldvcmxkIHx8IHdvcmxkVG9V
c2UgPT0gVXNlV29ya2VyV29ybGQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghdjg6OkNv
bnRleHQ6OkluQ29udGV4dCgpKSB7CisgICAgICAgIG1fd29ybGRUb1VzZSA9IFVzZU1haW5Xb3Js
ZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIEFTU0VSVCghY29udGV4
dC5Jc0VtcHR5KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJHbG9iYWwgPSB0
b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRleHQpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIC8v
IEZJWE1FIFdlIGFyZSBkdXBsaWNhdGluZyBhIGxvdCBvZiBlZmZvcnQgaGVyZSBjaGVja2luZyB0
aGUgY29udGV4dCBmb3IgdGhlIHdvcmtlciBhbmQgZm9yIHRoZSBpc29sYXRlZCB3b3JsZC4KLSAg
ICBpZiAodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOwotICAgICAgICBp
ZiAoIWNvbnRleHQuSXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIVY4RE9N
V3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4dCksICZW
OERPTVdpbmRvdzo6aW5mbykpKSB7Ci0gICAgICAgICAgICAgICAgbV93b3JsZFRvVXNlID0gVXNl
V29ya2VyV29ybGQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICB9CisgICAgaWYgKFVOTElLRUxZKCFWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZShp
bm5lckdsb2JhbCwgJlY4RE9NV2luZG93OjppbmZvKSkpIHsKKyAgICAgICAgbV93b3JsZFRvVXNl
ID0gVXNlV29ya2VyV29ybGQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAg
IFY4RE9NV2luZG93U2hlbGwqIHNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgp
OwotICAgIGlmIChMSUtFTFkoIXNoZWxsKSkgeworICAgIFY4RE9NV2luZG93U2hlbGw6Oklzb2xh
dGVkQ29udGV4dERhdGEqIGRhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjp0b0lzb2xhdGVkQ29udGV4
dERhdGEoaW5uZXJHbG9iYWwpOworICAgIGlmIChMSUtFTFkoIWRhdGEpKSB7CiAgICAgICAgIG1f
d29ybGRUb1VzZSA9IFVzZU1haW5Xb3JsZDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEFTU0VSVCghc2hlbGwtPmNvbnRleHQoKS5Jc0VtcHR5KCkpOwotICAgIG1fY29udGV4dCA9IFNo
YXJlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+OjpjcmVhdGUoc2hlbGwtPmNvbnRleHQoKSk7Cisg
ICAgbV9jb250ZXh0ID0gU2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD46OmNyZWF0ZShjb250
ZXh0KTsKIH0KIAogdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBXb3JsZENvbnRleHRIYW5kbGU6OmFk
anVzdGVkQ29udGV4dChTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAK
aW5kZXggZDY4NTdiYjk2NjYwODg4Y2U2ZWU5MGViYzc5OGJjYThkZmQyM2QzNi4uNDYzZDAwYzU2
Nzg3NjBjNGQxZGQ1ZDdjYjYzNTY0NTM4ZGJkM2NkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTA4LDcg
KzEwOCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERvY3VtZW50KiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJl
ZCgpKSB7CisgICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0
RGF0YSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQogICAg
ICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdy
YXBwZXIod3JhcHBlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZTUwYTI2MDNl
NDQ3YTFmNjM0YzliNmYzYTliY2M4OGE4MjQ4M2FkNi4uODhkZTgxMjIwMDBmNTZlZDJiMGJjZjVh
ZGE0ZTJlZDU5ZjhhNGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xODMsNyArMTgzLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ28KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBWOEhUTUxEb2N1bWVudDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUsIGZvcmNlTmV3T2JqZWN0KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgp
KSB7CisgICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0
YSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQogICAgICAg
ICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdyYXBw
ZXIod3JhcHBlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGRhMTY2YTdhZmZmM2I3
YWM1OTVhMDI4MmJlZWY5NzU4MGU1Y2E4M2YuLjNjODJjODE3Y2I5NTRjYTA5Y2ZhM2Y1ZDNiOTVm
OGVmZWZiODlhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjgoU1ZHRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db24KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBW
OFNWR0RvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VO
ZXdPYmplY3QpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKKyAgICBp
ZiAoIVY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCkpIHsKICAg
ICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFt
ZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3cmFwcGVy
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDA1MGI3ZmI0
ZDM4NmE3MWY5N2NiZWE0YTk1OWUxMmJhZjdhNzc5M2IuLmU5NDg1ZjkxYTA2Y2M0YWJlZDBlZGE5
NjVmOGVjNmJjNTdmMjdhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCkBA
IC01NSw4ICs1NSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0Ojpj
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIAogICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47Ci0gICAgaWYgKFY4RE9NV2lu
ZG93U2hlbGwqIGlzb2xhdGVkV29ybGRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVy
ZWQoKSkKLSAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBpc29sYXRlZFdvcmxkU2hlbGwtPmlzb2xh
dGVkV29ybGRTZWN1cml0eU9yaWdpbigpOworICAgIGlmIChWOERPTVdpbmRvd1NoZWxsOjpJc29s
YXRlZENvbnRleHREYXRhKiBpc29sYXRlZENvbnRleHREYXRhID0gVjhET01XaW5kb3dTaGVsbDo6
ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKSkKKyAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBp
c29sYXRlZENvbnRleHREYXRhLT5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgUmVmUHRyPFhNTEh0
dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgc2VjdXJpdHlPcmlnaW4pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166385</attachid>
            <date>2012-09-30 08:53:05 -0700</date>
            <delta_ts>2012-11-20 08:50:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20120930115219.patch</filename>
            <type>text/plain</type>
            <size>23946</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FkZmFiM2QwMWU1YjJi
MTk1ODg0NDBhZjc0ZTU1MTZmZjE5NDQ2NC4uMjUwODdhYjgyZTVkY2RjOGVlODIxM2RjNWY4OWY4
MTkzZGZiZmQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTMwICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCB3YXMgcmVmYWN0b3JlZCBzbyB0aGF0
IHRoZSB3aW5kb3cgc2hlbGwKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyB0byBiZSBrZXB0IGFsaXZl
IGJ5IGEgdjggY29udGV4dCBidXQgcmF0aGVyIGEgc21hbGxlcgorICAgICAgICBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0
YTo6Z2V0Q3VycmVudFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQZXJzaXN0ZW50OjpsZWFrSGFuZGxlKToK
KyAgICAgICAgKFNjb3BlZFBlcnNpc3RlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cmVz
ZXRJc29sYXRlZFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29udGV4dERhdGFGb3JDdXJyZW50V29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpp
c29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5k
b3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6Y2xlYXJJc29sYXRlZFNoZWxsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAo
VjhET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHRE
YXRhOjp3b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdp
bmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZXRTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRl
ZENvbnRleHREYXRhOjpJc29sYXRlZENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JsZENv
bnRleHRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ybGRDb250ZXh0SGFuZGxlOjpX
b3JsZENvbnRleHRIYW5kbGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorCiAyMDEyLTA5LTI5ICBE
b25nd29vIEpvc2h1YSBJbSAgPGR3LmltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEFzeW5jRmls
ZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0gc2hvdWxkIGhhdmUgRmlsZVN5c3RlbVR5cGUgYXMgYSBw
YXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCmluZGV4IGFmNTBh
MWVjYTNhYjIxNTgxYWJkNjRhYTAwZmY1YWYzMzhjYmI5N2QuLjdjYzI0YmMzODYxYjZhYjI4ZGM0
M2E2Y2M0Njg4NzA5NzQ5MjI4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEu
Y3BwCkBAIC00Myw5ICs0Myw5IEBAIERPTURhdGFTdG9yZSYgRE9NRGF0YTo6Z2V0Q3VycmVudFN0
b3JlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBW
OFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KGlzb2xhdGUpOwogICAgIGlmIChVTkxJS0VMWShkYXRh
LT5kb21EYXRhU3RvcmUoKSAhPSAwKSkKICAgICAgICAgcmV0dXJuICpkYXRhLT5kb21EYXRhU3Rv
cmUoKTsKLSAgICBWOERPTVdpbmRvd1NoZWxsKiBjb250ZXh0ID0gVjhET01XaW5kb3dTaGVsbDo6
Z2V0RW50ZXJlZCgpOwotICAgIGlmIChVTkxJS0VMWShjb250ZXh0ICE9IDApKQotICAgICAgICBy
ZXR1cm4gKmNvbnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOworICAgIFY4RE9NV2luZG93
U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGEqIGlzb2xhdGVkRGF0YSA9IFY4RE9NV2luZG93U2hl
bGw6OmVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCk7CisgICAgaWYgKFVOTElLRUxZKCEhaXNv
bGF0ZWREYXRhKSkKKyAgICAgICAgcmV0dXJuICppc29sYXRlZERhdGEtPndvcmxkKCktPmRvbURh
dGFTdG9yZSgpOwogICAgIHJldHVybiBkZWZhdWx0U3RvcmU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaAppbmRleCBmY2NmNGFhNTliODg5Yzll
MjE2NjY5MThiZTY0ZmY2NmRlMDVlMTQxLi44YTY4NWY5NzRiMmM4ZDc2N2NjNWQ0OWFjNTc4MTkz
NWM5ODVhZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQ
ZXJzaXN0ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lz
dGVudC5oCkBAIC03OCw2ICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1faGFuZGxlLkNsZWFy
KCk7CiAgICAgfQogCisgICAgdjg6OlBlcnNpc3RlbnQ8VD4gbGVha0hhbmRsZSgpCisgICAgewor
ICAgICAgICB2ODo6UGVyc2lzdGVudDxUPiBoYW5kbGUgPSBtX2hhbmRsZTsKKyAgICAgICAgbV9o
YW5kbGUuQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZTsKKyAgICB9CisKIHByaXZhdGU6
CiAgICAgdjg6OlBlcnNpc3RlbnQ8VD4gbV9oYW5kbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0ODAwYWRlOTE0ZTIwMjE4
Y2U5YmYzODdhYjFlZDdhZjUyOTk1ZmU5Li45MWYzMDVlNzc3N2YxMmM4YjllMTQ2NjQyNTkzODBh
Y2NiZTFjYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtMTQ2LDcgKzE0Niw4IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6cmVz
ZXRJc29sYXRlZFdvcmxkcygpCiB7CiAgICAgZm9yIChJc29sYXRlZFdvcmxkTWFwOjppdGVyYXRv
ciBpdGVyID0gbV9pc29sYXRlZFdvcmxkcy5iZWdpbigpOwogICAgICAgICAgaXRlciAhPSBtX2lz
b2xhdGVkV29ybGRzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaXRlci0+c2Vjb25kLT5kZXN0
cm95SXNvbGF0ZWRTaGVsbCgpOworICAgICAgICBpdGVyLT5zZWNvbmQtPmNsZWFySXNvbGF0ZWRT
aGVsbCgpOworICAgICAgICBkZWxldGUgaXRlci0+c2Vjb25kOwogICAgIH0KICAgICBtX2lzb2xh
dGVkV29ybGRzLmNsZWFyKCk7CiAgICAgbV9pc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW5zLmNs
ZWFyKCk7CkBAIC0zOTAsMTEgKzM5MSwxMiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Jc29sYXRlZFdvcmxkKGludCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0UwogICAg
ICAgICAgICAgcmVzdWx0QXJyYXktPlNldChpLCBldmFsdWF0aW9uUmVzdWx0KTsKICAgICAgICAg
fQogCi0gICAgICAgIC8vIE1hcmsgdGVtcG9yYXJ5IHNoZWxsIGZvciB3ZWFrIGRlc3RydWN0aW9u
LgorICAgICAgICAvLyBEZXN0cm95IHRlbXBvcmFyeSB3b3JsZC4KICAgICAgICAgaWYgKHdvcmxk
SUQgPT0gRE9NV3JhcHBlcldvcmxkOjp1bmluaXRpYWxpemVkV29ybGRJZCkgewogICAgICAgICAg
ICAgaW50IGFjdHVhbFdvcmxkSWQgPSBpc29sYXRlZFdvcmxkU2hlbGwtPndvcmxkKCktPndvcmxk
SWQoKTsKICAgICAgICAgICAgIG1faXNvbGF0ZWRXb3JsZHMucmVtb3ZlKGFjdHVhbFdvcmxkSWQp
OwotICAgICAgICAgICAgaXNvbGF0ZWRXb3JsZFNoZWxsLT5kZXN0cm95SXNvbGF0ZWRTaGVsbCgp
OworICAgICAgICAgICAgaXNvbGF0ZWRXb3JsZFNoZWxsLT5jbGVhcklzb2xhdGVkU2hlbGwoKTsK
KyAgICAgICAgICAgIGRlbGV0ZSBpc29sYXRlZFdvcmxkU2hlbGw7CiAgICAgICAgIH0KIAogICAg
ICAgICB2OFJlc3VsdHMgPSBldmFsdWF0ZUhhbmRsZVNjb3BlLkNsb3NlKHJlc3VsdEFycmF5KTsK
QEAgLTQyOSwxMSArNDMxLDIwIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZmluaXNoZWRXaXRo
RXZlbnQoRXZlbnQqIGV2ZW50KQogCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFNjcmlwdENvbnRy
b2xsZXI6OmN1cnJlbnRXb3JsZENvbnRleHQoKQogewotICAgIGlmIChWOERPTVdpbmRvd1NoZWxs
KiBpc29sYXRlZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKSB7Ci0gICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBjb250ZXh0ID0gaXNvbGF0ZWRTaGVsbC0+
Y29udGV4dCgpOwotICAgICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkgfHwgbV9mcmFtZSAhPSB0
b0ZyYW1lSWZOb3REZXRhY2hlZChjb250ZXh0KSkKKyAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29s
YXRlZENvbnRleHREYXRhKiBpc29sYXRlZENvbnRleHREYXRhID0gVjhET01XaW5kb3dTaGVsbDo6
ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKTsKKyAgICBpZiAoVU5MSUtFTFkoISFpc29sYXRl
ZENvbnRleHREYXRhKSkgeworICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZFNoZWxs
ID0gZXhpc3RpbmdXaW5kb3dTaGVsbEludGVybmFsKGlzb2xhdGVkQ29udGV4dERhdGEtPndvcmxk
KCkpOworICAgICAgICAvLyBBIHRlbXBvcmFyeSBpc29sYXRlZCB3b3JsZCBoYXMgYmVlbiBkZWxl
dGVkLCBzbyB1c2UgdGhlIGN1cnJlbnQgY29udGV4dC4KKyAgICAgICAgaWYgKFVOTElLRUxZKCFp
c29sYXRlZFNoZWxsKSkgeworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29u
dGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7CisgICAgICAgICAgICBpZiAobV9mcmFt
ZSAhPSB0b0ZyYW1lSWZOb3REZXRhY2hlZChjb250ZXh0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0PigpOworICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0KTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUg
c2hlbGwgZXhpc3RzLCBidXQgcG90ZW50aWFsbHkgaXQgaGFzIGEgbmV3IGNvbnRleHQsIHNvIHVz
ZSBpdC4KKyAgICAgICAgaWYgKGlzb2xhdGVkU2hlbGwtPmNvbnRleHQoKS5Jc0VtcHR5KCkgfHwg
bV9mcmFtZSAhPSB0b0ZyYW1lSWZOb3REZXRhY2hlZChpc29sYXRlZFNoZWxsLT5jb250ZXh0KCkp
KQogICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKLSAgICAgICAg
cmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0KTsKKyAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhpc29sYXRlZFNoZWxsLT5jb250ZXh0KCkp
OwogICAgIH0KICAgICB3aW5kb3dTaGVsbCgpLT5pbml0aWFsaXplSWZOZWVkZWQoKTsKICAgICBy
ZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KHdpbmRvd1NoZWxsKCktPmNvbnRleHQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBkMjJlNzc1
MDc1ZDM5MmU3YzQ3YWUyMzI5ZGIwZTcwMzViYjM2ZWYzLi42YWVhYjQxYWFmMjU4NWRhZWI3MzUy
NWE2NDI4OWE5NTRkN2ZhNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAKQEAgLTMxMSw5ICszMTEsOSBAQCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250
ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdvcmxkQwogCiBWOFBl
ckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YUZvckN1cnJlbnRXb3JsZChGcmFtZSogZnJhbWUp
CiB7Ci0gICAgVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbDsKLSAgICBpZiAoVU5MSUtF
TFkoISEoaXNvbGF0ZWRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkpKQot
ICAgICAgICByZXR1cm4gaXNvbGF0ZWRTaGVsbC0+cGVyQ29udGV4dERhdGEoKTsKKyAgICBWOERP
TVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBpc29sYXRlZFNoZWxsRGF0YSA9IDA7
CisgICAgaWYgKFVOTElLRUxZKCEhKGlzb2xhdGVkU2hlbGxEYXRhID0gVjhET01XaW5kb3dTaGVs
bDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKSkpKQorICAgICAgICByZXR1cm4gaXNvbGF0
ZWRTaGVsbERhdGEtPnBlckNvbnRleHREYXRhKCk7CiAgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQo
KS0+d2luZG93U2hlbGwoKS0+cGVyQ29udGV4dERhdGEoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCA4MWVhMjFhM2I4ZWQ1
NGYzYTdhZTYyNzUwNjdjZjIyYWQyYzY4YjQ4Li43NTk2NjJlMDA5NDU4N2QzNWMxMjM3MDNlNDI4
NzNjZjEwZWYzYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmNwcApAQCAtMTcwLDE0ICsxNzAsMTYgQEAgc3RhdGljIHZvaWQgY2hlY2tEb2N1
bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBEb2N1bWVudCogZG9j
dW0KICAgICBBU1NFUlQoIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpIHx8IChWOERvY3VtZW50
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXItPkdldFByb3Rv
dHlwZSgpKSkgPT0gZG9jdW1lbnQpKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0SXNvbGF0ZWRXb3Js
ZEZpZWxkKFY4RE9NV2luZG93U2hlbGwqIHNoZWxsLCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNv
bnRleHQpCitzdGF0aWMgdm9pZCBzZXRJc29sYXRlZFdvcmxkRmllbGQoVjhET01XaW5kb3dTaGVs
bDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogZGF0YSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29u
dGV4dCkKIHsKLSAgICB0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5TZXRQb2ludGVySW5J
bnRlcm5hbEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4LCBzaGVs
bCk7CisgICAgdG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KS0+U2V0UG9pbnRlckluSW50ZXJu
YWxGaWVsZChWOERPTVdpbmRvdzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCwgZGF0YSk7CiB9
CiAKLVY4RE9NV2luZG93U2hlbGwqIFY4RE9NV2luZG93U2hlbGw6OmVudGVyZWRJc29sYXRlZFdv
cmxkQ29udGV4dCgpCitWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBWOERP
TVdpbmRvd1NoZWxsOjp0b0lzb2xhdGVkQ29udGV4dERhdGEodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBpbm5lckdsb2JhbCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VjhET01XaW5kb3dTaGVs
bCo+KHRvSW5uZXJHbG9iYWxPYmplY3Qodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSktPkdldFBv
aW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOERPTVdpbmRvdzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJ
bmRleCkpOworICAgIGlmIChpbm5lckdsb2JhbC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPCBWOERP
TVdpbmRvdzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PElzb2xhdGVkQ29udGV4dERhdGEqPihpbm5lckdsb2JhbC0+
R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRX
b3JsZEluZGV4KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldEluamVjdGVkU2NyaXB0Q29udGV4dERl
YnVnSWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdGFyZ2V0Q29udGV4dCwgaW50IGRlYnVnSWQp
CkBAIC0yMDcsMjAgKzIwOSwxNCBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6OmlzQ29udGV4dElu
aXRpYWxpemVkKCkKICAgICByZXR1cm4gIW1fY29udGV4dC5pc0VtcHR5KCk7CiB9CiAKLXZvaWQg
VjhET01XaW5kb3dTaGVsbDo6ZGVzdHJveUlzb2xhdGVkU2hlbGwoKQotewotICAgIGRpc3Bvc2VD
b250ZXh0KHRydWUpOwotfQotCiBzdGF0aWMgdm9pZCBpc29sYXRlZENvbnRleHRXZWFrQ2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKIHsK
LSAgICAvLyBIYW5kbGUgd2lsbCBiZSBkaXNwb3NlZCBpbiBkZWxldGUuCi0gICAgZGVsZXRlIHN0
YXRpY19jYXN0PFY4RE9NV2luZG93U2hlbGwqPihwYXJhbWV0ZXIpOworICAgIG9iamVjdC5EaXNw
b3NlKCk7CisgICAgZGVsZXRlIHN0YXRpY19jYXN0PFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVk
Q29udGV4dERhdGEqPihwYXJhbWV0ZXIpOwogfQogCi12b2lkIFY4RE9NV2luZG93U2hlbGw6OmRp
c3Bvc2VDb250ZXh0KGJvb2wgd2VhaykKK3ZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNv
bnRleHQoKQogewotICAgIEFTU0VSVCghbV9jb250ZXh0LmdldCgpLklzV2VhaygpKTsKICAgICBt
X3BlckNvbnRleHREYXRhLmNsZWFyKCk7CiAKICAgICBpZiAobV9jb250ZXh0LmlzRW1wdHkoKSkK
QEAgLTIyOCwxNCArMjI0LDE0IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRl
eHQoYm9vbCB3ZWFrKQogCiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT53aWxsUmVs
ZWFzZVNjcmlwdENvbnRleHQobV9jb250ZXh0LmdldCgpLCBtX3dvcmxkLT53b3JsZElkKCkpOwog
Ci0gICAgaWYgKCF3ZWFrKQotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICBlbHNlIHsK
KyAgICBpZiAobV9pc29sYXRlZENvbnRleHREYXRhKSB7CiAgICAgICAgIEFTU0VSVCghbV93b3Js
ZC0+aXNNYWluV29ybGQoKSk7Ci0gICAgICAgIGRlc3Ryb3lHbG9iYWwoKTsKLSAgICAgICAgbV9m
cmFtZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC5nZXQoKS5NYWtlV2Vhayh0aGlzLCBpc29sYXRl
ZENvbnRleHRXZWFrQ2FsbGJhY2spOwotICAgIH0KKyAgICAgICAgLy8gSGVyZSB3ZSBtdXN0IGlu
dGVudGlvbmFsbHkgbGVhayB0aGUgcGVyIGNvbnRleHQgZGF0YSBwb2ludGVyIGFzIGl0IGdldHMg
ZGVsZXRlZCBpbiBpc29sYXRlZENvbnRleHRXZWFrQ2FsbGJhY2suCisgICAgICAgIG1fY29udGV4
dC5sZWFrSGFuZGxlKCkuTWFrZVdlYWsobV9pc29sYXRlZENvbnRleHREYXRhLmxlYWtQdHIoKSwg
aXNvbGF0ZWRDb250ZXh0V2Vha0NhbGxiYWNrKTsKKyAgICAgICAgLy8gVGhlIGdsb2JhbCBoYW5k
bGUga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIGNvbnRleHQsIHNvIGl0IG11c3QgYmUgcmVtb3Zl
ZC4KKyAgICAgICAgbV9nbG9iYWwuY2xlYXIoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jb250
ZXh0LmNsZWFyKCk7CiAKICAgICAvLyBJdCdzIGxpa2VseSB0aGF0IGRpc3Bvc2luZyB0aGUgY29u
dGV4dCBoYXMgY3JlYXRlZCBhIGxvdCBvZgogICAgIC8vIGdhcmJhZ2UuIE5vdGlmeSBWOCBhYm91
dCB0aGlzIHNvIGl0J2xsIGhhdmUgYSBjaGFuY2Ugb2YgY2xlYW5pbmcKQEAgLTI1MSw2ICsyNDcs
MTEgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkZXN0cm95R2xvYmFsKCkKICAgICBtX2dsb2Jh
bC5jbGVhcigpOwogfQogCit2b2lkIFY4RE9NV2luZG93U2hlbGw6OmNsZWFySXNvbGF0ZWRTaGVs
bCgpCit7CisgICAgZGlzcG9zZUNvbnRleHQoKTsKK30KKwogdm9pZCBWOERPTVdpbmRvd1NoZWxs
OjpjbGVhckZvckNsb3NlKCkKIHsKICAgICBpZiAobV9jb250ZXh0LmlzRW1wdHkoKSkKQEAgLTM0
NSwxOSArMzQ2LDIwIEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVk
KCkKICAgICAgICAgfQogICAgIH0KIAorICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRl
eHREYXRhOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAoIW1fcGVyQ29udGV4dERh
dGEtPmluaXQoKSkgeworICAgICAgICBkaXNwb3NlQ29udGV4dCgpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCiAgICAgLy8gRmxhZyBjb250ZXh0IGFzIGlzb2xhdGVkLgogICAgIGlm
ICghaXNNYWluV29ybGQpIHsKICAgICAgICAgVjhET01XaW5kb3dTaGVsbCogbWFpbldpbmRvdyA9
IG1fZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpOwogICAgICAgICBtYWluV2luZG93LT5p
bml0aWFsaXplSWZOZWVkZWQoKTsKICAgICAgICAgaWYgKCFtYWluV2luZG93LT5jb250ZXh0KCku
SXNFbXB0eSgpKQogICAgICAgICAgICAgc2V0SW5qZWN0ZWRTY3JpcHRDb250ZXh0RGVidWdJZCht
X2NvbnRleHQuZ2V0KCksIG1fZnJhbWUtPnNjcmlwdCgpLT5jb250ZXh0RGVidWdJZChtYWluV2lu
ZG93LT5jb250ZXh0KCkpKTsKLSAgICAgICAgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKHRoaXMsIGNv
bnRleHQpOwotICAgIH0KLQotICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRh
OjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKLSAgICBpZiAoIW1fcGVyQ29udGV4dERhdGEtPmlu
aXQoKSkgewotICAgICAgICBkaXNwb3NlQ29udGV4dCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIG1faXNvbGF0ZWRDb250ZXh0RGF0YSA9IElzb2xhdGVkQ29udGV4dERhdGE6OmNy
ZWF0ZShtX3dvcmxkLCBtX3BlckNvbnRleHREYXRhLnJlbGVhc2UoKSwgbV9pc29sYXRlZFdvcmxk
U2hlbGxTZWN1cml0eU9yaWdpbik7CisgICAgICAgIHNldElzb2xhdGVkV29ybGRGaWVsZChtX2lz
b2xhdGVkQ29udGV4dERhdGEuZ2V0KCksIGNvbnRleHQpOwogICAgIH0KIAogICAgIGlmICghaW5z
dGFsbERPTVdpbmRvdygpKSB7CkBAIC02MTcsNiArNjE5LDggQEAgdm9pZCBWOERPTVdpbmRvd1No
ZWxsOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4KICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVJc29sYXRl
ZENvbnRleHQobV9mcmFtZSwgc2NyaXB0U3RhdGUsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAg
ICB9CiAgICAgbV9pc29sYXRlZFdvcmxkU2hlbGxTZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3Jp
Z2luOworICAgIGlmIChtX2lzb2xhdGVkQ29udGV4dERhdGEpCisgICAgICAgIG1faXNvbGF0ZWRD
b250ZXh0RGF0YS0+c2V0U2VjdXJpdHlPcmlnaW4obV9pc29sYXRlZFdvcmxkU2hlbGxTZWN1cml0
eU9yaWdpbik7CiB9CiAKIH0gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5oCmluZGV4IDAxZDI5ODE3ZmM4ZDMyMWNiMTRhMThlMDg2Mzhl
NDMyMmFkNjlkZDguLmRlMmMyYTIwZDhlN2Y0ZWFhYzUxZTRmZDQ3YjA5MDc3ZDNlZDU3OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKQEAgLTUz
LDYgKzUzLDM0IEBAIGNsYXNzIEhUTUxEb2N1bWVudDsKIC8vIHBlcnNpc3QgYmV0d2VlbiBuYXZp
Z2F0aW9ucy4KIGNsYXNzIFY4RE9NV2luZG93U2hlbGwgewogcHVibGljOgorCisgICAgLy8gVGhp
cyBjbGFzcyBob2xkcyBhbGwgdGhlIGRhdGEgdGhhdCBpcyBhY2Nlc3NpYmxlIGZyb20gYSBjb250
ZXh0IGZvciBhbiBpc29sYXRlZCBzaGVsbC4KKyAgICAvLyBJdCBzdXJ2aXZlcyB1bnRpbCB0aGUg
Y29udGV4dCBpcyBkZWxldGVkLgorICAgIGNsYXNzIElzb2xhdGVkQ29udGV4dERhdGEgeworICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJc29sYXRlZENvbnRleHREYXRhKTsKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPElzb2xhdGVkQ29udGV4dERhdGE+IGNyZWF0
ZShQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gd29ybGQsIFBhc3NPd25QdHI8VjhQZXJDb250
ZXh0RGF0YT4gcGVyQ29udGV4dERhdGEsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IElz
b2xhdGVkQ29udGV4dERhdGEod29ybGQsIHBlckNvbnRleHREYXRhLCBzZWN1cml0eU9yaWdpbikp
OworICAgICAgICB9CisgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSB7IHJldHVybiBt
X3dvcmxkLmdldCgpOyB9CisgICAgICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRh
KCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldFNl
Y3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikgeyBtX3NlY3Vy
aXR5T3JpZ2luID0gb3JpZ2luOyB9CisgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbigpIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIElzb2xhdGVkQ29udGV4dERhdGEoUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+
IHdvcmxkLCBQYXNzT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IHBlckNvbnRleHREYXRhLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKKyAgICAgICAgICAgIDogbV93
b3JsZCh3b3JsZCkKKyAgICAgICAgICAgICwgbV9wZXJDb250ZXh0RGF0YShwZXJDb250ZXh0RGF0
YSkKKyAgICAgICAgICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3Js
ZDsKKyAgICAgICAgT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7Cisg
ICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICB9Owor
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8VjhET01XaW5kb3dTaGVsbD4gY3JlYXRlKEZyYW1lKiwg
UGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+KTsKIAogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpD
b250ZXh0PiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC03
Niw2ICsxMDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyRm9yTmF2aWdhdGlvbigpOwog
ICAgIHZvaWQgY2xlYXJGb3JDbG9zZSgpOworICAgIHZvaWQgY2xlYXJJc29sYXRlZFNoZWxsKCk7
CiAKICAgICB2b2lkIGRlc3Ryb3lHbG9iYWwoKTsKIApAQCAtOTAsMjkgKzExOSwyNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luLmdl
dCgpOwogICAgIH07CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBpc29sYXRlZCB3b3JsZCBhc3NvY2lh
dGVkIHdpdGgKLSAgICAvLyB2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpLiBCZWNhdXNlIHdvcmxk
cyBhcmUgaXNvbGF0ZWQsIHRoZSBlbnRpcmUKLSAgICAvLyBKYXZhU2NyaXB0IGNhbGwgc3RhY2sg
c2hvdWxkIGJlIGZyb20gdGhlIHNhbWUgaXNvbGF0ZWQgd29ybGQuCi0gICAgLy8gUmV0dXJucyAw
IGlmIHRoZSBlbnRlcmVkIGNvbnRleHQgaXMgZnJvbSB0aGUgbWFpbiB3b3JsZC4KLSAgICAvLwot
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBlZGdlIGNhc2VzIHdpdGggRE9NIG11dGF0aW9uIGV2ZW50
cyB0aGF0IG1pZ2h0Ci0gICAgLy8gdmlvbGF0ZSB0aGlzIGludmFyaWFudC4KLSAgICAvLwotICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHBvb3JseSBuYW1lZCBhZnRlciB0aGUgZGVsZXRpb24gb2YgaXNv
bGF0ZWQgY29udGV4dHMuCi0gICAgc3RhdGljIFY4RE9NV2luZG93U2hlbGwqIGdldEVudGVyZWQo
KQorICAgIGlubGluZSBzdGF0aWMgSXNvbGF0ZWRDb250ZXh0RGF0YSogZW50ZXJlZElzb2xhdGVk
Q29udGV4dERhdGEoKQogICAgIHsKLSAgICAgICAgaWYgKCFET01XcmFwcGVyV29ybGQ6Omlzb2xh
dGVkV29ybGRzRXhpc3QoKSkKKyAgICAgICAgaWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjpp
c29sYXRlZFdvcmxkc0V4aXN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlm
ICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIHJldHVybiBlbnRlcmVkSXNvbGF0ZWRXb3JsZENvbnRleHQoKTsKKyAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3Qodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKS0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsK
KyAgICAgICAgSXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWRDb250ZXh0RGF0YSA9IHRvSXNv
bGF0ZWRDb250ZXh0RGF0YShpbm5lckdsb2JhbCk7CisgICAgICAgIGlmIChMSUtFTFkoIWlzb2xh
dGVkQ29udGV4dERhdGEpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBp
c29sYXRlZENvbnRleHREYXRhOwogICAgIH0KIAotICAgIHZvaWQgZGVzdHJveUlzb2xhdGVkU2hl
bGwoKTsKKyAgICBzdGF0aWMgSXNvbGF0ZWRDb250ZXh0RGF0YSogdG9Jc29sYXRlZENvbnRleHRE
YXRhKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJHbG9iYWwpOworCiBwcml2YXRlOgogICAg
IFY4RE9NV2luZG93U2hlbGwoRnJhbWUqLCBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4pOwog
Ci0gICAgdm9pZCBkaXNwb3NlQ29udGV4dChib29sIHdlYWsgPSBmYWxzZSk7CisgICAgdm9pZCBk
aXNwb3NlQ29udGV4dCgpOwogCiAgICAgdm9pZCBzZXRTZWN1cml0eVRva2VuKCk7CiAKQEAgLTEy
NiwxMiArMTUxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVDb250ZXh0KCk7CiAgICAg
Ym9vbCBpbnN0YWxsRE9NV2luZG93KCk7CiAKLSAgICBzdGF0aWMgVjhET01XaW5kb3dTaGVsbCog
ZW50ZXJlZElzb2xhdGVkV29ybGRDb250ZXh0KCk7Ci0KICAgICBGcmFtZSogbV9mcmFtZTsKICAg
ICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogCiAgICAgT3duUHRyPFY4UGVyQ29u
dGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7CisgICAgT3duUHRyPElzb2xhdGVkQ29udGV4dERh
dGE+IG1faXNvbGF0ZWRDb250ZXh0RGF0YTsKIAogICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkNv
bnRleHQ+IG1fY29udGV4dDsKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZ2xv
YmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBhZDFi
Y2FmZDljZTBkY2MxZTFhZDE3YWE2ZWQ2MWZjNTJiZGIwMzEwLi5jNTQ1YTg2M2Q3MjA1MzhjZDNl
NGUzYjhkMzZkYzU1OWZjNmZhNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaApAQCAtMTE4LDE0ICsxMTgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKndyYXBwZXI7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIFY4RE9NV2luZG93U2hlbGwqIGNvbnRleHQgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRF
bnRlcmVkKCk7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCFjb250ZXh0KSkgeworICAgICAgICAg
ICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWREYXRhID0g
VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKTsKKyAgICAgICAg
ICAgIGlmIChMSUtFTFkoIWlzb2xhdGVkRGF0YSkpIHsKICAgICAgICAgICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Piogd3JhcHBlciA9IG5vZGUtPndyYXBwZXIoKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICp3cmFwcGVyOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGNvbnRleHQtPndv
cmxkKCktPmRvbURhdGFTdG9yZSgpOworICAgICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9
IGlzb2xhdGVkRGF0YS0+d29ybGQoKS0+ZG9tRGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBET01O
b2RlTWFwcGluZyYgZG9tTm9kZU1hcCA9IG5vZGUtPmlzQWN0aXZlTm9kZSgpID8gc3RvcmUtPmFj
dGl2ZURvbU5vZGVNYXAoKSA6IHN0b3JlLT5kb21Ob2RlTWFwKCk7CiAgICAgICAgICAgICByZXR1
cm4gZG9tTm9kZU1hcC5nZXQobm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCmluZGV4IDM0YjljMTliZjU5ODA4
NTFmMmYyNmIyZmJhM2NiNGU3MzgyNjU5ZjkuLjMxOTlkZmQ5YTA1MmJkYTg3YmM5ZmFkZDcxNGUy
YmExOTczYjg3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxk
Q29udGV4dEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRD
b250ZXh0SGFuZGxlLmNwcApAQCAtNDQsMjcgKzQ0LDI4IEBAIFdvcmxkQ29udGV4dEhhbmRsZTo6
V29ybGRDb250ZXh0SGFuZGxlKFdvcmxkVG9Vc2Ugd29ybGRUb1VzZSkKICAgICBpZiAod29ybGRU
b1VzZSA9PSBVc2VNYWluV29ybGQgfHwgd29ybGRUb1VzZSA9PSBVc2VXb3JrZXJXb3JsZCkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpIHsKKyAg
ICAgICAgbV93b3JsZFRvVXNlID0gVXNlTWFpbldvcmxkOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpH
ZXRDdXJyZW50KCk7CisgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbCA9IHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4
dCk7CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgLy8gRklYTUUgV2UgYXJlIGR1cGxpY2F0aW5n
IGEgbG90IG9mIGVmZm9ydCBoZXJlIGNoZWNraW5nIHRoZSBjb250ZXh0IGZvciB0aGUgd29ya2Vy
IGFuZCBmb3IgdGhlIGlzb2xhdGVkIHdvcmxkLgotICAgIGlmICh2ODo6Q29udGV4dDo6SW5Db250
ZXh0KCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpD
b250ZXh0OjpHZXRDdXJyZW50KCk7Ci0gICAgICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghVjhET01XcmFwcGVyOjppc1dyYXBwZXJPZlR5cGUo
dG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKSkpIHsKLSAg
ICAgICAgICAgICAgICBtX3dvcmxkVG9Vc2UgPSBVc2VXb3JrZXJXb3JsZDsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBpZiAoVU5MSUtFTFko
IVY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKGlubmVyR2xvYmFsLCAmVjhET01XaW5kb3c6
OmluZm8pKSkgeworICAgICAgICBtX3dvcmxkVG9Vc2UgPSBVc2VXb3JrZXJXb3JsZDsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwg
PSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCk7Ci0gICAgaWYgKExJS0VMWSghc2hlbGwp
KSB7CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogZGF0YSA9IFY4
RE9NV2luZG93U2hlbGw6OnRvSXNvbGF0ZWRDb250ZXh0RGF0YShpbm5lckdsb2JhbCk7CisgICAg
aWYgKExJS0VMWSghZGF0YSkpIHsKICAgICAgICAgbV93b3JsZFRvVXNlID0gVXNlTWFpbldvcmxk
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKCFzaGVsbC0+Y29udGV4dCgp
LklzRW1wdHkoKSk7Ci0gICAgbV9jb250ZXh0ID0gU2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4
dD46OmNyZWF0ZShzaGVsbC0+Y29udGV4dCgpKTsKKyAgICBtX2NvbnRleHQgPSBTaGFyZWRQZXJz
aXN0ZW50PHY4OjpDb250ZXh0Pjo6Y3JlYXRlKGNvbnRleHQpOwogfQogCiB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IFdvcmxkQ29udGV4dEhhbmRsZTo6YWRqdXN0ZWRDb250ZXh0KFNjcmlwdENvbnRy
b2xsZXIqIHNjcmlwdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA4MWQyNDQyYWJkYTUwNTVhYWM1
NGQwYWM3NTYzYmNkN2U2NzZhMDRkLi43YzRhMTI2OTFlYWFhMjgzZWIwMDY2NzgzYTMwY2I0MTFl
ZTkzNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
b2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXgKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERvY3VtZW50
Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICBpZiAoIVY4RE9NV2luZG93
U2hlbGw6OmdldEVudGVyZWQoKSkgeworICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJl
ZElzb2xhdGVkQ29udGV4dERhdGEoKSkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1w
bC0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+
dXBkYXRlRG9jdW1lbnRXcmFwcGVyKHdyYXBwZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
CmluZGV4IDBkNDcxOWZhNWE2OWJhY2Q4MTk0YWI0ZWI3ODI3Y2M3ZWQ0YmUzMzYuLmU5YzgxMGIx
NTRlYTJlM2QzN2ZjMGY2ZTQ4OGQ2YTNiODFlMTNmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApA
QCAtMTgzLDcgKzE4Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxEb2N1bWVu
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvCiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhIVE1MRG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgp
KSB7CisgICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0
YSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQogICAgICAg
ICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdyYXBw
ZXIod3JhcHBlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDA5OTFkZmMxNzgwOTZj
NzZjN2NiODI3YWEwZmJkZTMyNWZjMDQyNTMuLmUzNTZhN2E0YmIxZmE0ZTZkZTJiZjJlZGZlNDNk
YTY0OWIyNDQxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjgoU1ZHRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db24KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBW
OFNWR0RvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAg
aWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICBpZiAo
IVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkgeworICAgIGlmICghVjhET01XaW5kb3dT
aGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKSkgewogICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gaW1wbC0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+d2lu
ZG93U2hlbGwoKS0+dXBkYXRlRG9jdW1lbnRXcmFwcGVyKHdyYXBwZXIpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDUwYjdmYjRkMzg2YTcxZjk3Y2JlYTRh
OTU5ZTEyYmFmN2E3NzkzYi4uZTk0ODVmOTFhMDZjYzRhYmVkMGVkYTk2NWY4ZWM2YmM1N2YyN2Fl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0
cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTU1LDggKzU1LDggQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKLSAgICBpZiAoVjhET01XaW5kb3dTaGVsbCogaXNvbGF0
ZWRXb3JsZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKQotICAgICAgICBz
ZWN1cml0eU9yaWdpbiA9IGlzb2xhdGVkV29ybGRTaGVsbC0+aXNvbGF0ZWRXb3JsZFNlY3VyaXR5
T3JpZ2luKCk7CisgICAgaWYgKFY4RE9NV2luZG93U2hlbGw6Oklzb2xhdGVkQ29udGV4dERhdGEq
IGlzb2xhdGVkQ29udGV4dERhdGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRD
b250ZXh0RGF0YSgpKQorICAgICAgICBzZWN1cml0eU9yaWdpbiA9IGlzb2xhdGVkQ29udGV4dERh
dGEtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhtbEh0
dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzZWN1cml0eU9yaWdp
bik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175227</attachid>
            <date>2012-11-20 08:51:09 -0800</date>
            <delta_ts>2012-11-21 17:21:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20121120174857.patch</filename>
            <type>text/plain</type>
            <size>16279</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE2YzNjMjM3MjQxYmVl
MWVlNzNlNWY1NmJmNTcwZWVlZTEwMDc3NC4uNTIyNmU1ZjZkMjRlMjIyZDdkOTcxNjU0Y2MyMjA3
ZjEwMjY2MTI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTIwICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQgd2FzIHJlZmFjdG9yZWQgc28g
dGhhdCB0aGUgd2luZG93IHNoZWxsCisgICAgICAgIG5vIGxvbmdlciBoYXMgdG8gYmUga2VwdCBh
bGl2ZSBieSBhIHY4IGNvbnRleHQuIEluc3RlYWQsIG9ubHkKKyAgICAgICAgdGhlIERPTVdyYXBw
ZXJXb3JsZCB3aWxsIGJlIGtlcHQgYWxpdmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBj
aGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OmN1cnJlbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc29sYXRlZFdvcmxkV2Vha0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjptYWtlQ29udGV4dFdlYWspOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzZXRJc29sYXRlZFdvcmxkRmllbGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAoRE9NV3JhcHBlcldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhpc3RpbmdXaW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250
cm9sbGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRJZklzb2xhdGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2lu
ZG93U2hlbGw6OmRlc3Ryb3lJc29sYXRlZFNoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6OmRpc3Bvc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2lu
ZG93U2hlbGw6OmluaXRpYWxpemVJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoVjhET01XaW5kb3dTaGVsbCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dv
cmxkQ29udGV4dEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JsZENvbnRleHRIYW5k
bGU6OldvcmxkQ29udGV4dEhhbmRsZSk6CisKIDIwMTItMTEtMjAgIEt1bmloaWtvIFNha2Ftb3Rv
ICA8a3Nha2Ftb3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgbG9jYWxpemVkIGRhdGUt
dGltZSBmb3JtYXQgaW4gZGF0ZXRpbWUgaW5wdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuY3BwCmluZGV4IDQ1Njk4NzUxM2E5M2RjZDJmYzY4YzFmMzExNDUxMDNj
NmQ3NjM2ZWYuLmU0ZmE1OWYwZjI0ZGEyMDMyNmQ4ODM0ZjU5OTA3OTM4NDNkODhkY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcApAQCAtNTcsOSArNTcs
OSBAQCBET01EYXRhU3RvcmUqIERPTURhdGFTdG9yZTo6Y3VycmVudCh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gaXNvbGF0ZSA/IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSkgOiBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAg
aWYgKFVOTElLRUxZKCEhZGF0YS0+ZG9tRGF0YVN0b3JlKCkpKQogICAgICAgICByZXR1cm4gZGF0
YS0+ZG9tRGF0YVN0b3JlKCk7Ci0gICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBWOERPTVdp
bmRvd1NoZWxsOjppc29sYXRlZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKLSAgICBpZiAo
VU5MSUtFTFkoISFzaGVsbCkpCi0gICAgICAgIHJldHVybiBzaGVsbC0+d29ybGQoKS0+aXNvbGF0
ZWRXb3JsZERPTURhdGFTdG9yZSgpOworICAgIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3Js
ZCA9IERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWQodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSk7
CisgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0ZWRXb3JsZCkpCisgICAgICAgIHJldHVybiBpc29s
YXRlZFdvcmxkLT5pc29sYXRlZFdvcmxkRE9NRGF0YVN0b3JlKCk7CiAgICAgcmV0dXJuICZtYWlu
V29ybGRET01EYXRhU3RvcmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01XcmFwcGVyV29ybGQuY3BwCmluZGV4IGQzYTA5NTJhOWY5NzVlMDJhNTA3NzkyYTdhMWY5N2E2
YmE0NGJhMWEuLjYwMjNmYTg0NGU3NjM0ZmYwOWNmYWY1YWM3YjIwOTdjN2JlYzE5ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtNjQs
NiArNjQsMjcgQEAgRE9NV3JhcHBlcldvcmxkKiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKQogICAg
IHJldHVybiBjYWNoZWROb3JtYWxXb3JsZC5nZXQoKTsKIH0KIAorc3RhdGljIHZvaWQgaXNvbGF0
ZWRXb3JsZFdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9p
ZCogcGFyYW1ldGVyKQoreworICAgIG9iamVjdC5EaXNwb3NlKCk7CisgICAgb2JqZWN0LkNsZWFy
KCk7CisgICAgc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4ocGFyYW1ldGVyKS0+ZGVyZWYo
KTsKK30KKwordm9pZCBET01XcmFwcGVyV29ybGQ6Om1ha2VDb250ZXh0V2Vhayh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0KQoreworICAgIEFTU0VSVChpc0lzb2xhdGVkV29ybGQoKSk7
CisgICAgQVNTRVJUKGlzb2xhdGVkKGNvbnRleHQpID09IHRoaXMpOworICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQpLk1ha2VXZWFrKHRoaXMsIGlzb2xhdGVkV29y
bGRXZWFrQ2FsbGJhY2spOworICAgIC8vIE1hdGNoaW5nIGRlcmVmIGlzIGluIHdlYWsgY2FsbGJh
Y2suCisgICAgdGhpcy0+cmVmKCk7Cit9CisKK3ZvaWQgRE9NV3JhcHBlcldvcmxkOjpzZXRJc29s
YXRlZFdvcmxkRmllbGQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKK3sKKyAgICBj
b250ZXh0LT5TZXRBbGlnbmVkUG9pbnRlckluRW1iZWRkZXJEYXRhKHY4Q29udGV4dElzb2xhdGVk
V29ybGQsIGlzTWFpbldvcmxkKCkgPyAwIDogdGhpcyk7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDxp
bnQsIERPTVdyYXBwZXJXb3JsZCo+IFdvcmxkTWFwOwogc3RhdGljIFdvcmxkTWFwJiBpc29sYXRl
ZFdvcmxkTWFwKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldv
cmxkLmgKaW5kZXggMjkwMDg4NmQ3Yjc0ZTMxMDA0Y2U0NzRhMDFhN2ExZGRiODE0ZTVhOS4uMThi
MDVmY2U1ZDhjNzNmZWM5NGQyNDlmZjExOTlmNWQ3NGJjNTI3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTMyLDYgKzMyLDggQEAKICNkZWZp
bmUgRE9NV3JhcHBlcldvcmxkX2gKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5j
bHVkZSAiVjhQZXJDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTUzLDYgKzU1LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBp
c29sYXRlZFdvcmxkc0V4aXN0KCkgeyByZXR1cm4gaXNvbGF0ZWRXb3JsZENvdW50OyB9CiAgICAg
c3RhdGljIGJvb2wgaXNJc29sYXRlZFdvcmxkSWQoaW50IHdvcmxkSWQpIHsgcmV0dXJuIHdvcmxk
SWQgIT0gbWFpbldvcmxkSWQgJiYgd29ybGRJZCAhPSB1bmluaXRpYWxpemVkV29ybGRJZDsgfQog
ICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmUHRyPERPTVdyYXBwZXJXb3Js
ZD4gPiYgd29ybGRzKTsKKworICAgIHZvaWQgbWFrZUNvbnRleHRXZWFrKHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+KTsKKyAgICB2b2lkIHNldElzb2xhdGVkV29ybGRGaWVsZCh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0Pik7CisgICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWQodjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21FbWJl
ZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRXb3JsZCkpOworICAgIH0KKwogICAgIC8vIEFzc29j
aWF0ZXMgYW4gaXNvbGF0ZWQgd29ybGQgKHNlZSBhYm92ZSBmb3IgZGVzY3JpcHRpb24pIHdpdGgg
YSBzZWN1cml0eQogICAgIC8vIG9yaWdpbi4gWE1MSHR0cFJlcXVlc3QgaW5zdGFuY2VzIHVzZWQg
aW4gdGhhdCB3b3JsZCB3aWxsIGJlIGNvbnNpZGVyZWQKICAgICAvLyB0byBjb21lIGZyb20gdGhh
dCBvcmlnaW4sIG5vdCB0aGUgZnJhbWUncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDhkNWJjZGZjYWI0MWU5M2NkNWE2NDY4Njk4
NTljYTc3OWJhMjk1ZC4uZjBhYWUxZmEwNWMyNWQwMzM2NWRlM2FjMDQxNWU0ZjZhYTdlOWRjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAK
QEAgLTM0Nyw3ICszNDcsNyBAQCBWOERPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjpl
eGlzdGluZ1dpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgSXNvbGF0ZWRX
b3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNvbGF0ZWRXb3JsZHMuZmluZCh3b3JsZC0+d29y
bGRJZCgpKTsKICAgICBpZiAoaXRlciA9PSBtX2lzb2xhdGVkV29ybGRzLmVuZCgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gaXRlci0+dmFsdWUtPmlzQ29udGV4dEluaXRpYWxpemVk
KCkgPyBpdGVyLT52YWx1ZSA6IDA7CisgICAgcmV0dXJuIGl0ZXItPnZhbHVlLT5pc0NvbnRleHRJ
bml0aWFsaXplZCgpID8gaXRlci0+dmFsdWUuZ2V0KCkgOiAwOwogfQogCiBWOERPTVdpbmRvd1No
ZWxsKiBTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQqIHdvcmxk
KQpAQCAtMzYwLDExICszNjAsMTEgQEAgVjhET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxl
cjo6d2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKICAgICBlbHNlIHsKICAgICAg
ICAgSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNvbGF0ZWRXb3JsZHMuZmlu
ZCh3b3JsZC0+d29ybGRJZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxk
cy5lbmQoKSkKLSAgICAgICAgICAgIHNoZWxsID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICBz
aGVsbCA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIE93
blB0cjxWOERPTVdpbmRvd1NoZWxsPiBpc29sYXRlZFdvcmxkU2hlbGwgPSBWOERPTVdpbmRvd1No
ZWxsOjpjcmVhdGUobV9mcmFtZSwgd29ybGQpOwogICAgICAgICAgICAgc2hlbGwgPSBpc29sYXRl
ZFdvcmxkU2hlbGwuZ2V0KCk7Ci0gICAgICAgICAgICBtX2lzb2xhdGVkV29ybGRzLnNldCh3b3Js
ZC0+d29ybGRJZCgpLCBpc29sYXRlZFdvcmxkU2hlbGwubGVha1B0cigpKTsKKyAgICAgICAgICAg
IG1faXNvbGF0ZWRXb3JsZHMuc2V0KHdvcmxkLT53b3JsZElkKCksIGlzb2xhdGVkV29ybGRTaGVs
bC5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICghc2hlbGwtPmlzQ29udGV4
dEluaXRpYWxpemVkKCkgJiYgc2hlbGwtPmluaXRpYWxpemVJZk5lZWRlZCgpKSB7CkBAIC00MDcs
OSArNDA3LDggQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3Js
ZChpbnQgd29ybGRJRCwgY29uc3QgVmVjdG9yPFNjcmlwdFMKIAogICAgICAgICAvLyBNYXJrIHRl
bXBvcmFyeSBzaGVsbCBmb3Igd2VhayBkZXN0cnVjdGlvbi4KICAgICAgICAgaWYgKHdvcmxkSUQg
PT0gRE9NV3JhcHBlcldvcmxkOjp1bmluaXRpYWxpemVkV29ybGRJZCkgewotICAgICAgICAgICAg
aW50IGFjdHVhbFdvcmxkSWQgPSBpc29sYXRlZFdvcmxkU2hlbGwtPndvcmxkKCktPndvcmxkSWQo
KTsKLSAgICAgICAgICAgIG1faXNvbGF0ZWRXb3JsZHMucmVtb3ZlKGFjdHVhbFdvcmxkSWQpOwog
ICAgICAgICAgICAgaXNvbGF0ZWRXb3JsZFNoZWxsLT5kZXN0cm95SXNvbGF0ZWRTaGVsbCgpOwor
ICAgICAgICAgICAgbV9pc29sYXRlZFdvcmxkcy5yZW1vdmUod29ybGQtPndvcmxkSWQoKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2OFJlc3VsdHMgPSBldmFsdWF0ZUhhbmRsZVNjb3BlLkNsb3Nl
KHJlc3VsdEFycmF5KTsKQEAgLTQ0NCw3ICs0NDMsNyBAQCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+
IFNjcmlwdENvbnRyb2xsZXI6OmN1cnJlbnRXb3JsZENvbnRleHQoKQogewogICAgIGlmICh2ODo6
Q29udGV4dDo6SW5Db250ZXh0KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7Ci0gICAgICAgIGlmIChWOERPTVdp
bmRvd1NoZWxsOjppc29sYXRlZChjb250ZXh0KSkgeworICAgICAgICBpZiAoRE9NV3JhcHBlcldv
cmxkOjppc29sYXRlZChjb250ZXh0KSkgewogICAgICAgICAgICAgaWYgKG1fZnJhbWUgPT0gdG9G
cmFtZUlmTm90RGV0YWNoZWQoY29udGV4dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0KTsKICAgICAgICAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+KCk7CkBAIC02NzMsNyArNjcyLDcgQEAgdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPFNjcmlwdFN0
YXRlKiwgU2UKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgZm9yIChJ
c29sYXRlZFdvcmxkTWFwOjppdGVyYXRvciBpdCA9IG1faXNvbGF0ZWRXb3JsZHMuYmVnaW4oKTsg
aXQgIT0gbV9pc29sYXRlZFdvcmxkcy5lbmQoKTsgKytpdCkgewotICAgICAgICBWOERPTVdpbmRv
d1NoZWxsKiBpc29sYXRlZFdvcmxkU2hlbGwgPSBpdC0+dmFsdWU7CisgICAgICAgIFY4RE9NV2lu
ZG93U2hlbGwqIGlzb2xhdGVkV29ybGRTaGVsbCA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICAgICAg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGlzb2xhdGVkV29ybGRTaGVsbC0+d29ybGQoKS0+aXNv
bGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgICAgIGlmICghb3JpZ2luKQogICAgICAg
ICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggYjcwOGVlMjI4ZjNlYjgxZWFhYWI4ODRjMmUyYTkyN2M4NTFlNzgwMC4u
NjZhNTczNDM0MTFlYzk5OGJjZmI5M2QzYjg4NTBlNWE5OTRiYTNjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTkzLDEwICsxOTMsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGludCBjb250ZXh0RGVidWdJZCh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0Pik7CiAKIHByaXZhdGU6Ci0gICAgLy8gTm90ZTogYWx0aG91Z2ggdGhlIHBvaW50ZXIg
aXMgcmF3LCB0aGUgaW5zdGFuY2UgaXMga2VwdCBhbGl2ZSBieSBhIHN0cm9uZwotICAgIC8vIHJl
ZmVyZW5jZSB0byB0aGUgdjggY29udGV4dCBpdCBjb250YWlucywgd2hpY2ggaXMgbm90IG1hZGUg
d2VhayB1bnRpbCB3ZQotICAgIC8vIGNhbGwgd29ybGQtPmRlc3Ryb3lJc29sYXRlZFNoZWxsKCku
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGludCwgVjhET01XaW5kb3dTaGVsbCo+IElzb2xhdGVkV29y
bGRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgT3duUHRyPFY4RE9NV2luZG93U2hlbGw+
ID4gSXNvbGF0ZWRXb3JsZE1hcDsKIAogICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtMjA0LDEwICsy
MDEsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyogbV9zb3VyY2VVUkw7CiAKICAgICBP
d25QdHI8VjhET01XaW5kb3dTaGVsbD4gbV93aW5kb3dTaGVsbDsKLQotICAgIC8vIFRoZSBpc29s
YXRlZCB3b3JsZHMgd2UgYXJlIHRyYWNraW5nIGZvciB0aGlzIGZyYW1lLiBXZSBob2xkIHRoZW0g
YWxpdmUKLSAgICAvLyBoZXJlIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCBhZ2FpbiBieSBmdXR1
cmUgY2FsbHMgdG8KLSAgICAvLyBldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCgpLgogICAgIElzb2xh
dGVkV29ybGRNYXAgbV9pc29sYXRlZFdvcmxkczsKIAogICAgIGJvb2wgbV9wYXVzZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDBhMWRjMDlhMTllMTA5NzA0ZTY5
M2NjNDY5ZTNmYjg5YTc1YzYzOTIuLjRmNzRiMTRkMmRhNzUxZGIxOWY2OGMxZDAyNzIwMGVkOTg0
NzJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0zMiwxMCAr
MzIsMTAgQEAKICNkZWZpbmUgVjhCaW5kaW5nX2gKIAogI2luY2x1ZGUgIkJpbmRpbmdTZWN1cml0
eS5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhET01Db25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiVjhET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RE9NV3Jh
cHBlci5oIgogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhP
YmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtMzgzLDEwICszODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgewogICAgICAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IFY4RE9N
V2luZG93U2hlbGw6Omlzb2xhdGVkKHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpOwotICAgICAg
ICBpZiAoIXNoZWxsKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBzaGVs
bC0+d29ybGQoKTsKKyAgICAgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWQodjg6
OkNvbnRleHQ6OkdldEVudGVyZWQoKSk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIGN1cnJlbnQg
Y29udGV4dCBjYXVzZXMgb3V0IG9mIG1lbW9yeSwgSmF2YVNjcmlwdCBzZXR0aW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGFkYWM5
ZTg0YTRmMzVhZjIxNWFiMzlkOTY5MzZhZGZmODdmMTNhNTguLjJjMjExMDNlZDVhOGM2YzA2OTcy
ZDBiZDgxZTgxZDcyNTI3ZDBlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0xOTIsMTggKzE5MiwxMSBAQCBWOERPTVdpbmRvd1No
ZWxsOjpWOERPTVdpbmRvd1NoZWxsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxET01XcmFwcGVy
V29ybGQ+IHdvcgogCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRlc3Ryb3lJc29sYXRlZFNoZWxs
KCkKIHsKLSAgICBkaXNwb3NlQ29udGV4dCh0cnVlKTsKLX0KLQotc3RhdGljIHZvaWQgaXNvbGF0
ZWRDb250ZXh0V2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2
b2lkKiBwYXJhbWV0ZXIpCi17Ci0gICAgLy8gSGFuZGxlIHdpbGwgYmUgZGlzcG9zZWQgaW4gZGVs
ZXRlLgotICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOERPTVdpbmRvd1NoZWxsKj4ocGFyYW1ldGVy
KTsKKyAgICBkaXNwb3NlQ29udGV4dCgpOwogfQogCi12b2lkIFY4RE9NV2luZG93U2hlbGw6OmRp
c3Bvc2VDb250ZXh0KGJvb2wgd2VhaykKK3ZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNv
bnRleHQoKQogewotICAgIEFTU0VSVCghbV9jb250ZXh0LmdldCgpLklzV2VhaygpKTsKICAgICBt
X3BlckNvbnRleHREYXRhLmNsZWFyKCk7CiAKICAgICBpZiAobV9jb250ZXh0LmlzRW1wdHkoKSkK
QEAgLTIxMSwyMiArMjA0LDE4IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRl
eHQoYm9vbCB3ZWFrKQogCiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT53aWxsUmVs
ZWFzZVNjcmlwdENvbnRleHQobV9jb250ZXh0LmdldCgpLCBtX3dvcmxkLT53b3JsZElkKCkpOwog
Ci0gICAgaWYgKCF3ZWFrKQotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKCFtX3dvcmxkLT5pc01haW5Xb3JsZCgpKTsKKyAgICBpZiAobV93b3Js
ZC0+aXNJc29sYXRlZFdvcmxkKCkpIHsKICAgICAgICAgZGVzdHJveUdsb2JhbCgpOwotICAgICAg
ICBtX2ZyYW1lID0gMDsKLSAgICAgICAgbV9jb250ZXh0LmdldCgpLk1ha2VXZWFrKHRoaXMsIGlz
b2xhdGVkQ29udGV4dFdlYWtDYWxsYmFjayk7CisgICAgICAgIG1fd29ybGQtPm1ha2VDb250ZXh0
V2VhayhtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KIAorICAgIG1fY29udGV4dC5jbGVhcigpOwor
CiAgICAgLy8gSXQncyBsaWtlbHkgdGhhdCBkaXNwb3NpbmcgdGhlIGNvbnRleHQgaGFzIGNyZWF0
ZWQgYSBsb3Qgb2YKICAgICAvLyBnYXJiYWdlLiBOb3RpZnkgVjggYWJvdXQgdGhpcyBzbyBpdCds
bCBoYXZlIGEgY2hhbmNlIG9mIGNsZWFuaW5nCiAgICAgLy8gaXQgdXAgd2hlbiBpZGxlLgotICAg
IGlmIChtX3dvcmxkLT5pc01haW5Xb3JsZCgpKSB7Ci0gICAgICAgIGJvb2wgaXNNYWluRnJhbWUg
PSBtX2ZyYW1lLT5wYWdlKCkgJiYgKG1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkgPT0gbV9m
cmFtZSk7Ci0gICAgICAgIFY4R0NGb3JDb250ZXh0RGlzcG9zZTo6aW5zdGFuY2UoKS5ub3RpZnlD
b250ZXh0RGlzcG9zZWQoaXNNYWluRnJhbWUpOwotICAgIH0KKyAgICBib29sIGlzTWFpbkZyYW1l
ID0gbV9mcmFtZS0+cGFnZSgpICYmIChtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpID09IG1f
ZnJhbWUpOworICAgIFY4R0NGb3JDb250ZXh0RGlzcG9zZTo6aW5zdGFuY2UoKS5ub3RpZnlDb250
ZXh0RGlzcG9zZWQoaXNNYWluRnJhbWUpOwogfQogCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRl
c3Ryb3lHbG9iYWwoKQpAQCAtMzIwLDYgKzMwOSw4IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6
aW5pdGlhbGl6ZUlmTmVlZGVkKCkKICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQg
PSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV9jb250ZXh0LmdldCgpKTsKICAgICB2ODo6
Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwogCisgICAgbV93b3JsZC0+c2V0
SXNvbGF0ZWRXb3JsZEZpZWxkKG1fY29udGV4dC5nZXQoKSk7CisKICAgICBpZiAobV9nbG9iYWwu
aXNFbXB0eSgpKSB7CiAgICAgICAgIG1fZ2xvYmFsLnNldChjb250ZXh0LT5HbG9iYWwoKSk7CiAg
ICAgICAgIGlmIChtX2dsb2JhbC5pc0VtcHR5KCkpIHsKQEAgLTMyOCwxMyArMzE5LDEwIEBAIGJv
b2wgVjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmIChpc01haW5Xb3JsZCkKLSAgICAgICAgY29udGV4dC0+U2V0QWxpZ25lZFBv
aW50ZXJJbkVtYmVkZGVyRGF0YSh2OENvbnRleHRJc29sYXRlZFdpbmRvd1NoZWxsLCAwKTsKLSAg
ICBlbHNlIHsKKyAgICBpZiAoIWlzTWFpbldvcmxkKSB7CiAgICAgICAgIFY4RE9NV2luZG93U2hl
bGwqIG1haW5XaW5kb3cgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhpc3RpbmdXaW5kb3dTaGVsbCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiAgICAgICAgIGlmIChtYWluV2luZG93ICYmICFtYWlu
V2luZG93LT5jb250ZXh0KCkuSXNFbXB0eSgpKQogICAgICAgICAgICAgc2V0SW5qZWN0ZWRTY3Jp
cHRDb250ZXh0RGVidWdJZChtX2NvbnRleHQuZ2V0KCksIG1fZnJhbWUtPnNjcmlwdCgpLT5jb250
ZXh0RGVidWdJZChtYWluV2luZG93LT5jb250ZXh0KCkpKTsKLSAgICAgICAgY29udGV4dC0+U2V0
QWxpZ25lZFBvaW50ZXJJbkVtYmVkZGVyRGF0YSh2OENvbnRleHRJc29sYXRlZFdpbmRvd1NoZWxs
LCB0aGlzKTsKICAgICB9CiAKICAgICBtX3BlckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0
YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmgKaW5kZXggZmJlMjUyZDM3ZmY4MGI0ZjUwOTA3NjI2MjdhNzcx
OWY0Y2M2NzdiZi4uN2NjZTE4MmE0ODhkZWVjMmRjNmQ0MGQzMGVmMTdlYzhlYmY2ZWE1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaApAQCAtODAs
MTEgKzgwLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZXN0cm95R2xvYmFsKCk7CiAKLSAgICBz
dGF0aWMgVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWOERPTVdpbmRvd1No
ZWxsKj4oY29udGV4dC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tRW1iZWRkZXJEYXRhKHY4Q29udGV4
dElzb2xhdGVkV2luZG93U2hlbGwpKTsKLSAgICB9Ci0KICAgICBWOFBlckNvbnRleHREYXRhKiBw
ZXJDb250ZXh0RGF0YSgpIHsgcmV0dXJuIG1fcGVyQ29udGV4dERhdGEuZ2V0KCk7IH0KICAgICBE
T01XcmFwcGVyV29ybGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQogCkBAIC05
Myw3ICs4OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVjhET01XaW5kb3dTaGVsbChGcmFt
ZSosIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPik7CiAKLSAgICB2b2lkIGRpc3Bvc2VDb250
ZXh0KGJvb2wgd2VhayA9IGZhbHNlKTsKKyAgICB2b2lkIGRpc3Bvc2VDb250ZXh0KCk7CiAKICAg
ICB2b2lkIHNldFNlY3VyaXR5VG9rZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJDb250ZXh0RGF0YS5oCmluZGV4IGEzM2NlY2VlMzVlNWQyMTBkMzlkZDhmZTViOGJk
YzQ1ODUyOTI5NDEuLjhmYWViNjI2ZTcwNTdmMDBhYTdhNmRkNTEwMTM0Y2YzM2E3MzEyMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8aW50LCBWOE5QT2JqZWN0VmVjdG9yPiBW
OE5QT2JqZWN0TWFwOwogZW51bSBWOENvbnRleHRFbWJlZGRlckRhdGFGaWVsZCB7CiAgICAgdjhD
b250ZXh0RGVidWdJZEluZGV4LAogICAgIHY4Q29udGV4dFBlckNvbnRleHREYXRhSW5kZXgsCi0g
ICAgdjhDb250ZXh0SXNvbGF0ZWRXaW5kb3dTaGVsbCwKKyAgICB2OENvbnRleHRJc29sYXRlZFdv
cmxkLAogICAgIC8vIFJhdGhlciB0aGFuIGFkZGluZyBtb3JlIGVtYmVkZGVyIGRhdGEgZmllbGRz
IHRvIHY4OjpDb250ZXh0LAogICAgIC8vIGNvbnNpZGVyIGFkZGluZyB0aGUgZGF0YSB0byBWOFBl
ckNvbnRleHREYXRhIGluc3RlYWQuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKaW5kZXggZTJmNjg3Yjg1NzFmY2FhYjM3MmJhM2Fk
MmMxM2UxNDczZGYwNDZhZS4uNjJiNGYxNWIwNzliMThiN2MyM2UwYjcxY2EwMjIzMGRlZjczYjk4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5k
bGUuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCi0jaW5jbHVk
ZSAiVjhET01XaW5kb3dTaGVsbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDcg
KzUxLDcgQEAgV29ybGRDb250ZXh0SGFuZGxlOjpXb3JsZENvbnRleHRIYW5kbGUoV29ybGRUb1Vz
ZSB3b3JsZFRvVXNlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKLSAg
ICAgICAgaWYgKFY4RE9NV2luZG93U2hlbGw6Omlzb2xhdGVkKGNvbnRleHQpKSB7CisgICAgICAg
IGlmIChET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkKGNvbnRleHQpKSB7CiAgICAgICAgICAgICBt
X2NvbnRleHQgPSBTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6Y3JlYXRlKGNvbnRleHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175552</attachid>
            <date>2012-11-21 17:21:48 -0800</date>
            <delta_ts>2012-11-21 23:05:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-96637-20121121171934.patch</filename>
            <type>text/plain</type>
            <size>15923</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQ1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTIxICBEYW4gQ2Fy
bmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRvd1No
ZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQgd2FzIHJlZmFjdG9yZWQgc28gdGhh
dCB0aGUgd2luZG93IHNoZWxsCisgICAgICAgIG5vIGxvbmdlciBoYXMgdG8gYmUga2VwdCBhbGl2
ZSBieSBhIHY4IGNvbnRleHQuIEluc3RlYWQsIG9ubHkKKyAgICAgICAgdGhlIERPTVdyYXBwZXJX
b3JsZCB3aWxsIGJlIGtlcHQgYWxpdmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OmN1cnJlbnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c29sYXRlZFdvcmxkV2Vha0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjptYWtlQ29udGV4dFdlYWspOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV3JhcHBlcldvcmxkOjpzZXRJc29sYXRlZFdvcmxkRmllbGQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAoRE9NV3JhcHBlcldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXhpc3RpbmdXaW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpjdXJyZW50V29ybGRDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9s
bGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRJZklzb2xhdGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93
U2hlbGw6OmRlc3Ryb3lJc29sYXRlZFNoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2lu
ZG93U2hlbGw6OmRpc3Bvc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93
U2hlbGw6OmluaXRpYWxpemVJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01X
aW5kb3dTaGVsbC5oOgorICAgICAgICAoVjhET01XaW5kb3dTaGVsbCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmxk
Q29udGV4dEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JsZENvbnRleHRIYW5kbGU6
OldvcmxkQ29udGV4dEhhbmRsZSk6CisKIDIwMTItMTEtMjEgIERpcmsgU2NodWx6ZSAgPGtyaXRA
d2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIGlu
ZGVwZW5kZW50IG9mIEZpbHRlck9wZXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAxMzU0NTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw5
ICs2MCw5IEBAIERPTURhdGFTdG9yZSogRE9NRGF0YVN0b3JlOjpjdXJyZW50KHY4OjoKICAgICAg
ICAgcmV0dXJuIGRhdGEtPmRvbURhdGFTdG9yZSgpOwogCiAgICAgaWYgKERPTVdyYXBwZXJXb3Js
ZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKSB7Ci0gICAgICAgIFY4RE9NV2luZG93U2hlbGwqIHNo
ZWxsID0gVjhET01XaW5kb3dTaGVsbDo6aXNvbGF0ZWQodjg6OkNvbnRleHQ6OkdldEVudGVyZWQo
KSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghIXNoZWxsKSkKLSAgICAgICAgICAgIHJldHVybiBz
aGVsbC0+d29ybGQoKS0+aXNvbGF0ZWRXb3JsZERPTURhdGFTdG9yZSgpOworICAgICAgICBET01X
cmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQgPSBET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkKHY4
OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpOworICAgICAgICBpZiAoVU5MSUtFTFkoISFpc29sYXRl
ZFdvcmxkKSkKKyAgICAgICAgICAgIHJldHVybiBpc29sYXRlZFdvcmxkLT5pc29sYXRlZFdvcmxk
RE9NRGF0YVN0b3JlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuICZtYWluV29ybGRET01EYXRhU3Rv
cmU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3Js
ZC5jcHAJKHJldmlzaW9uIDEzNTQ1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJXb3JsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDI3IEBAIERPTVdy
YXBwZXJXb3JsZCogbWFpblRocmVhZE5vcm1hbFdvcmxkKCkKICAgICByZXR1cm4gY2FjaGVkTm9y
bWFsV29ybGQuZ2V0KCk7CiB9CiAKK3N0YXRpYyB2b2lkIGlzb2xhdGVkV29ybGRXZWFrQ2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKK3sK
KyAgICBvYmplY3QuRGlzcG9zZSgpOworICAgIG9iamVjdC5DbGVhcigpOworICAgIHN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KHBhcmFtZXRlciktPmRlcmVmKCk7Cit9CisKK3ZvaWQgRE9N
V3JhcHBlcldvcmxkOjptYWtlQ29udGV4dFdlYWsodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29u
dGV4dCkKK3sKKyAgICBBU1NFUlQoaXNJc29sYXRlZFdvcmxkKCkpOworICAgIEFTU0VSVChpc29s
YXRlZChjb250ZXh0KSA9PSB0aGlzKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD46
Ok5ldyhjb250ZXh0KS5NYWtlV2Vhayh0aGlzLCBpc29sYXRlZFdvcmxkV2Vha0NhbGxiYWNrKTsK
KyAgICAvLyBNYXRjaGluZyBkZXJlZiBpcyBpbiB3ZWFrIGNhbGxiYWNrLgorICAgIHRoaXMtPnJl
ZigpOworfQorCit2b2lkIERPTVdyYXBwZXJXb3JsZDo6c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCit7CisgICAgY29udGV4dC0+U2V0QWxpZ25l
ZFBvaW50ZXJJbkVtYmVkZGVyRGF0YSh2OENvbnRleHRJc29sYXRlZFdvcmxkLCBpc01haW5Xb3Js
ZCgpID8gMCA6IHRoaXMpOworfQorCiB0eXBlZGVmIEhhc2hNYXA8aW50LCBET01XcmFwcGVyV29y
bGQqPiBXb3JsZE1hcDsKIHN0YXRpYyBXb3JsZE1hcCYgaXNvbGF0ZWRXb3JsZE1hcCgpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAkocmV2
aXNpb24gMTM1NDU1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldv
cmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAKICNkZWZpbmUgRE9NV3JhcHBl
cldvcmxkX2gKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVjhQZXJD
b250ZXh0RGF0YS5oIgorI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTUzLDYgKzU1LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc29sYXRlZFdvcmxk
c0V4aXN0KCkgeyByZXR1cm4gaXNvbGF0ZWRXb3JsZENvdW50OyB9CiAgICAgc3RhdGljIGJvb2wg
aXNJc29sYXRlZFdvcmxkSWQoaW50IHdvcmxkSWQpIHsgcmV0dXJuIHdvcmxkSWQgIT0gbWFpbldv
cmxkSWQgJiYgd29ybGRJZCAhPSB1bmluaXRpYWxpemVkV29ybGRJZDsgfQogICAgIHN0YXRpYyB2
b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gPiYgd29ybGRz
KTsKKworICAgIHZvaWQgbWFrZUNvbnRleHRXZWFrKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsK
KyAgICB2b2lkIHNldElzb2xhdGVkV29ybGRGaWVsZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7
CisgICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01XcmFw
cGVyV29ybGQqPihjb250ZXh0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21FbWJlZGRlckRhdGEodjhD
b250ZXh0SXNvbGF0ZWRXb3JsZCkpOworICAgIH0KKwogICAgIC8vIEFzc29jaWF0ZXMgYW4gaXNv
bGF0ZWQgd29ybGQgKHNlZSBhYm92ZSBmb3IgZGVzY3JpcHRpb24pIHdpdGggYSBzZWN1cml0eQog
ICAgIC8vIG9yaWdpbi4gWE1MSHR0cFJlcXVlc3QgaW5zdGFuY2VzIHVzZWQgaW4gdGhhdCB3b3Js
ZCB3aWxsIGJlIGNvbnNpZGVyZWQKICAgICAvLyB0byBjb21lIGZyb20gdGhhdCBvcmlnaW4sIG5v
dCB0aGUgZnJhbWUncy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMzU0NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDcg
KzM0Nyw3IEBAIFY4RE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmV4aXMKICAgICBJ
c29sYXRlZFdvcmxkTWFwOjppdGVyYXRvciBpdGVyID0gbV9pc29sYXRlZFdvcmxkcy5maW5kKHdv
cmxkLT53b3JsZElkKCkpOwogICAgIGlmIChpdGVyID09IG1faXNvbGF0ZWRXb3JsZHMuZW5kKCkp
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBpdGVyLT52YWx1ZS0+aXNDb250ZXh0SW5p
dGlhbGl6ZWQoKSA/IGl0ZXItPnZhbHVlIDogMDsKKyAgICByZXR1cm4gaXRlci0+dmFsdWUtPmlz
Q29udGV4dEluaXRpYWxpemVkKCkgPyBpdGVyLT52YWx1ZS5nZXQoKSA6IDA7CiB9CiAKIFY4RE9N
V2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCkBAIC0zNjAsMTEgKzM2MCwxMSBAQCBWOERPTVdpbmRvd1NoZWxsKiBTY3JpcHRD
b250cm9sbGVyOjp3aW5kCiAgICAgZWxzZSB7CiAgICAgICAgIElzb2xhdGVkV29ybGRNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBtX2lzb2xhdGVkV29ybGRzLmZpbmQod29ybGQtPndvcmxkSWQoKSk7CiAg
ICAgICAgIGlmIChpdGVyICE9IG1faXNvbGF0ZWRXb3JsZHMuZW5kKCkpCi0gICAgICAgICAgICBz
aGVsbCA9IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgc2hlbGwgPSBpdGVyLT52YWx1ZS5nZXQo
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBPd25QdHI8VjhET01XaW5kb3dTaGVsbD4g
aXNvbGF0ZWRXb3JsZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Y3JlYXRlKG1fZnJhbWUsIHdv
cmxkKTsKICAgICAgICAgICAgIHNoZWxsID0gaXNvbGF0ZWRXb3JsZFNoZWxsLmdldCgpOwotICAg
ICAgICAgICAgbV9pc29sYXRlZFdvcmxkcy5zZXQod29ybGQtPndvcmxkSWQoKSwgaXNvbGF0ZWRX
b3JsZFNoZWxsLmxlYWtQdHIoKSk7CisgICAgICAgICAgICBtX2lzb2xhdGVkV29ybGRzLnNldCh3
b3JsZC0+d29ybGRJZCgpLCBpc29sYXRlZFdvcmxkU2hlbGwucmVsZWFzZSgpKTsKICAgICAgICAg
fQogICAgIH0KICAgICBpZiAoIXNoZWxsLT5pc0NvbnRleHRJbml0aWFsaXplZCgpICYmIHNoZWxs
LT5pbml0aWFsaXplSWZOZWVkZWQoKSkgewpAQCAtNDA3LDkgKzQwNyw4IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6ZXZhbHVhdGVJbklzb2xhdGUKIAogICAgICAgICAvLyBNYXJrIHRlbXBvcmFy
eSBzaGVsbCBmb3Igd2VhayBkZXN0cnVjdGlvbi4KICAgICAgICAgaWYgKHdvcmxkSUQgPT0gRE9N
V3JhcHBlcldvcmxkOjp1bmluaXRpYWxpemVkV29ybGRJZCkgewotICAgICAgICAgICAgaW50IGFj
dHVhbFdvcmxkSWQgPSBpc29sYXRlZFdvcmxkU2hlbGwtPndvcmxkKCktPndvcmxkSWQoKTsKLSAg
ICAgICAgICAgIG1faXNvbGF0ZWRXb3JsZHMucmVtb3ZlKGFjdHVhbFdvcmxkSWQpOwogICAgICAg
ICAgICAgaXNvbGF0ZWRXb3JsZFNoZWxsLT5kZXN0cm95SXNvbGF0ZWRTaGVsbCgpOworICAgICAg
ICAgICAgbV9pc29sYXRlZFdvcmxkcy5yZW1vdmUod29ybGQtPndvcmxkSWQoKSk7CiAgICAgICAg
IH0KIAogICAgICAgICB2OFJlc3VsdHMgPSBldmFsdWF0ZUhhbmRsZVNjb3BlLkNsb3NlKHJlc3Vs
dEFycmF5KTsKQEAgLTQ0NCw3ICs0NDMsNyBAQCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFNjcmlw
dENvbnRyb2xsZXI6CiB7CiAgICAgaWYgKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkgewogICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEVu
dGVyZWQoKTsKLSAgICAgICAgaWYgKFY4RE9NV2luZG93U2hlbGw6Omlzb2xhdGVkKGNvbnRleHQp
KSB7CisgICAgICAgIGlmIChET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkKGNvbnRleHQpKSB7CiAg
ICAgICAgICAgICBpZiAobV9mcmFtZSA9PSB0b0ZyYW1lSWZOb3REZXRhY2hlZChjb250ZXh0KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRl
eHQpOwogICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKQEAgLTY3
Myw3ICs2NzIsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvCiB7
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIGZvciAoSXNvbGF0ZWRXb3Js
ZE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lzb2xhdGVkV29ybGRzLmJlZ2luKCk7IGl0ICE9IG1faXNv
bGF0ZWRXb3JsZHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgVjhET01XaW5kb3dTaGVsbCogaXNv
bGF0ZWRXb3JsZFNoZWxsID0gaXQtPnZhbHVlOworICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBp
c29sYXRlZFdvcmxkU2hlbGwgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgICAgIFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4gPSBpc29sYXRlZFdvcmxkU2hlbGwtPndvcmxkKCktPmlzb2xhdGVkV29ybGRT
ZWN1cml0eU9yaWdpbigpOwogICAgICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgICAgIGNvbnRp
bnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMTM1NDU1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTAgKzE5Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgaW50IGNvbnRleHREZWJ1Z0lkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
KTsKIAogcHJpdmF0ZToKLSAgICAvLyBOb3RlOiBhbHRob3VnaCB0aGUgcG9pbnRlciBpcyByYXcs
IHRoZSBpbnN0YW5jZSBpcyBrZXB0IGFsaXZlIGJ5IGEgc3Ryb25nCi0gICAgLy8gcmVmZXJlbmNl
IHRvIHRoZSB2OCBjb250ZXh0IGl0IGNvbnRhaW5zLCB3aGljaCBpcyBub3QgbWFkZSB3ZWFrIHVu
dGlsIHdlCi0gICAgLy8gY2FsbCB3b3JsZC0+ZGVzdHJveUlzb2xhdGVkU2hlbGwoKS4KLSAgICB0
eXBlZGVmIEhhc2hNYXA8aW50LCBWOERPTVdpbmRvd1NoZWxsKj4gSXNvbGF0ZWRXb3JsZE1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8VjhET01XaW5kb3dTaGVsbD4gPiBJc29s
YXRlZFdvcmxkTWFwOwogCiAgICAgdm9pZCByZXNldCgpOwogCkBAIC0yMDQsMTAgKzIwMSw2IEBA
IHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAogICAgIE93blB0cjxW
OERPTVdpbmRvd1NoZWxsPiBtX3dpbmRvd1NoZWxsOwotCi0gICAgLy8gVGhlIGlzb2xhdGVkIHdv
cmxkcyB3ZSBhcmUgdHJhY2tpbmcgZm9yIHRoaXMgZnJhbWUuIFdlIGhvbGQgdGhlbSBhbGl2ZQot
ICAgIC8vIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkIGFnYWluIGJ5IGZ1dHVyZSBjYWxs
cyB0bwotICAgIC8vIGV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKCkuCiAgICAgSXNvbGF0ZWRXb3Js
ZE1hcCBtX2lzb2xhdGVkV29ybGRzOwogCiAgICAgYm9vbCBtX3BhdXNlZDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCShyZXZpc2lvbiAxMzU0NTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTAgKzMyLDEwIEBACiAjZGVmaW5lIFY4QmluZGluZ19oCiAKICNpbmNsdWRlICJCaW5kaW5nU2Vj
dXJpdHkuaCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4RE9NQ29uZmln
dXJhdGlvbi5oIgotI2luY2x1ZGUgIlY4RE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJWOERP
TVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUg
IlY4T2JqZWN0Q29uc3RydWN0b3IuaCIKQEAgLTM4MywxMCArMzgzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHsKICAgICAgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBW
OERPTVdpbmRvd1NoZWxsOjppc29sYXRlZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKLSAg
ICAgICAgaWYgKCFzaGVsbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4g
c2hlbGwtPndvcmxkKCk7CisgICAgICAgIHJldHVybiBET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVk
KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpOwogICAgIH0KIAogICAgIC8vIElmIHRoZSBjdXJy
ZW50IGNvbnRleHQgY2F1c2VzIG91dCBvZiBtZW1vcnksIEphdmFTY3JpcHQgc2V0dGluZwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJ
KHJldmlzaW9uIDEzNTQ1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNpZm5kZWYgTkRFQlVHCi12b2lkIFY4RE9NV2luZG93U2hlbGw6OmFz
c2VydENvbnRleHRIYXNDb3JyZWN0UHJvdG90eXBlKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIEFTU0VSVChWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh0b0lubmVy
R2xvYmFsT2JqZWN0KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpLCAmVjhET01XaW5kb3c6Omlu
Zm8pKTsKLX0KLSNlbmRpZgotCiBzdGF0aWMgdm9pZCBjaGVja0RvY3VtZW50V3JhcHBlcih2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoVjhEb2N1bWVudDo6dG9OYXRpdmUod3JhcHBlcikgPT0gZG9jdW1lbnQpOwpAQCAtMTAy
LDE4ICs5NCwxMSBAQCBWOERPTVdpbmRvd1NoZWxsOjpWOERPTVdpbmRvd1NoZWxsKEZyYW1lCiAK
IHZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGVzdHJveUlzb2xhdGVkU2hlbGwoKQogewotICAgIGRp
c3Bvc2VDb250ZXh0KHRydWUpOwotfQotCi1zdGF0aWMgdm9pZCBpc29sYXRlZENvbnRleHRXZWFr
Q2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRl
cikKLXsKLSAgICAvLyBIYW5kbGUgd2lsbCBiZSBkaXNwb3NlZCBpbiBkZWxldGUuCi0gICAgZGVs
ZXRlIHN0YXRpY19jYXN0PFY4RE9NV2luZG93U2hlbGwqPihwYXJhbWV0ZXIpOworICAgIGRpc3Bv
c2VDb250ZXh0KCk7CiB9CiAKLXZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQo
Ym9vbCB3ZWFrKQordm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dCgpCiB7Ci0g
ICAgQVNTRVJUKCFtX2NvbnRleHQuZ2V0KCkuSXNXZWFrKCkpOwogICAgIG1fcGVyQ29udGV4dERh
dGEuY2xlYXIoKTsKIAogICAgIGlmIChtX2NvbnRleHQuaXNFbXB0eSgpKQpAQCAtMTIxLDIyICsx
MDYsMTggQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dChibwogCiAgICAg
bV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT53aWxsUmVsZWFzZVNjcmlwdENvbnRleHQobV9j
b250ZXh0LmdldCgpLCBtX3dvcmxkLT53b3JsZElkKCkpOwogCi0gICAgaWYgKCF3ZWFrKQotICAg
ICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCFtX3dv
cmxkLT5pc01haW5Xb3JsZCgpKTsKKyAgICBpZiAobV93b3JsZC0+aXNJc29sYXRlZFdvcmxkKCkp
IHsKICAgICAgICAgZGVzdHJveUdsb2JhbCgpOwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICAg
ICAgbV9jb250ZXh0LmdldCgpLk1ha2VXZWFrKHRoaXMsIGlzb2xhdGVkQ29udGV4dFdlYWtDYWxs
YmFjayk7CisgICAgICAgIG1fd29ybGQtPm1ha2VDb250ZXh0V2VhayhtX2NvbnRleHQuZ2V0KCkp
OwogICAgIH0KIAorICAgIG1fY29udGV4dC5jbGVhcigpOworCiAgICAgLy8gSXQncyBsaWtlbHkg
dGhhdCBkaXNwb3NpbmcgdGhlIGNvbnRleHQgaGFzIGNyZWF0ZWQgYSBsb3Qgb2YKICAgICAvLyBn
YXJiYWdlLiBOb3RpZnkgVjggYWJvdXQgdGhpcyBzbyBpdCdsbCBoYXZlIGEgY2hhbmNlIG9mIGNs
ZWFuaW5nCiAgICAgLy8gaXQgdXAgd2hlbiBpZGxlLgotICAgIGlmIChtX3dvcmxkLT5pc01haW5X
b3JsZCgpKSB7Ci0gICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSBtX2ZyYW1lLT5wYWdlKCkgJiYg
KG1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkgPT0gbV9mcmFtZSk7Ci0gICAgICAgIFY4R0NG
b3JDb250ZXh0RGlzcG9zZTo6aW5zdGFuY2UoKS5ub3RpZnlDb250ZXh0RGlzcG9zZWQoaXNNYWlu
RnJhbWUpOwotICAgIH0KKyAgICBib29sIGlzTWFpbkZyYW1lID0gbV9mcmFtZS0+cGFnZSgpICYm
IChtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpID09IG1fZnJhbWUpOworICAgIFY4R0NGb3JD
b250ZXh0RGlzcG9zZTo6aW5zdGFuY2UoKS5ub3RpZnlDb250ZXh0RGlzcG9zZWQoaXNNYWluRnJh
bWUpOwogfQogCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRlc3Ryb3lHbG9iYWwoKQpAQCAtMjMw
LDYgKzIxMSw4IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGUKICAg
ICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+
OjpOZXcobV9jb250ZXh0LmdldCgpKTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNj
b3BlKGNvbnRleHQpOwogCisgICAgbV93b3JsZC0+c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKG1fY29u
dGV4dC5nZXQoKSk7CisKICAgICBpZiAobV9nbG9iYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1f
Z2xvYmFsLnNldChjb250ZXh0LT5HbG9iYWwoKSk7CiAgICAgICAgIGlmIChtX2dsb2JhbC5pc0Vt
cHR5KCkpIHsKQEAgLTIzOCwxMyArMjIxLDEwIEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5p
dGlhbGl6ZUlmTmVlZGUKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChpc01haW5Xb3JsZCkK
LSAgICAgICAgY29udGV4dC0+U2V0QWxpZ25lZFBvaW50ZXJJbkVtYmVkZGVyRGF0YSh2OENvbnRl
eHRJc29sYXRlZFdpbmRvd1NoZWxsLCAwKTsKLSAgICBlbHNlIHsKKyAgICBpZiAoIWlzTWFpbldv
cmxkKSB7CiAgICAgICAgIFY4RE9NV2luZG93U2hlbGwqIG1haW5XaW5kb3cgPSBtX2ZyYW1lLT5z
Y3JpcHQoKS0+ZXhpc3RpbmdXaW5kb3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiAg
ICAgICAgIGlmIChtYWluV2luZG93ICYmICFtYWluV2luZG93LT5jb250ZXh0KCkuSXNFbXB0eSgp
KQogICAgICAgICAgICAgc2V0SW5qZWN0ZWRTY3JpcHRDb250ZXh0RGVidWdJZChtX2NvbnRleHQu
Z2V0KCksIG1fZnJhbWUtPnNjcmlwdCgpLT5jb250ZXh0RGVidWdJZChtYWluV2luZG93LT5jb250
ZXh0KCkpKTsKLSAgICAgICAgY29udGV4dC0+U2V0QWxpZ25lZFBvaW50ZXJJbkVtYmVkZGVyRGF0
YSh2OENvbnRleHRJc29sYXRlZFdpbmRvd1NoZWxsLCB0aGlzKTsKICAgICB9CiAKICAgICBtX3Bl
ckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5o
CShyZXZpc2lvbiAxMzU0NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDE4ICs4MCw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZGVzdHJveUdsb2JhbCgpOwogCi0jaWZuZGVmIE5ERUJVRwotICAgIHN0YXRpYyB2
b2lkIGFzc2VydENvbnRleHRIYXNDb3JyZWN0UHJvdG90eXBlKCk7Ci0jZW5kaWYKLQotICAgIHN0
YXRpYyBWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBj
b250ZXh0KQotICAgIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGFzc2VydENvbnRleHRIYXND
b3JyZWN0UHJvdG90eXBlKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4
RE9NV2luZG93U2hlbGwqPihjb250ZXh0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21FbWJlZGRlckRh
dGEodjhDb250ZXh0SXNvbGF0ZWRXaW5kb3dTaGVsbCkpOwotICAgIH0KLQogICAgIFY4UGVyQ29u
dGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQo
KTsgfQogICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgp
OyB9CiAKQEAgLTEwMCw3ICs4OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVjhET01XaW5k
b3dTaGVsbChGcmFtZSosIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPik7CiAKLSAgICB2b2lk
IGRpc3Bvc2VDb250ZXh0KGJvb2wgd2VhayA9IGZhbHNlKTsKKyAgICB2b2lkIGRpc3Bvc2VDb250
ZXh0KCk7CiAKICAgICB2b2lkIHNldFNlY3VyaXR5VG9rZW4oKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaAkocmV2aXNpb24gMTM1NDU1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFwPGludCwgVjhO
UE9iamVjdFZlY3QKIGVudW0gVjhDb250ZXh0RW1iZWRkZXJEYXRhRmllbGQgewogICAgIHY4Q29u
dGV4dERlYnVnSWRJbmRleCwKICAgICB2OENvbnRleHRQZXJDb250ZXh0RGF0YUluZGV4LAotICAg
IHY4Q29udGV4dElzb2xhdGVkV2luZG93U2hlbGwsCisgICAgdjhDb250ZXh0SXNvbGF0ZWRXb3Js
ZCwKICAgICAvLyBSYXRoZXIgdGhhbiBhZGRpbmcgbW9yZSBlbWJlZGRlciBkYXRhIGZpZWxkcyB0
byB2ODo6Q29udGV4dCwKICAgICAvLyBjb25zaWRlciBhZGRpbmcgdGhlIGRhdGEgdG8gVjhQZXJD
b250ZXh0RGF0YSBpbnN0ZWFkLgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcAkocmV2aXNpb24gMTM1NDU1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgotI2luY2x1ZGUg
IlY4RE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJWOERlZGljYXRlZFdvcmtlckNvbnRleHQu
aCIKICNpbmNsdWRlICJWOFNoYXJlZFdvcmtlckNvbnRleHQuaCIKIApAQCAtNjQsNyArNjMsNyBA
QCBXb3JsZENvbnRleHRIYW5kbGU6OldvcmxkQ29udGV4dEhhbmRsZShXCiAgICAgfQogI2VuZGlm
CiAKLSAgICBpZiAoVjhET01XaW5kb3dTaGVsbDo6aXNvbGF0ZWQoY29udGV4dCkpIHsKKyAgICBp
ZiAoRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZChjb250ZXh0KSkgewogICAgICAgICBtX2NvbnRl
eHQgPSBTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6Y3JlYXRlKGNvbnRleHQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175757</attachid>
            <date>2012-11-23 02:17:07 -0800</date>
            <delta_ts>2012-11-23 05:45:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96637-20121123111450.patch</filename>
            <type>text/plain</type>
            <size>17929</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE1N2Y4ZjI0YWUwZjJi
MDE1YzhkZTAyMzRkYmQ2ODlkYThkMDU5OC4uZmQ0NTQ1NDEyMTdlMDg4MTI5MmQ3ZDBmNTUxMzJj
YmMwZTkzN2NjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTIzICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjYzNworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCB3YXMgcmVmYWN0b3JlZCBzbyB0aGF0
IHRoZSB3aW5kb3cgc2hlbGwKKyAgICAgICAgbm8gbG9uZ2VyIGhhcyB0byBiZSBrZXB0IGFsaXZl
IGJ5IGEgdjggY29udGV4dC4gSW5zdGVhZCwgb25seQorICAgICAgICB0aGUgRE9NV3JhcHBlcldv
cmxkIHdpbGwgYmUga2VwdCBhbGl2ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5n
ZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6Y3VycmVudCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
b2xhdGVkV29ybGRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6Om1ha2VDb250ZXh0V2Vhayk6CisgICAgICAgIChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ6OnNldElzb2xhdGVkV29ybGRGaWVsZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChET01XcmFwcGVyV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjppc29sYXRlZCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpleGlzdGluZ1dpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmN1cnJlbnRXb3JsZENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFNjcmlwdENvbnRyb2xs
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6d29ybGRGb3JFbnRlcmVkQ29udGV4dElmSXNvbGF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6ZGVzdHJveUlzb2xhdGVkU2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5k
b3dTaGVsbDo6ZGlzcG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6aW5pdGlhbGl6ZUlmTmVlZGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmg6CisgICAgICAgIChWOERPTVdpbmRvd1NoZWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOFBlckNvbnRleHREYXRhLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ybGRD
b250ZXh0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmxkQ29udGV4dEhhbmRsZTo6
V29ybGRDb250ZXh0SGFuZGxlKToKKwogMjAxMi0xMS0yMyAgS3J6eXN6dG9mIEN6ZWNoICA8ay5j
emVjaEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBQbGF0Zm9ybSBzdXBwb3J0IGZvciBB
Y2Nlc3NpYmlsaXR5IGZlYXR1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmNwcAppbmRleCA1ODg5N2M3NzNjZWEwN2M0ZDlhYjk5ZDM3Yjg3Y2ViMjJiMzYxODBl
Li45MWZiOWRjZTYxNTZkM2ZiYzQyMmU1NTJhOTA3ZDk1MTNjZTJiZWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgRE9N
RGF0YVN0b3JlKiBET01EYXRhU3RvcmU6OmN1cnJlbnQodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAg
ICAgICAgIHJldHVybiBkYXRhLT5kb21EYXRhU3RvcmUoKTsKIAogICAgIGlmIChET01XcmFwcGVy
V29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkgewotICAgICAgICBWOERPTVdpbmRvd1NoZWxs
KiBzaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6Omlzb2xhdGVkKHY4OjpDb250ZXh0OjpHZXRFbnRl
cmVkKCkpOwotICAgICAgICBpZiAoVU5MSUtFTFkoISFzaGVsbCkpCi0gICAgICAgICAgICByZXR1
cm4gc2hlbGwtPndvcmxkKCktPmlzb2xhdGVkV29ybGRET01EYXRhU3RvcmUoKTsKKyAgICAgICAg
RE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjppc29sYXRl
ZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCEhaXNv
bGF0ZWRXb3JsZCkpCisgICAgICAgICAgICByZXR1cm4gaXNvbGF0ZWRXb3JsZC0+aXNvbGF0ZWRX
b3JsZERPTURhdGFTdG9yZSgpOwogICAgIH0KIAogICAgIHJldHVybiAmbWFpbldvcmxkRE9NRGF0
YVN0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBl
cldvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5j
cHAKaW5kZXggNzhkZmUwZGU2YmMyNmQ5ZmU3ZjFkYzU4NWM3ODg2NTE3NGE1NWU5Zi4uMGU5NDMz
Yjk1NTVjNjhiMWZjZGQ3YTI3YTU5M2EwMjBjZThkMDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC0zMiw2ICszMiw5IEBACiAjaW5j
bHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAKICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgorI2luY2x1ZGUg
IlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC02NCw2ICs2NywzNSBAQCBET01XcmFwcGVyV29ybGQq
IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpCiAgICAgcmV0dXJuIGNhY2hlZE5vcm1hbFdvcmxkLmdl
dCgpOwogfQogCisjaWZuZGVmIE5ERUJVRwordm9pZCBET01XcmFwcGVyV29ybGQ6OmFzc2VydENv
bnRleHRIYXNDb3JyZWN0UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoVjhET01XcmFwcGVy
Ojppc1dyYXBwZXJPZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2lu
ZG93OjppbmZvKSk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgaXNvbGF0ZWRXb3JsZFdlYWtD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVy
KQoreworICAgIG9iamVjdC5EaXNwb3NlKCk7CisgICAgb2JqZWN0LkNsZWFyKCk7CisgICAgc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4ocGFyYW1ldGVyKS0+ZGVyZWYoKTsKK30KKwordm9p
ZCBET01XcmFwcGVyV29ybGQ6Om1ha2VDb250ZXh0V2Vhayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjb250ZXh0KQoreworICAgIEFTU0VSVChpc0lzb2xhdGVkV29ybGQoKSk7CisgICAgQVNTRVJU
KGlzb2xhdGVkKGNvbnRleHQpID09IHRoaXMpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250
ZXh0Pjo6TmV3KGNvbnRleHQpLk1ha2VXZWFrKHRoaXMsIGlzb2xhdGVkV29ybGRXZWFrQ2FsbGJh
Y2spOworICAgIC8vIE1hdGNoaW5nIGRlcmVmIGlzIGluIHdlYWsgY2FsbGJhY2suCisgICAgdGhp
cy0+cmVmKCk7Cit9CisKK3ZvaWQgRE9NV3JhcHBlcldvcmxkOjpzZXRJc29sYXRlZFdvcmxkRmll
bGQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKK3sKKyAgICBjb250ZXh0LT5TZXRB
bGlnbmVkUG9pbnRlckluRW1iZWRkZXJEYXRhKHY4Q29udGV4dElzb2xhdGVkV29ybGQsIGlzTWFp
bldvcmxkKCkgPyAwIDogdGhpcyk7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDxpbnQsIERPTVdyYXBw
ZXJXb3JsZCo+IFdvcmxkTWFwOwogc3RhdGljIFdvcmxkTWFwJiBpc29sYXRlZFdvcmxkTWFwKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3Js
ZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXgg
YjQ3ODg4YmFjYTNhYWE2MDQwNjJjNWViZmRhNGQ1ZWQzNGJjODUyOC4uMGVkODI2YzE5MWFlZmQz
M2NkNjIyN2Y1NWFiZDk2ODA4ZTJkOGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTMyLDYgKzMyLDggQEAKICNkZWZpbmUgRE9NV3JhcHBl
cldvcmxkX2gKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVjhQZXJD
b250ZXh0RGF0YS5oIgorI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTU1LDYgKzU3LDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc29sYXRlZFdvcmxk
c0V4aXN0KCkgeyByZXR1cm4gaXNvbGF0ZWRXb3JsZENvdW50OyB9CiAgICAgc3RhdGljIGJvb2wg
aXNJc29sYXRlZFdvcmxkSWQoaW50IHdvcmxkSWQpIHsgcmV0dXJuIHdvcmxkSWQgIT0gbWFpbldv
cmxkSWQgJiYgd29ybGRJZCAhPSB1bmluaXRpYWxpemVkV29ybGRJZDsgfQogICAgIHN0YXRpYyB2
b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gPiYgd29ybGRz
KTsKKworICAgIHZvaWQgbWFrZUNvbnRleHRXZWFrKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsK
KyAgICB2b2lkIHNldElzb2xhdGVkV29ybGRGaWVsZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7
CisjaWZuZGVmIE5ERUJVRworICAgIHN0YXRpYyB2b2lkIGFzc2VydENvbnRleHRIYXNDb3JyZWN0
UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKKyNlbmRpZgorICAgIHN0YXRpYyBE
T01XcmFwcGVyV29ybGQqIGlzb2xhdGVkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQp
CisgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgYXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQ
cm90b3R5cGUoY29udGV4dCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0
YSh2OENvbnRleHRJc29sYXRlZFdvcmxkKSk7CisgICAgfQorCiAgICAgLy8gQXNzb2NpYXRlcyBh
biBpc29sYXRlZCB3b3JsZCAoc2VlIGFib3ZlIGZvciBkZXNjcmlwdGlvbikgd2l0aCBhIHNlY3Vy
aXR5CiAgICAgLy8gb3JpZ2luLiBYTUxIdHRwUmVxdWVzdCBpbnN0YW5jZXMgdXNlZCBpbiB0aGF0
IHdvcmxkIHdpbGwgYmUgY29uc2lkZXJlZAogICAgIC8vIHRvIGNvbWUgZnJvbSB0aGF0IG9yaWdp
biwgbm90IHRoZSBmcmFtZSdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCA0OGQ1YmNkZmNhYjQxZTkzY2Q1YTY0Njg2OTg1OWNhNzc5
YmEyOTVkLi5mMGFhZTFmYTA1YzI1ZDAzMzY1ZGUzYWMwNDE1ZTRmNmFhN2U5ZGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzQ3
LDcgKzM0Nyw3IEBAIFY4RE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmV4aXN0aW5n
V2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKICAgICBJc29sYXRlZFdvcmxkTWFw
OjppdGVyYXRvciBpdGVyID0gbV9pc29sYXRlZFdvcmxkcy5maW5kKHdvcmxkLT53b3JsZElkKCkp
OwogICAgIGlmIChpdGVyID09IG1faXNvbGF0ZWRXb3JsZHMuZW5kKCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBpdGVyLT52YWx1ZS0+aXNDb250ZXh0SW5pdGlhbGl6ZWQoKSA/IGl0
ZXItPnZhbHVlIDogMDsKKyAgICByZXR1cm4gaXRlci0+dmFsdWUtPmlzQ29udGV4dEluaXRpYWxp
emVkKCkgPyBpdGVyLT52YWx1ZS5nZXQoKSA6IDA7CiB9CiAKIFY4RE9NV2luZG93U2hlbGwqIFNj
cmlwdENvbnRyb2xsZXI6OndpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCkBAIC0z
NjAsMTEgKzM2MCwxMSBAQCBWOERPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjp3aW5k
b3dTaGVsbChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogICAgIGVsc2UgewogICAgICAgICBJc29s
YXRlZFdvcmxkTWFwOjppdGVyYXRvciBpdGVyID0gbV9pc29sYXRlZFdvcmxkcy5maW5kKHdvcmxk
LT53b3JsZElkKCkpOwogICAgICAgICBpZiAoaXRlciAhPSBtX2lzb2xhdGVkV29ybGRzLmVuZCgp
KQotICAgICAgICAgICAgc2hlbGwgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIHNoZWxsID0g
aXRlci0+dmFsdWUuZ2V0KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgT3duUHRyPFY4
RE9NV2luZG93U2hlbGw+IGlzb2xhdGVkV29ybGRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6OmNy
ZWF0ZShtX2ZyYW1lLCB3b3JsZCk7CiAgICAgICAgICAgICBzaGVsbCA9IGlzb2xhdGVkV29ybGRT
aGVsbC5nZXQoKTsKLSAgICAgICAgICAgIG1faXNvbGF0ZWRXb3JsZHMuc2V0KHdvcmxkLT53b3Js
ZElkKCksIGlzb2xhdGVkV29ybGRTaGVsbC5sZWFrUHRyKCkpOworICAgICAgICAgICAgbV9pc29s
YXRlZFdvcmxkcy5zZXQod29ybGQtPndvcmxkSWQoKSwgaXNvbGF0ZWRXb3JsZFNoZWxsLnJlbGVh
c2UoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFzaGVsbC0+aXNDb250ZXh0SW5pdGlh
bGl6ZWQoKSAmJiBzaGVsbC0+aW5pdGlhbGl6ZUlmTmVlZGVkKCkpIHsKQEAgLTQwNyw5ICs0MDcs
OCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKGludCB3
b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0UwogCiAgICAgICAgIC8vIE1hcmsgdGVtcG9yYXJ5
IHNoZWxsIGZvciB3ZWFrIGRlc3RydWN0aW9uLgogICAgICAgICBpZiAod29ybGRJRCA9PSBET01X
cmFwcGVyV29ybGQ6OnVuaW5pdGlhbGl6ZWRXb3JsZElkKSB7Ci0gICAgICAgICAgICBpbnQgYWN0
dWFsV29ybGRJZCA9IGlzb2xhdGVkV29ybGRTaGVsbC0+d29ybGQoKS0+d29ybGRJZCgpOwotICAg
ICAgICAgICAgbV9pc29sYXRlZFdvcmxkcy5yZW1vdmUoYWN0dWFsV29ybGRJZCk7CiAgICAgICAg
ICAgICBpc29sYXRlZFdvcmxkU2hlbGwtPmRlc3Ryb3lJc29sYXRlZFNoZWxsKCk7CisgICAgICAg
ICAgICBtX2lzb2xhdGVkV29ybGRzLnJlbW92ZSh3b3JsZC0+d29ybGRJZCgpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHY4UmVzdWx0cyA9IGV2YWx1YXRlSGFuZGxlU2NvcGUuQ2xvc2UocmVzdWx0
QXJyYXkpOwpAQCAtNDQ0LDcgKzQ0Myw3IEBAIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gU2NyaXB0
Q29udHJvbGxlcjo6Y3VycmVudFdvcmxkQ29udGV4dCgpCiB7CiAgICAgaWYgKHY4OjpDb250ZXh0
OjpJbkNvbnRleHQoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gdjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKTsKLSAgICAgICAgaWYgKFY4RE9NV2luZG93U2hl
bGw6Omlzb2xhdGVkKGNvbnRleHQpKSB7CisgICAgICAgIGlmIChET01XcmFwcGVyV29ybGQ6Omlz
b2xhdGVkKGNvbnRleHQpKSB7CiAgICAgICAgICAgICBpZiAobV9mcmFtZSA9PSB0b0ZyYW1lSWZO
b3REZXRhY2hlZChjb250ZXh0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQpOwogICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4oKTsKQEAgLTY3Myw3ICs2NzIsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6
OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8U2NyaXB0U3RhdGUqLCBT
ZQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICBmb3IgKElzb2xhdGVk
V29ybGRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pc29sYXRlZFdvcmxkcy5iZWdpbigpOyBpdCAhPSBt
X2lzb2xhdGVkV29ybGRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIFY4RE9NV2luZG93U2hlbGwq
IGlzb2xhdGVkV29ybGRTaGVsbCA9IGl0LT52YWx1ZTsKKyAgICAgICAgVjhET01XaW5kb3dTaGVs
bCogaXNvbGF0ZWRXb3JsZFNoZWxsID0gaXQtPnZhbHVlLmdldCgpOwogICAgICAgICBTZWN1cml0
eU9yaWdpbiogb3JpZ2luID0gaXNvbGF0ZWRXb3JsZFNoZWxsLT53b3JsZCgpLT5pc29sYXRlZFdv
cmxkU2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgICAgICBj
b250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
aAppbmRleCBiNzA4ZWUyMjhmM2ViODFlYWFhYjg4NGMyZTJhOTI3Yzg1MWU3ODAwLi42NmE1NzM0
MzQxMWVjOTk4YmNmYjkzZDNiODg1MGU1YTk5NGJhM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xOTMsMTAgKzE5Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgaW50IGNvbnRleHREZWJ1Z0lkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
KTsKIAogcHJpdmF0ZToKLSAgICAvLyBOb3RlOiBhbHRob3VnaCB0aGUgcG9pbnRlciBpcyByYXcs
IHRoZSBpbnN0YW5jZSBpcyBrZXB0IGFsaXZlIGJ5IGEgc3Ryb25nCi0gICAgLy8gcmVmZXJlbmNl
IHRvIHRoZSB2OCBjb250ZXh0IGl0IGNvbnRhaW5zLCB3aGljaCBpcyBub3QgbWFkZSB3ZWFrIHVu
dGlsIHdlCi0gICAgLy8gY2FsbCB3b3JsZC0+ZGVzdHJveUlzb2xhdGVkU2hlbGwoKS4KLSAgICB0
eXBlZGVmIEhhc2hNYXA8aW50LCBWOERPTVdpbmRvd1NoZWxsKj4gSXNvbGF0ZWRXb3JsZE1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8VjhET01XaW5kb3dTaGVsbD4gPiBJc29s
YXRlZFdvcmxkTWFwOwogCiAgICAgdm9pZCByZXNldCgpOwogCkBAIC0yMDQsMTAgKzIwMSw2IEBA
IHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAogICAgIE93blB0cjxW
OERPTVdpbmRvd1NoZWxsPiBtX3dpbmRvd1NoZWxsOwotCi0gICAgLy8gVGhlIGlzb2xhdGVkIHdv
cmxkcyB3ZSBhcmUgdHJhY2tpbmcgZm9yIHRoaXMgZnJhbWUuIFdlIGhvbGQgdGhlbSBhbGl2ZQot
ICAgIC8vIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkIGFnYWluIGJ5IGZ1dHVyZSBjYWxs
cyB0bwotICAgIC8vIGV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKCkuCiAgICAgSXNvbGF0ZWRXb3Js
ZE1hcCBtX2lzb2xhdGVkV29ybGRzOwogCiAgICAgYm9vbCBtX3BhdXNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggZmJiYjQ5MTMwNzQzMmFhYjhkNmNmOTYxYmNl
N2JiODk4MDk5MTFlYi4uZWFiYTVkMDc0YTA3NmVmZjdjNTQ5NjI1MTA3N2E0ZjI1Y2QwNWZhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTMyLDEwICszMiwxMCBA
QAogI2RlZmluZSBWOEJpbmRpbmdfaAogCiAjaW5jbHVkZSAiQmluZGluZ1NlY3VyaXR5LmgiCisj
aW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNsdWRlICJWOERPTUNvbmZpZ3VyYXRpb24uaCIK
LSNpbmNsdWRlICJWOERPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgi
CiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOE9iamVjdENv
bnN0cnVjdG9yLmgiCkBAIC0zODMsMTAgKzM4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICB7CiAgICAgICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIFY4RE9NV2luZG93U2hlbGwqIHNoZWxsID0gVjhET01XaW5kb3dT
aGVsbDo6aXNvbGF0ZWQodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSk7Ci0gICAgICAgIGlmICgh
c2hlbGwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIHNoZWxsLT53b3Js
ZCgpOworICAgICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZCh2ODo6Q29udGV4
dDo6R2V0RW50ZXJlZCgpKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgY3VycmVudCBjb250ZXh0
IGNhdXNlcyBvdXQgb2YgbWVtb3J5LCBKYXZhU2NyaXB0IHNldHRpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggYjM4NDliODIxMzc5
ZWU2OTRmYmZjZGVlOTBlNGE2ODBkNWM4NzU3ZC4uZTY3ZWIyZTFmNTk5OGEwMTdmYzI0OWZjODBh
NjA2ZjI0NGU3YjA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
aW5kb3dTaGVsbC5jcHAKQEAgLTY1LDE0ICs2NSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmbmRlZiBOREVCVUcKLXZvaWQgVjhET01XaW5kb3dTaGVsbDo6YXNzZXJ0Q29udGV4dEhh
c0NvcnJlY3RQcm90b3R5cGUoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
QVNTRVJUKFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHRvSW5uZXJHbG9iYWxPYmplY3Qo
djg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSksICZWOERPTVdpbmRvdzo6aW5mbykpOwotfQotI2Vu
ZGlmCi0KIHN0YXRpYyB2b2lkIGNoZWNrRG9jdW1lbnRXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIEFTU0VSVChWOERvY3Vt
ZW50Ojp0b05hdGl2ZSh3cmFwcGVyKSA9PSBkb2N1bWVudCk7CkBAIC0xMDIsMTggKzk0LDE5IEBA
IFY4RE9NV2luZG93U2hlbGw6OlY4RE9NV2luZG93U2hlbGwoRnJhbWUqIGZyYW1lLCBQYXNzUmVm
UHRyPERPTVdyYXBwZXJXb3JsZD4gd29yCiAKIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6ZGVzdHJv
eUlzb2xhdGVkU2hlbGwoKQogewotICAgIGRpc3Bvc2VDb250ZXh0KHRydWUpOwotfQorICAgIEFT
U0VSVChtX3dvcmxkLT5pc0lzb2xhdGVkV29ybGQoKSk7CiAKLXN0YXRpYyB2b2lkIGlzb2xhdGVk
Q29udGV4dFdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9p
ZCogcGFyYW1ldGVyKQotewotICAgIC8vIEhhbmRsZSB3aWxsIGJlIGRpc3Bvc2VkIGluIGRlbGV0
ZS4KLSAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhET01XaW5kb3dTaGVsbCo+KHBhcmFtZXRlcik7
CisgICAgaWYgKG1fY29udGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICBtX3dvcmxkLT5tYWtlQ29udGV4dFdlYWso
bV9jb250ZXh0LmdldCgpKTsKKyAgICBkaXNwb3NlQ29udGV4dCgpOworICAgIGRlc3Ryb3lHbG9i
YWwoKTsKIH0KIAotdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dChib29sIHdl
YWspCit2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRpc3Bvc2VDb250ZXh0KCkKIHsKLSAgICBBU1NF
UlQoIW1fY29udGV4dC5nZXQoKS5Jc1dlYWsoKSk7CiAgICAgbV9wZXJDb250ZXh0RGF0YS5jbGVh
cigpOwogCiAgICAgaWYgKG1fY29udGV4dC5pc0VtcHR5KCkpCkBAIC0xMjEsMjIgKzExNCwxMyBA
QCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRpc3Bvc2VDb250ZXh0KGJvb2wgd2VhaykKIAogICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSwgbV93b3JsZC0+d29ybGRJZCgpKTsKIAotICAgIGlmICghd2VhaykKLSAg
ICAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVCghbV93
b3JsZC0+aXNNYWluV29ybGQoKSk7Ci0gICAgICAgIGRlc3Ryb3lHbG9iYWwoKTsKLSAgICAgICAg
bV9mcmFtZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC5nZXQoKS5NYWtlV2Vhayh0aGlzLCBpc29s
YXRlZENvbnRleHRXZWFrQ2FsbGJhY2spOwotICAgIH0KKyAgICBtX2NvbnRleHQuY2xlYXIoKTsK
IAogICAgIC8vIEl0J3MgbGlrZWx5IHRoYXQgZGlzcG9zaW5nIHRoZSBjb250ZXh0IGhhcyBjcmVh
dGVkIGEgbG90IG9mCiAgICAgLy8gZ2FyYmFnZS4gTm90aWZ5IFY4IGFib3V0IHRoaXMgc28gaXQn
bGwgaGF2ZSBhIGNoYW5jZSBvZiBjbGVhbmluZwogICAgIC8vIGl0IHVwIHdoZW4gaWRsZS4KLSAg
ICBpZiAobV93b3JsZC0+aXNNYWluV29ybGQoKSkgewotICAgICAgICBib29sIGlzTWFpbkZyYW1l
ID0gbV9mcmFtZS0+cGFnZSgpICYmIChtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpID09IG1f
ZnJhbWUpOwotICAgICAgICBWOEdDRm9yQ29udGV4dERpc3Bvc2U6Omluc3RhbmNlKCkubm90aWZ5
Q29udGV4dERpc3Bvc2VkKGlzTWFpbkZyYW1lKTsKLSAgICB9CisgICAgYm9vbCBpc01haW5GcmFt
ZSA9IG1fZnJhbWUtPnBhZ2UoKSAmJiAobV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKSA9PSBt
X2ZyYW1lKTsKKyAgICBWOEdDRm9yQ29udGV4dERpc3Bvc2U6Omluc3RhbmNlKCkubm90aWZ5Q29u
dGV4dERpc3Bvc2VkKGlzTWFpbkZyYW1lKTsKIH0KIAogdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpk
ZXN0cm95R2xvYmFsKCkKQEAgLTIzMCw2ICsyMTQsOCBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6
OmluaXRpYWxpemVJZk5lZWRlZCgpCiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4dC5nZXQoKSk7CiAgICAgdjg6
OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKIAorICAgIG1fd29ybGQtPnNl
dElzb2xhdGVkV29ybGRGaWVsZChtX2NvbnRleHQuZ2V0KCkpOworCiAgICAgaWYgKG1fZ2xvYmFs
LmlzRW1wdHkoKSkgewogICAgICAgICBtX2dsb2JhbC5zZXQoY29udGV4dC0+R2xvYmFsKCkpOwog
ICAgICAgICBpZiAobV9nbG9iYWwuaXNFbXB0eSgpKSB7CkBAIC0yMzgsMTMgKzIyNCwxMCBAQCBi
b29sIFY4RE9NV2luZG93U2hlbGw6OmluaXRpYWxpemVJZk5lZWRlZCgpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoaXNNYWluV29ybGQpCi0gICAgICAgIGNvbnRleHQtPlNldEFsaWduZWRQ
b2ludGVySW5FbWJlZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRXaW5kb3dTaGVsbCwgMCk7Ci0g
ICAgZWxzZSB7CisgICAgaWYgKCFpc01haW5Xb3JsZCkgewogICAgICAgICBWOERPTVdpbmRvd1No
ZWxsKiBtYWluV2luZG93ID0gbV9mcmFtZS0+c2NyaXB0KCktPmV4aXN0aW5nV2luZG93U2hlbGwo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgICAgICBpZiAobWFpbldpbmRvdyAmJiAhbWFp
bldpbmRvdy0+Y29udGV4dCgpLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNldEluamVjdGVkU2Ny
aXB0Q29udGV4dERlYnVnSWQobV9jb250ZXh0LmdldCgpLCBtX2ZyYW1lLT5zY3JpcHQoKS0+Y29u
dGV4dERlYnVnSWQobWFpbldpbmRvdy0+Y29udGV4dCgpKSk7Ci0gICAgICAgIGNvbnRleHQtPlNl
dEFsaWduZWRQb2ludGVySW5FbWJlZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRXaW5kb3dTaGVs
bCwgdGhpcyk7CiAgICAgfQogCiAgICAgbV9wZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERh
dGE6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5oCmluZGV4IDRmODMxN2U2MTExNDAxZDcwNTRiMjg1NTE2ZTFj
MWI5MjI4MDM0Y2IuLjVkZWM4ODZmMzFjMTE1MjY5NDk4MzcyODRhOGFkNzEzMTlmYjc5MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKQEAgLTcw
LDggKzcwLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250ZXh0SW5pdGlhbGl6ZWQoKSB7IHJl
dHVybiAhbV9jb250ZXh0LmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaXNHbG9iYWxJbml0aWFsaXpl
ZCgpIHsgcmV0dXJuICFtX2dsb2JhbC5pc0VtcHR5KCk7IH0KIAotICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpDb250ZXh0PiBjcmVhdGVOZXdDb250ZXh0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xv
YmFsLCBpbnQgZXh0ZW5zaW9uR3JvdXAsIGludCB3b3JsZElkKTsKLQogICAgIGJvb2wgaW5pdGlh
bGl6ZUlmTmVlZGVkKCk7CiAgICAgdm9pZCB1cGRhdGVEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyKTsKIApAQCAtODAsMTkgKzc4LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBkZXN0cm95R2xvYmFsKCk7CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgc3RhdGljIHZv
aWQgYXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUoKTsKLSNlbmRpZgotCi0gICAgc3Rh
dGljIFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNv
bnRleHQpCi0gICAgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgYXNzZXJ0Q29udGV4dEhhc0Nv
cnJlY3RQcm90b3R5cGUoKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VjhE
T01XaW5kb3dTaGVsbCo+KGNvbnRleHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0
YSh2OENvbnRleHRJc29sYXRlZFdpbmRvd1NoZWxsKSk7Ci0gICAgfQotCi0gICAgVjhQZXJDb250
ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoKSB7IHJldHVybiBtX3BlckNvbnRleHREYXRhLmdldCgp
OyB9CiAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7
IH0KIAogICAgIHZvaWQgZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKQEAgLTEwMCw3ICs4NSw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVjhET01XaW5kb3dTaGVsbChGcmFtZSosIFBhc3NSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPik7CiAKLSAgICB2b2lkIGRpc3Bvc2VDb250ZXh0KGJvb2wgd2Vh
ayA9IGZhbHNlKTsKKyAgICB2b2lkIGRpc3Bvc2VDb250ZXh0KCk7CiAKICAgICB2b2lkIHNldFNl
Y3VyaXR5VG9rZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250
ZXh0RGF0YS5oCmluZGV4IGEzM2NlY2VlMzVlNWQyMTBkMzlkZDhmZTViOGJkYzQ1ODUyOTI5NDEu
LjhmYWViNjI2ZTcwNTdmMDBhYTdhNmRkNTEwMTM0Y2YzM2E3MzEyMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
dHlwZWRlZiBXVEY6Okhhc2hNYXA8aW50LCBWOE5QT2JqZWN0VmVjdG9yPiBWOE5QT2JqZWN0TWFw
OwogZW51bSBWOENvbnRleHRFbWJlZGRlckRhdGFGaWVsZCB7CiAgICAgdjhDb250ZXh0RGVidWdJ
ZEluZGV4LAogICAgIHY4Q29udGV4dFBlckNvbnRleHREYXRhSW5kZXgsCi0gICAgdjhDb250ZXh0
SXNvbGF0ZWRXaW5kb3dTaGVsbCwKKyAgICB2OENvbnRleHRJc29sYXRlZFdvcmxkLAogICAgIC8v
IFJhdGhlciB0aGFuIGFkZGluZyBtb3JlIGVtYmVkZGVyIGRhdGEgZmllbGRzIHRvIHY4OjpDb250
ZXh0LAogICAgIC8vIGNvbnNpZGVyIGFkZGluZyB0aGUgZGF0YSB0byBWOFBlckNvbnRleHREYXRh
IGluc3RlYWQuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29y
bGRDb250ZXh0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29u
dGV4dEhhbmRsZS5jcHAKaW5kZXggMzBhOGNiMDgxMmMwNDE0Njc0NDExYjZhZDZiYzk4YTVkNzEx
NDRiZS4uYzE3NWI1YWE1Y2EzYzVhOTFkZjM1ZTlmYjM1MGYxN2I2OTgxYzRjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCkBAIC0z
NCw3ICszNCw2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVjhET01XaW5k
b3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1
ZGUgIlY4U2hhcmVkV29ya2VyQ29udGV4dC5oIgogCkBAIC02NCw3ICs2Myw3IEBAIFdvcmxkQ29u
dGV4dEhhbmRsZTo6V29ybGRDb250ZXh0SGFuZGxlKFdvcmxkVG9Vc2Ugd29ybGRUb1VzZSkKICAg
ICB9CiAjZW5kaWYKIAotICAgIGlmIChWOERPTVdpbmRvd1NoZWxsOjppc29sYXRlZChjb250ZXh0
KSkgeworICAgIGlmIChET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkKGNvbnRleHQpKSB7CiAgICAg
ICAgIG1fY29udGV4dCA9IFNoYXJlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+OjpjcmVhdGUoY29u
dGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>