<?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>108579</bug_id>
          
          <creation_ts>2013-01-31 21:50:02 -0800</creation_ts>
          <short_desc>[V8] Remove V8GCController::m_edenNodes and make minor DOM GC more precise</short_desc>
          <delta_ts>2013-02-10 17:18:00 -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>109055</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gavinp</cc>
    
    <cc>japhet</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>822312</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-31 21:50:02 -0800</bug_when>
    <thetext>Currently V8GCController::m_edenNodes stores a list of nodes whose wrappers have been created since the latest GC. The reason why we needed m_edenNodes is that there was no way to know a list of wrappers in the new space of V8. By using m_edenNodes, we had been approximating &apos;wrappers in the new space&apos; by &apos;wrappers that have been created since the latest GC&apos;.

Now V8 provides VisitHandlesForPartialDependence(), with which WebKit can know a list of wrappers in the new space (yeah, the API name could be VisitHandlesInNewSpace() but the V8 team didn&apos;t want to expose the concept of generational GC to APIs:-). By using the API, we can remove V8GCController::m_edenNodes. The benefit is that (1) we no longer need to keep m_edenNodes and that (2) it enables more precise minor DOM GC (Remember that m_edenNodes was just an approximation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822314</commentid>
    <comment_count>1</comment_count>
      <attachid>185940</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-31 21:52:04 -0800</bug_when>
    <thetext>Created attachment 185940
performance benchmark</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822317</commentid>
    <comment_count>2</comment_count>
      <attachid>185942</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-31 21:57:41 -0800</bug_when>
    <thetext>Created attachment 185942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822323</commentid>
    <comment_count>3</comment_count>
      <attachid>185942</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-31 22:19:05 -0800</bug_when>
    <thetext>Comment on attachment 185942
Patch

Attachment 185942 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16296336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822326</commentid>
    <comment_count>4</comment_count>
      <attachid>185942</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 22:23:42 -0800</bug_when>
    <thetext>Comment on attachment 185942
Patch

Attachment 185942 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16298362</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822337</commentid>
    <comment_count>5</comment_count>
      <attachid>185947</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-31 22:36:26 -0800</bug_when>
    <thetext>Created attachment 185947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822357</commentid>
    <comment_count>6</comment_count>
      <attachid>185947</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-31 23:02:08 -0800</bug_when>
    <thetext>Comment on attachment 185947
Patch

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

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:172
&gt;      {
&gt;          ASSERT(object-&gt;wrapper().IsEmpty());
&gt;          object-&gt;setWrapper(wrapper);
&gt; -        V8GCController::didCreateWrapperForNode(object);
&gt;          wrapper.MakeWeak(static_cast&lt;ScriptWrappable*&gt;(object), weakCallback);
&gt;      }

We can now delete this whole function and use the ScriptWrappable version of setWrapperInObject instead.

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:199
&gt; +                // The fact that we encounter a node that is not in the Eden space

Should this comment still refer to Eden now that we&apos;ve removed that concept?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822366</commentid>
    <comment_count>7</comment_count>
      <attachid>185952</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-31 23:13:31 -0800</bug_when>
    <thetext>Created attachment 185952
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822367</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-31 23:14:21 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; 
&gt; We can now delete this whole function and use the ScriptWrappable version of setWrapperInObject instead.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8GCController.cpp:199
&gt; &gt; +                // The fact that we encounter a node that is not in the Eden space
&gt; 
&gt; Should this comment still refer to Eden now that we&apos;ve removed that concept?

Fixed. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822428</commentid>
    <comment_count>9</comment_count>
      <attachid>185952</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-01 00:28:43 -0800</bug_when>
    <thetext>Comment on attachment 185952
patch for landing

Clearing flags on attachment: 185952

Committed r141548: &lt;http://trac.webkit.org/changeset/141548&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822429</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-01 00:28:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822587</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-01 03:51:11 -0800</bug_when>
    <thetext>Reverted r141548 for reason:

userscript-plugin-document.html is flaky

Committed r141577: &lt;http://trac.webkit.org/changeset/141577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822600</commentid>
    <comment_count>12</comment_count>
      <attachid>185952</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-01 04:10:22 -0800</bug_when>
    <thetext>Comment on attachment 185952
patch for landing

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

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:262
&gt; +            ASSERT(!m_nodesInNewSpace[i]-&gt;wrapper().IsEmpty());

The following tests hit this ASSERT(), which looks strange. This ASSERT() should not be hit.

  userscripts/mixed-case-stylesheet.html [ Crash ]
  userscripts/script-run-at-start.html [ Crash ]
  userscripts/user-script-all-frames.html [ Crash ]
  userscripts/user-style-all-frames.html [ Crash ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822602</commentid>
    <comment_count>13</comment_count>
      <attachid>185952</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-01 04:12:00 -0800</bug_when>
    <thetext>Comment on attachment 185952
patch for landing

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

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:254
&gt; +        Node* node = V8Node::toNative(wrapper);

More specifically, if we insert ASSERT(!node-&gt;wrapper().IsEmpty()), the userscripts/* tests hit the ASSERT(). Let me take a detailed look on Monday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824262</commentid>
    <comment_count>14</comment_count>
      <attachid>186356</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 05:00:26 -0800</bug_when>
    <thetext>Created attachment 186356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824268</commentid>
    <comment_count>15</comment_count>
      <attachid>186356</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 05:11:37 -0800</bug_when>
    <thetext>Comment on attachment 186356
Patch

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

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:364
&gt; +    // A minor GC can handle the main world only.
&gt; +    DOMWrapperWorld* world = worldForEnteredContextWithoutContextCheck();
&gt; +    if (world &amp;&amp; world-&gt;isMainWorld()) {

abarth: Since the latest review, I just added this check. Review again please?

I&apos;m pretty sure that we need the isMainWorld() check here because a minor GC can handle the main world only. On the other hand, the reason why we cannot simply use worldForEnteredContext() to get the current world is complicated:

(1) A minor GC can be triggered while the current context is being initialized. Specifically, V8DOMWindowShell::installDOMWindow() calls V8ObjectConstructor::newInstance(), which can trigger a minor GC. At this point, native information is not yet set on context-&gt;Global()-&gt;GetPrototype().
(2) The minor GC calls back V8GCController::minorGCPrologue(). Here imagine that minorGCPrologue() calls worldForEnteredContext().
(3) worldForEnteredContext() calls assertContextHasCorrectPrototype(context), which calls isWrapperOfType(toInnerGlobalObject(context), ...), which tries to retrieve native information from context-&gt;Global()-&gt;GetPrototype(). Because the native information has not yet set, the code crashes.

To avoid the situation, I added another version of worldForEnteredContext() that does not call assertContextHasCorrectPrototype(context).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824393</commentid>
    <comment_count>16</comment_count>
      <attachid>186356</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 08:35:49 -0800</bug_when>
    <thetext>Comment on attachment 186356
Patch

Attachment 186356 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16371270

New failing tests:
accessibility/anchor-linked-anonymous-block-crash.html
http/tests/appcache/main-resource-hash.html
animations/3d/matrix-transform-type-animation.html
accessibility/aria-readonly.html
animations/3d/state-at-end-event-transform.html
animations/animation-add-events-in-handler.html
accessibility/aria-labelledby-on-input.html
canvas/philip/tests/2d.clearRect.globalalpha.html
accessibility/aria-disabled.html
animations/animation-direction-alternate-reverse.html
accessibility/aria-labelledby-overrides-label.html
http/tests/appcache/access-via-redirect.php
accessibility/aria-option-role.html
accessibility/aria-controls-with-tabs.html
http/tests/appcache/destroyed-frame.html
http/tests/appcache/deferred-events-delete-while-raising-timer.html
http/tests/appcache/insert-html-element-with-manifest.html
accessibility/aria-link-supports-press.html
animations/3d/transform-perspective.html
accessibility/aria-hidden-updates-alldescendants.html
accessibility/aria-scrollbar-role.html
http/tests/appcache/local-content.html
http/tests/appcache/manifest-parsing.html
canvas/philip/tests/2d.canvas.reference.html
animations/animation-controller-drt-api.html
canvas/philip/tests/2d.clearRect.basic.html
accessibility/aria-hidden.html
http/tests/appcache/foreign-fallback.html
accessibility/aria-help.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824501</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-04 10:15:19 -0800</bug_when>
    <thetext>Looks like you&apos;ve got some test failures to work through.  What you&apos;ve written in Comment #15 makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824940</commentid>
    <comment_count>18</comment_count>
      <attachid>186506</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 17:27:32 -0800</bug_when>
    <thetext>Created attachment 186506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824944</commentid>
    <comment_count>19</comment_count>
      <attachid>186506</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 17:29:48 -0800</bug_when>
    <thetext>Comment on attachment 186506
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.h:467
&gt;      inline DOMWrapperWorld* worldForEnteredContextIfIsolated()
&gt;      {
&gt; -        if (!v8::Context::InContext())
&gt; +        v8::Handle&lt;v8::Context&gt; context = v8::Context::GetEntered();
&gt; +        if (context.IsEmpty())
&gt;              return 0;
&gt; -        return DOMWrapperWorld::isolated(v8::Context::GetEntered());
&gt; +        return DOMWrapperWorld::isolated(context);
&gt; +    }
&gt; +
&gt; +    inline DOMWrapperWorld* worldForEnteredContextWithoutContextCheck()
&gt; +    {
&gt; +        v8::Handle&lt;v8::Context&gt; context = v8::Context::GetEntered();
&gt; +        if (context.IsEmpty())
&gt; +            return 0;
&gt; +        return DOMWrapperWorld::getWorldWithoutContextCheck(context);
&gt;      }

abarth: I just changed these lines, which I think fixed the test failures. Given that we are using an entered context, we have to do an empty check for the entered context instead of InContext().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826041</commentid>
    <comment_count>20</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-05 20:10:22 -0800</bug_when>
    <thetext>abarth: review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826167</commentid>
    <comment_count>21</comment_count>
      <attachid>186506</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 00:27:57 -0800</bug_when>
    <thetext>Comment on attachment 186506
Patch

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

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.h:74
&gt; +    static DOMWrapperWorld* getWorldWithoutContextCheck(v8::Handle&lt;v8::Context&gt; context)

Can you add a comment about when you&apos;d wan to call getWorldWithoutContextCheck instead of getWorld()/isolated() ?

&gt; Source/WebCore/bindings/v8/V8Binding.h:455
&gt; +        v8::Handle&lt;v8::Context&gt; context = v8::Context::GetEntered();

Is this safe to call if !InContext()?  I guess so if we pass all the tests.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.h:467
&gt;&gt;      }
&gt; 
&gt; abarth: I just changed these lines, which I think fixed the test failures. Given that we are using an entered context, we have to do an empty check for the entered context instead of InContext().

In what situations does InContext return true but GetEntered returns an empty context?  That seems very odd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826172</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 00:29:03 -0800</bug_when>
    <thetext>I see your explanation in Comment #15.  It would be good to add a comment about that to the code because that&apos;s a very subtle issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826174</commentid>
    <comment_count>23</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-06 00:30:19 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; I see your explanation in Comment #15.  It would be good to add a comment about that to the code because that&apos;s a very subtle issue.

Will add a comment. The weird situation happens only during an initialization step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826302</commentid>
    <comment_count>24</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-06 03:42:38 -0800</bug_when>
    <thetext>Committed r141983: &lt;http://trac.webkit.org/changeset/141983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826440</commentid>
    <comment_count>25</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2013-02-06 07:44:46 -0800</bug_when>
    <thetext>This seems to cause lots of crashes in trunk. See http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=fast%2Fcanvas%2Fwebgl%2Fgl-vertexattribpointer.html%2Cfast%2Fcanvas%2Fwebgl%2Fcontext-release-upon-reload.html%2Cfast%2Fcanvas%2Fwebgl%2Fdata-view-test.html%2Cfast%2Fcanvas%2Fwebgl%2Fframebuffer-bindings-unaffected-on-resize.html%2Cfast%2Fcanvas%2Fwebgl%2Ffunctions-returning-strings.html%2Cfast%2Fcanvas%2Fwebgl%2Fincorrect-context-object-behaviour.html%2Cfast%2Fcanvas%2Fwebgl%2Fframebuffer-object-attachment.html

I&apos;m rolling it out. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826444</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 07:46:41 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 109055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827076</commentid>
    <comment_count>27</comment_count>
      <attachid>186997</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-06 23:25:45 -0800</bug_when>
    <thetext>Created attachment 186997
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827077</commentid>
    <comment_count>28</comment_count>
      <attachid>186997</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-06 23:26:24 -0800</bug_when>
    <thetext>Comment on attachment 186997
patch for landing

Corrected a place where a handle scope is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827122</commentid>
    <comment_count>29</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-07 00:43:53 -0800</bug_when>
    <thetext>Committed r142077: &lt;http://trac.webkit.org/changeset/142077&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827373</commentid>
    <comment_count>30</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-07 05:39:02 -0800</bug_when>
    <thetext>Reverted r142077 for reason:

fast/filesystem/workers/file-writer-empty-blob.html is broken

Committed r142103: &lt;http://trac.webkit.org/changeset/142103&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828414</commentid>
    <comment_count>31</comment_count>
      <attachid>187286</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-08 04:07:44 -0800</bug_when>
    <thetext>Created attachment 187286
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829373</commentid>
    <comment_count>32</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-10 17:18:00 -0800</bug_when>
    <thetext>Committed r142419: &lt;http://trac.webkit.org/changeset/142419&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>185940</attachid>
            <date>2013-01-31 21:52:04 -0800</date>
            <delta_ts>2013-01-31 21:52:04 -0800</delta_ts>
            <desc>performance benchmark</desc>
            <filename>gc_createelement.html</filename>
            <type>text/html</type>
            <size>1383</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8c2NyaXB0PgpmdW5jdGlvbiBydW4odGl0bGUsIHJlcGVhdE51bSwgZnVu
Yywgcm91bmRzKSB7CiAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKTsKICBpZiAoIXJlc3VsdCkgewogICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHQpOwogIH0K
CiAgdmFyIHJvdW5kcyA9IHJvdW5kcyB8fCA1OwogIHZhciB0aW1lcyA9IFtdOwogIGZvciAodmFy
IHIgPSAwOyByIDwgcm91bmRzOyByKyspIHsKICAgIHZhciBzdGFydCA9IERhdGUubm93KCk7CiAg
ICBmdW5jKHJlcGVhdE51bSk7CiAgICB2YXIgdGltZSA9IERhdGUubm93KCkgLSBzdGFydDsKICAg
IHRpbWVzLnB1c2godGltZSk7CiAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUodGltZSkpOwogICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJyIikpOwogIH0KCiAgdGltZXMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4g
YSAtIGI7IH0pOwogIHZhciBtZWRpYW4gPSB0aW1lc1tNYXRoLmZsb29yKHRpbWVzLmxlbmd0aCAv
IDIpXTsKICB2YXIgbWluID0gdGltZXNbMF07CiAgdmFyIG1heCA9IHRpbWVzW3RpbWVzLmxlbmd0
aCAtIDFdOwogIHZhciBzdW0gPSAwOwogIHZhciBzdW0yID0gMDsKICBmb3IgKHZhciBpID0gMDsg
aSA8IHRpbWVzLmxlbmd0aDsgaSsrKSB7CiAgICBzdW0gKz0gdGltZXNbaV07CiAgICBzdW0yICs9
IHRpbWVzW2ldICogdGltZXNbaV07CiAgfQogIHZhciBhdmcgPSBzdW0gLyByb3VuZHM7CiAgdmFy
IHN0ZGV2ID0gTWF0aC5zcXJ0KHN1bTIgLyByb3VuZHMgLSBhdmcgKiBhdmcpOwoKICByZXN1bHQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUgKyAiIDogbWVhbj0iICsg
YXZnLnRvRml4ZWQoMikgKyAibXMsIG1pbj0iICsgbWluICsgIm1zLCBtZWRpYW49IiArIG1lZGlh
biArICJtcywgbWF4PSIgKyBtYXggKyAibXMsIHN0ZGV2PSIgKyBzdGRldi50b0ZpeGVkKDIpICsg
Im1zIikpOwogIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIp
KTsKfQoKd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICB2YXIgcmVwZWF0TnVtID0gMTAw
MDAwOwoKICBydW4oImNyZWF0ZUVsZW1lbnQiLCByZXBlYXROdW0sIGZ1bmN0aW9uKHJlcGVhdE51
bSkgewogICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXBlYXROdW07IGorKykgewogICAgICBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIH0KICB9LCAzMDApOwp9Cjwvc2NyaXB0Pgo8
L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185942</attachid>
            <date>2013-01-31 21:57:41 -0800</date>
            <delta_ts>2013-01-31 22:36:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108579-20130201145424.patch</filename>
            <type>text/plain</type>
            <size>13907</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZiNGI1YWQ3MWJmYTI2
MjFjMjJmNDZmNDY1YTFjNTlkOWU1N2NhMy4uMzMxMzNiODYwNWNkNGQzNTJiMTU2YWZkNTE2Mzcz
YzFkYzAyNGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDEzLTAxLTMxICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIFJlbW92ZSBW
OEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBWOEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMg
c3RvcmVzIGEgbGlzdCBvZiBub2RlcyB3aG9zZQorICAgICAgICB3cmFwcGVycyBoYXZlIGJlZW4g
Y3JlYXRlZCBzaW5jZSB0aGUgbGF0ZXN0IEdDLiBUaGUgcmVhc29uIHdoeSB3ZQorICAgICAgICBu
ZWVkZWQgbV9lZGVuTm9kZXMgaXMgdGhhdCB0aGVyZSB3YXMgbm8gd2F5IHRvIGtub3cgYSBsaXN0
IG9mIHdyYXBwZXJzCisgICAgICAgIGluIHRoZSBuZXcgc3BhY2Ugb2YgVjguIEJ5IHVzaW5nIG1f
ZWRlbk5vZGVzLCB3ZSBoYWQgYmVlbiBhcHByb3hpbWF0aW5nCisgICAgICAgICd3cmFwcGVycyBp
biB0aGUgbmV3IHNwYWNlJyBieSAnd3JhcHBlcnMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCBzaW5j
ZQorICAgICAgICB0aGUgbGF0ZXN0IEdDJy4KKworICAgICAgICBOb3cgVjggcHJvdmlkZXMgVmlz
aXRIYW5kbGVzRm9yUGFydGlhbERlcGVuZGVuY2UoKSwgd2l0aCB3aGljaCBXZWJLaXQKKyAgICAg
ICAgY2FuIGtub3cgYSBsaXN0IG9mIHdyYXBwZXJzIGluIHRoZSBuZXcgc3BhY2UuIEJ5IHVzaW5n
IHRoZSBBUEksIHdlIGNhbgorICAgICAgICByZW1vdmUgVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5v
ZGVzLiBUaGUgYmVuZWZpdCBpcyB0aGF0ICgxKSB3ZSBubyBsb25nZXIKKyAgICAgICAgbmVlZCB0
byBrZWVwIG1fZWRlbk5vZGVzIGFuZCB0aGF0ICgyKSBpdCBlbmFibGVzIG1vcmUgcHJlY2lzZSBt
aW5vcgorICAgICAgICBET00gR0MgKFJlbWVtYmVyIHRoYXQgbV9lZGVuTm9kZXMgd2FzIGp1c3Qg
YW4gYXBwcm94aW1hdGlvbikuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgYmVuY2htYXJrOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9hdHRhY2htZW50LmNnaT9pZD0xODU5NDAKKyAgICAgICAgVGhl
IGJlbmNobWFyayBydW5zIDMwMCBpdGVyYXRpb25zLCBlYWNoIG9mIHdoaWNoIGNyZWF0ZXMgMTAw
MDAwIGVsZW1lbnRzLgorICAgICAgICBUaGUgYmVuY2htYXJrIG1lYXN1cmVzIGF2ZXJhZ2UsIG1p
biwgbWVkaWFuLCBtYXggYW5kIHN0ZGV2IG9mIGV4ZWN1dGlvbiB0aW1lcworICAgICAgICBvZiB0
aGUgMzAwIGl0ZXJhdGlvbnMuIFRoaXMgd2lsbCB0ZWxsIHVzIHRoZSB3b3JzdC1jYXNlIG92ZXJo
ZWFkIG9mIHRoaXMgY2hhbmdlLgorCisgICAgICAgIEJlZm9yZToKKyAgICAgICAgICBtZWFuPTU5
LjkxbXMsIG1pbj0zOW1zLCBtZWRpYW49NDJtcywgbWF4PTI1OG1zLCBzdGRldj00Ny40OG1zCisK
KyAgICAgICAgQWZ0ZXI6CisgICAgICAgICAgbWVhbj01OC43NW1zLCBtaW49MzVtcywgbWVkaWFu
PTQxbXMsIG1heD0yNTBtcywgc3RkZXY9NDcuMzJtcworCisgICAgICAgIEFzIHNob3duIGFib3Zl
LCBJIGNvdWxkbid0IG9ic2VydmUgYW55IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCisKKyAgICAg
ICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXRX
cmFwcGVySW5PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdjVHJlZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKE1pbm9yR0NXcmFwcGVyVmlzaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNaW5vckdDV3Jh
cHBlclZpc2l0b3I6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250
cm9sbGVyOjpnY1Byb2xvZ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpt
aW5vckdDUHJvbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6Om1ham9y
R0NQcm9sb2d1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKFY4R0NDb250cm9sbGVyKToKKworMjAxMy0wMS0zMSAgS2VudGFybyBIYXJhICA8aGFy
YWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0
MTUwMi4KICAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQxNTAyCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0NDEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggNDE2ZTQ1MDZiZjgy
YmZkZDVhYzQ0ZTRlMjkyOWViMWRlNzRjNDZiZS4uMmRjMTQwNWJiZGQ2MzEzZDlhMWExZjQ1ZTY4
NTk0YzhkMzVkMTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
RGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmgKQEAgLTE2OCw3ICsxNjgsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKG9i
amVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7CiAgICAgICAgIG9iamVjdC0+c2V0V3JhcHBlcih3
cmFwcGVyKTsKLSAgICAgICAgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJGb3JOb2Rl
KG9iamVjdCk7CiAgICAgICAgIHdyYXBwZXIuTWFrZVdlYWsoc3RhdGljX2Nhc3Q8U2NyaXB0V3Jh
cHBhYmxlKj4ob2JqZWN0KSwgd2Vha0NhbGxiYWNrKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCA4ZWEwMDg1NTU3YWFlOTgz
M2EzOTcwMmNhOWM4ZmRkMmQ0ZDkxYmQ3Li5mYTExYzkxYWJjM2FlYWVhNjJjM2YxOWE3MWFkZGU1
MTkxMWY2YjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xs
ZXIuY3BwCkBAIC0xNzgsNyArMTc4LDEwMCBAQCBOb2RlKiBWOEdDQ29udHJvbGxlcjo6b3BhcXVl
Um9vdEZvckdDKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWNsYXNzIFdyYXBw
ZXJWaXNpdG9yIDogcHVibGljIHY4OjpQZXJzaXN0ZW50SGFuZGxlVmlzaXRvciB7CitzdGF0aWMg
dm9pZCBnY1RyZWUoTm9kZSogc3RhcnROb2RlKQoreworICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVu
dDx2ODo6VmFsdWU+LCBpbml0aWFsTm9kZVZlY3RvclNpemU+IG5ld1NwYWNlV3JhcHBlcnM7CisK
KyAgICAvLyBXZSB0cmF2ZXJzZSBhIERPTSB0cmVlIGluIHRoZSBERlMgb3JkZXIgc3RhcnRpbmcg
ZnJvbSBzdGFydE5vZGUuCisgICAgLy8gVGhlIHRyYXZlcnNhbCBvcmRlciBkb2VzIG5vdCBtYXR0
ZXIgZm9yIGNvcnJlY3RuZXNzIGJ1dCBkb2VzIG1hdHRlciBmb3IgcGVyZm9ybWFuY2UuCisgICAg
Tm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsKKyAgICAvLyBUbyBtYWtlIGVhY2ggbWlub3IgR0MgdGlt
ZSBib3VuZGVkLCB3ZSBtaWdodCBuZWVkIHRvIGdpdmUgdXAKKyAgICAvLyB0cmF2ZXJzaW5nIGF0
IHNvbWUgcG9pbnQgZm9yIGEgbGFyZ2UgRE9NIHRyZWUuIFRoYXQgYmVpbmcgc2FpZCwKKyAgICAv
LyBJIGNvdWxkIG5vdCBvYnNlcnZlIHRoZSBuZWVkIGV2ZW4gaW4gcGF0aG9sb2dpY2FsIHRlc3Qg
Y2FzZXMuCisgICAgZG8geworICAgICAgICBBU1NFUlQobm9kZSk7CisgICAgICAgIGlmICghbm9k
ZS0+d3JhcHBlcigpLklzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW1hZ2UgZWxlbWVudHMuCisgICAgICAgICAgICAvLyBU
aGUgc2FtZSBzcGVjaWFsIGhhbmRsaW5nIGlzIGluIFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290
Rm9yR0MoKS4KKyAgICAgICAgICAgIC8vIE1heWJlIHNob3VsZCBpbWFnZSBlbGVtZW50cyBiZSBh
Y3RpdmUgRE9NIG5vZGVzPworICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjQ4ODIKKyAgICAgICAgICAgIGlmICgh
bm9kZS0+aXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQygpIHx8IChub2RlLT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6aW1nVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9k
ZSktPmhhc1BlbmRpbmdBY3Rpdml0eSgpKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBmYWN0
IHRoYXQgd2UgZW5jb3VudGVyIGEgbm9kZSB0aGF0IGlzIG5vdCBpbiB0aGUgRWRlbiBzcGFjZQor
ICAgICAgICAgICAgICAgIC8vIGltcGxpZXMgdGhhdCBpdHMgd3JhcHBlciBtaWdodCBiZSBpbiB0
aGUgb2xkIHNwYWNlIG9mIFY4LgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRo
YXQgdGhlIG1pbm9yIEdDIGNhbm5vdCBhbnl3YXkganVkZ2UgcmVhY2hhYmlsaXR5CisgICAgICAg
ICAgICAgICAgLy8gb2YgdGhpcyBET00gdHJlZS4gVGh1cyB3ZSBnaXZlIHVwIHRyYXZlcnNpbmcg
dGhlIERPTSB0cmVlLgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC8vIEEgb25jZSB0cmF2ZXJzZWQgbm9kZSBpcyByZW1vdmVkIGZyb20gdGhlIEVk
ZW4gc3BhY2UuCisgICAgICAgICAgICBub2RlLT5zZXRWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JH
QyhmYWxzZSk7CisgICAgICAgICAgICBuZXdTcGFjZVdyYXBwZXJzLmFwcGVuZChub2RlLT53cmFw
cGVyKCkpOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5maXJzdENoaWxkKCkpIHsKKyAg
ICAgICAgICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoIW5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgICAgIGlmICghbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5l
eHRTaWJsaW5nKCk7CisgICAgfSB3aGlsZSAobm9kZSAhPSBzdGFydE5vZGUpOworCisgICAgLy8g
V2UgY29tcGxldGVkIHRoZSBET00gdHJlZSB0cmF2ZXJzYWwuIEFsbCB3cmFwcGVycyBpbiB0aGUg
RE9NIHRyZWUgYXJlCisgICAgLy8gc3RvcmVkIGluIG5ld1NwYWNlV3JhcHBlcnMgYW5kIGFyZSBl
eHBlY3RlZCB0byBleGlzdCBpbiB0aGUgbmV3IHNwYWNlIG9mIFY4LgorICAgIC8vIFdlIHJlcG9y
dCB0aG9zZSB3cmFwcGVycyB0byBWOCBhcyBhbiBvYmplY3QgZ3JvdXAuCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKTsgaSsrKQorICAgICAgICBuZXdT
cGFjZVdyYXBwZXJzW2ldLk1hcmtQYXJ0aWFsbHlEZXBlbmRlbnQoKTsKKyAgICBpZiAobmV3U3Bh
Y2VXcmFwcGVycy5zaXplKCkgPiAwKQorICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZu
ZXdTcGFjZVdyYXBwZXJzWzBdLCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSk7Cit9CisKKy8vIFJl
Z2FyZGluZyBhIG1pbm9yIEdDIGFsZ29yaXRobSBmb3IgRE9NIG5vZGVzLCBzZWUgdGhpcyBkb2N1
bWVudDoKKy8vIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9wcmVzZW50YXRp
b24vZC8xdWlmd1ZZR05ZVFpEb0dMeUNiN3NYYTdnNDltV05NVzJnYVd2TU41TkxrOC9lZGl0I3Ns
aWRlPWlkLnAKK2NsYXNzIE1pbm9yR0NXcmFwcGVyVmlzaXRvciA6IHB1YmxpYyB2ODo6UGVyc2lz
dGVudEhhbmRsZVZpc2l0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBWaXNpdFBlcnNp
c3RlbnRIYW5kbGUodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdWludDE2X3QgY2xh
c3NJZCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIC8vIEEgbWlub3IgRE9NIEdDIGNhbiBjb2xs
ZWN0IG9ubHkgTm9kZXMuCisgICAgICAgIGlmIChjbGFzc0lkICE9IHY4RE9NTm9kZUNsYXNzSWQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX25vZGVzSW5OZXdTcGFjZS5zaXpl
KCkgPj0gd3JhcHBlcnNIYW5kbGVkQnlFYWNoTWlub3JHQykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOworICAgICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNh
c3QodmFsdWUpOworICAgICAgICBBU1NFUlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIo
dmFsdWUpKTsKKyAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlcikpOwor
ICAgICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh3cmFwcGVyKTsKKyAgICAgICAg
bV9ub2Rlc0luTmV3U3BhY2UuYXBwZW5kKG5vZGUpOworICAgICAgICBub2RlLT5zZXRWOENvbGxl
Y3RhYmxlRHVyaW5nTWlub3JHQyh0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKCkKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ub2Rlc0luTmV3
U3BhY2Uuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9ub2Rlc0luTmV3U3Bh
Y2VbaV0tPndyYXBwZXIoKS5Jc0VtcHR5KCkpOworICAgICAgICAgICAgaWYgKG1fbm9kZXNJbk5l
d1NwYWNlW2ldLT5pc1Y4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKCkpIC8vIFRoaXMgYnJhbmNo
IGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLgorICAgICAgICAgICAgICAgIGdjVHJlZShtX25vZGVz
SW5OZXdTcGFjZVtpXSk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gVG8g
bWFrZSBtaW5vciBHQyBjeWNsZSB0aW1lIGJvdW5kZWQsIHdlIGxpbWl0IHRoZSBudW1iZXIgb2Yg
d3JhcHBlcnMgaGFuZGxlZAorICAgIC8vIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUgdG8gMTAwMDAu
IFRoaXMgdmFsdWUgd2FzIHNlbGVjdGVkIHNvIHRoYXQgdGhlIG1pbm9yCisgICAgLy8gR0MgY3lj
bGUgdGltZSBpcyBib3VuZGVkIHRvIDIwIG1zIGluIGEgY2FzZSB3aGVyZSB0aGUgbmV3IHNwYWNl
IHNpemUKKyAgICAvLyBpcyAxNiBNQiBhbmQgaXQgaXMgZnVsbCBvZiB3cmFwcGVycyAod2hpY2gg
aXMgYWxtb3N0IHRoZSB3b3JzdCBjYXNlKS4KKyAgICAvLyBQcmFjdGljYWxseSBzcGVha2luZywg
YXMgZmFyIGFzIEkgY3Jhd2xlZCByZWFsIHdlYiBhcHBsaWNhdGlvbnMsCisgICAgLy8gdGhlIG51
bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUgaXMgYXQgbW9z
dCAzMDAwLgorICAgIC8vIFNvIHRoaXMgbGltaXQgaXMgbWFpbmx5IGZvciBwYXRob2xvZ2ljYWwg
bWljcm8gYmVuY2htYXJrcy4KKyAgICBjb25zdCB1bnNpZ25lZCB3cmFwcGVyc0hhbmRsZWRCeUVh
Y2hNaW5vckdDID0gMTAwMDA7CisKKyAgICBWZWN0b3I8Tm9kZSo+IG1fbm9kZXNJbk5ld1NwYWNl
OworfTsKKworY2xhc3MgTWFqb3JHQ1dyYXBwZXJWaXNpdG9yIDogcHVibGljIHY4OjpQZXJzaXN0
ZW50SGFuZGxlVmlzaXRvciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFZpc2l0UGVyc2lz
dGVudEhhbmRsZSh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB1aW50MTZfdCBjbGFz
c0lkKSBPVkVSUklERQogICAgIHsKQEAgLTI0MSwxMDYgKzMzNCwyMyBAQCBwcml2YXRlOgogICAg
IFdyYXBwZXJHcm91cGVyIG1fZ3JvdXBlcjsKIH07CiAKLS8vIFJlZ2FyZGluZyBhIG1pbm9yIEdD
IGFsZ29yaXRobSBmb3IgRE9NIG5vZGVzLCBzZWUgdGhpcyBkb2N1bWVudDoKLS8vIGh0dHBzOi8v
ZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9wcmVzZW50YXRpb24vZC8xdWlmd1ZZR05ZVFpE
b0dMeUNiN3NYYTdnNDltV05NVzJnYVd2TU41TkxrOC9lZGl0I3NsaWRlPWlkLnAKLS8vCi0vLyBt
X2VkZW5Ob2RlcyBzdG9yZXMgbm9kZXMgdGhhdCBoYXZlIHdyYXBwZXJzIHRoYXQgaGF2ZSBiZWVu
IGNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgbWlub3IvbWFqb3IgR0MuCi1WZWN0b3I8Tm9kZSo+KiBW
OEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgPSAwOwotCi1zdGF0aWMgdm9pZCBnY1RyZWUoTm9k
ZSogc3RhcnROb2RlKQotewotICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCBp
bml0aWFsTm9kZVZlY3RvclNpemU+IG5ld1NwYWNlV3JhcHBlcnM7Ci0KLSAgICAvLyBXZSB0cmF2
ZXJzZSBhIERPTSB0cmVlIGluIHRoZSBERlMgb3JkZXIgc3RhcnRpbmcgZnJvbSBzdGFydE5vZGUu
Ci0gICAgLy8gVGhlIHRyYXZlcnNhbCBvcmRlciBkb2VzIG5vdCBtYXR0ZXIgZm9yIGNvcnJlY3Ru
ZXNzIGJ1dCBkb2VzIG1hdHRlciBmb3IgcGVyZm9ybWFuY2UuCi0gICAgTm9kZSogbm9kZSA9IHN0
YXJ0Tm9kZTsKLSAgICAvLyBUbyBtYWtlIGVhY2ggbWlub3IgR0MgdGltZSBib3VuZGVkLCB3ZSBt
aWdodCBuZWVkIHRvIGdpdmUgdXAKLSAgICAvLyB0cmF2ZXJzaW5nIGF0IHNvbWUgcG9pbnQgZm9y
IGEgbGFyZ2UgRE9NIHRyZWUuIFRoYXQgYmVpbmcgc2FpZCwKLSAgICAvLyBJIGNvdWxkIG5vdCBv
YnNlcnZlIHRoZSBuZWVkIGV2ZW4gaW4gcGF0aG9sb2dpY2FsIHRlc3QgY2FzZXMuCi0gICAgZG8g
ewotICAgICAgICBBU1NFUlQobm9kZSk7Ci0gICAgICAgIGlmICghbm9kZS0+d3JhcHBlcigpLklz
RW1wdHkoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgc3BlY2lhbCBoYW5k
bGluZyBmb3IgaW1hZ2UgZWxlbWVudHMuCi0gICAgICAgICAgICAvLyBUaGUgc2FtZSBzcGVjaWFs
IGhhbmRsaW5nIGlzIGluIFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9yR0MoKS4KLSAgICAg
ICAgICAgIC8vIE1heWJlIHNob3VsZCBpbWFnZSBlbGVtZW50cyBiZSBhY3RpdmUgRE9NIG5vZGVz
PwotICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0v
aXNzdWVzL2RldGFpbD9pZD0xNjQ4ODIKLSAgICAgICAgICAgIGlmICghbm9kZS0+aXNWOENvbGxl
Y3RhYmxlRHVyaW5nTWlub3JHQygpIHx8IChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1n
VGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSktPmhhc1BlbmRpbmdB
Y3Rpdml0eSgpKSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgd2UgZW5jb3Vu
dGVyIGEgbm9kZSB0aGF0IGlzIG5vdCBpbiB0aGUgRWRlbiBzcGFjZQotICAgICAgICAgICAgICAg
IC8vIGltcGxpZXMgdGhhdCBpdHMgd3JhcHBlciBtaWdodCBiZSBpbiB0aGUgb2xkIHNwYWNlIG9m
IFY4LgotICAgICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIG1pbm9yIEdD
IGNhbm5vdCBhbnl3YXkganVkZ2UgcmVhY2hhYmlsaXR5Ci0gICAgICAgICAgICAgICAgLy8gb2Yg
dGhpcyBET00gdHJlZS4gVGh1cyB3ZSBnaXZlIHVwIHRyYXZlcnNpbmcgdGhlIERPTSB0cmVlLgot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEEg
b25jZSB0cmF2ZXJzZWQgbm9kZSBpcyByZW1vdmVkIGZyb20gdGhlIEVkZW4gc3BhY2UuCi0gICAg
ICAgICAgICBub2RlLT5zZXRWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQyhmYWxzZSk7Ci0gICAg
ICAgICAgICBuZXdTcGFjZVdyYXBwZXJzLmFwcGVuZChub2RlLT53cmFwcGVyKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChub2RlLT5maXJzdENoaWxkKCkpIHsKLSAgICAgICAgICAgIG5vZGUg
PSBub2RlLT5maXJzdENoaWxkKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
ICAgICAgICB3aGlsZSAoIW5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmICgh
bm9kZS0+cGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
bm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+
cGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7Ci0g
ICAgfSB3aGlsZSAobm9kZSAhPSBzdGFydE5vZGUpOwotCi0gICAgLy8gV2UgY29tcGxldGVkIHRo
ZSBET00gdHJlZSB0cmF2ZXJzYWwuIEFsbCB3cmFwcGVycyBpbiB0aGUgRE9NIHRyZWUgYXJlCi0g
ICAgLy8gc3RvcmVkIGluIG5ld1NwYWNlV3JhcHBlcnMgYW5kIGFyZSBleHBlY3RlZCB0byBleGlz
dCBpbiB0aGUgbmV3IHNwYWNlIG9mIFY4LgotICAgIC8vIFdlIHJlcG9ydCB0aG9zZSB3cmFwcGVy
cyB0byBWOCBhcyBhbiBvYmplY3QgZ3JvdXAuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
ZXdTcGFjZVdyYXBwZXJzLnNpemUoKTsgaSsrKQotICAgICAgICBuZXdTcGFjZVdyYXBwZXJzW2ld
Lk1hcmtQYXJ0aWFsbHlEZXBlbmRlbnQoKTsKLSAgICBpZiAobmV3U3BhY2VXcmFwcGVycy5zaXpl
KCkgPiAwKQotICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZuZXdTcGFjZVdyYXBwZXJz
WzBdLCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSk7Ci19Ci0KLXZvaWQgVjhHQ0NvbnRyb2xsZXI6
OmRpZENyZWF0ZVdyYXBwZXJGb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgLy8gVG8gbWFrZSBt
aW5vciBHQyBjeWNsZSB0aW1lIGJvdW5kZWQsIHdlIGxpbWl0IHRoZSBudW1iZXIgb2Ygd3JhcHBl
cnMgaGFuZGxlZAotICAgIC8vIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUgdG8gMTAwMDAuIFRoaXMg
dmFsdWUgd2FzIHNlbGVjdGVkIHNvIHRoYXQgdGhlIG1pbm9yCi0gICAgLy8gR0MgY3ljbGUgdGlt
ZSBpcyBib3VuZGVkIHRvIDIwIG1zIGluIGEgY2FzZSB3aGVyZSB0aGUgbmV3IHNwYWNlIHNpemUK
LSAgICAvLyBpcyAxNiBNQiBhbmQgaXQgaXMgZnVsbCBvZiB3cmFwcGVycyAod2hpY2ggaXMgYWxt
b3N0IHRoZSB3b3JzdCBjYXNlKS4KLSAgICAvLyBQcmFjdGljYWxseSBzcGVha2luZywgYXMgZmFy
IGFzIEkgY3Jhd2xlZCByZWFsIHdlYiBhcHBsaWNhdGlvbnMsCi0gICAgLy8gdGhlIG51bWJlciBv
ZiB3cmFwcGVycyBoYW5kbGVkIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUgaXMgYXQgbW9zdCAzMDAw
LgotICAgIC8vIFNvIHRoaXMgbGltaXQgaXMgbWFpbmx5IGZvciBwYXRob2xvZ2ljYWwgbWljcm8g
YmVuY2htYXJrcy4KLSAgICBjb25zdCB1bnNpZ25lZCB3cmFwcGVyc0hhbmRsZWRCeUVhY2hNaW5v
ckdDID0gMTAwMDA7Ci0gICAgQVNTRVJUKCFub2RlLT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKLSAg
ICBpZiAoIW1fZWRlbk5vZGVzKQotICAgICAgICBtX2VkZW5Ob2RlcyA9IGFkb3B0UHRyKG5ldyBW
ZWN0b3I8Tm9kZSo+KS5sZWFrUHRyKCk7Ci0gICAgaWYgKG1fZWRlbk5vZGVzLT5zaXplKCkgPD0g
d3JhcHBlcnNIYW5kbGVkQnlFYWNoTWlub3JHQykgewotICAgICAgICAvLyBBIG5vZGUgb2YgYSBu
ZXdseSBjcmVhdGVkIHdyYXBwZXIgaXMgcHV0IGludG8gdGhlIEVkZW4gc3BhY2UuCi0gICAgICAg
IG1fZWRlbk5vZGVzLT5hcHBlbmQobm9kZSk7Ci0gICAgICAgIG5vZGUtPnNldFY4Q29sbGVjdGFi
bGVEdXJpbmdNaW5vckdDKHRydWUpOwotICAgIH0KLX0KLQogdm9pZCBWOEdDQ29udHJvbGxlcjo6
Z2NQcm9sb2d1ZSh2ODo6R0NUeXBlIHR5cGUsIHY4OjpHQ0NhbGxiYWNrRmxhZ3MgZmxhZ3MpCiB7
CiAgICAgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVTY2F2ZW5nZSkKICAgICAgICAgbWlub3JHQ1By
b2xvZ3VlKCk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSB2ODo6a0dDVHlwZU1hcmtTd2VlcENvbXBh
Y3QpCiAgICAgICAgIG1ham9yR0NQcm9sb2d1ZSgpOwotCi0gICAgaWYgKGlzTWFpblRocmVhZE9y
R0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgewotICAgICAgICAvLyBUaGUgRWRlbiBzcGFjZSBp
cyBjbGVhcmVkIGF0IGV2ZXJ5IG1pbm9yL21ham9yIEdDLgotICAgICAgICBtX2VkZW5Ob2Rlcy0+
Y2xlYXIoKTsKLSAgICB9CiB9CiAKIHZvaWQgVjhHQ0NvbnRyb2xsZXI6Om1pbm9yR0NQcm9sb2d1
ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJ2OCIsICJHQyIpOwogCi0gICAgaWYgKGlz
TWFpblRocmVhZE9yR0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fZWRlbk5vZGVzLT5zaXplKCk7IGkrKykgewotICAgICAgICAgICAg
QVNTRVJUKCFtX2VkZW5Ob2Rlcy0+YXQoaSktPndyYXBwZXIoKS5Jc0VtcHR5KCkpOwotICAgICAg
ICAgICAgaWYgKG1fZWRlbk5vZGVzLT5hdChpKS0+aXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JH
QygpKSAvLyBUaGlzIGJyYW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4KLSAgICAgICAgICAg
ICAgICBnY1RyZWUobV9lZGVuTm9kZXMtPmF0KGkpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2
ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisKKyAgICBNaW5vckdDV3JhcHBlclZpc2l0b3IgdmlzaXRv
cjsKKyAgICB2ODo6Vjg6OlZpc2l0SGFuZGxlc0ZvclBhcnRpYWxEZXBlbmRlbmNlKHY4OjpJc29s
YXRlOjpHZXRDdXJyZW50KCksICZ2aXNpdG9yKTsKKyAgICB2aXNpdG9yLm5vdGlmeUZpbmlzaGVk
KCk7CiB9CiAKIC8vIENyZWF0ZSBvYmplY3QgZ3JvdXBzIGZvciBET00gdHJlZSBub2Rlcy4KQEAg
LTM1MCw3ICszNjAsNyBAQCB2b2lkIFY4R0NDb250cm9sbGVyOjptYWpvckdDUHJvbG9ndWUoKQog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCi0gICAgV3JhcHBlclZpc2l0b3IgdmlzaXRv
cjsKKyAgICBNYWpvckdDV3JhcHBlclZpc2l0b3IgdmlzaXRvcjsKICAgICB2ODo6Vjg6OlZpc2l0
SGFuZGxlc1dpdGhDbGFzc0lkcygmdmlzaXRvcik7CiAgICAgdmlzaXRvci5ub3RpZnlGaW5pc2hl
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAppbmRl
eCBkZWYxMmM2NWFmNDhlMjI3YWJmY2ExM2MwNzg0NjBlNWFkYzdmNTRjLi5kNzY3Yzk2ODNkOWNl
MWQwMzlmZmRlMzQ0ZjUyNWQ4ODhjMTA1NTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4R0NDb250cm9sbGVyLmgKQEAgLTUyLDcgKzUyLDYgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CiAKICAgICBzdGF0aWMgTm9kZSogb3BhcXVlUm9vdEZv
ckdDKE5vZGUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXcmFwcGVyRm9yTm9kZShOb2Rl
Kik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIFZlY3RvcjxOb2RlKj4qIG1fZWRlbk5vZGVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185947</attachid>
            <date>2013-01-31 22:36:26 -0800</date>
            <delta_ts>2013-01-31 23:13:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108579-20130201153308.patch</filename>
            <type>text/plain</type>
            <size>13939</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZiNGI1YWQ3MWJmYTI2
MjFjMjJmNDZmNDY1YTFjNTlkOWU1N2NhMy4uMzMxMzNiODYwNWNkNGQzNTJiMTU2YWZkNTE2Mzcz
YzFkYzAyNGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDEzLTAxLTMxICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIFJlbW92ZSBW
OEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBWOEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMg
c3RvcmVzIGEgbGlzdCBvZiBub2RlcyB3aG9zZQorICAgICAgICB3cmFwcGVycyBoYXZlIGJlZW4g
Y3JlYXRlZCBzaW5jZSB0aGUgbGF0ZXN0IEdDLiBUaGUgcmVhc29uIHdoeSB3ZQorICAgICAgICBu
ZWVkZWQgbV9lZGVuTm9kZXMgaXMgdGhhdCB0aGVyZSB3YXMgbm8gd2F5IHRvIGtub3cgYSBsaXN0
IG9mIHdyYXBwZXJzCisgICAgICAgIGluIHRoZSBuZXcgc3BhY2Ugb2YgVjguIEJ5IHVzaW5nIG1f
ZWRlbk5vZGVzLCB3ZSBoYWQgYmVlbiBhcHByb3hpbWF0aW5nCisgICAgICAgICd3cmFwcGVycyBp
biB0aGUgbmV3IHNwYWNlJyBieSAnd3JhcHBlcnMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCBzaW5j
ZQorICAgICAgICB0aGUgbGF0ZXN0IEdDJy4KKworICAgICAgICBOb3cgVjggcHJvdmlkZXMgVmlz
aXRIYW5kbGVzRm9yUGFydGlhbERlcGVuZGVuY2UoKSwgd2l0aCB3aGljaCBXZWJLaXQKKyAgICAg
ICAgY2FuIGtub3cgYSBsaXN0IG9mIHdyYXBwZXJzIGluIHRoZSBuZXcgc3BhY2UuIEJ5IHVzaW5n
IHRoZSBBUEksIHdlIGNhbgorICAgICAgICByZW1vdmUgVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5v
ZGVzLiBUaGUgYmVuZWZpdCBpcyB0aGF0ICgxKSB3ZSBubyBsb25nZXIKKyAgICAgICAgbmVlZCB0
byBrZWVwIG1fZWRlbk5vZGVzIGFuZCB0aGF0ICgyKSBpdCBlbmFibGVzIG1vcmUgcHJlY2lzZSBt
aW5vcgorICAgICAgICBET00gR0MgKFJlbWVtYmVyIHRoYXQgbV9lZGVuTm9kZXMgd2FzIGp1c3Qg
YW4gYXBwcm94aW1hdGlvbikuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgYmVuY2htYXJrOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9hdHRhY2htZW50LmNnaT9pZD0xODU5NDAKKyAgICAgICAgVGhl
IGJlbmNobWFyayBydW5zIDMwMCBpdGVyYXRpb25zLCBlYWNoIG9mIHdoaWNoIGNyZWF0ZXMgMTAw
MDAwIGVsZW1lbnRzLgorICAgICAgICBUaGUgYmVuY2htYXJrIG1lYXN1cmVzIGF2ZXJhZ2UsIG1p
biwgbWVkaWFuLCBtYXggYW5kIHN0ZGV2IG9mIGV4ZWN1dGlvbiB0aW1lcworICAgICAgICBvZiB0
aGUgMzAwIGl0ZXJhdGlvbnMuIFRoaXMgd2lsbCB0ZWxsIHVzIHRoZSB3b3JzdC1jYXNlIG92ZXJo
ZWFkIG9mIHRoaXMgY2hhbmdlLgorCisgICAgICAgIEJlZm9yZToKKyAgICAgICAgICBtZWFuPTU5
LjkxbXMsIG1pbj0zOW1zLCBtZWRpYW49NDJtcywgbWF4PTI1OG1zLCBzdGRldj00Ny40OG1zCisK
KyAgICAgICAgQWZ0ZXI6CisgICAgICAgICAgbWVhbj01OC43NW1zLCBtaW49MzVtcywgbWVkaWFu
PTQxbXMsIG1heD0yNTBtcywgc3RkZXY9NDcuMzJtcworCisgICAgICAgIEFzIHNob3duIGFib3Zl
LCBJIGNvdWxkbid0IG9ic2VydmUgYW55IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCisKKyAgICAg
ICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXRX
cmFwcGVySW5PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdjVHJlZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKE1pbm9yR0NXcmFwcGVyVmlzaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNaW5vckdDV3Jh
cHBlclZpc2l0b3I6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250
cm9sbGVyOjpnY1Byb2xvZ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpt
aW5vckdDUHJvbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6Om1ham9y
R0NQcm9sb2d1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKFY4R0NDb250cm9sbGVyKToKKworMjAxMy0wMS0zMSAgS2VudGFybyBIYXJhICA8aGFy
YWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0
MTUwMi4KICAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQxNTAyCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0NDEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggNDE2ZTQ1MDZiZjgy
YmZkZDVhYzQ0ZTRlMjkyOWViMWRlNzRjNDZiZS4uMmRjMTQwNWJiZGQ2MzEzZDlhMWExZjQ1ZTY4
NTk0YzhkMzVkMTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
RGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmgKQEAgLTE2OCw3ICsxNjgsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKG9i
amVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7CiAgICAgICAgIG9iamVjdC0+c2V0V3JhcHBlcih3
cmFwcGVyKTsKLSAgICAgICAgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJGb3JOb2Rl
KG9iamVjdCk7CiAgICAgICAgIHdyYXBwZXIuTWFrZVdlYWsoc3RhdGljX2Nhc3Q8U2NyaXB0V3Jh
cHBhYmxlKj4ob2JqZWN0KSwgd2Vha0NhbGxiYWNrKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCA4ZWEwMDg1NTU3YWFlOTgz
M2EzOTcwMmNhOWM4ZmRkMmQ0ZDkxYmQ3Li4yZTBjMGMyMTcwMTc2ZmMyNzU0ZmY4NzI0MmI3YmNl
NzcxNGNjZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xs
ZXIuY3BwCkBAIC0xNzgsNyArMTc4LDEwMCBAQCBOb2RlKiBWOEdDQ29udHJvbGxlcjo6b3BhcXVl
Um9vdEZvckdDKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWNsYXNzIFdyYXBw
ZXJWaXNpdG9yIDogcHVibGljIHY4OjpQZXJzaXN0ZW50SGFuZGxlVmlzaXRvciB7CitzdGF0aWMg
dm9pZCBnY1RyZWUoTm9kZSogc3RhcnROb2RlKQoreworICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVu
dDx2ODo6VmFsdWU+LCBpbml0aWFsTm9kZVZlY3RvclNpemU+IG5ld1NwYWNlV3JhcHBlcnM7CisK
KyAgICAvLyBXZSB0cmF2ZXJzZSBhIERPTSB0cmVlIGluIHRoZSBERlMgb3JkZXIgc3RhcnRpbmcg
ZnJvbSBzdGFydE5vZGUuCisgICAgLy8gVGhlIHRyYXZlcnNhbCBvcmRlciBkb2VzIG5vdCBtYXR0
ZXIgZm9yIGNvcnJlY3RuZXNzIGJ1dCBkb2VzIG1hdHRlciBmb3IgcGVyZm9ybWFuY2UuCisgICAg
Tm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsKKyAgICAvLyBUbyBtYWtlIGVhY2ggbWlub3IgR0MgdGlt
ZSBib3VuZGVkLCB3ZSBtaWdodCBuZWVkIHRvIGdpdmUgdXAKKyAgICAvLyB0cmF2ZXJzaW5nIGF0
IHNvbWUgcG9pbnQgZm9yIGEgbGFyZ2UgRE9NIHRyZWUuIFRoYXQgYmVpbmcgc2FpZCwKKyAgICAv
LyBJIGNvdWxkIG5vdCBvYnNlcnZlIHRoZSBuZWVkIGV2ZW4gaW4gcGF0aG9sb2dpY2FsIHRlc3Qg
Y2FzZXMuCisgICAgZG8geworICAgICAgICBBU1NFUlQobm9kZSk7CisgICAgICAgIGlmICghbm9k
ZS0+d3JhcHBlcigpLklzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW1hZ2UgZWxlbWVudHMuCisgICAgICAgICAgICAvLyBU
aGUgc2FtZSBzcGVjaWFsIGhhbmRsaW5nIGlzIGluIFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290
Rm9yR0MoKS4KKyAgICAgICAgICAgIC8vIE1heWJlIHNob3VsZCBpbWFnZSBlbGVtZW50cyBiZSBh
Y3RpdmUgRE9NIG5vZGVzPworICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjQ4ODIKKyAgICAgICAgICAgIGlmICgh
bm9kZS0+aXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQygpIHx8IChub2RlLT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6aW1nVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9k
ZSktPmhhc1BlbmRpbmdBY3Rpdml0eSgpKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBmYWN0
IHRoYXQgd2UgZW5jb3VudGVyIGEgbm9kZSB0aGF0IGlzIG5vdCBpbiB0aGUgRWRlbiBzcGFjZQor
ICAgICAgICAgICAgICAgIC8vIGltcGxpZXMgdGhhdCBpdHMgd3JhcHBlciBtaWdodCBiZSBpbiB0
aGUgb2xkIHNwYWNlIG9mIFY4LgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRo
YXQgdGhlIG1pbm9yIEdDIGNhbm5vdCBhbnl3YXkganVkZ2UgcmVhY2hhYmlsaXR5CisgICAgICAg
ICAgICAgICAgLy8gb2YgdGhpcyBET00gdHJlZS4gVGh1cyB3ZSBnaXZlIHVwIHRyYXZlcnNpbmcg
dGhlIERPTSB0cmVlLgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC8vIEEgb25jZSB0cmF2ZXJzZWQgbm9kZSBpcyByZW1vdmVkIGZyb20gdGhlIEVk
ZW4gc3BhY2UuCisgICAgICAgICAgICBub2RlLT5zZXRWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JH
QyhmYWxzZSk7CisgICAgICAgICAgICBuZXdTcGFjZVdyYXBwZXJzLmFwcGVuZChub2RlLT53cmFw
cGVyKCkpOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5maXJzdENoaWxkKCkpIHsKKyAg
ICAgICAgICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoIW5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgICAgIGlmICghbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5l
eHRTaWJsaW5nKCk7CisgICAgfSB3aGlsZSAobm9kZSAhPSBzdGFydE5vZGUpOworCisgICAgLy8g
V2UgY29tcGxldGVkIHRoZSBET00gdHJlZSB0cmF2ZXJzYWwuIEFsbCB3cmFwcGVycyBpbiB0aGUg
RE9NIHRyZWUgYXJlCisgICAgLy8gc3RvcmVkIGluIG5ld1NwYWNlV3JhcHBlcnMgYW5kIGFyZSBl
eHBlY3RlZCB0byBleGlzdCBpbiB0aGUgbmV3IHNwYWNlIG9mIFY4LgorICAgIC8vIFdlIHJlcG9y
dCB0aG9zZSB3cmFwcGVycyB0byBWOCBhcyBhbiBvYmplY3QgZ3JvdXAuCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKTsgaSsrKQorICAgICAgICBuZXdT
cGFjZVdyYXBwZXJzW2ldLk1hcmtQYXJ0aWFsbHlEZXBlbmRlbnQoKTsKKyAgICBpZiAobmV3U3Bh
Y2VXcmFwcGVycy5zaXplKCkgPiAwKQorICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZu
ZXdTcGFjZVdyYXBwZXJzWzBdLCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSk7Cit9CisKKy8vIFJl
Z2FyZGluZyBhIG1pbm9yIEdDIGFsZ29yaXRobSBmb3IgRE9NIG5vZGVzLCBzZWUgdGhpcyBkb2N1
bWVudDoKKy8vIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9wcmVzZW50YXRp
b24vZC8xdWlmd1ZZR05ZVFpEb0dMeUNiN3NYYTdnNDltV05NVzJnYVd2TU41TkxrOC9lZGl0I3Ns
aWRlPWlkLnAKK2NsYXNzIE1pbm9yR0NXcmFwcGVyVmlzaXRvciA6IHB1YmxpYyB2ODo6UGVyc2lz
dGVudEhhbmRsZVZpc2l0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBWaXNpdFBlcnNp
c3RlbnRIYW5kbGUodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdWludDE2X3QgY2xh
c3NJZCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIC8vIEEgbWlub3IgRE9NIEdDIGNhbiBjb2xs
ZWN0IG9ubHkgTm9kZXMuCisgICAgICAgIGlmIChjbGFzc0lkICE9IHY4RE9NTm9kZUNsYXNzSWQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVG8gbWFrZSBtaW5vciBHQyBjeWNs
ZSB0aW1lIGJvdW5kZWQsIHdlIGxpbWl0IHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgaGFuZGxlZAor
ICAgICAgICAvLyBieSBlYWNoIG1pbm9yIEdDIGN5Y2xlIHRvIDEwMDAwLiBUaGlzIHZhbHVlIHdh
cyBzZWxlY3RlZCBzbyB0aGF0IHRoZSBtaW5vcgorICAgICAgICAvLyBHQyBjeWNsZSB0aW1lIGlz
IGJvdW5kZWQgdG8gMjAgbXMgaW4gYSBjYXNlIHdoZXJlIHRoZSBuZXcgc3BhY2Ugc2l6ZQorICAg
ICAgICAvLyBpcyAxNiBNQiBhbmQgaXQgaXMgZnVsbCBvZiB3cmFwcGVycyAod2hpY2ggaXMgYWxt
b3N0IHRoZSB3b3JzdCBjYXNlKS4KKyAgICAgICAgLy8gUHJhY3RpY2FsbHkgc3BlYWtpbmcsIGFz
IGZhciBhcyBJIGNyYXdsZWQgcmVhbCB3ZWIgYXBwbGljYXRpb25zLAorICAgICAgICAvLyB0aGUg
bnVtYmVyIG9mIHdyYXBwZXJzIGhhbmRsZWQgYnkgZWFjaCBtaW5vciBHQyBjeWNsZSBpcyBhdCBt
b3N0IDMwMDAuCisgICAgICAgIC8vIFNvIHRoaXMgbGltaXQgaXMgbWFpbmx5IGZvciBwYXRob2xv
Z2ljYWwgbWljcm8gYmVuY2htYXJrcy4KKyAgICAgICAgY29uc3QgdW5zaWduZWQgd3JhcHBlcnNI
YW5kbGVkQnlFYWNoTWlub3JHQyA9IDEwMDAwOworICAgICAgICBpZiAobV9ub2Rlc0luTmV3U3Bh
Y2Uuc2l6ZSgpID49IHdyYXBwZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0MpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKKyAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpDYXN0KHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01X
cmFwcGVyKHZhbHVlKSk7CisgICAgICAgIEFTU0VSVChWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBw
ZXIpKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IFY4Tm9kZTo6dG9OYXRpdmUod3JhcHBlcik7Cisg
ICAgICAgIG1fbm9kZXNJbk5ld1NwYWNlLmFwcGVuZChub2RlKTsKKyAgICAgICAgbm9kZS0+c2V0
VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0ModHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZCgpCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbm9k
ZXNJbk5ld1NwYWNlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBBU1NFUlQoIW1fbm9kZXNJ
bk5ld1NwYWNlW2ldLT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKKyAgICAgICAgICAgIGlmIChtX25v
ZGVzSW5OZXdTcGFjZVtpXS0+aXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQygpKSAvLyBUaGlz
IGJyYW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICBnY1RyZWUo
bV9ub2Rlc0luTmV3U3BhY2VbaV0pOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAg
IFZlY3RvcjxOb2RlKj4gbV9ub2Rlc0luTmV3U3BhY2U7Cit9OworCitjbGFzcyBNYWpvckdDV3Jh
cHBlclZpc2l0b3IgOiBwdWJsaWMgdjg6OlBlcnNpc3RlbnRIYW5kbGVWaXNpdG9yIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgVmlzaXRQZXJzaXN0ZW50SGFuZGxlKHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4gdmFsdWUsIHVpbnQxNl90IGNsYXNzSWQpIE9WRVJSSURFCiAgICAgewpAQCAt
MjQxLDEwNiArMzM0LDIzIEBAIHByaXZhdGU6CiAgICAgV3JhcHBlckdyb3VwZXIgbV9ncm91cGVy
OwogfTsKIAotLy8gUmVnYXJkaW5nIGEgbWlub3IgR0MgYWxnb3JpdGhtIGZvciBET00gbm9kZXMs
IHNlZSB0aGlzIGRvY3VtZW50OgotLy8gaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUu
Y29tL3ByZXNlbnRhdGlvbi9kLzF1aWZ3VllHTllUWkRvR0x5Q2I3c1hhN2c0OW1XTk1XMmdhV3ZN
TjVOTGs4L2VkaXQjc2xpZGU9aWQucAotLy8KLS8vIG1fZWRlbk5vZGVzIHN0b3JlcyBub2RlcyB0
aGF0IGhhdmUgd3JhcHBlcnMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCBzaW5jZSB0aGUgbGFzdCBt
aW5vci9tYWpvciBHQy4KLVZlY3RvcjxOb2RlKj4qIFY4R0NDb250cm9sbGVyOjptX2VkZW5Ob2Rl
cyA9IDA7Ci0KLXN0YXRpYyB2b2lkIGdjVHJlZShOb2RlKiBzdGFydE5vZGUpCi17Ci0gICAgVmVj
dG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIGluaXRpYWxOb2RlVmVjdG9yU2l6ZT4gbmV3
U3BhY2VXcmFwcGVyczsKLQotICAgIC8vIFdlIHRyYXZlcnNlIGEgRE9NIHRyZWUgaW4gdGhlIERG
UyBvcmRlciBzdGFydGluZyBmcm9tIHN0YXJ0Tm9kZS4KLSAgICAvLyBUaGUgdHJhdmVyc2FsIG9y
ZGVyIGRvZXMgbm90IG1hdHRlciBmb3IgY29ycmVjdG5lc3MgYnV0IGRvZXMgbWF0dGVyIGZvciBw
ZXJmb3JtYW5jZS4KLSAgICBOb2RlKiBub2RlID0gc3RhcnROb2RlOwotICAgIC8vIFRvIG1ha2Ug
ZWFjaCBtaW5vciBHQyB0aW1lIGJvdW5kZWQsIHdlIG1pZ2h0IG5lZWQgdG8gZ2l2ZSB1cAotICAg
IC8vIHRyYXZlcnNpbmcgYXQgc29tZSBwb2ludCBmb3IgYSBsYXJnZSBET00gdHJlZS4gVGhhdCBi
ZWluZyBzYWlkLAotICAgIC8vIEkgY291bGQgbm90IG9ic2VydmUgdGhlIG5lZWQgZXZlbiBpbiBw
YXRob2xvZ2ljYWwgdGVzdCBjYXNlcy4KLSAgICBkbyB7Ci0gICAgICAgIEFTU0VSVChub2RlKTsK
LSAgICAgICAgaWYgKCFub2RlLT53cmFwcGVyKCkuSXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBpbWFnZSBlbGVtZW50cy4K
LSAgICAgICAgICAgIC8vIFRoZSBzYW1lIHNwZWNpYWwgaGFuZGxpbmcgaXMgaW4gVjhHQ0NvbnRy
b2xsZXI6Om9wYXF1ZVJvb3RGb3JHQygpLgotICAgICAgICAgICAgLy8gTWF5YmUgc2hvdWxkIGlt
YWdlIGVsZW1lbnRzIGJlIGFjdGl2ZSBET00gbm9kZXM/Ci0gICAgICAgICAgICAvLyBTZWUgaHR0
cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE2NDg4Mgot
ICAgICAgICAgICAgaWYgKCFub2RlLT5pc1Y4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKCkgfHwg
KG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQqPihub2RlKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gVGhlIGZhY3QgdGhhdCB3ZSBlbmNvdW50ZXIgYSBub2RlIHRoYXQgaXMgbm90IGlu
IHRoZSBFZGVuIHNwYWNlCi0gICAgICAgICAgICAgICAgLy8gaW1wbGllcyB0aGF0IGl0cyB3cmFw
cGVyIG1pZ2h0IGJlIGluIHRoZSBvbGQgc3BhY2Ugb2YgVjguCi0gICAgICAgICAgICAgICAgLy8g
VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgbWlub3IgR0MgY2Fubm90IGFueXdheSBqdWRnZSByZWFj
aGFiaWxpdHkKLSAgICAgICAgICAgICAgICAvLyBvZiB0aGlzIERPTSB0cmVlLiBUaHVzIHdlIGdp
dmUgdXAgdHJhdmVyc2luZyB0aGUgRE9NIHRyZWUuCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gQSBvbmNlIHRyYXZlcnNlZCBub2RlIGlzIHJl
bW92ZWQgZnJvbSB0aGUgRWRlbiBzcGFjZS4KLSAgICAgICAgICAgIG5vZGUtPnNldFY4Q29sbGVj
dGFibGVEdXJpbmdNaW5vckdDKGZhbHNlKTsKLSAgICAgICAgICAgIG5ld1NwYWNlV3JhcHBlcnMu
YXBwZW5kKG5vZGUtPndyYXBwZXIoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmZp
cnN0Q2hpbGQoKSkgewotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHdoaWxlICghbm9kZS0+bmV4
dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKCFub2RlLT5wYXJlbnROb2RlKCkpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgp
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAg
ICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKLSAgICB9IHdoaWxlIChub2RlICE9IHN0YXJ0
Tm9kZSk7Ci0KLSAgICAvLyBXZSBjb21wbGV0ZWQgdGhlIERPTSB0cmVlIHRyYXZlcnNhbC4gQWxs
IHdyYXBwZXJzIGluIHRoZSBET00gdHJlZSBhcmUKLSAgICAvLyBzdG9yZWQgaW4gbmV3U3BhY2VX
cmFwcGVycyBhbmQgYXJlIGV4cGVjdGVkIHRvIGV4aXN0IGluIHRoZSBuZXcgc3BhY2Ugb2YgVjgu
Ci0gICAgLy8gV2UgcmVwb3J0IHRob3NlIHdyYXBwZXJzIHRvIFY4IGFzIGFuIG9iamVjdCBncm91
cC4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpOyBp
KyspCi0gICAgICAgIG5ld1NwYWNlV3JhcHBlcnNbaV0uTWFya1BhcnRpYWxseURlcGVuZGVudCgp
OwotICAgIGlmIChuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSA+IDApCi0gICAgICAgIHY4OjpWODo6
QWRkT2JqZWN0R3JvdXAoJm5ld1NwYWNlV3JhcHBlcnNbMF0sIG5ld1NwYWNlV3JhcHBlcnMuc2l6
ZSgpKTsKLX0KLQotdm9pZCBWOEdDQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV3JhcHBlckZvck5vZGUo
Tm9kZSogbm9kZSkKLXsKLSAgICAvLyBUbyBtYWtlIG1pbm9yIEdDIGN5Y2xlIHRpbWUgYm91bmRl
ZCwgd2UgbGltaXQgdGhlIG51bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkCi0gICAgLy8gYnkgZWFj
aCBtaW5vciBHQyBjeWNsZSB0byAxMDAwMC4gVGhpcyB2YWx1ZSB3YXMgc2VsZWN0ZWQgc28gdGhh
dCB0aGUgbWlub3IKLSAgICAvLyBHQyBjeWNsZSB0aW1lIGlzIGJvdW5kZWQgdG8gMjAgbXMgaW4g
YSBjYXNlIHdoZXJlIHRoZSBuZXcgc3BhY2Ugc2l6ZQotICAgIC8vIGlzIDE2IE1CIGFuZCBpdCBp
cyBmdWxsIG9mIHdyYXBwZXJzICh3aGljaCBpcyBhbG1vc3QgdGhlIHdvcnN0IGNhc2UpLgotICAg
IC8vIFByYWN0aWNhbGx5IHNwZWFraW5nLCBhcyBmYXIgYXMgSSBjcmF3bGVkIHJlYWwgd2ViIGFw
cGxpY2F0aW9ucywKLSAgICAvLyB0aGUgbnVtYmVyIG9mIHdyYXBwZXJzIGhhbmRsZWQgYnkgZWFj
aCBtaW5vciBHQyBjeWNsZSBpcyBhdCBtb3N0IDMwMDAuCi0gICAgLy8gU28gdGhpcyBsaW1pdCBp
cyBtYWlubHkgZm9yIHBhdGhvbG9naWNhbCBtaWNybyBiZW5jaG1hcmtzLgotICAgIGNvbnN0IHVu
c2lnbmVkIHdyYXBwZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0MgPSAxMDAwMDsKLSAgICBBU1NFUlQo
IW5vZGUtPndyYXBwZXIoKS5Jc0VtcHR5KCkpOwotICAgIGlmICghbV9lZGVuTm9kZXMpCi0gICAg
ICAgIG1fZWRlbk5vZGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxOb2RlKj4pLmxlYWtQdHIoKTsK
LSAgICBpZiAobV9lZGVuTm9kZXMtPnNpemUoKSA8PSB3cmFwcGVyc0hhbmRsZWRCeUVhY2hNaW5v
ckdDKSB7Ci0gICAgICAgIC8vIEEgbm9kZSBvZiBhIG5ld2x5IGNyZWF0ZWQgd3JhcHBlciBpcyBw
dXQgaW50byB0aGUgRWRlbiBzcGFjZS4KLSAgICAgICAgbV9lZGVuTm9kZXMtPmFwcGVuZChub2Rl
KTsKLSAgICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0ModHJ1ZSk7Ci0g
ICAgfQotfQotCiB2b2lkIFY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKHY4OjpHQ1R5cGUgdHlw
ZSwgdjg6OkdDQ2FsbGJhY2tGbGFncyBmbGFncykKIHsKICAgICBpZiAodHlwZSA9PSB2ODo6a0dD
VHlwZVNjYXZlbmdlKQogICAgICAgICBtaW5vckdDUHJvbG9ndWUoKTsKICAgICBlbHNlIGlmICh0
eXBlID09IHY4OjprR0NUeXBlTWFya1N3ZWVwQ29tcGFjdCkKICAgICAgICAgbWFqb3JHQ1Byb2xv
Z3VlKCk7Ci0KLSAgICBpZiAoaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpICYmIG1fZWRlbk5vZGVz
KSB7Ci0gICAgICAgIC8vIFRoZSBFZGVuIHNwYWNlIGlzIGNsZWFyZWQgYXQgZXZlcnkgbWlub3Iv
bWFqb3IgR0MuCi0gICAgICAgIG1fZWRlbk5vZGVzLT5jbGVhcigpOwotICAgIH0KIH0KIAogdm9p
ZCBWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKCkKIHsKICAgICBUUkFDRV9FVkVOVF9C
RUdJTjAoInY4IiwgIkdDIik7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpICYm
IG1fZWRlbk5vZGVzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lZGVuTm9k
ZXMtPnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZWRlbk5vZGVzLT5hdChp
KS0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAgICAgICBpZiAobV9lZGVuTm9kZXMtPmF0
KGkpLT5pc1Y4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKCkpIC8vIFRoaXMgYnJhbmNoIGlzIGp1
c3QgZm9yIHBlcmZvcm1hbmNlLgotICAgICAgICAgICAgICAgIGdjVHJlZShtX2VkZW5Ob2Rlcy0+
YXQoaSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKwor
ICAgIE1pbm9yR0NXcmFwcGVyVmlzaXRvciB2aXNpdG9yOworICAgIHY4OjpWODo6VmlzaXRIYW5k
bGVzRm9yUGFydGlhbERlcGVuZGVuY2Uodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgJnZpc2l0
b3IpOworICAgIHZpc2l0b3Iubm90aWZ5RmluaXNoZWQoKTsKIH0KIAogLy8gQ3JlYXRlIG9iamVj
dCBncm91cHMgZm9yIERPTSB0cmVlIG5vZGVzLgpAQCAtMzUwLDcgKzM2MCw3IEBAIHZvaWQgVjhH
Q0NvbnRyb2xsZXI6Om1ham9yR0NQcm9sb2d1ZSgpCiAKICAgICB2ODo6SGFuZGxlU2NvcGUgc2Nv
cGU7CiAKLSAgICBXcmFwcGVyVmlzaXRvciB2aXNpdG9yOworICAgIE1ham9yR0NXcmFwcGVyVmlz
aXRvciB2aXNpdG9yOwogICAgIHY4OjpWODo6VmlzaXRIYW5kbGVzV2l0aENsYXNzSWRzKCZ2aXNp
dG9yKTsKICAgICB2aXNpdG9yLm5vdGlmeUZpbmlzaGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCmluZGV4IGRlZjEyYzY1YWY0OGUyMjdhYmZjYTEz
YzA3ODQ2MGU1YWRjN2Y1NGMuLmQ3NjdjOTY4M2Q5Y2UxZDAzOWZmZGUzNDRmNTI1ZDg4OGMxMDU1
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaApAQCAt
NTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsK
IAogICAgIHN0YXRpYyBOb2RlKiBvcGFxdWVSb290Rm9yR0MoTm9kZSopOwotICAgIHN0YXRpYyB2
b2lkIGRpZENyZWF0ZVdyYXBwZXJGb3JOb2RlKE5vZGUqKTsKIAogcHJpdmF0ZToKICAgICBzdGF0
aWMgVmVjdG9yPE5vZGUqPiogbV9lZGVuTm9kZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185952</attachid>
            <date>2013-01-31 23:13:31 -0800</date>
            <delta_ts>2013-02-04 05:00:23 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-108579-20130201161014.patch</filename>
            <type>text/plain</type>
            <size>14019</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZiNGI1YWQ3MWJmYTI2
MjFjMjJmNDZmNDY1YTFjNTlkOWU1N2NhMy4uM2ZjMDU1NWM2MTZhN2Q0OWVlYThlYTc0NGVkMWQy
MzI4N2QyOGY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDEzLTAxLTMxICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIFJlbW92ZSBW
OEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCisKKyAgICAgICAgQ3VycmVudGx5IFY4R0NDb250cm9sbGVyOjptX2VkZW5Ob2RlcyBzdG9y
ZXMgYSBsaXN0IG9mIG5vZGVzIHdob3NlCisgICAgICAgIHdyYXBwZXJzIGhhdmUgYmVlbiBjcmVh
dGVkIHNpbmNlIHRoZSBsYXRlc3QgR0MuIFRoZSByZWFzb24gd2h5IHdlCisgICAgICAgIG5lZWRl
ZCBtX2VkZW5Ob2RlcyBpcyB0aGF0IHRoZXJlIHdhcyBubyB3YXkgdG8ga25vdyBhIGxpc3Qgb2Yg
d3JhcHBlcnMKKyAgICAgICAgaW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4gQnkgdXNpbmcgbV9lZGVu
Tm9kZXMsIHdlIGhhZCBiZWVuIGFwcHJveGltYXRpbmcKKyAgICAgICAgJ3dyYXBwZXJzIGluIHRo
ZSBuZXcgc3BhY2UnIGJ5ICd3cmFwcGVycyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIHNpbmNlCisg
ICAgICAgIHRoZSBsYXRlc3QgR0MnLgorCisgICAgICAgIE5vdyBWOCBwcm92aWRlcyBWaXNpdEhh
bmRsZXNGb3JQYXJ0aWFsRGVwZW5kZW5jZSgpLCB3aXRoIHdoaWNoIFdlYktpdAorICAgICAgICBj
YW4ga25vdyBhIGxpc3Qgb2Ygd3JhcHBlcnMgaW4gdGhlIG5ldyBzcGFjZS4gQnkgdXNpbmcgdGhl
IEFQSSwgd2UgY2FuCisgICAgICAgIHJlbW92ZSBWOEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMu
IFRoZSBiZW5lZml0IGlzIHRoYXQgKDEpIHdlIG5vIGxvbmdlcgorICAgICAgICBuZWVkIHRvIGtl
ZXAgbV9lZGVuTm9kZXMgYW5kIHRoYXQgKDIpIGl0IGVuYWJsZXMgbW9yZSBwcmVjaXNlIG1pbm9y
CisgICAgICAgIERPTSBHQyAoUmVtZW1iZXIgdGhhdCBtX2VkZW5Ob2RlcyB3YXMganVzdCBhbiBh
cHByb3hpbWF0aW9uKS4KKworICAgICAgICBQZXJmb3JtYW5jZSBiZW5jaG1hcms6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTE4NTk0MAorICAgICAgICBUaGUgYmVu
Y2htYXJrIHJ1bnMgMzAwIGl0ZXJhdGlvbnMsIGVhY2ggb2Ygd2hpY2ggY3JlYXRlcyAxMDAwMDAg
ZWxlbWVudHMuCisgICAgICAgIFRoZSBiZW5jaG1hcmsgbWVhc3VyZXMgYXZlcmFnZSwgbWluLCBt
ZWRpYW4sIG1heCBhbmQgc3RkZXYgb2YgZXhlY3V0aW9uIHRpbWVzCisgICAgICAgIG9mIHRoZSAz
MDAgaXRlcmF0aW9ucy4gVGhpcyB3aWxsIHRlbGwgdXMgdGhlIHdvcnN0LWNhc2Ugb3ZlcmhlYWQg
b2YgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgQmVmb3JlOgorICAgICAgICAgIG1lYW49NTkuOTFt
cywgbWluPTM5bXMsIG1lZGlhbj00Mm1zLCBtYXg9MjU4bXMsIHN0ZGV2PTQ3LjQ4bXMKKworICAg
ICAgICBBZnRlcjoKKyAgICAgICAgICBtZWFuPTU4Ljc1bXMsIG1pbj0zNW1zLCBtZWRpYW49NDFt
cywgbWF4PTI1MG1zLCBzdGRldj00Ny4zMm1zCisKKyAgICAgICAgQXMgc2hvd24gYWJvdmUsIEkg
Y291bGRuJ3Qgb2JzZXJ2ZSBhbnkgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKworICAgICAgICBO
byB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldFdyYXBw
ZXJJbk9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
TWlub3JHQ1dyYXBwZXJWaXNpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbm9yR0NXcmFwcGVy
VmlzaXRvcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xs
ZXI6OmdjUHJvbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6Om1pbm9y
R0NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bWFqb3JHQ1By
b2xvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oOgorICAgICAg
ICAoVjhHQ0NvbnRyb2xsZXIpOgorCisyMDEzLTAxLTMxICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQxNTAy
LgogICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNDE1MDIKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODQ0MQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCA0MTZlNDUwNmJmODJiZmRk
NWFjNDRlNGUyOTI5ZWIxZGU3NGM0NmJlLi5hYmMyMGM2NTNkMzJmNzNhYzY1MTQ5ODJiODAxNTQ0
NzMwZWFkMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApA
QCAtMTY0LDEzICsxNjQsNiBAQCBwcml2YXRlOgogICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIo
d3JhcHBlcik7CiAgICAgICAgIHdyYXBwZXIuTWFrZVdlYWsob2JqZWN0LCB3ZWFrQ2FsbGJhY2sp
OwogICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3QoTm9kZSogb2JqZWN0
LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG9iamVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAgIG9iamVjdC0+c2V0V3Jh
cHBlcih3cmFwcGVyKTsKLSAgICAgICAgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJG
b3JOb2RlKG9iamVjdCk7Ci0gICAgICAgIHdyYXBwZXIuTWFrZVdlYWsoc3RhdGljX2Nhc3Q8U2Ny
aXB0V3JhcHBhYmxlKj4ob2JqZWN0KSwgd2Vha0NhbGxiYWNrKTsKLSAgICB9CiAKICAgICBzdGF0
aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCogY29u
dGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cAppbmRleCA4ZWEwMDg1NTU3YWFlOTgzM2EzOTcwMmNhOWM4ZmRkMmQ0ZDkxYmQ3Li5mYTAzOWVh
OWE0MTI4OWQxNWY2ODMxZGJjOWQyMWYxMDEyNjk0NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCkBAIC0xNzgsNyArMTc4LDk4IEBAIE5vZGUq
IFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9yR0MoTm9kZSogbm9kZSkKICAgICByZXR1cm4g
bm9kZTsKIH0KIAotY2xhc3MgV3JhcHBlclZpc2l0b3IgOiBwdWJsaWMgdjg6OlBlcnNpc3RlbnRI
YW5kbGVWaXNpdG9yIHsKK3N0YXRpYyB2b2lkIGdjVHJlZShOb2RlKiBzdGFydE5vZGUpCit7Cisg
ICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIGluaXRpYWxOb2RlVmVjdG9yU2l6
ZT4gbmV3U3BhY2VXcmFwcGVyczsKKworICAgIC8vIFdlIHRyYXZlcnNlIGEgRE9NIHRyZWUgaW4g
dGhlIERGUyBvcmRlciBzdGFydGluZyBmcm9tIHN0YXJ0Tm9kZS4KKyAgICAvLyBUaGUgdHJhdmVy
c2FsIG9yZGVyIGRvZXMgbm90IG1hdHRlciBmb3IgY29ycmVjdG5lc3MgYnV0IGRvZXMgbWF0dGVy
IGZvciBwZXJmb3JtYW5jZS4KKyAgICBOb2RlKiBub2RlID0gc3RhcnROb2RlOworICAgIC8vIFRv
IG1ha2UgZWFjaCBtaW5vciBHQyB0aW1lIGJvdW5kZWQsIHdlIG1pZ2h0IG5lZWQgdG8gZ2l2ZSB1
cAorICAgIC8vIHRyYXZlcnNpbmcgYXQgc29tZSBwb2ludCBmb3IgYSBsYXJnZSBET00gdHJlZS4g
VGhhdCBiZWluZyBzYWlkLAorICAgIC8vIEkgY291bGQgbm90IG9ic2VydmUgdGhlIG5lZWQgZXZl
biBpbiBwYXRob2xvZ2ljYWwgdGVzdCBjYXNlcy4KKyAgICBkbyB7CisgICAgICAgIEFTU0VSVChu
b2RlKTsKKyAgICAgICAgaWYgKCFub2RlLT53cmFwcGVyKCkuSXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBpbWFnZSBlbGVt
ZW50cy4KKyAgICAgICAgICAgIC8vIFRoZSBzYW1lIHNwZWNpYWwgaGFuZGxpbmcgaXMgaW4gVjhH
Q0NvbnRyb2xsZXI6Om9wYXF1ZVJvb3RGb3JHQygpLgorICAgICAgICAgICAgLy8gTWF5YmUgc2hv
dWxkIGltYWdlIGVsZW1lbnRzIGJlIGFjdGl2ZSBET00gbm9kZXM/CisgICAgICAgICAgICAvLyBT
ZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE2
NDg4MgorICAgICAgICAgICAgaWYgKCFub2RlLT5pc1Y4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdD
KCkgfHwgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpICYmIHN0YXRpY19jYXN0
PEhUTUxJbWFnZUVsZW1lbnQqPihub2RlKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpKSB7CisgICAg
ICAgICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG5vdCBpbiB0aGUgbmV3IHNwYWNlIG9mIFY4LiBU
aGlzIGluZGljYXRlcyB0aGF0CisgICAgICAgICAgICAgICAgLy8gdGhlIG1pbm9yIEdDIGNhbm5v
dCBhbnl3YXkganVkZ2UgcmVhY2hhYmlsaXR5IG9mIHRoaXMgRE9NIHRyZWUuCisgICAgICAgICAg
ICAgICAgLy8gVGh1cyB3ZSBnaXZlIHVwIHRyYXZlcnNpbmcgdGhlIERPTSB0cmVlLgorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vZGUtPnNldFY4
Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKGZhbHNlKTsKKyAgICAgICAgICAgIG5ld1NwYWNlV3Jh
cHBlcnMuYXBwZW5kKG5vZGUtPndyYXBwZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5v
ZGUtPmZpcnN0Q2hpbGQoKSkgeworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQo
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHdoaWxlICghbm9k
ZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKCFub2RlLT5wYXJlbnROb2RlKCkp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50
Tm9kZSgpOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCisgICAg
ICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICB9IHdoaWxlIChub2RlICE9
IHN0YXJ0Tm9kZSk7CisKKyAgICAvLyBXZSBjb21wbGV0ZWQgdGhlIERPTSB0cmVlIHRyYXZlcnNh
bC4gQWxsIHdyYXBwZXJzIGluIHRoZSBET00gdHJlZSBhcmUKKyAgICAvLyBzdG9yZWQgaW4gbmV3
U3BhY2VXcmFwcGVycyBhbmQgYXJlIGV4cGVjdGVkIHRvIGV4aXN0IGluIHRoZSBuZXcgc3BhY2Ug
b2YgVjguCisgICAgLy8gV2UgcmVwb3J0IHRob3NlIHdyYXBwZXJzIHRvIFY4IGFzIGFuIG9iamVj
dCBncm91cC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1NwYWNlV3JhcHBlcnMuc2l6
ZSgpOyBpKyspCisgICAgICAgIG5ld1NwYWNlV3JhcHBlcnNbaV0uTWFya1BhcnRpYWxseURlcGVu
ZGVudCgpOworICAgIGlmIChuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSA+IDApCisgICAgICAgIHY4
OjpWODo6QWRkT2JqZWN0R3JvdXAoJm5ld1NwYWNlV3JhcHBlcnNbMF0sIG5ld1NwYWNlV3JhcHBl
cnMuc2l6ZSgpKTsKK30KKworLy8gUmVnYXJkaW5nIGEgbWlub3IgR0MgYWxnb3JpdGhtIGZvciBE
T00gbm9kZXMsIHNlZSB0aGlzIGRvY3VtZW50OgorLy8gaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20v
YS9nb29nbGUuY29tL3ByZXNlbnRhdGlvbi9kLzF1aWZ3VllHTllUWkRvR0x5Q2I3c1hhN2c0OW1X
Tk1XMmdhV3ZNTjVOTGs4L2VkaXQjc2xpZGU9aWQucAorY2xhc3MgTWlub3JHQ1dyYXBwZXJWaXNp
dG9yIDogcHVibGljIHY4OjpQZXJzaXN0ZW50SGFuZGxlVmlzaXRvciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIFZpc2l0UGVyc2lzdGVudEhhbmRsZSh2ODo6UGVyc2lzdGVudDx2ODo6VmFs
dWU+IHZhbHVlLCB1aW50MTZfdCBjbGFzc0lkKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgLy8g
QSBtaW5vciBET00gR0MgY2FuIGNvbGxlY3Qgb25seSBOb2Rlcy4KKyAgICAgICAgaWYgKGNsYXNz
SWQgIT0gdjhET01Ob2RlQ2xhc3NJZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAv
LyBUbyBtYWtlIG1pbm9yIEdDIGN5Y2xlIHRpbWUgYm91bmRlZCwgd2UgbGltaXQgdGhlIG51bWJl
ciBvZiB3cmFwcGVycyBoYW5kbGVkCisgICAgICAgIC8vIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUg
dG8gMTAwMDAuIFRoaXMgdmFsdWUgd2FzIHNlbGVjdGVkIHNvIHRoYXQgdGhlIG1pbm9yCisgICAg
ICAgIC8vIEdDIGN5Y2xlIHRpbWUgaXMgYm91bmRlZCB0byAyMCBtcyBpbiBhIGNhc2Ugd2hlcmUg
dGhlIG5ldyBzcGFjZSBzaXplCisgICAgICAgIC8vIGlzIDE2IE1CIGFuZCBpdCBpcyBmdWxsIG9m
IHdyYXBwZXJzICh3aGljaCBpcyBhbG1vc3QgdGhlIHdvcnN0IGNhc2UpLgorICAgICAgICAvLyBQ
cmFjdGljYWxseSBzcGVha2luZywgYXMgZmFyIGFzIEkgY3Jhd2xlZCByZWFsIHdlYiBhcHBsaWNh
dGlvbnMsCisgICAgICAgIC8vIHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgaGFuZGxlZCBieSBlYWNo
IG1pbm9yIEdDIGN5Y2xlIGlzIGF0IG1vc3QgMzAwMC4KKyAgICAgICAgLy8gU28gdGhpcyBsaW1p
dCBpcyBtYWlubHkgZm9yIHBhdGhvbG9naWNhbCBtaWNybyBiZW5jaG1hcmtzLgorICAgICAgICBj
b25zdCB1bnNpZ25lZCB3cmFwcGVyc0hhbmRsZWRCeUVhY2hNaW5vckdDID0gMTAwMDA7CisgICAg
ICAgIGlmIChtX25vZGVzSW5OZXdTcGFjZS5zaXplKCkgPj0gd3JhcHBlcnNIYW5kbGVkQnlFYWNo
TWlub3JHQykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQodmFsdWUtPklz
T2JqZWN0KCkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOworICAgICAgICBBU1NFUlQo
VjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIodmFsdWUpKTsKKyAgICAgICAgQVNTRVJUKFY4
Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlcikpOworICAgICAgICBOb2RlKiBub2RlID0gVjhOb2Rl
Ojp0b05hdGl2ZSh3cmFwcGVyKTsKKyAgICAgICAgbV9ub2Rlc0luTmV3U3BhY2UuYXBwZW5kKG5v
ZGUpOworICAgICAgICBub2RlLT5zZXRWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQyh0cnVlKTsK
KyAgICB9CisKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkKKyAgICB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9ub2Rlc0luTmV3U3BhY2Uuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgICAgIEFTU0VSVCghbV9ub2Rlc0luTmV3U3BhY2VbaV0tPndyYXBwZXIoKS5Jc0VtcHR5KCkp
OworICAgICAgICAgICAgaWYgKG1fbm9kZXNJbk5ld1NwYWNlW2ldLT5pc1Y4Q29sbGVjdGFibGVE
dXJpbmdNaW5vckdDKCkpIC8vIFRoaXMgYnJhbmNoIGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLgor
ICAgICAgICAgICAgICAgIGdjVHJlZShtX25vZGVzSW5OZXdTcGFjZVtpXSk7CisgICAgICAgIH0K
KyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPE5vZGUqPiBtX25vZGVzSW5OZXdTcGFjZTsK
K307CisKK2NsYXNzIE1ham9yR0NXcmFwcGVyVmlzaXRvciA6IHB1YmxpYyB2ODo6UGVyc2lzdGVu
dEhhbmRsZVZpc2l0b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBWaXNpdFBlcnNpc3Rl
bnRIYW5kbGUodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdWludDE2X3QgY2xhc3NJ
ZCkgT1ZFUlJJREUKICAgICB7CkBAIC0yNDEsMTA2ICszMzIsMjMgQEAgcHJpdmF0ZToKICAgICBX
cmFwcGVyR3JvdXBlciBtX2dyb3VwZXI7CiB9OwogCi0vLyBSZWdhcmRpbmcgYSBtaW5vciBHQyBh
bGdvcml0aG0gZm9yIERPTSBub2Rlcywgc2VlIHRoaXMgZG9jdW1lbnQ6Ci0vLyBodHRwczovL2Rv
Y3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vcHJlc2VudGF0aW9uL2QvMXVpZndWWUdOWVRaRG9H
THlDYjdzWGE3ZzQ5bVdOTVcyZ2FXdk1ONU5MazgvZWRpdCNzbGlkZT1pZC5wCi0vLwotLy8gbV9l
ZGVuTm9kZXMgc3RvcmVzIG5vZGVzIHRoYXQgaGF2ZSB3cmFwcGVycyB0aGF0IGhhdmUgYmVlbiBj
cmVhdGVkIHNpbmNlIHRoZSBsYXN0IG1pbm9yL21ham9yIEdDLgotVmVjdG9yPE5vZGUqPiogVjhH
Q0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVzID0gMDsKLQotc3RhdGljIHZvaWQgZ2NUcmVlKE5vZGUq
IHN0YXJ0Tm9kZSkKLXsKLSAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgaW5p
dGlhbE5vZGVWZWN0b3JTaXplPiBuZXdTcGFjZVdyYXBwZXJzOwotCi0gICAgLy8gV2UgdHJhdmVy
c2UgYSBET00gdHJlZSBpbiB0aGUgREZTIG9yZGVyIHN0YXJ0aW5nIGZyb20gc3RhcnROb2RlLgot
ICAgIC8vIFRoZSB0cmF2ZXJzYWwgb3JkZXIgZG9lcyBub3QgbWF0dGVyIGZvciBjb3JyZWN0bmVz
cyBidXQgZG9lcyBtYXR0ZXIgZm9yIHBlcmZvcm1hbmNlLgotICAgIE5vZGUqIG5vZGUgPSBzdGFy
dE5vZGU7Ci0gICAgLy8gVG8gbWFrZSBlYWNoIG1pbm9yIEdDIHRpbWUgYm91bmRlZCwgd2UgbWln
aHQgbmVlZCB0byBnaXZlIHVwCi0gICAgLy8gdHJhdmVyc2luZyBhdCBzb21lIHBvaW50IGZvciBh
IGxhcmdlIERPTSB0cmVlLiBUaGF0IGJlaW5nIHNhaWQsCi0gICAgLy8gSSBjb3VsZCBub3Qgb2Jz
ZXJ2ZSB0aGUgbmVlZCBldmVuIGluIHBhdGhvbG9naWNhbCB0ZXN0IGNhc2VzLgotICAgIGRvIHsK
LSAgICAgICAgQVNTRVJUKG5vZGUpOwotICAgICAgICBpZiAoIW5vZGUtPndyYXBwZXIoKS5Jc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHNwZWNpYWwgaGFuZGxp
bmcgZm9yIGltYWdlIGVsZW1lbnRzLgotICAgICAgICAgICAgLy8gVGhlIHNhbWUgc3BlY2lhbCBo
YW5kbGluZyBpcyBpbiBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdDKCkuCi0gICAgICAg
ICAgICAvLyBNYXliZSBzaG91bGQgaW1hZ2UgZWxlbWVudHMgYmUgYWN0aXZlIERPTSBub2Rlcz8K
LSAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lz
c3Vlcy9kZXRhaWw/aWQ9MTY0ODgyCi0gICAgICAgICAgICBpZiAoIW5vZGUtPmlzVjhDb2xsZWN0
YWJsZUR1cmluZ01pbm9yR0MoKSB8fCAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1Rh
ZykgJiYgc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUpLT5oYXNQZW5kaW5nQWN0
aXZpdHkoKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IHdlIGVuY291bnRl
ciBhIG5vZGUgdGhhdCBpcyBub3QgaW4gdGhlIEVkZW4gc3BhY2UKLSAgICAgICAgICAgICAgICAv
LyBpbXBsaWVzIHRoYXQgaXRzIHdyYXBwZXIgbWlnaHQgYmUgaW4gdGhlIG9sZCBzcGFjZSBvZiBW
OC4KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSBtaW5vciBHQyBj
YW5ub3QgYW55d2F5IGp1ZGdlIHJlYWNoYWJpbGl0eQotICAgICAgICAgICAgICAgIC8vIG9mIHRo
aXMgRE9NIHRyZWUuIFRodXMgd2UgZ2l2ZSB1cCB0cmF2ZXJzaW5nIHRoZSBET00gdHJlZS4KLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBBIG9u
Y2UgdHJhdmVyc2VkIG5vZGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBFZGVuIHNwYWNlLgotICAgICAg
ICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0MoZmFsc2UpOwotICAgICAg
ICAgICAgbmV3U3BhY2VXcmFwcGVycy5hcHBlbmQobm9kZS0+d3JhcHBlcigpKTsKLSAgICAgICAg
fQotICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICBub2RlID0g
bm9kZS0+Zmlyc3RDaGlsZCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoIW5v
ZGUtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG5v
ZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPnBh
cmVudE5vZGUoKSkKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOwotICAg
IH0gd2hpbGUgKG5vZGUgIT0gc3RhcnROb2RlKTsKLQotICAgIC8vIFdlIGNvbXBsZXRlZCB0aGUg
RE9NIHRyZWUgdHJhdmVyc2FsLiBBbGwgd3JhcHBlcnMgaW4gdGhlIERPTSB0cmVlIGFyZQotICAg
IC8vIHN0b3JlZCBpbiBuZXdTcGFjZVdyYXBwZXJzIGFuZCBhcmUgZXhwZWN0ZWQgdG8gZXhpc3Qg
aW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4KLSAgICAvLyBXZSByZXBvcnQgdGhvc2Ugd3JhcHBlcnMg
dG8gVjggYXMgYW4gb2JqZWN0IGdyb3VwLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3
U3BhY2VXcmFwcGVycy5zaXplKCk7IGkrKykKLSAgICAgICAgbmV3U3BhY2VXcmFwcGVyc1tpXS5N
YXJrUGFydGlhbGx5RGVwZW5kZW50KCk7Ci0gICAgaWYgKG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgp
ID4gMCkKLSAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cCgmbmV3U3BhY2VXcmFwcGVyc1sw
XSwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCkpOwotfQotCi12b2lkIFY4R0NDb250cm9sbGVyOjpk
aWRDcmVhdGVXcmFwcGVyRm9yTm9kZShOb2RlKiBub2RlKQotewotICAgIC8vIFRvIG1ha2UgbWlu
b3IgR0MgY3ljbGUgdGltZSBib3VuZGVkLCB3ZSBsaW1pdCB0aGUgbnVtYmVyIG9mIHdyYXBwZXJz
IGhhbmRsZWQKLSAgICAvLyBieSBlYWNoIG1pbm9yIEdDIGN5Y2xlIHRvIDEwMDAwLiBUaGlzIHZh
bHVlIHdhcyBzZWxlY3RlZCBzbyB0aGF0IHRoZSBtaW5vcgotICAgIC8vIEdDIGN5Y2xlIHRpbWUg
aXMgYm91bmRlZCB0byAyMCBtcyBpbiBhIGNhc2Ugd2hlcmUgdGhlIG5ldyBzcGFjZSBzaXplCi0g
ICAgLy8gaXMgMTYgTUIgYW5kIGl0IGlzIGZ1bGwgb2Ygd3JhcHBlcnMgKHdoaWNoIGlzIGFsbW9z
dCB0aGUgd29yc3QgY2FzZSkuCi0gICAgLy8gUHJhY3RpY2FsbHkgc3BlYWtpbmcsIGFzIGZhciBh
cyBJIGNyYXdsZWQgcmVhbCB3ZWIgYXBwbGljYXRpb25zLAotICAgIC8vIHRoZSBudW1iZXIgb2Yg
d3JhcHBlcnMgaGFuZGxlZCBieSBlYWNoIG1pbm9yIEdDIGN5Y2xlIGlzIGF0IG1vc3QgMzAwMC4K
LSAgICAvLyBTbyB0aGlzIGxpbWl0IGlzIG1haW5seSBmb3IgcGF0aG9sb2dpY2FsIG1pY3JvIGJl
bmNobWFya3MuCi0gICAgY29uc3QgdW5zaWduZWQgd3JhcHBlcnNIYW5kbGVkQnlFYWNoTWlub3JH
QyA9IDEwMDAwOwotICAgIEFTU0VSVCghbm9kZS0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAg
aWYgKCFtX2VkZW5Ob2RlcykKLSAgICAgICAgbV9lZGVuTm9kZXMgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPE5vZGUqPikubGVha1B0cigpOwotICAgIGlmIChtX2VkZW5Ob2Rlcy0+c2l6ZSgpIDw9IHdy
YXBwZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0MpIHsKLSAgICAgICAgLy8gQSBub2RlIG9mIGEgbmV3
bHkgY3JlYXRlZCB3cmFwcGVyIGlzIHB1dCBpbnRvIHRoZSBFZGVuIHNwYWNlLgotICAgICAgICBt
X2VkZW5Ob2Rlcy0+YXBwZW5kKG5vZGUpOwotICAgICAgICBub2RlLT5zZXRWOENvbGxlY3RhYmxl
RHVyaW5nTWlub3JHQyh0cnVlKTsKLSAgICB9Ci19Ci0KIHZvaWQgVjhHQ0NvbnRyb2xsZXI6Omdj
UHJvbG9ndWUodjg6OkdDVHlwZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQogewog
ICAgIGlmICh0eXBlID09IHY4OjprR0NUeXBlU2NhdmVuZ2UpCiAgICAgICAgIG1pbm9yR0NQcm9s
b2d1ZSgpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVNYXJrU3dlZXBDb21wYWN0
KQogICAgICAgICBtYWpvckdDUHJvbG9ndWUoKTsKLQotICAgIGlmIChpc01haW5UaHJlYWRPckdD
VGhyZWFkKCkgJiYgbV9lZGVuTm9kZXMpIHsKLSAgICAgICAgLy8gVGhlIEVkZW4gc3BhY2UgaXMg
Y2xlYXJlZCBhdCBldmVyeSBtaW5vci9tYWpvciBHQy4KLSAgICAgICAgbV9lZGVuTm9kZXMtPmNs
ZWFyKCk7Ci0gICAgfQogfQogCiB2b2lkIFY4R0NDb250cm9sbGVyOjptaW5vckdDUHJvbG9ndWUo
KQogewogICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgidjgiLCAiR0MiKTsKIAotICAgIGlmIChpc01h
aW5UaHJlYWRPckdDVGhyZWFkKCkgJiYgbV9lZGVuTm9kZXMpIHsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2VkZW5Ob2Rlcy0+c2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIEFT
U0VSVCghbV9lZGVuTm9kZXMtPmF0KGkpLT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKLSAgICAgICAg
ICAgIGlmIChtX2VkZW5Ob2Rlcy0+YXQoaSktPmlzVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0Mo
KSkgLy8gVGhpcyBicmFuY2ggaXMganVzdCBmb3IgcGVyZm9ybWFuY2UuCi0gICAgICAgICAgICAg
ICAgZ2NUcmVlKG1fZWRlbk5vZGVzLT5hdChpKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdjg6
OkhhbmRsZVNjb3BlIHNjb3BlOworCisgICAgTWlub3JHQ1dyYXBwZXJWaXNpdG9yIHZpc2l0b3I7
CisgICAgdjg6OlY4OjpWaXNpdEhhbmRsZXNGb3JQYXJ0aWFsRGVwZW5kZW5jZSh2ODo6SXNvbGF0
ZTo6R2V0Q3VycmVudCgpLCAmdmlzaXRvcik7CisgICAgdmlzaXRvci5ub3RpZnlGaW5pc2hlZCgp
OwogfQogCiAvLyBDcmVhdGUgb2JqZWN0IGdyb3VwcyBmb3IgRE9NIHRyZWUgbm9kZXMuCkBAIC0z
NTAsNyArMzU4LDcgQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6bWFqb3JHQ1Byb2xvZ3VlKCkKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIFdyYXBwZXJWaXNpdG9yIHZpc2l0b3I7
CisgICAgTWFqb3JHQ1dyYXBwZXJWaXNpdG9yIHZpc2l0b3I7CiAgICAgdjg6OlY4OjpWaXNpdEhh
bmRsZXNXaXRoQ2xhc3NJZHMoJnZpc2l0b3IpOwogICAgIHZpc2l0b3Iubm90aWZ5RmluaXNoZWQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKaW5kZXgg
ZGVmMTJjNjVhZjQ4ZTIyN2FiZmNhMTNjMDc4NDYwZTVhZGM3ZjU0Yy4uZDc2N2M5NjgzZDljZTFk
MDM5ZmZkZTM0NGY1MjVkODg4YzEwNTUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5oCkBAIC01Miw3ICs1Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBjb2xsZWN0R2FyYmFnZSgpOwogCiAgICAgc3RhdGljIE5vZGUqIG9wYXF1ZVJvb3RGb3JH
QyhOb2RlKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV3JhcHBlckZvck5vZGUoTm9kZSop
OwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBWZWN0b3I8Tm9kZSo+KiBtX2VkZW5Ob2RlczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186356</attachid>
            <date>2013-02-04 05:00:26 -0800</date>
            <delta_ts>2013-02-04 17:27:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108579-20130204215705.patch</filename>
            <type>text/plain</type>
            <size>17068</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJlZDQ4NmFmZTlmYjMz
YmQwMjRiMzgxMDNjMGJhNTdhZmVmOTZhNi4uMjE5YmNhZTRiZTc0NTYxNjc1YWExMzI0NGQzNzMy
M2FmZjY3NWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBW
OEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgYW5kIG1ha2UgbWlub3IgRE9NIEdDIG1vcmUgcHJl
Y2lzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4
NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBDdXJyZW50
bHkgVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVzIHN0b3JlcyBhIGxpc3Qgb2Ygbm9kZXMgd2hv
c2UKKyAgICAgICAgd3JhcHBlcnMgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhdGVzdCBH
Qy4gVGhlIHJlYXNvbiB3aHkgd2UKKyAgICAgICAgbmVlZGVkIG1fZWRlbk5vZGVzIGlzIHRoYXQg
dGhlcmUgd2FzIG5vIHdheSB0byBrbm93IGEgbGlzdCBvZiB3cmFwcGVycworICAgICAgICBpbiB0
aGUgbmV3IHNwYWNlIG9mIFY4LiBCeSB1c2luZyBtX2VkZW5Ob2Rlcywgd2UgaGFkIGJlZW4gYXBw
cm94aW1hdGluZworICAgICAgICAnd3JhcHBlcnMgaW4gdGhlIG5ldyBzcGFjZScgYnkgJ3dyYXBw
ZXJzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UKKyAgICAgICAgdGhlIGxhdGVzdCBHQycu
CisKKyAgICAgICAgTm93IFY4IHByb3ZpZGVzIFZpc2l0SGFuZGxlc0ZvclBhcnRpYWxEZXBlbmRl
bmNlKCksIHdpdGggd2hpY2ggV2ViS2l0CisgICAgICAgIGNhbiBrbm93IGEgbGlzdCBvZiB3cmFw
cGVycyBpbiB0aGUgbmV3IHNwYWNlLiBCeSB1c2luZyB0aGUgQVBJLCB3ZSBjYW4KKyAgICAgICAg
cmVtb3ZlIFY4R0NDb250cm9sbGVyOjptX2VkZW5Ob2Rlcy4gVGhlIGJlbmVmaXQgaXMgdGhhdCAo
MSkgd2Ugbm8gbG9uZ2VyCisgICAgICAgIG5lZWQgdG8ga2VlcCBtX2VkZW5Ob2RlcyBhbmQgdGhh
dCAoMikgaXQgZW5hYmxlcyBtb3JlIHByZWNpc2UgbWlub3IKKyAgICAgICAgRE9NIEdDIChSZW1l
bWJlciB0aGF0IG1fZWRlbk5vZGVzIHdhcyBqdXN0IGFuIGFwcHJveGltYXRpb24pLgorCisgICAg
ICAgIFBlcmZvcm1hbmNlIGJlbmNobWFyazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNo
bWVudC5jZ2k/aWQ9MTg1OTQwCisgICAgICAgIFRoZSBiZW5jaG1hcmsgcnVucyAzMDAgaXRlcmF0
aW9ucywgZWFjaCBvZiB3aGljaCBjcmVhdGVzIDEwMDAwMCBlbGVtZW50cy4KKyAgICAgICAgVGhl
IGJlbmNobWFyayBtZWFzdXJlcyBhdmVyYWdlLCBtaW4sIG1lZGlhbiwgbWF4IGFuZCBzdGRldiBv
ZiBleGVjdXRpb24gdGltZXMKKyAgICAgICAgb2YgdGhlIDMwMCBpdGVyYXRpb25zLiBUaGlzIHdp
bGwgdGVsbCB1cyB0aGUgd29yc3QtY2FzZSBvdmVyaGVhZCBvZiB0aGlzIGNoYW5nZS4KKworICAg
ICAgICBCZWZvcmU6CisgICAgICAgICAgbWVhbj01OS45MW1zLCBtaW49MzltcywgbWVkaWFuPTQy
bXMsIG1heD0yNThtcywgc3RkZXY9NDcuNDhtcworCisgICAgICAgIEFmdGVyOgorICAgICAgICAg
IG1lYW49NTguNzVtcywgbWluPTM1bXMsIG1lZGlhbj00MW1zLCBtYXg9MjUwbXMsIHN0ZGV2PTQ3
LjMybXMKKworICAgICAgICBBcyBzaG93biBhYm92ZSwgSSBjb3VsZG4ndCBvYnNlcnZlIGFueSBw
ZXJmb3JtYW5jZSByZWdyZXNzaW9uLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6c2V0V3JhcHBlckluT2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAgKERPTVdyYXBwZXJXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmdldFdvcmxkV2l0aG91dENv
bnRleHRDaGVjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRXaXRo
b3V0Q29udGV4dENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnY1RyZWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChNaW5vckdDV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWlub3JHQ1dy
YXBwZXJWaXNpdG9yOjpNaW5vckdDV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
TWlub3JHQ1dyYXBwZXJWaXNpdG9yOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWpvckdDV3JhcHBlclZpc2l0b3I6Ok1ham9yR0NXcmFwcGVyVmlzaXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
R0NDb250cm9sbGVyOjptYWpvckdDUHJvbG9ndWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
R0NDb250cm9sbGVyLmg6CisgICAgICAgIChWOEdDQ29udHJvbGxlcik6CisKIDIwMTMtMDItMDMg
IEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBGb2N1c0Rp
cmVjdGlvbiBhcmd1bWVudCB0byBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aGFuZGxlRm9j
dXNFdmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCA0
MTZlNDUwNmJmODJiZmRkNWFjNDRlNGUyOTI5ZWIxZGU3NGM0NmJlLi5hYmMyMGM2NTNkMzJmNzNh
YzY1MTQ5ODJiODAxNTQ0NzMwZWFkMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01EYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01EYXRhU3RvcmUuaApAQCAtMTY0LDEzICsxNjQsNiBAQCBwcml2YXRlOgogICAgICAgICBvYmpl
Y3QtPnNldFdyYXBwZXIod3JhcHBlcik7CiAgICAgICAgIHdyYXBwZXIuTWFrZVdlYWsob2JqZWN0
LCB3ZWFrQ2FsbGJhY2spOwogICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmpl
Y3QoTm9kZSogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG9iamVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAg
IG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyKTsKLSAgICAgICAgVjhHQ0NvbnRyb2xsZXI6OmRp
ZENyZWF0ZVdyYXBwZXJGb3JOb2RlKG9iamVjdCk7Ci0gICAgICAgIHdyYXBwZXIuTWFrZVdlYWso
c3RhdGljX2Nhc3Q8U2NyaXB0V3JhcHBhYmxlKj4ob2JqZWN0KSwgd2Vha0NhbGxiYWNrKTsKLSAg
ICB9CiAKICAgICBzdGF0aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZh
bHVlPiwgdm9pZCogY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
V3JhcHBlcldvcmxkLmgKaW5kZXggZDYyNWZlNzZjMjZhYThkNGIxZWFhYjhlYjBlZjdiMzZlMmRj
Yzc2Ny4uOGYyYTkwYWI1ZDJjZjgyZDk0NDkzZjlhMTI1ODI2MmJjZGU5MzkzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTYzLDYgKzYzLDcg
QEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb250ZXh0
SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAjZW5kaWYKKyAg
ICAvLyBGSVhNRTogUmVuYW1lIHRoaXMgbWV0aG9kIHRvIGdldFdvcmxkKCkuCiAgICAgc3RhdGlj
IERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCkKICAgICB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtNzAsNiArNzEsMTAgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
LT5HZXRBbGlnbmVkUG9pbnRlckZyb21FbWJlZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRXb3Js
ZCkpOwogICAgIH0KKyAgICBzdGF0aWMgRE9NV3JhcHBlcldvcmxkKiBnZXRXb3JsZFdpdGhvdXRD
b250ZXh0Q2hlY2sodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0LT5HZXRBbGln
bmVkUG9pbnRlckZyb21FbWJlZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRXb3JsZCkpOworICAg
IH0KIAogICAgIC8vIEFzc29jaWF0ZXMgYW4gaXNvbGF0ZWQgd29ybGQgKHNlZSBhYm92ZSBmb3Ig
ZGVzY3JpcHRpb24pIHdpdGggYSBzZWN1cml0eQogICAgIC8vIG9yaWdpbi4gWE1MSHR0cFJlcXVl
c3QgaW5zdGFuY2VzIHVzZWQgaW4gdGhhdCB3b3JsZCB3aWxsIGJlIGNvbnNpZGVyZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNzQ0Nzg3N2FhMzQzOWI0NTZiMzRm
ZGQ0YjVjYjgxYjZhMWJhMTUxZC4uZTFlZjFiMGUwMjQ2ODdhMDk3Nzc0MDc0NjcyMmMwZGUyOTAz
NTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTQ0OSw2ICs0
NDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gYSBjb250ZXh0LCBpZiB0aGUgd2lu
ZG93IGlzIGN1cnJlbnRseSBiZWluZyBkaXNwbGF5ZWQgaW4gdGhlIEZyYW1lLgogICAgIEZyYW1l
KiB0b0ZyYW1lSWZOb3REZXRhY2hlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAKKyAgICAv
LyBGSVhNRTogUmVuYW1lIHRoaXMgbWV0aG9kIHRvIHdvcmxkRm9yRW50ZXJlZENvbnRleHQoKS4K
ICAgICBpbmxpbmUgRE9NV3JhcHBlcldvcmxkKiB3b3JsZEZvckVudGVyZWRDb250ZXh0SWZJc29s
YXRlZCgpCiAgICAgewogICAgICAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKQEAg
LTQ1Niw2ICs0NTcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gRE9N
V3JhcHBlcldvcmxkOjppc29sYXRlZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKICAgICB9
CiAKKyAgICBpbmxpbmUgRE9NV3JhcHBlcldvcmxkKiB3b3JsZEZvckVudGVyZWRDb250ZXh0V2l0
aG91dENvbnRleHRDaGVjaygpCisgICAgeworICAgICAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNv
bnRleHQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gRE9NV3JhcHBl
cldvcmxkOjpnZXRXb3JsZFdpdGhvdXRDb250ZXh0Q2hlY2sodjg6OkNvbnRleHQ6OkdldEVudGVy
ZWQoKSk7CisgICAgfQorCiAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY29udGV4dCBjYXVzZXMgb3V0
IG9mIG1lbW9yeSwgSmF2YVNjcmlwdCBzZXR0aW5nCiAgICAgLy8gaXMgZGlzYWJsZWQgYW5kIGl0
IHJldHVybnMgdHJ1ZS4KICAgICBib29sIGhhbmRsZU91dE9mTWVtb3J5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggZDM2MDFhZTY5OTkw
ZjAxZGRkZTI4MGEyMGRkYjliOWU4YzlhYTQzOC4uZGZkZTUxOWEyYTM1ZDgyOWNiMmJmM2NmNjQ4
Yjg1Mzk1MDkxOWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhH
Q0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250
cm9sbGVyLmNwcApAQCAtMTc4LDkgKzE3OCwxMDYgQEAgTm9kZSogVjhHQ0NvbnRyb2xsZXI6Om9w
YXF1ZVJvb3RGb3JHQyhOb2RlKiBub2RlKQogICAgIHJldHVybiBub2RlOwogfQogCi1jbGFzcyBX
cmFwcGVyVmlzaXRvciA6IHB1YmxpYyB2ODo6UGVyc2lzdGVudEhhbmRsZVZpc2l0b3Igeworc3Rh
dGljIHZvaWQgZ2NUcmVlKE5vZGUqIHN0YXJ0Tm9kZSkKK3sKKyAgICBWZWN0b3I8djg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiwgaW5pdGlhbE5vZGVWZWN0b3JTaXplPiBuZXdTcGFjZVdyYXBwZXJz
OworCisgICAgLy8gV2UgdHJhdmVyc2UgYSBET00gdHJlZSBpbiB0aGUgREZTIG9yZGVyIHN0YXJ0
aW5nIGZyb20gc3RhcnROb2RlLgorICAgIC8vIFRoZSB0cmF2ZXJzYWwgb3JkZXIgZG9lcyBub3Qg
bWF0dGVyIGZvciBjb3JyZWN0bmVzcyBidXQgZG9lcyBtYXR0ZXIgZm9yIHBlcmZvcm1hbmNlLgor
ICAgIE5vZGUqIG5vZGUgPSBzdGFydE5vZGU7CisgICAgLy8gVG8gbWFrZSBlYWNoIG1pbm9yIEdD
IHRpbWUgYm91bmRlZCwgd2UgbWlnaHQgbmVlZCB0byBnaXZlIHVwCisgICAgLy8gdHJhdmVyc2lu
ZyBhdCBzb21lIHBvaW50IGZvciBhIGxhcmdlIERPTSB0cmVlLiBUaGF0IGJlaW5nIHNhaWQsCisg
ICAgLy8gSSBjb3VsZCBub3Qgb2JzZXJ2ZSB0aGUgbmVlZCBldmVuIGluIHBhdGhvbG9naWNhbCB0
ZXN0IGNhc2VzLgorICAgIGRvIHsKKyAgICAgICAgQVNTRVJUKG5vZGUpOworICAgICAgICBpZiAo
IW5vZGUtPndyYXBwZXIoKS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGltYWdlIGVsZW1lbnRzLgorICAgICAgICAgICAg
Ly8gVGhlIHNhbWUgc3BlY2lhbCBoYW5kbGluZyBpcyBpbiBWOEdDQ29udHJvbGxlcjo6b3BhcXVl
Um9vdEZvckdDKCkuCisgICAgICAgICAgICAvLyBNYXliZSBzaG91bGQgaW1hZ2UgZWxlbWVudHMg
YmUgYWN0aXZlIERPTSBub2Rlcz8KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2NvZGUuZ29v
Z2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTY0ODgyCisgICAgICAgICAgICBp
ZiAoIW5vZGUtPmlzVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0MoKSB8fCAobm9kZS0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmltZ1RhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+
KG5vZGUpLT5oYXNQZW5kaW5nQWN0aXZpdHkoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlz
IG5vZGUgaXMgbm90IGluIHRoZSBuZXcgc3BhY2Ugb2YgVjguIFRoaXMgaW5kaWNhdGVzIHRoYXQK
KyAgICAgICAgICAgICAgICAvLyB0aGUgbWlub3IgR0MgY2Fubm90IGFueXdheSBqdWRnZSByZWFj
aGFiaWxpdHkgb2YgdGhpcyBET00gdHJlZS4KKyAgICAgICAgICAgICAgICAvLyBUaHVzIHdlIGdp
dmUgdXAgdHJhdmVyc2luZyB0aGUgRE9NIHRyZWUuCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJsZUR1cmluZ01p
bm9yR0MoZmFsc2UpOworICAgICAgICAgICAgbmV3U3BhY2VXcmFwcGVycy5hcHBlbmQobm9kZS0+
d3JhcHBlcigpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7
CisgICAgICAgICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2Rl
LT5uZXh0U2libGluZygpOworICAgIH0gd2hpbGUgKG5vZGUgIT0gc3RhcnROb2RlKTsKKworICAg
IC8vIFdlIGNvbXBsZXRlZCB0aGUgRE9NIHRyZWUgdHJhdmVyc2FsLiBBbGwgd3JhcHBlcnMgaW4g
dGhlIERPTSB0cmVlIGFyZQorICAgIC8vIHN0b3JlZCBpbiBuZXdTcGFjZVdyYXBwZXJzIGFuZCBh
cmUgZXhwZWN0ZWQgdG8gZXhpc3QgaW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4KKyAgICAvLyBXZSBy
ZXBvcnQgdGhvc2Ugd3JhcHBlcnMgdG8gVjggYXMgYW4gb2JqZWN0IGdyb3VwLgorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCk7IGkrKykKKyAgICAgICAg
bmV3U3BhY2VXcmFwcGVyc1tpXS5NYXJrUGFydGlhbGx5RGVwZW5kZW50KCk7CisgICAgaWYgKG5l
d1NwYWNlV3JhcHBlcnMuc2l6ZSgpID4gMCkKKyAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91
cCgmbmV3U3BhY2VXcmFwcGVyc1swXSwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCkpOworfQorCisv
LyBSZWdhcmRpbmcgYSBtaW5vciBHQyBhbGdvcml0aG0gZm9yIERPTSBub2Rlcywgc2VlIHRoaXMg
ZG9jdW1lbnQ6CisvLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vcHJlc2Vu
dGF0aW9uL2QvMXVpZndWWUdOWVRaRG9HTHlDYjdzWGE3ZzQ5bVdOTVcyZ2FXdk1ONU5MazgvZWRp
dCNzbGlkZT1pZC5wCitjbGFzcyBNaW5vckdDV3JhcHBlclZpc2l0b3IgOiBwdWJsaWMgdjg6OlBl
cnNpc3RlbnRIYW5kbGVWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBNaW5vckdDV3Jh
cHBlclZpc2l0b3Iodjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgICAgIDogbV9pc29sYXRlKGlz
b2xhdGUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBWaXNpdFBlcnNpc3RlbnRI
YW5kbGUodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdWludDE2X3QgY2xhc3NJZCkg
T1ZFUlJJREUKKyAgICB7CisgICAgICAgIC8vIEEgbWlub3IgRE9NIEdDIGNhbiBjb2xsZWN0IG9u
bHkgTm9kZXMuCisgICAgICAgIGlmIChjbGFzc0lkICE9IHY4RE9NTm9kZUNsYXNzSWQpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVG8gbWFrZSBtaW5vciBHQyBjeWNsZSB0aW1l
IGJvdW5kZWQsIHdlIGxpbWl0IHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgaGFuZGxlZAorICAgICAg
ICAvLyBieSBlYWNoIG1pbm9yIEdDIGN5Y2xlIHRvIDEwMDAwLiBUaGlzIHZhbHVlIHdhcyBzZWxl
Y3RlZCBzbyB0aGF0IHRoZSBtaW5vcgorICAgICAgICAvLyBHQyBjeWNsZSB0aW1lIGlzIGJvdW5k
ZWQgdG8gMjAgbXMgaW4gYSBjYXNlIHdoZXJlIHRoZSBuZXcgc3BhY2Ugc2l6ZQorICAgICAgICAv
LyBpcyAxNiBNQiBhbmQgaXQgaXMgZnVsbCBvZiB3cmFwcGVycyAod2hpY2ggaXMgYWxtb3N0IHRo
ZSB3b3JzdCBjYXNlKS4KKyAgICAgICAgLy8gUHJhY3RpY2FsbHkgc3BlYWtpbmcsIGFzIGZhciBh
cyBJIGNyYXdsZWQgcmVhbCB3ZWIgYXBwbGljYXRpb25zLAorICAgICAgICAvLyB0aGUgbnVtYmVy
IG9mIHdyYXBwZXJzIGhhbmRsZWQgYnkgZWFjaCBtaW5vciBHQyBjeWNsZSBpcyBhdCBtb3N0IDMw
MDAuCisgICAgICAgIC8vIFNvIHRoaXMgbGltaXQgaXMgbWFpbmx5IGZvciBwYXRob2xvZ2ljYWwg
bWljcm8gYmVuY2htYXJrcy4KKyAgICAgICAgY29uc3QgdW5zaWduZWQgd3JhcHBlcnNIYW5kbGVk
QnlFYWNoTWlub3JHQyA9IDEwMDAwOworICAgICAgICBpZiAobV9ub2Rlc0luTmV3U3BhY2Uuc2l6
ZSgpID49IHdyYXBwZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0MpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKKyAgICAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpD
YXN0KHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVy
KHZhbHVlKSk7CisgICAgICAgIEFTU0VSVChWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1f
aXNvbGF0ZSkpOworICAgICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh3cmFwcGVy
KTsKKyAgICAgICAgbV9ub2Rlc0luTmV3U3BhY2UuYXBwZW5kKG5vZGUpOworICAgICAgICBub2Rl
LT5zZXRWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQyh0cnVlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5vdGlmeUZpbmlzaGVkKCkKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9ub2Rlc0luTmV3U3BhY2Uuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9u
b2Rlc0luTmV3U3BhY2VbaV0tPndyYXBwZXIoKS5Jc0VtcHR5KCkpOworICAgICAgICAgICAgaWYg
KG1fbm9kZXNJbk5ld1NwYWNlW2ldLT5pc1Y4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKCkpIC8v
IFRoaXMgYnJhbmNoIGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLgorICAgICAgICAgICAgICAgIGdj
VHJlZShtX25vZGVzSW5OZXdTcGFjZVtpXSk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPE5vZGUqPiBtX25vZGVzSW5OZXdTcGFjZTsKKyAgICB2ODo6SXNvbGF0ZSog
bV9pc29sYXRlOworfTsKKworY2xhc3MgTWFqb3JHQ1dyYXBwZXJWaXNpdG9yIDogcHVibGljIHY4
OjpQZXJzaXN0ZW50SGFuZGxlVmlzaXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV3JhcHBl
clZpc2l0b3Iodjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgZXhwbGljaXQgTWFqb3JHQ1dyYXBw
ZXJWaXNpdG9yKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgICAgICA6IG1faXNvbGF0ZShpc29s
YXRlKQogICAgIHsKICAgICB9CkBAIC0yNDgsMTA1ICszNDUsMjggQEAgcHJpdmF0ZToKICAgICB2
ODo6SXNvbGF0ZSogbV9pc29sYXRlOwogfTsKIAotLy8gUmVnYXJkaW5nIGEgbWlub3IgR0MgYWxn
b3JpdGhtIGZvciBET00gbm9kZXMsIHNlZSB0aGlzIGRvY3VtZW50OgotLy8gaHR0cHM6Ly9kb2Nz
Lmdvb2dsZS5jb20vYS9nb29nbGUuY29tL3ByZXNlbnRhdGlvbi9kLzF1aWZ3VllHTllUWkRvR0x5
Q2I3c1hhN2c0OW1XTk1XMmdhV3ZNTjVOTGs4L2VkaXQjc2xpZGU9aWQucAotLy8KLS8vIG1fZWRl
bk5vZGVzIHN0b3JlcyBub2RlcyB0aGF0IGhhdmUgd3JhcHBlcnMgdGhhdCBoYXZlIGJlZW4gY3Jl
YXRlZCBzaW5jZSB0aGUgbGFzdCBtaW5vci9tYWpvciBHQy4KLVZlY3RvcjxOb2RlKj4qIFY4R0ND
b250cm9sbGVyOjptX2VkZW5Ob2RlcyA9IDA7Ci0KLXN0YXRpYyB2b2lkIGdjVHJlZShOb2RlKiBz
dGFydE5vZGUpCi17Ci0gICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIGluaXRp
YWxOb2RlVmVjdG9yU2l6ZT4gbmV3U3BhY2VXcmFwcGVyczsKLQotICAgIC8vIFdlIHRyYXZlcnNl
IGEgRE9NIHRyZWUgaW4gdGhlIERGUyBvcmRlciBzdGFydGluZyBmcm9tIHN0YXJ0Tm9kZS4KLSAg
ICAvLyBUaGUgdHJhdmVyc2FsIG9yZGVyIGRvZXMgbm90IG1hdHRlciBmb3IgY29ycmVjdG5lc3Mg
YnV0IGRvZXMgbWF0dGVyIGZvciBwZXJmb3JtYW5jZS4KLSAgICBOb2RlKiBub2RlID0gc3RhcnRO
b2RlOwotICAgIC8vIFRvIG1ha2UgZWFjaCBtaW5vciBHQyB0aW1lIGJvdW5kZWQsIHdlIG1pZ2h0
IG5lZWQgdG8gZ2l2ZSB1cAotICAgIC8vIHRyYXZlcnNpbmcgYXQgc29tZSBwb2ludCBmb3IgYSBs
YXJnZSBET00gdHJlZS4gVGhhdCBiZWluZyBzYWlkLAotICAgIC8vIEkgY291bGQgbm90IG9ic2Vy
dmUgdGhlIG5lZWQgZXZlbiBpbiBwYXRob2xvZ2ljYWwgdGVzdCBjYXNlcy4KLSAgICBkbyB7Ci0g
ICAgICAgIEFTU0VSVChub2RlKTsKLSAgICAgICAgaWYgKCFub2RlLT53cmFwcGVyKCkuSXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBzcGVjaWFsIGhhbmRsaW5n
IGZvciBpbWFnZSBlbGVtZW50cy4KLSAgICAgICAgICAgIC8vIFRoZSBzYW1lIHNwZWNpYWwgaGFu
ZGxpbmcgaXMgaW4gVjhHQ0NvbnRyb2xsZXI6Om9wYXF1ZVJvb3RGb3JHQygpLgotICAgICAgICAg
ICAgLy8gTWF5YmUgc2hvdWxkIGltYWdlIGVsZW1lbnRzIGJlIGFjdGl2ZSBET00gbm9kZXM/Ci0g
ICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1
ZXMvZGV0YWlsP2lkPTE2NDg4MgotICAgICAgICAgICAgaWYgKCFub2RlLT5pc1Y4Q29sbGVjdGFi
bGVEdXJpbmdNaW5vckdDKCkgfHwgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcp
ICYmIHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihub2RlKS0+aGFzUGVuZGluZ0FjdGl2
aXR5KCkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGZhY3QgdGhhdCB3ZSBlbmNvdW50ZXIg
YSBub2RlIHRoYXQgaXMgbm90IGluIHRoZSBFZGVuIHNwYWNlCi0gICAgICAgICAgICAgICAgLy8g
aW1wbGllcyB0aGF0IGl0cyB3cmFwcGVyIG1pZ2h0IGJlIGluIHRoZSBvbGQgc3BhY2Ugb2YgVjgu
Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgbWlub3IgR0MgY2Fu
bm90IGFueXdheSBqdWRnZSByZWFjaGFiaWxpdHkKLSAgICAgICAgICAgICAgICAvLyBvZiB0aGlz
IERPTSB0cmVlLiBUaHVzIHdlIGdpdmUgdXAgdHJhdmVyc2luZyB0aGUgRE9NIHRyZWUuCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gQSBvbmNl
IHRyYXZlcnNlZCBub2RlIGlzIHJlbW92ZWQgZnJvbSB0aGUgRWRlbiBzcGFjZS4KLSAgICAgICAg
ICAgIG5vZGUtPnNldFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKGZhbHNlKTsKLSAgICAgICAg
ICAgIG5ld1NwYWNlV3JhcHBlcnMuYXBwZW5kKG5vZGUtPndyYXBwZXIoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKG5vZGUtPmZpcnN0Q2hpbGQoKSkgewotICAgICAgICAgICAgbm9kZSA9IG5v
ZGUtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAg
ICAgIHdoaWxlICghbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKCFub2Rl
LT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5wYXJl
bnROb2RlKCkpCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKLSAgICB9
IHdoaWxlIChub2RlICE9IHN0YXJ0Tm9kZSk7Ci0KLSAgICAvLyBXZSBjb21wbGV0ZWQgdGhlIERP
TSB0cmVlIHRyYXZlcnNhbC4gQWxsIHdyYXBwZXJzIGluIHRoZSBET00gdHJlZSBhcmUKLSAgICAv
LyBzdG9yZWQgaW4gbmV3U3BhY2VXcmFwcGVycyBhbmQgYXJlIGV4cGVjdGVkIHRvIGV4aXN0IGlu
IHRoZSBuZXcgc3BhY2Ugb2YgVjguCi0gICAgLy8gV2UgcmVwb3J0IHRob3NlIHdyYXBwZXJzIHRv
IFY4IGFzIGFuIG9iamVjdCBncm91cC4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1Nw
YWNlV3JhcHBlcnMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG5ld1NwYWNlV3JhcHBlcnNbaV0uTWFy
a1BhcnRpYWxseURlcGVuZGVudCgpOwotICAgIGlmIChuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSA+
IDApCi0gICAgICAgIHY4OjpWODo6QWRkT2JqZWN0R3JvdXAoJm5ld1NwYWNlV3JhcHBlcnNbMF0s
IG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpKTsKLX0KLQotdm9pZCBWOEdDQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlV3JhcHBlckZvck5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICAvLyBUbyBtYWtlIG1pbm9y
IEdDIGN5Y2xlIHRpbWUgYm91bmRlZCwgd2UgbGltaXQgdGhlIG51bWJlciBvZiB3cmFwcGVycyBo
YW5kbGVkCi0gICAgLy8gYnkgZWFjaCBtaW5vciBHQyBjeWNsZSB0byAxMDAwMC4gVGhpcyB2YWx1
ZSB3YXMgc2VsZWN0ZWQgc28gdGhhdCB0aGUgbWlub3IKLSAgICAvLyBHQyBjeWNsZSB0aW1lIGlz
IGJvdW5kZWQgdG8gMjAgbXMgaW4gYSBjYXNlIHdoZXJlIHRoZSBuZXcgc3BhY2Ugc2l6ZQotICAg
IC8vIGlzIDE2IE1CIGFuZCBpdCBpcyBmdWxsIG9mIHdyYXBwZXJzICh3aGljaCBpcyBhbG1vc3Qg
dGhlIHdvcnN0IGNhc2UpLgotICAgIC8vIFByYWN0aWNhbGx5IHNwZWFraW5nLCBhcyBmYXIgYXMg
SSBjcmF3bGVkIHJlYWwgd2ViIGFwcGxpY2F0aW9ucywKLSAgICAvLyB0aGUgbnVtYmVyIG9mIHdy
YXBwZXJzIGhhbmRsZWQgYnkgZWFjaCBtaW5vciBHQyBjeWNsZSBpcyBhdCBtb3N0IDMwMDAuCi0g
ICAgLy8gU28gdGhpcyBsaW1pdCBpcyBtYWlubHkgZm9yIHBhdGhvbG9naWNhbCBtaWNybyBiZW5j
aG1hcmtzLgotICAgIGNvbnN0IHVuc2lnbmVkIHdyYXBwZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0Mg
PSAxMDAwMDsKLSAgICBBU1NFUlQoIW5vZGUtPndyYXBwZXIoKS5Jc0VtcHR5KCkpOwotICAgIGlm
ICghbV9lZGVuTm9kZXMpCi0gICAgICAgIG1fZWRlbk5vZGVzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxOb2RlKj4pLmxlYWtQdHIoKTsKLSAgICBpZiAobV9lZGVuTm9kZXMtPnNpemUoKSA8PSB3cmFw
cGVyc0hhbmRsZWRCeUVhY2hNaW5vckdDKSB7Ci0gICAgICAgIC8vIEEgbm9kZSBvZiBhIG5ld2x5
IGNyZWF0ZWQgd3JhcHBlciBpcyBwdXQgaW50byB0aGUgRWRlbiBzcGFjZS4KLSAgICAgICAgbV9l
ZGVuTm9kZXMtPmFwcGVuZChub2RlKTsKLSAgICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJsZUR1
cmluZ01pbm9yR0ModHJ1ZSk7Ci0gICAgfQotfQotCiB2b2lkIFY4R0NDb250cm9sbGVyOjpnY1By
b2xvZ3VlKHY4OjpHQ1R5cGUgdHlwZSwgdjg6OkdDQ2FsbGJhY2tGbGFncyBmbGFncykKIHsKICAg
ICBpZiAodHlwZSA9PSB2ODo6a0dDVHlwZVNjYXZlbmdlKQogICAgICAgICBtaW5vckdDUHJvbG9n
dWUoKTsKICAgICBlbHNlIGlmICh0eXBlID09IHY4OjprR0NUeXBlTWFya1N3ZWVwQ29tcGFjdCkK
ICAgICAgICAgbWFqb3JHQ1Byb2xvZ3VlKCk7Ci0KLSAgICBpZiAoaXNNYWluVGhyZWFkT3JHQ1Ro
cmVhZCgpICYmIG1fZWRlbk5vZGVzKSB7Ci0gICAgICAgIC8vIFRoZSBFZGVuIHNwYWNlIGlzIGNs
ZWFyZWQgYXQgZXZlcnkgbWlub3IvbWFqb3IgR0MuCi0gICAgICAgIG1fZWRlbk5vZGVzLT5jbGVh
cigpOwotICAgIH0KIH0KIAogdm9pZCBWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKCkK
IHsKICAgICBUUkFDRV9FVkVOVF9CRUdJTjAoInY4IiwgIkdDIik7CiAKLSAgICBpZiAoaXNNYWlu
VGhyZWFkT3JHQ1RocmVhZCgpICYmIG1fZWRlbk5vZGVzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9lZGVuTm9kZXMtPnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBBU1NF
UlQoIW1fZWRlbk5vZGVzLT5hdChpKS0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAgICAg
ICBpZiAobV9lZGVuTm9kZXMtPmF0KGkpLT5pc1Y4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKCkp
IC8vIFRoaXMgYnJhbmNoIGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLgotICAgICAgICAgICAgICAg
IGdjVHJlZShtX2VkZW5Ob2Rlcy0+YXQoaSkpOwotICAgICAgICB9CisgICAgdjg6Oklzb2xhdGUq
IGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOworCisgICAgLy8gQSBtaW5vciBH
QyBjYW4gaGFuZGxlIHRoZSBtYWluIHdvcmxkIG9ubHkuCisgICAgRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCA9IHdvcmxkRm9yRW50ZXJlZENvbnRleHRXaXRob3V0Q29udGV4dENoZWNrKCk7CisgICAg
aWYgKHdvcmxkICYmIHdvcmxkLT5pc01haW5Xb3JsZCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKKworICAgICAgICBNaW5vckdDV3JhcHBlclZpc2l0b3IgdmlzaXRvcihpc29s
YXRlKTsKKyAgICAgICAgdjg6OlY4OjpWaXNpdEhhbmRsZXNGb3JQYXJ0aWFsRGVwZW5kZW5jZShp
c29sYXRlLCAmdmlzaXRvcik7CisgICAgICAgIHZpc2l0b3Iubm90aWZ5RmluaXNoZWQoKTsKICAg
ICB9CiB9CiAKQEAgLTM1OCw3ICszNzgsNyBAQCB2b2lkIFY4R0NDb250cm9sbGVyOjptYWpvckdD
UHJvbG9ndWUoKQogICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1
cnJlbnQoKTsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAKLSAgICBXcmFwcGVyVmlzaXRv
ciB2aXNpdG9yKGlzb2xhdGUpOworICAgIE1ham9yR0NXcmFwcGVyVmlzaXRvciB2aXNpdG9yKGlz
b2xhdGUpOwogICAgIHY4OjpWODo6VmlzaXRIYW5kbGVzV2l0aENsYXNzSWRzKCZ2aXNpdG9yKTsK
ICAgICB2aXNpdG9yLm5vdGlmeUZpbmlzaGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEdDQ29udHJvbGxlci5oCmluZGV4IGRlZjEyYzY1YWY0OGUyMjdhYmZjYTEzYzA3ODQ2
MGU1YWRjN2Y1NGMuLmQ3NjdjOTY4M2Q5Y2UxZDAzOWZmZGUzNDRmNTI1ZDg4OGMxMDU1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaApAQCAtNTIsNyAr
NTIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsKIAogICAg
IHN0YXRpYyBOb2RlKiBvcGFxdWVSb290Rm9yR0MoTm9kZSopOwotICAgIHN0YXRpYyB2b2lkIGRp
ZENyZWF0ZVdyYXBwZXJGb3JOb2RlKE5vZGUqKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgVmVj
dG9yPE5vZGUqPiogbV9lZGVuTm9kZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186506</attachid>
            <date>2013-02-04 17:27:32 -0800</date>
            <delta_ts>2013-02-06 23:25:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108579-20130205102410.patch</filename>
            <type>text/plain</type>
            <size>18224</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU1Yjg4MzQ0MGFiZGRl
M2IzNmVmNGJjZTMyNDViMDJhOGNmNjU5NC4uMGI0ZTFlZmY5OThlNzBkOTkyYmNlYjFkOTJkNDZk
ZGNjOTIzY2UxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBW
OEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgYW5kIG1ha2UgbWlub3IgRE9NIEdDIG1vcmUgcHJl
Y2lzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4
NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50bHkgVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVzIHN0b3JlcyBhIGxpc3Qgb2Ygbm9kZXMg
d2hvc2UKKyAgICAgICAgd3JhcHBlcnMgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhdGVz
dCBHQy4gVGhlIHJlYXNvbiB3aHkgd2UKKyAgICAgICAgbmVlZGVkIG1fZWRlbk5vZGVzIGlzIHRo
YXQgdGhlcmUgd2FzIG5vIHdheSB0byBrbm93IGEgbGlzdCBvZiB3cmFwcGVycworICAgICAgICBp
biB0aGUgbmV3IHNwYWNlIG9mIFY4LiBCeSB1c2luZyBtX2VkZW5Ob2Rlcywgd2UgaGFkIGJlZW4g
YXBwcm94aW1hdGluZworICAgICAgICAnd3JhcHBlcnMgaW4gdGhlIG5ldyBzcGFjZScgYnkgJ3dy
YXBwZXJzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UKKyAgICAgICAgdGhlIGxhdGVzdCBH
QycuCisKKyAgICAgICAgTm93IFY4IHByb3ZpZGVzIFZpc2l0SGFuZGxlc0ZvclBhcnRpYWxEZXBl
bmRlbmNlKCksIHdpdGggd2hpY2ggV2ViS2l0CisgICAgICAgIGNhbiBrbm93IGEgbGlzdCBvZiB3
cmFwcGVycyBpbiB0aGUgbmV3IHNwYWNlLiBCeSB1c2luZyB0aGUgQVBJLCB3ZSBjYW4KKyAgICAg
ICAgcmVtb3ZlIFY4R0NDb250cm9sbGVyOjptX2VkZW5Ob2Rlcy4gVGhlIGJlbmVmaXQgaXMgdGhh
dCAoMSkgd2Ugbm8gbG9uZ2VyCisgICAgICAgIG5lZWQgdG8ga2VlcCBtX2VkZW5Ob2RlcyBhbmQg
dGhhdCAoMikgaXQgZW5hYmxlcyBtb3JlIHByZWNpc2UgbWlub3IKKyAgICAgICAgRE9NIEdDIChS
ZW1lbWJlciB0aGF0IG1fZWRlbk5vZGVzIHdhcyBqdXN0IGFuIGFwcHJveGltYXRpb24pLgorCisg
ICAgICAgIFBlcmZvcm1hbmNlIGJlbmNobWFyazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0
YWNobWVudC5jZ2k/aWQ9MTg1OTQwCisgICAgICAgIFRoZSBiZW5jaG1hcmsgcnVucyAzMDAgaXRl
cmF0aW9ucywgZWFjaCBvZiB3aGljaCBjcmVhdGVzIDEwMDAwMCBlbGVtZW50cy4KKyAgICAgICAg
VGhlIGJlbmNobWFyayBtZWFzdXJlcyBhdmVyYWdlLCBtaW4sIG1lZGlhbiwgbWF4IGFuZCBzdGRl
diBvZiBleGVjdXRpb24gdGltZXMKKyAgICAgICAgb2YgdGhlIDMwMCBpdGVyYXRpb25zLiBUaGlz
IHdpbGwgdGVsbCB1cyB0aGUgd29yc3QtY2FzZSBvdmVyaGVhZCBvZiB0aGlzIGNoYW5nZS4KKwor
ICAgICAgICBCZWZvcmU6CisgICAgICAgICAgbWVhbj01OS45MW1zLCBtaW49MzltcywgbWVkaWFu
PTQybXMsIG1heD0yNThtcywgc3RkZXY9NDcuNDhtcworCisgICAgICAgIEFmdGVyOgorICAgICAg
ICAgIG1lYW49NTguNzVtcywgbWluPTM1bXMsIG1lZGlhbj00MW1zLCBtYXg9MjUwbXMsIHN0ZGV2
PTQ3LjMybXMKKworICAgICAgICBBcyBzaG93biBhYm92ZSwgSSBjb3VsZG4ndCBvYnNlcnZlIGFu
eSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2Ug
aW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6c2V0V3JhcHBlckluT2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAgKERPTVdyYXBwZXJX
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmdldFdvcmxkV2l0aG91
dENvbnRleHRDaGVjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRJ
Zklzb2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRXaXRo
b3V0Q29udGV4dENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRpYWxpemVJZk5l
ZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWlub3JH
Q1dyYXBwZXJWaXNpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbm9yR0NXcmFwcGVyVmlzaXRv
cjo6TWlub3JHQ1dyYXBwZXJWaXNpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbm9yR0NXcmFw
cGVyVmlzaXRvcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFqb3JHQ1dy
YXBwZXJWaXNpdG9yOjpNYWpvckdDV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
VjhHQ0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRy
b2xsZXI6Om1pbm9yR0NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxl
cjo6bWFqb3JHQ1Byb2xvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5oOgorICAgICAgICAoVjhHQ0NvbnRyb2xsZXIpOgorCiAyMDEzLTAxLTMxICBLZW50YXJvIEhh
cmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgV2hlZWxFdmVu
dDo6ZGVsdGFNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCmlu
ZGV4IGM5OGI1ZTQxY2ZlYTM0ZWVjMzc5NWFmYjQ5OTI3MGM1NjEzMDFkYTQuLmQ3MmQ0YTUxMDUz
NzYyZGQyNzIzMTU1NTFmMjkzMjBmMjUyOGFjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5oCkBAIC0xNjQsMTMgKzE2NCw2IEBAIHByaXZhdGU6CiAgICAgICAg
IG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyKTsKICAgICAgICAgd3JhcHBlci5NYWtlV2Vhayhp
c29sYXRlLCBvYmplY3QsIHdlYWtDYWxsYmFjayk7CiAgICAgfQotICAgIHN0YXRpYyB2b2lkIHNl
dFdyYXBwZXJJbk9iamVjdChOb2RlKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG9i
amVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAgIG9iamVjdC0+c2V0V3JhcHBlcih3
cmFwcGVyKTsKLSAgICAgICAgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJGb3JOb2Rl
KG9iamVjdCk7Ci0gICAgICAgIHdyYXBwZXIuTWFrZVdlYWsoaXNvbGF0ZSwgc3RhdGljX2Nhc3Q8
U2NyaXB0V3JhcHBhYmxlKj4ob2JqZWN0KSwgd2Vha0NhbGxiYWNrKTsKLSAgICB9CiAKICAgICBz
dGF0aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+LCB2b2lkKiBjb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01XcmFwcGVyV29ybGQuaAppbmRleCBkNjI1ZmU3NmMyNmFhOGQ0YjFlYWFiOGViMGVmN2IzNmUy
ZGNjNzY3Li44ZjJhOTBhYjVkMmNmODJkOTQ0OTNmOWExMjU4MjYyYmNkZTkzOTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaApAQCAtNjMsNiArNjMs
NyBAQCBwdWJsaWM6CiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyB2b2lkIGFzc2VydENvbnRl
eHRIYXNDb3JyZWN0UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKICNlbmRpZgor
ICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyBtZXRob2QgdG8gZ2V0V29ybGQoKS4KICAgICBzdGF0
aWMgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0KQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkBAIC03MCw2ICs3MSwxMCBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENvbnRleHRJc29sYXRlZFdv
cmxkKSk7CiAgICAgfQorICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQqIGdldFdvcmxkV2l0aG91
dENvbnRleHRDaGVjayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQtPkdldEFs
aWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENvbnRleHRJc29sYXRlZFdvcmxkKSk7Cisg
ICAgfQogCiAgICAgLy8gQXNzb2NpYXRlcyBhbiBpc29sYXRlZCB3b3JsZCAoc2VlIGFib3ZlIGZv
ciBkZXNjcmlwdGlvbikgd2l0aCBhIHNlY3VyaXR5CiAgICAgLy8gb3JpZ2luLiBYTUxIdHRwUmVx
dWVzdCBpbnN0YW5jZXMgdXNlZCBpbiB0aGF0IHdvcmxkIHdpbGwgYmUgY29uc2lkZXJlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA3NDQ3ODc3YWEzNDM5YjQ1NmIz
NGZkZDRiNWNiODFiNmExYmExNTFkLi40OGQ0ZDYwODA2YWRkNjI3OGZiMmRjZTY0OWEyYWI4YWI1
ZmIxN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtNDQ5LDEx
ICs0NDksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGEgY29udGV4dCwgaWYgdGhl
IHdpbmRvdyBpcyBjdXJyZW50bHkgYmVpbmcgZGlzcGxheWVkIGluIHRoZSBGcmFtZS4KICAgICBG
cmFtZSogdG9GcmFtZUlmTm90RGV0YWNoZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCisg
ICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIG1ldGhvZCB0byB3b3JsZEZvckVudGVyZWRDb250ZXh0
KCkuCiAgICAgaW5saW5lIERPTVdyYXBwZXJXb3JsZCogd29ybGRGb3JFbnRlcmVkQ29udGV4dElm
SXNvbGF0ZWQoKQogICAgIHsKLSAgICAgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkp
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6
R2V0RW50ZXJlZCgpOworICAgICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWQodjg6
OkNvbnRleHQ6OkdldEVudGVyZWQoKSk7CisgICAgICAgIHJldHVybiBET01XcmFwcGVyV29ybGQ6
Omlzb2xhdGVkKGNvbnRleHQpOworICAgIH0KKworICAgIGlubGluZSBET01XcmFwcGVyV29ybGQq
IHdvcmxkRm9yRW50ZXJlZENvbnRleHRXaXRob3V0Q29udGV4dENoZWNrKCkKKyAgICB7CisgICAg
ICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0RW50
ZXJlZCgpOworICAgICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6Z2V0V29ybGRXaXRob3V0Q29u
dGV4dENoZWNrKGNvbnRleHQpOwogICAgIH0KIAogICAgIC8vIElmIHRoZSBjdXJyZW50IGNvbnRl
eHQgY2F1c2VzIG91dCBvZiBtZW1vcnksIEphdmFTY3JpcHQgc2V0dGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCBhOTI2NTQ2NzQ4
YWMxZWE5NTJhYzkzOGQ4NDc0NWM4N2E4Y2JlYmMwLi45MjAyMjUxOWI0NzQyMDVhMzU2NmUxMmU0
ZjRmYmU3NWEwOGFhOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmNwcApAQCAtMjA4LDEzICsyMDgsMTMgQEAgYm9vbCBWOERPTVdpbmRvd1No
ZWxsOjppbml0aWFsaXplSWZOZWVkZWQoKQogICAgIGlmIChtX2NvbnRleHQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX3dvcmxkLT5zZXRJc29sYXRlZFdvcmxkRmll
bGQobV9jb250ZXh0LmdldCgpKTsKKwogICAgIGJvb2wgaXNNYWluV29ybGQgPSBtX3dvcmxkLT5p
c01haW5Xb3JsZCgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6
OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4dC5nZXQoKSk7CiAgICAgdjg6OkNvbnRl
eHQ6OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKIAotICAgIG1fd29ybGQtPnNldElzb2xh
dGVkV29ybGRGaWVsZChtX2NvbnRleHQuZ2V0KCkpOwotCiAgICAgaWYgKG1fZ2xvYmFsLmlzRW1w
dHkoKSkgewogICAgICAgICBtX2dsb2JhbC5zZXQoY29udGV4dC0+R2xvYmFsKCkpOwogICAgICAg
ICBpZiAobV9nbG9iYWwuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggZDM2MDFhZTY5OTkwZjAxZGRkZTI4MGEyMGRkYjli
OWU4YzlhYTQzOC4uZjM1MTA0YjAwYTZhNTlkNWQzMTRkMDJjMWNiNGE1NzVmOGRjYTY5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcApAQCAtMTc4
LDkgKzE3OCwxMDcgQEAgTm9kZSogVjhHQ0NvbnRyb2xsZXI6Om9wYXF1ZVJvb3RGb3JHQyhOb2Rl
KiBub2RlKQogICAgIHJldHVybiBub2RlOwogfQogCi1jbGFzcyBXcmFwcGVyVmlzaXRvciA6IHB1
YmxpYyB2ODo6UGVyc2lzdGVudEhhbmRsZVZpc2l0b3Igeworc3RhdGljIHZvaWQgZ2NUcmVlKE5v
ZGUqIHN0YXJ0Tm9kZSkKK3sKKyAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwg
aW5pdGlhbE5vZGVWZWN0b3JTaXplPiBuZXdTcGFjZVdyYXBwZXJzOworCisgICAgLy8gV2UgdHJh
dmVyc2UgYSBET00gdHJlZSBpbiB0aGUgREZTIG9yZGVyIHN0YXJ0aW5nIGZyb20gc3RhcnROb2Rl
LgorICAgIC8vIFRoZSB0cmF2ZXJzYWwgb3JkZXIgZG9lcyBub3QgbWF0dGVyIGZvciBjb3JyZWN0
bmVzcyBidXQgZG9lcyBtYXR0ZXIgZm9yIHBlcmZvcm1hbmNlLgorICAgIE5vZGUqIG5vZGUgPSBz
dGFydE5vZGU7CisgICAgLy8gVG8gbWFrZSBlYWNoIG1pbm9yIEdDIHRpbWUgYm91bmRlZCwgd2Ug
bWlnaHQgbmVlZCB0byBnaXZlIHVwCisgICAgLy8gdHJhdmVyc2luZyBhdCBzb21lIHBvaW50IGZv
ciBhIGxhcmdlIERPTSB0cmVlLiBUaGF0IGJlaW5nIHNhaWQsCisgICAgLy8gSSBjb3VsZCBub3Qg
b2JzZXJ2ZSB0aGUgbmVlZCBldmVuIGluIHBhdGhvbG9naWNhbCB0ZXN0IGNhc2VzLgorICAgIGRv
IHsKKyAgICAgICAgQVNTRVJUKG5vZGUpOworICAgICAgICBpZiAoIW5vZGUtPndyYXBwZXIoKS5J
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHNwZWNpYWwgaGFu
ZGxpbmcgZm9yIGltYWdlIGVsZW1lbnRzLgorICAgICAgICAgICAgLy8gVGhlIHNhbWUgc3BlY2lh
bCBoYW5kbGluZyBpcyBpbiBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdDKCkuCisgICAg
ICAgICAgICAvLyBNYXliZSBzaG91bGQgaW1hZ2UgZWxlbWVudHMgYmUgYWN0aXZlIERPTSBub2Rl
cz8KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVt
L2lzc3Vlcy9kZXRhaWw/aWQ9MTY0ODgyCisgICAgICAgICAgICBpZiAoIW5vZGUtPmlzVjhDb2xs
ZWN0YWJsZUR1cmluZ01pbm9yR0MoKSB8fCAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omlt
Z1RhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUpLT5oYXNQZW5kaW5n
QWN0aXZpdHkoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgaXMgbm90IGluIHRo
ZSBuZXcgc3BhY2Ugb2YgVjguIFRoaXMgaW5kaWNhdGVzIHRoYXQKKyAgICAgICAgICAgICAgICAv
LyB0aGUgbWlub3IgR0MgY2Fubm90IGFueXdheSBqdWRnZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBE
T00gdHJlZS4KKyAgICAgICAgICAgICAgICAvLyBUaHVzIHdlIGdpdmUgdXAgdHJhdmVyc2luZyB0
aGUgRE9NIHRyZWUuCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0MoZmFsc2UpOworICAg
ICAgICAgICAgbmV3U3BhY2VXcmFwcGVycy5hcHBlbmQobm9kZS0+d3JhcHBlcigpKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAgICBub2Rl
ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAo
IW5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUt
PnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOwor
ICAgIH0gd2hpbGUgKG5vZGUgIT0gc3RhcnROb2RlKTsKKworICAgIC8vIFdlIGNvbXBsZXRlZCB0
aGUgRE9NIHRyZWUgdHJhdmVyc2FsLiBBbGwgd3JhcHBlcnMgaW4gdGhlIERPTSB0cmVlIGFyZQor
ICAgIC8vIHN0b3JlZCBpbiBuZXdTcGFjZVdyYXBwZXJzIGFuZCBhcmUgZXhwZWN0ZWQgdG8gZXhp
c3QgaW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4KKyAgICAvLyBXZSByZXBvcnQgdGhvc2Ugd3JhcHBl
cnMgdG8gVjggYXMgYW4gb2JqZWN0IGdyb3VwLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bmV3U3BhY2VXcmFwcGVycy5zaXplKCk7IGkrKykKKyAgICAgICAgbmV3U3BhY2VXcmFwcGVyc1tp
XS5NYXJrUGFydGlhbGx5RGVwZW5kZW50KCk7CisgICAgaWYgKG5ld1NwYWNlV3JhcHBlcnMuc2l6
ZSgpID4gMCkKKyAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cCgmbmV3U3BhY2VXcmFwcGVy
c1swXSwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCkpOworfQorCisvLyBSZWdhcmRpbmcgYSBtaW5v
ciBHQyBhbGdvcml0aG0gZm9yIERPTSBub2Rlcywgc2VlIHRoaXMgZG9jdW1lbnQ6CisvLyBodHRw
czovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vcHJlc2VudGF0aW9uL2QvMXVpZndWWUdO
WVRaRG9HTHlDYjdzWGE3ZzQ5bVdOTVcyZ2FXdk1ONU5MazgvZWRpdCNzbGlkZT1pZC5wCitjbGFz
cyBNaW5vckdDV3JhcHBlclZpc2l0b3IgOiBwdWJsaWMgdjg6OlBlcnNpc3RlbnRIYW5kbGVWaXNp
dG9yIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBNaW5vckdDV3JhcHBlclZpc2l0b3Iodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCisgICAgICAgIDogbV9pc29sYXRlKGlzb2xhdGUpCisgICAgeworICAg
ICAgICBVTlVTRURfUEFSQU0obV9pc29sYXRlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
VmlzaXRQZXJzaXN0ZW50SGFuZGxlKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHVp
bnQxNl90IGNsYXNzSWQpIE9WRVJSSURFCisgICAgeworICAgICAgICAvLyBBIG1pbm9yIERPTSBH
QyBjYW4gY29sbGVjdCBvbmx5IE5vZGVzLgorICAgICAgICBpZiAoY2xhc3NJZCAhPSB2OERPTU5v
ZGVDbGFzc0lkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFRvIG1ha2UgbWlu
b3IgR0MgY3ljbGUgdGltZSBib3VuZGVkLCB3ZSBsaW1pdCB0aGUgbnVtYmVyIG9mIHdyYXBwZXJz
IGhhbmRsZWQKKyAgICAgICAgLy8gYnkgZWFjaCBtaW5vciBHQyBjeWNsZSB0byAxMDAwMC4gVGhp
cyB2YWx1ZSB3YXMgc2VsZWN0ZWQgc28gdGhhdCB0aGUgbWlub3IKKyAgICAgICAgLy8gR0MgY3lj
bGUgdGltZSBpcyBib3VuZGVkIHRvIDIwIG1zIGluIGEgY2FzZSB3aGVyZSB0aGUgbmV3IHNwYWNl
IHNpemUKKyAgICAgICAgLy8gaXMgMTYgTUIgYW5kIGl0IGlzIGZ1bGwgb2Ygd3JhcHBlcnMgKHdo
aWNoIGlzIGFsbW9zdCB0aGUgd29yc3QgY2FzZSkuCisgICAgICAgIC8vIFByYWN0aWNhbGx5IHNw
ZWFraW5nLCBhcyBmYXIgYXMgSSBjcmF3bGVkIHJlYWwgd2ViIGFwcGxpY2F0aW9ucywKKyAgICAg
ICAgLy8gdGhlIG51bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkIGJ5IGVhY2ggbWlub3IgR0MgY3lj
bGUgaXMgYXQgbW9zdCAzMDAwLgorICAgICAgICAvLyBTbyB0aGlzIGxpbWl0IGlzIG1haW5seSBm
b3IgcGF0aG9sb2dpY2FsIG1pY3JvIGJlbmNobWFya3MuCisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHdyYXBwZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0MgPSAxMDAwMDsKKyAgICAgICAgaWYgKG1fbm9k
ZXNJbk5ld1NwYWNlLnNpemUoKSA+PSB3cmFwcGVyc0hhbmRsZWRCeUVhY2hNaW5vckdDKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7Cisg
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisgICAgICAgIEFTU0VSVChWOERPTVdyYXBwZXI6
Om1heWJlRE9NV3JhcHBlcih2YWx1ZSkpOworICAgICAgICBBU1NFUlQoVjhOb2RlOjpIYXNJbnN0
YW5jZSh3cmFwcGVyLCBtX2lzb2xhdGUpKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IFY4Tm9kZTo6
dG9OYXRpdmUod3JhcHBlcik7CisgICAgICAgIG1fbm9kZXNJbk5ld1NwYWNlLmFwcGVuZChub2Rl
KTsKKyAgICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0ModHJ1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpCisgICAgeworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fbm9kZXNJbk5ld1NwYWNlLnNpemUoKTsgaSsrKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIW1fbm9kZXNJbk5ld1NwYWNlW2ldLT53cmFwcGVyKCkuSXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIGlmIChtX25vZGVzSW5OZXdTcGFjZVtpXS0+aXNWOENvbGxlY3RhYmxlRHVy
aW5nTWlub3JHQygpKSAvLyBUaGlzIGJyYW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4KKyAg
ICAgICAgICAgICAgICBnY1RyZWUobV9ub2Rlc0luTmV3U3BhY2VbaV0pOworICAgICAgICB9Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxOb2RlKj4gbV9ub2Rlc0luTmV3U3BhY2U7Cisg
ICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsKK307CisKK2NsYXNzIE1ham9yR0NXcmFwcGVyVmlz
aXRvciA6IHB1YmxpYyB2ODo6UGVyc2lzdGVudEhhbmRsZVZpc2l0b3IgewogcHVibGljOgotICAg
IGV4cGxpY2l0IFdyYXBwZXJWaXNpdG9yKHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAgIGV4cGxp
Y2l0IE1ham9yR0NXcmFwcGVyVmlzaXRvcih2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICAgICAg
OiBtX2lzb2xhdGUoaXNvbGF0ZSkKICAgICB7CiAgICAgfQpAQCAtMjQ4LDEwNSArMzQ2LDI4IEBA
IHByaXZhdGU6CiAgICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsKIH07CiAKLS8vIFJlZ2FyZGlu
ZyBhIG1pbm9yIEdDIGFsZ29yaXRobSBmb3IgRE9NIG5vZGVzLCBzZWUgdGhpcyBkb2N1bWVudDoK
LS8vIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9wcmVzZW50YXRpb24vZC8x
dWlmd1ZZR05ZVFpEb0dMeUNiN3NYYTdnNDltV05NVzJnYVd2TU41TkxrOC9lZGl0I3NsaWRlPWlk
LnAKLS8vCi0vLyBtX2VkZW5Ob2RlcyBzdG9yZXMgbm9kZXMgdGhhdCBoYXZlIHdyYXBwZXJzIHRo
YXQgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgbWlub3IvbWFqb3IgR0MuCi1WZWN0
b3I8Tm9kZSo+KiBWOEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgPSAwOwotCi1zdGF0aWMgdm9p
ZCBnY1RyZWUoTm9kZSogc3RhcnROb2RlKQotewotICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2
ODo6VmFsdWU+LCBpbml0aWFsTm9kZVZlY3RvclNpemU+IG5ld1NwYWNlV3JhcHBlcnM7Ci0KLSAg
ICAvLyBXZSB0cmF2ZXJzZSBhIERPTSB0cmVlIGluIHRoZSBERlMgb3JkZXIgc3RhcnRpbmcgZnJv
bSBzdGFydE5vZGUuCi0gICAgLy8gVGhlIHRyYXZlcnNhbCBvcmRlciBkb2VzIG5vdCBtYXR0ZXIg
Zm9yIGNvcnJlY3RuZXNzIGJ1dCBkb2VzIG1hdHRlciBmb3IgcGVyZm9ybWFuY2UuCi0gICAgTm9k
ZSogbm9kZSA9IHN0YXJ0Tm9kZTsKLSAgICAvLyBUbyBtYWtlIGVhY2ggbWlub3IgR0MgdGltZSBi
b3VuZGVkLCB3ZSBtaWdodCBuZWVkIHRvIGdpdmUgdXAKLSAgICAvLyB0cmF2ZXJzaW5nIGF0IHNv
bWUgcG9pbnQgZm9yIGEgbGFyZ2UgRE9NIHRyZWUuIFRoYXQgYmVpbmcgc2FpZCwKLSAgICAvLyBJ
IGNvdWxkIG5vdCBvYnNlcnZlIHRoZSBuZWVkIGV2ZW4gaW4gcGF0aG9sb2dpY2FsIHRlc3QgY2Fz
ZXMuCi0gICAgZG8gewotICAgICAgICBBU1NFUlQobm9kZSk7Ci0gICAgICAgIGlmICghbm9kZS0+
d3JhcHBlcigpLklzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUg
c3BlY2lhbCBoYW5kbGluZyBmb3IgaW1hZ2UgZWxlbWVudHMuCi0gICAgICAgICAgICAvLyBUaGUg
c2FtZSBzcGVjaWFsIGhhbmRsaW5nIGlzIGluIFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9y
R0MoKS4KLSAgICAgICAgICAgIC8vIE1heWJlIHNob3VsZCBpbWFnZSBlbGVtZW50cyBiZSBhY3Rp
dmUgRE9NIG5vZGVzPwotICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29t
L3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjQ4ODIKLSAgICAgICAgICAgIGlmICghbm9k
ZS0+aXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQygpIHx8IChub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6aW1nVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSkt
Pmhhc1BlbmRpbmdBY3Rpdml0eSgpKSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRo
YXQgd2UgZW5jb3VudGVyIGEgbm9kZSB0aGF0IGlzIG5vdCBpbiB0aGUgRWRlbiBzcGFjZQotICAg
ICAgICAgICAgICAgIC8vIGltcGxpZXMgdGhhdCBpdHMgd3JhcHBlciBtaWdodCBiZSBpbiB0aGUg
b2xkIHNwYWNlIG9mIFY4LgotICAgICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQg
dGhlIG1pbm9yIEdDIGNhbm5vdCBhbnl3YXkganVkZ2UgcmVhY2hhYmlsaXR5Ci0gICAgICAgICAg
ICAgICAgLy8gb2YgdGhpcyBET00gdHJlZS4gVGh1cyB3ZSBnaXZlIHVwIHRyYXZlcnNpbmcgdGhl
IERPTSB0cmVlLgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIC8vIEEgb25jZSB0cmF2ZXJzZWQgbm9kZSBpcyByZW1vdmVkIGZyb20gdGhlIEVkZW4g
c3BhY2UuCi0gICAgICAgICAgICBub2RlLT5zZXRWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQyhm
YWxzZSk7Ci0gICAgICAgICAgICBuZXdTcGFjZVdyYXBwZXJzLmFwcGVuZChub2RlLT53cmFwcGVy
KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5maXJzdENoaWxkKCkpIHsKLSAgICAg
ICAgICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotICAgICAgICB3aGlsZSAoIW5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAg
ICAgICAgIGlmICghbm9kZS0+cGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRT
aWJsaW5nKCk7Ci0gICAgfSB3aGlsZSAobm9kZSAhPSBzdGFydE5vZGUpOwotCi0gICAgLy8gV2Ug
Y29tcGxldGVkIHRoZSBET00gdHJlZSB0cmF2ZXJzYWwuIEFsbCB3cmFwcGVycyBpbiB0aGUgRE9N
IHRyZWUgYXJlCi0gICAgLy8gc3RvcmVkIGluIG5ld1NwYWNlV3JhcHBlcnMgYW5kIGFyZSBleHBl
Y3RlZCB0byBleGlzdCBpbiB0aGUgbmV3IHNwYWNlIG9mIFY4LgotICAgIC8vIFdlIHJlcG9ydCB0
aG9zZSB3cmFwcGVycyB0byBWOCBhcyBhbiBvYmplY3QgZ3JvdXAuCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKTsgaSsrKQotICAgICAgICBuZXdTcGFj
ZVdyYXBwZXJzW2ldLk1hcmtQYXJ0aWFsbHlEZXBlbmRlbnQoKTsKLSAgICBpZiAobmV3U3BhY2VX
cmFwcGVycy5zaXplKCkgPiAwKQotICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZuZXdT
cGFjZVdyYXBwZXJzWzBdLCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSk7Ci19Ci0KLXZvaWQgVjhH
Q0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJGb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAg
Ly8gVG8gbWFrZSBtaW5vciBHQyBjeWNsZSB0aW1lIGJvdW5kZWQsIHdlIGxpbWl0IHRoZSBudW1i
ZXIgb2Ygd3JhcHBlcnMgaGFuZGxlZAotICAgIC8vIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUgdG8g
MTAwMDAuIFRoaXMgdmFsdWUgd2FzIHNlbGVjdGVkIHNvIHRoYXQgdGhlIG1pbm9yCi0gICAgLy8g
R0MgY3ljbGUgdGltZSBpcyBib3VuZGVkIHRvIDIwIG1zIGluIGEgY2FzZSB3aGVyZSB0aGUgbmV3
IHNwYWNlIHNpemUKLSAgICAvLyBpcyAxNiBNQiBhbmQgaXQgaXMgZnVsbCBvZiB3cmFwcGVycyAo
d2hpY2ggaXMgYWxtb3N0IHRoZSB3b3JzdCBjYXNlKS4KLSAgICAvLyBQcmFjdGljYWxseSBzcGVh
a2luZywgYXMgZmFyIGFzIEkgY3Jhd2xlZCByZWFsIHdlYiBhcHBsaWNhdGlvbnMsCi0gICAgLy8g
dGhlIG51bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUgaXMg
YXQgbW9zdCAzMDAwLgotICAgIC8vIFNvIHRoaXMgbGltaXQgaXMgbWFpbmx5IGZvciBwYXRob2xv
Z2ljYWwgbWljcm8gYmVuY2htYXJrcy4KLSAgICBjb25zdCB1bnNpZ25lZCB3cmFwcGVyc0hhbmRs
ZWRCeUVhY2hNaW5vckdDID0gMTAwMDA7Ci0gICAgQVNTRVJUKCFub2RlLT53cmFwcGVyKCkuSXNF
bXB0eSgpKTsKLSAgICBpZiAoIW1fZWRlbk5vZGVzKQotICAgICAgICBtX2VkZW5Ob2RlcyA9IGFk
b3B0UHRyKG5ldyBWZWN0b3I8Tm9kZSo+KS5sZWFrUHRyKCk7Ci0gICAgaWYgKG1fZWRlbk5vZGVz
LT5zaXplKCkgPD0gd3JhcHBlcnNIYW5kbGVkQnlFYWNoTWlub3JHQykgewotICAgICAgICAvLyBB
IG5vZGUgb2YgYSBuZXdseSBjcmVhdGVkIHdyYXBwZXIgaXMgcHV0IGludG8gdGhlIEVkZW4gc3Bh
Y2UuCi0gICAgICAgIG1fZWRlbk5vZGVzLT5hcHBlbmQobm9kZSk7Ci0gICAgICAgIG5vZGUtPnNl
dFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKHRydWUpOwotICAgIH0KLX0KLQogdm9pZCBWOEdD
Q29udHJvbGxlcjo6Z2NQcm9sb2d1ZSh2ODo6R0NUeXBlIHR5cGUsIHY4OjpHQ0NhbGxiYWNrRmxh
Z3MgZmxhZ3MpCiB7CiAgICAgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVTY2F2ZW5nZSkKICAgICAg
ICAgbWlub3JHQ1Byb2xvZ3VlKCk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSB2ODo6a0dDVHlwZU1h
cmtTd2VlcENvbXBhY3QpCiAgICAgICAgIG1ham9yR0NQcm9sb2d1ZSgpOwotCi0gICAgaWYgKGlz
TWFpblRocmVhZE9yR0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgewotICAgICAgICAvLyBUaGUg
RWRlbiBzcGFjZSBpcyBjbGVhcmVkIGF0IGV2ZXJ5IG1pbm9yL21ham9yIEdDLgotICAgICAgICBt
X2VkZW5Ob2Rlcy0+Y2xlYXIoKTsKLSAgICB9CiB9CiAKIHZvaWQgVjhHQ0NvbnRyb2xsZXI6Om1p
bm9yR0NQcm9sb2d1ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJ2OCIsICJHQyIpOwog
Ci0gICAgaWYgKGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgewotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZWRlbk5vZGVzLT5zaXplKCk7IGkrKykgewot
ICAgICAgICAgICAgQVNTRVJUKCFtX2VkZW5Ob2Rlcy0+YXQoaSktPndyYXBwZXIoKS5Jc0VtcHR5
KCkpOwotICAgICAgICAgICAgaWYgKG1fZWRlbk5vZGVzLT5hdChpKS0+aXNWOENvbGxlY3RhYmxl
RHVyaW5nTWlub3JHQygpKSAvLyBUaGlzIGJyYW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4K
LSAgICAgICAgICAgICAgICBnY1RyZWUobV9lZGVuTm9kZXMtPmF0KGkpKTsKLSAgICAgICAgfQor
ICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKKwor
ICAgIC8vIEEgbWlub3IgR0MgY2FuIGhhbmRsZSB0aGUgbWFpbiB3b3JsZCBvbmx5LgorICAgIERP
TVdyYXBwZXJXb3JsZCogd29ybGQgPSB3b3JsZEZvckVudGVyZWRDb250ZXh0V2l0aG91dENvbnRl
eHRDaGVjaygpOworICAgIGlmICh3b3JsZCAmJiB3b3JsZC0+aXNNYWluV29ybGQoKSkgeworICAg
ICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisKKyAgICAgICAgTWlub3JHQ1dyYXBwZXJWaXNp
dG9yIHZpc2l0b3IoaXNvbGF0ZSk7CisgICAgICAgIHY4OjpWODo6VmlzaXRIYW5kbGVzRm9yUGFy
dGlhbERlcGVuZGVuY2UoaXNvbGF0ZSwgJnZpc2l0b3IpOworICAgICAgICB2aXNpdG9yLm5vdGlm
eUZpbmlzaGVkKCk7CiAgICAgfQogfQogCkBAIC0zNTgsNyArMzc5LDcgQEAgdm9pZCBWOEdDQ29u
dHJvbGxlcjo6bWFqb3JHQ1Byb2xvZ3VlKCkKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHY4
OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCi0g
ICAgV3JhcHBlclZpc2l0b3IgdmlzaXRvcihpc29sYXRlKTsKKyAgICBNYWpvckdDV3JhcHBlclZp
c2l0b3IgdmlzaXRvcihpc29sYXRlKTsKICAgICB2ODo6Vjg6OlZpc2l0SGFuZGxlc1dpdGhDbGFz
c0lkcygmdmlzaXRvcik7CiAgICAgdmlzaXRvci5ub3RpZnlGaW5pc2hlZCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAppbmRleCBkZWYxMmM2NWFmNDhl
MjI3YWJmY2ExM2MwNzg0NjBlNWFkYzdmNTRjLi5kNzY3Yzk2ODNkOWNlMWQwMzlmZmRlMzQ0ZjUy
NWQ4ODhjMTA1NTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdD
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmgKQEAgLTUyLDcgKzUyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RH
YXJiYWdlKCk7CiAKICAgICBzdGF0aWMgTm9kZSogb3BhcXVlUm9vdEZvckdDKE5vZGUqKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXcmFwcGVyRm9yTm9kZShOb2RlKik7CiAKIHByaXZhdGU6
CiAgICAgc3RhdGljIFZlY3RvcjxOb2RlKj4qIG1fZWRlbk5vZGVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186997</attachid>
            <date>2013-02-06 23:25:45 -0800</date>
            <delta_ts>2013-02-08 04:07:40 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-108579-20130207162221.patch</filename>
            <type>text/plain</type>
            <size>18932</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3NjVjMjg4MWJjMTQw
NDQyMWRhM2EzZDkxNDIxZTYxODdlMzA1MS4uMjRlNzMyNmRjNmRmZTQwMzY3MWJjYzJlNmUxNzVi
ZmEzM2ZlMTU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBW
OEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgYW5kIG1ha2UgbWlub3IgRE9NIEdDIG1vcmUgcHJl
Y2lzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4
NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBDdXJyZW50
bHkgVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVzIHN0b3JlcyBhIGxpc3Qgb2Ygbm9kZXMgd2hv
c2UKKyAgICAgICAgd3JhcHBlcnMgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhdGVzdCBH
Qy4gVGhlIHJlYXNvbiB3aHkgd2UKKyAgICAgICAgbmVlZGVkIG1fZWRlbk5vZGVzIGlzIHRoYXQg
dGhlcmUgd2FzIG5vIHdheSB0byBrbm93IGEgbGlzdCBvZiB3cmFwcGVycworICAgICAgICBpbiB0
aGUgbmV3IHNwYWNlIG9mIFY4LiBCeSB1c2luZyBtX2VkZW5Ob2Rlcywgd2UgaGFkIGJlZW4gYXBw
cm94aW1hdGluZworICAgICAgICAnd3JhcHBlcnMgaW4gdGhlIG5ldyBzcGFjZScgYnkgJ3dyYXBw
ZXJzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UKKyAgICAgICAgdGhlIGxhdGVzdCBHQycu
CisKKyAgICAgICAgTm93IFY4IHByb3ZpZGVzIFZpc2l0SGFuZGxlc0ZvclBhcnRpYWxEZXBlbmRl
bmNlKCksIHdpdGggd2hpY2ggV2ViS2l0CisgICAgICAgIGNhbiBrbm93IGEgbGlzdCBvZiB3cmFw
cGVycyBpbiB0aGUgbmV3IHNwYWNlLiBCeSB1c2luZyB0aGUgQVBJLCB3ZSBjYW4KKyAgICAgICAg
cmVtb3ZlIFY4R0NDb250cm9sbGVyOjptX2VkZW5Ob2Rlcy4gVGhlIGJlbmVmaXQgaXMgdGhhdCAo
MSkgd2Ugbm8gbG9uZ2VyCisgICAgICAgIG5lZWQgdG8ga2VlcCBtX2VkZW5Ob2RlcyBhbmQgdGhh
dCAoMikgaXQgZW5hYmxlcyBtb3JlIHByZWNpc2UgbWlub3IKKyAgICAgICAgRE9NIEdDIChSZW1l
bWJlciB0aGF0IG1fZWRlbk5vZGVzIHdhcyBqdXN0IGFuIGFwcHJveGltYXRpb24pLgorCisgICAg
ICAgIFBlcmZvcm1hbmNlIGJlbmNobWFyazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNo
bWVudC5jZ2k/aWQ9MTg1OTQwCisgICAgICAgIFRoZSBiZW5jaG1hcmsgcnVucyAzMDAgaXRlcmF0
aW9ucywgZWFjaCBvZiB3aGljaCBjcmVhdGVzIDEwMDAwMCBlbGVtZW50cy4KKyAgICAgICAgVGhl
IGJlbmNobWFyayBtZWFzdXJlcyBhdmVyYWdlLCBtaW4sIG1lZGlhbiwgbWF4IGFuZCBzdGRldiBv
ZiBleGVjdXRpb24gdGltZXMKKyAgICAgICAgb2YgdGhlIDMwMCBpdGVyYXRpb25zLiBUaGlzIHdp
bGwgdGVsbCB1cyB0aGUgd29yc3QtY2FzZSBvdmVyaGVhZCBvZiB0aGlzIGNoYW5nZS4KKworICAg
ICAgICBCZWZvcmU6CisgICAgICAgICAgbWVhbj01OS45MW1zLCBtaW49MzltcywgbWVkaWFuPTQy
bXMsIG1heD0yNThtcywgc3RkZXY9NDcuNDhtcworCisgICAgICAgIEFmdGVyOgorICAgICAgICAg
IG1lYW49NTguNzVtcywgbWluPTM1bXMsIG1lZGlhbj00MW1zLCBtYXg9MjUwbXMsIHN0ZGV2PTQ3
LjMybXMKKworICAgICAgICBBcyBzaG93biBhYm92ZSwgSSBjb3VsZG4ndCBvYnNlcnZlIGFueSBw
ZXJmb3JtYW5jZSByZWdyZXNzaW9uLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6c2V0V3JhcHBlckluT2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAgKERPTVdyYXBwZXJXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmdldFdvcmxkV2l0aG91dENv
bnRleHRDaGVjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRJZklz
b2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRXaXRob3V0
Q29udGV4dENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRpYWxpemVJZk5lZWRl
ZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWlub3JHQ1dy
YXBwZXJWaXNpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbm9yR0NXcmFwcGVyVmlzaXRvcjo6
TWlub3JHQ1dyYXBwZXJWaXNpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbm9yR0NXcmFwcGVy
VmlzaXRvcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFqb3JHQ1dyYXBw
ZXJWaXNpdG9yOjpNYWpvckdDV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VjhH
Q0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xs
ZXI6Om1pbm9yR0NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6
bWFqb3JHQ1Byb2xvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5o
OgorICAgICAgICAoVjhHQ0NvbnRyb2xsZXIpOgorCiAyMDEzLTAyLTA2ICBNaWhhaSBNYWVyZWFu
ICA8bW1hZXJlYW5AYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1NSZWdpb25zXSBBc3NlcnRpb24g
ZmFpbHVyZSBpbiBOb2RlOjpkZXRhY2ggKCFyZW5kZXJlciB8fCByZW5kZXJlci0+aW5SZW5kZXJG
bG93VGhyZWFkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCmlu
ZGV4IGM5OGI1ZTQxY2ZlYTM0ZWVjMzc5NWFmYjQ5OTI3MGM1NjEzMDFkYTQuLmQ3MmQ0YTUxMDUz
NzYyZGQyNzIzMTU1NTFmMjkzMjBmMjUyOGFjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5oCkBAIC0xNjQsMTMgKzE2NCw2IEBAIHByaXZhdGU6CiAgICAgICAg
IG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyKTsKICAgICAgICAgd3JhcHBlci5NYWtlV2Vhayhp
c29sYXRlLCBvYmplY3QsIHdlYWtDYWxsYmFjayk7CiAgICAgfQotICAgIHN0YXRpYyB2b2lkIHNl
dFdyYXBwZXJJbk9iamVjdChOb2RlKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG9i
amVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAgIG9iamVjdC0+c2V0V3JhcHBlcih3
cmFwcGVyKTsKLSAgICAgICAgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJGb3JOb2Rl
KG9iamVjdCk7Ci0gICAgICAgIHdyYXBwZXIuTWFrZVdlYWsoaXNvbGF0ZSwgc3RhdGljX2Nhc3Q8
U2NyaXB0V3JhcHBhYmxlKj4ob2JqZWN0KSwgd2Vha0NhbGxiYWNrKTsKLSAgICB9CiAKICAgICBz
dGF0aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+LCB2b2lkKiBjb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01XcmFwcGVyV29ybGQuaAppbmRleCBkNjI1ZmU3NmMyNmFhOGQ0YjFlYWFiOGViMGVmN2IzNmUy
ZGNjNzY3Li44ZjJhOTBhYjVkMmNmODJkOTQ0OTNmOWExMjU4MjYyYmNkZTkzOTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaApAQCAtNjMsNiArNjMs
NyBAQCBwdWJsaWM6CiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyB2b2lkIGFzc2VydENvbnRl
eHRIYXNDb3JyZWN0UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKICNlbmRpZgor
ICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyBtZXRob2QgdG8gZ2V0V29ybGQoKS4KICAgICBzdGF0
aWMgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0KQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkBAIC03MCw2ICs3MSwxMCBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENvbnRleHRJc29sYXRlZFdv
cmxkKSk7CiAgICAgfQorICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQqIGdldFdvcmxkV2l0aG91
dENvbnRleHRDaGVjayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQtPkdldEFs
aWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENvbnRleHRJc29sYXRlZFdvcmxkKSk7Cisg
ICAgfQogCiAgICAgLy8gQXNzb2NpYXRlcyBhbiBpc29sYXRlZCB3b3JsZCAoc2VlIGFib3ZlIGZv
ciBkZXNjcmlwdGlvbikgd2l0aCBhIHNlY3VyaXR5CiAgICAgLy8gb3JpZ2luLiBYTUxIdHRwUmVx
dWVzdCBpbnN0YW5jZXMgdXNlZCBpbiB0aGF0IHdvcmxkIHdpbGwgYmUgY29uc2lkZXJlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCAxN2VmYWEyNTU0ODAxN2E2YmZj
YTI4NmM2YjM3ZmQxNDFmY2MyYzhhLi42M2FkNmQwZTdiNjQ1MGQ0MTI2MzRhYzBkMzZlMzBiMjMz
NjRiM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtNDM3LDEx
ICs0MzcsMjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGEgY29udGV4dCwgaWYgdGhl
IHdpbmRvdyBpcyBjdXJyZW50bHkgYmVpbmcgZGlzcGxheWVkIGluIHRoZSBGcmFtZS4KICAgICBG
cmFtZSogdG9GcmFtZUlmTm90RGV0YWNoZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCisg
ICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIG1ldGhvZCB0byB3b3JsZEZvckVudGVyZWRDb250ZXh0
KCkuCiAgICAgaW5saW5lIERPTVdyYXBwZXJXb3JsZCogd29ybGRGb3JFbnRlcmVkQ29udGV4dElm
SXNvbGF0ZWQoKQogICAgIHsKLSAgICAgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkp
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6
R2V0RW50ZXJlZCgpOworICAgICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWQodjg6
OkNvbnRleHQ6OkdldEVudGVyZWQoKSk7CisgICAgICAgIHJldHVybiBET01XcmFwcGVyV29ybGQ6
Omlzb2xhdGVkKGNvbnRleHQpOworICAgIH0KKworICAgIC8vIFRoaXMgaXMgYSBzbGlnaHRseSBk
aWZmZXJlbnQgdmVyc2lvbiBvZiB3b3JsZEZvckVudGVyZWRDb250ZXh0KCkuCisgICAgLy8gVGhl
IGRpZmZlcmVuY2UgaXMganVzdCB0aGF0IHdvcmxkRm9yRW50ZXJlZENvbnRleHRXaXRob3V0Q29u
dGV4dENoZWNrKCkKKyAgICAvLyBkb2VzIG5vdCBjYWxsIGFzc2VydENvbnRleHRIYXNDb3JyZWN0
UHJvdG90eXBlKCkgKHdoaWNoIGlzIGVuYWJsZWQgb24KKyAgICAvLyBEZWJ1ZyBidWlsZHMgb25s
eSkuIEJlY2F1c2UgYXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUoKSBjcmFzaGVzCisg
ICAgLy8gaWYgaXQgaXMgY2FsbGVkIHdoZW4gYSBjdXJyZW50IGNvbnRleHQgaXMgbm90IGNvbXBs
ZXRlbHkgaW5pdGlhbGl6ZWQsCisgICAgLy8geW91IGhhdmUgdG8gdXNlIHdvcmxkRm9yRW50ZXJl
ZENvbnRleHRXaXRob3V0Q29udGV4dENoZWNrKCkgaWYgeW91IG5lZWQKKyAgICAvLyB0byBnZXQg
YSBET01XcmFwcGVyV29ybGQgd2hpbGUgYSBjdXJyZW50IGNvbnRleHQgaXMgYmVpbmcgaW5pdGlh
bGl6ZWQuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDg1NzkjYzE1IGZvciBtb3JlIGRldGFpbHMuCisgICAgaW5saW5lIERPTVdyYXBwZXJXb3Js
ZCogd29ybGRGb3JFbnRlcmVkQ29udGV4dFdpdGhvdXRDb250ZXh0Q2hlY2soKQorICAgIHsKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRF
bnRlcmVkKCk7CisgICAgICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZFdpdGhvdXRD
b250ZXh0Q2hlY2soY29udGV4dCk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY29u
dGV4dCBjYXVzZXMgb3V0IG9mIG1lbW9yeSwgSmF2YVNjcmlwdCBzZXR0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGNhNjAwOTk5
MzIxZjM4ZDFjYmY1NjUyNjc1YzBlN2NlOTk5OWNiOWIuLjM1YzZkNmE0NjhmZTEwNjEzYzBmNThh
ZTQxNDVlMmIxNDMxY2YyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCkBAIC0yMDgsMTMgKzIwOCwxMyBAQCBib29sIFY4RE9NV2luZG93
U2hlbGw6OmluaXRpYWxpemVJZk5lZWRlZCgpCiAgICAgaWYgKG1fY29udGV4dC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIG1fd29ybGQtPnNldElzb2xhdGVkV29ybGRG
aWVsZChtX2NvbnRleHQuZ2V0KCkpOworCiAgICAgYm9vbCBpc01haW5Xb3JsZCA9IG1fd29ybGQt
PmlzTWFpbldvcmxkKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV9jb250ZXh0LmdldCgpKTsKICAgICB2ODo6Q29u
dGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwogCi0gICAgbV93b3JsZC0+c2V0SXNv
bGF0ZWRXb3JsZEZpZWxkKG1fY29udGV4dC5nZXQoKSk7Ci0KICAgICBpZiAobV9nbG9iYWwuaXNF
bXB0eSgpKSB7CiAgICAgICAgIG1fZ2xvYmFsLnNldChjb250ZXh0LT5HbG9iYWwoKSk7CiAgICAg
ICAgIGlmIChtX2dsb2JhbC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCAyODJjNDEwN2I1YjMzOTkwYjdkZDFlZTE5MWM4
MmFmZGFjYWRmMTVlLi40NDhiMjIyZTAxZWEzMWRhM2ExM2ZlYzQ3OGI1OWY1ZTZhNDgyMzBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCkBAIC0x
NzgsOSArMTc4LDEwNyBAQCBOb2RlKiBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdDKE5v
ZGUqIG5vZGUsIHY4OjpJc29sYXRlKikKICAgICByZXR1cm4gbm9kZTsKIH0KIAotY2xhc3MgV3Jh
cHBlclZpc2l0b3IgOiBwdWJsaWMgdjg6OlBlcnNpc3RlbnRIYW5kbGVWaXNpdG9yIHsKK3N0YXRp
YyB2b2lkIGdjVHJlZShOb2RlKiBzdGFydE5vZGUpCit7CisgICAgVmVjdG9yPHY4OjpQZXJzaXN0
ZW50PHY4OjpWYWx1ZT4sIGluaXRpYWxOb2RlVmVjdG9yU2l6ZT4gbmV3U3BhY2VXcmFwcGVyczsK
KworICAgIC8vIFdlIHRyYXZlcnNlIGEgRE9NIHRyZWUgaW4gdGhlIERGUyBvcmRlciBzdGFydGlu
ZyBmcm9tIHN0YXJ0Tm9kZS4KKyAgICAvLyBUaGUgdHJhdmVyc2FsIG9yZGVyIGRvZXMgbm90IG1h
dHRlciBmb3IgY29ycmVjdG5lc3MgYnV0IGRvZXMgbWF0dGVyIGZvciBwZXJmb3JtYW5jZS4KKyAg
ICBOb2RlKiBub2RlID0gc3RhcnROb2RlOworICAgIC8vIFRvIG1ha2UgZWFjaCBtaW5vciBHQyB0
aW1lIGJvdW5kZWQsIHdlIG1pZ2h0IG5lZWQgdG8gZ2l2ZSB1cAorICAgIC8vIHRyYXZlcnNpbmcg
YXQgc29tZSBwb2ludCBmb3IgYSBsYXJnZSBET00gdHJlZS4gVGhhdCBiZWluZyBzYWlkLAorICAg
IC8vIEkgY291bGQgbm90IG9ic2VydmUgdGhlIG5lZWQgZXZlbiBpbiBwYXRob2xvZ2ljYWwgdGVz
dCBjYXNlcy4KKyAgICBkbyB7CisgICAgICAgIEFTU0VSVChub2RlKTsKKyAgICAgICAgaWYgKCFu
b2RlLT53cmFwcGVyKCkuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBpbWFnZSBlbGVtZW50cy4KKyAgICAgICAgICAgIC8v
IFRoZSBzYW1lIHNwZWNpYWwgaGFuZGxpbmcgaXMgaW4gVjhHQ0NvbnRyb2xsZXI6Om9wYXF1ZVJv
b3RGb3JHQygpLgorICAgICAgICAgICAgLy8gTWF5YmUgc2hvdWxkIGltYWdlIGVsZW1lbnRzIGJl
IGFjdGl2ZSBET00gbm9kZXM/CisgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE2NDg4MgorICAgICAgICAgICAgaWYg
KCFub2RlLT5pc1Y4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKCkgfHwgKG5vZGUtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjppbWdUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihu
b2RlKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBu
b2RlIGlzIG5vdCBpbiB0aGUgbmV3IHNwYWNlIG9mIFY4LiBUaGlzIGluZGljYXRlcyB0aGF0Cisg
ICAgICAgICAgICAgICAgLy8gdGhlIG1pbm9yIEdDIGNhbm5vdCBhbnl3YXkganVkZ2UgcmVhY2hh
YmlsaXR5IG9mIHRoaXMgRE9NIHRyZWUuCisgICAgICAgICAgICAgICAgLy8gVGh1cyB3ZSBnaXZl
IHVwIHRyYXZlcnNpbmcgdGhlIERPTSB0cmVlLgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vZGUtPnNldFY4Q29sbGVjdGFibGVEdXJpbmdNaW5v
ckdDKGZhbHNlKTsKKyAgICAgICAgICAgIG5ld1NwYWNlV3JhcHBlcnMuYXBwZW5kKG5vZGUtPndy
YXBwZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmZpcnN0Q2hpbGQoKSkgewor
ICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIHdoaWxlICghbm9kZS0+bmV4dFNpYmxpbmcoKSkgewor
ICAgICAgICAgICAgaWYgKCFub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICB9Cisg
ICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICBub2RlID0gbm9kZS0+
bmV4dFNpYmxpbmcoKTsKKyAgICB9IHdoaWxlIChub2RlICE9IHN0YXJ0Tm9kZSk7CisKKyAgICAv
LyBXZSBjb21wbGV0ZWQgdGhlIERPTSB0cmVlIHRyYXZlcnNhbC4gQWxsIHdyYXBwZXJzIGluIHRo
ZSBET00gdHJlZSBhcmUKKyAgICAvLyBzdG9yZWQgaW4gbmV3U3BhY2VXcmFwcGVycyBhbmQgYXJl
IGV4cGVjdGVkIHRvIGV4aXN0IGluIHRoZSBuZXcgc3BhY2Ugb2YgVjguCisgICAgLy8gV2UgcmVw
b3J0IHRob3NlIHdyYXBwZXJzIHRvIFY4IGFzIGFuIG9iamVjdCBncm91cC4KKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpOyBpKyspCisgICAgICAgIG5l
d1NwYWNlV3JhcHBlcnNbaV0uTWFya1BhcnRpYWxseURlcGVuZGVudCgpOworICAgIGlmIChuZXdT
cGFjZVdyYXBwZXJzLnNpemUoKSA+IDApCisgICAgICAgIHY4OjpWODo6QWRkT2JqZWN0R3JvdXAo
Jm5ld1NwYWNlV3JhcHBlcnNbMF0sIG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpKTsKK30KKworLy8g
UmVnYXJkaW5nIGEgbWlub3IgR0MgYWxnb3JpdGhtIGZvciBET00gbm9kZXMsIHNlZSB0aGlzIGRv
Y3VtZW50OgorLy8gaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29tL3ByZXNlbnRh
dGlvbi9kLzF1aWZ3VllHTllUWkRvR0x5Q2I3c1hhN2c0OW1XTk1XMmdhV3ZNTjVOTGs4L2VkaXQj
c2xpZGU9aWQucAorY2xhc3MgTWlub3JHQ1dyYXBwZXJWaXNpdG9yIDogcHVibGljIHY4OjpQZXJz
aXN0ZW50SGFuZGxlVmlzaXRvciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTWlub3JHQ1dyYXBw
ZXJWaXNpdG9yKHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAgICAgICA6IG1faXNvbGF0ZShpc29s
YXRlKQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1faXNvbGF0ZSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIFZpc2l0UGVyc2lzdGVudEhhbmRsZSh2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+IHZhbHVlLCB1aW50MTZfdCBjbGFzc0lkKSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
Ly8gQSBtaW5vciBET00gR0MgY2FuIGNvbGxlY3Qgb25seSBOb2Rlcy4KKyAgICAgICAgaWYgKGNs
YXNzSWQgIT0gdjhET01Ob2RlQ2xhc3NJZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAvLyBUbyBtYWtlIG1pbm9yIEdDIGN5Y2xlIHRpbWUgYm91bmRlZCwgd2UgbGltaXQgdGhlIG51
bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkCisgICAgICAgIC8vIGJ5IGVhY2ggbWlub3IgR0MgY3lj
bGUgdG8gMTAwMDAuIFRoaXMgdmFsdWUgd2FzIHNlbGVjdGVkIHNvIHRoYXQgdGhlIG1pbm9yCisg
ICAgICAgIC8vIEdDIGN5Y2xlIHRpbWUgaXMgYm91bmRlZCB0byAyMCBtcyBpbiBhIGNhc2Ugd2hl
cmUgdGhlIG5ldyBzcGFjZSBzaXplCisgICAgICAgIC8vIGlzIDE2IE1CIGFuZCBpdCBpcyBmdWxs
IG9mIHdyYXBwZXJzICh3aGljaCBpcyBhbG1vc3QgdGhlIHdvcnN0IGNhc2UpLgorICAgICAgICAv
LyBQcmFjdGljYWxseSBzcGVha2luZywgYXMgZmFyIGFzIEkgY3Jhd2xlZCByZWFsIHdlYiBhcHBs
aWNhdGlvbnMsCisgICAgICAgIC8vIHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgaGFuZGxlZCBieSBl
YWNoIG1pbm9yIEdDIGN5Y2xlIGlzIGF0IG1vc3QgMzAwMC4KKyAgICAgICAgLy8gU28gdGhpcyBs
aW1pdCBpcyBtYWlubHkgZm9yIHBhdGhvbG9naWNhbCBtaWNybyBiZW5jaG1hcmtzLgorICAgICAg
ICBjb25zdCB1bnNpZ25lZCB3cmFwcGVyc0hhbmRsZWRCeUVhY2hNaW5vckdDID0gMTAwMDA7Cisg
ICAgICAgIGlmIChtX25vZGVzSW5OZXdTcGFjZS5zaXplKCkgPj0gd3JhcHBlcnNIYW5kbGVkQnlF
YWNoTWlub3JHQykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQodmFsdWUt
PklzT2JqZWN0KCkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOworICAgICAgICBBU1NF
UlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIodmFsdWUpKTsKKyAgICAgICAgQVNTRVJU
KFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlKSk7CisgICAgICAgIE5vZGUq
IG5vZGUgPSBWOE5vZGU6OnRvTmF0aXZlKHdyYXBwZXIpOworICAgICAgICBtX25vZGVzSW5OZXdT
cGFjZS5hcHBlbmQobm9kZSk7CisgICAgICAgIG5vZGUtPnNldFY4Q29sbGVjdGFibGVEdXJpbmdN
aW5vckdDKHRydWUpOworICAgIH0KKworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKQorICAgIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25vZGVzSW5OZXdTcGFjZS5zaXplKCk7
IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKCFtX25vZGVzSW5OZXdTcGFjZVtpXS0+d3JhcHBl
cigpLklzRW1wdHkoKSk7CisgICAgICAgICAgICBpZiAobV9ub2Rlc0luTmV3U3BhY2VbaV0tPmlz
VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0MoKSkgLy8gVGhpcyBicmFuY2ggaXMganVzdCBmb3Ig
cGVyZm9ybWFuY2UuCisgICAgICAgICAgICAgICAgZ2NUcmVlKG1fbm9kZXNJbk5ld1NwYWNlW2ld
KTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8Tm9kZSo+IG1fbm9k
ZXNJbk5ld1NwYWNlOworICAgIHY4OjpJc29sYXRlKiBtX2lzb2xhdGU7Cit9OworCitjbGFzcyBN
YWpvckdDV3JhcHBlclZpc2l0b3IgOiBwdWJsaWMgdjg6OlBlcnNpc3RlbnRIYW5kbGVWaXNpdG9y
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXcmFwcGVyVmlzaXRvcih2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKKyAgICBleHBsaWNpdCBNYWpvckdDV3JhcHBlclZpc2l0b3Iodjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiAgICAgICAgIDogbV9pc29sYXRlKGlzb2xhdGUpCiAgICAgewogICAgIH0KQEAgLTI0
OCwxMDUgKzM0NiwyNyBAQCBwcml2YXRlOgogICAgIHY4OjpJc29sYXRlKiBtX2lzb2xhdGU7CiB9
OwogCi0vLyBSZWdhcmRpbmcgYSBtaW5vciBHQyBhbGdvcml0aG0gZm9yIERPTSBub2Rlcywgc2Vl
IHRoaXMgZG9jdW1lbnQ6Ci0vLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20v
cHJlc2VudGF0aW9uL2QvMXVpZndWWUdOWVRaRG9HTHlDYjdzWGE3ZzQ5bVdOTVcyZ2FXdk1ONU5M
azgvZWRpdCNzbGlkZT1pZC5wCi0vLwotLy8gbV9lZGVuTm9kZXMgc3RvcmVzIG5vZGVzIHRoYXQg
aGF2ZSB3cmFwcGVycyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIHNpbmNlIHRoZSBsYXN0IG1pbm9y
L21ham9yIEdDLgotVmVjdG9yPE5vZGUqPiogVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVzID0g
MDsKLQotc3RhdGljIHZvaWQgZ2NUcmVlKE5vZGUqIHN0YXJ0Tm9kZSkKLXsKLSAgICBWZWN0b3I8
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgaW5pdGlhbE5vZGVWZWN0b3JTaXplPiBuZXdTcGFj
ZVdyYXBwZXJzOwotCi0gICAgLy8gV2UgdHJhdmVyc2UgYSBET00gdHJlZSBpbiB0aGUgREZTIG9y
ZGVyIHN0YXJ0aW5nIGZyb20gc3RhcnROb2RlLgotICAgIC8vIFRoZSB0cmF2ZXJzYWwgb3JkZXIg
ZG9lcyBub3QgbWF0dGVyIGZvciBjb3JyZWN0bmVzcyBidXQgZG9lcyBtYXR0ZXIgZm9yIHBlcmZv
cm1hbmNlLgotICAgIE5vZGUqIG5vZGUgPSBzdGFydE5vZGU7Ci0gICAgLy8gVG8gbWFrZSBlYWNo
IG1pbm9yIEdDIHRpbWUgYm91bmRlZCwgd2UgbWlnaHQgbmVlZCB0byBnaXZlIHVwCi0gICAgLy8g
dHJhdmVyc2luZyBhdCBzb21lIHBvaW50IGZvciBhIGxhcmdlIERPTSB0cmVlLiBUaGF0IGJlaW5n
IHNhaWQsCi0gICAgLy8gSSBjb3VsZCBub3Qgb2JzZXJ2ZSB0aGUgbmVlZCBldmVuIGluIHBhdGhv
bG9naWNhbCB0ZXN0IGNhc2VzLgotICAgIGRvIHsKLSAgICAgICAgQVNTRVJUKG5vZGUpOwotICAg
ICAgICBpZiAoIW5vZGUtPndyYXBwZXIoKS5Jc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGltYWdlIGVsZW1lbnRzLgotICAg
ICAgICAgICAgLy8gVGhlIHNhbWUgc3BlY2lhbCBoYW5kbGluZyBpcyBpbiBWOEdDQ29udHJvbGxl
cjo6b3BhcXVlUm9vdEZvckdDKCkuCi0gICAgICAgICAgICAvLyBNYXliZSBzaG91bGQgaW1hZ2Ug
ZWxlbWVudHMgYmUgYWN0aXZlIERPTSBub2Rlcz8KLSAgICAgICAgICAgIC8vIFNlZSBodHRwczov
L2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTY0ODgyCi0gICAg
ICAgICAgICBpZiAoIW5vZGUtPmlzVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0MoKSB8fCAobm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTEltYWdl
RWxlbWVudCo+KG5vZGUpLT5oYXNQZW5kaW5nQWN0aXZpdHkoKSkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBUaGUgZmFjdCB0aGF0IHdlIGVuY291bnRlciBhIG5vZGUgdGhhdCBpcyBub3QgaW4gdGhl
IEVkZW4gc3BhY2UKLSAgICAgICAgICAgICAgICAvLyBpbXBsaWVzIHRoYXQgaXRzIHdyYXBwZXIg
bWlnaHQgYmUgaW4gdGhlIG9sZCBzcGFjZSBvZiBWOC4KLSAgICAgICAgICAgICAgICAvLyBUaGlz
IGluZGljYXRlcyB0aGF0IHRoZSBtaW5vciBHQyBjYW5ub3QgYW55d2F5IGp1ZGdlIHJlYWNoYWJp
bGl0eQotICAgICAgICAgICAgICAgIC8vIG9mIHRoaXMgRE9NIHRyZWUuIFRodXMgd2UgZ2l2ZSB1
cCB0cmF2ZXJzaW5nIHRoZSBET00gdHJlZS4KLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAvLyBBIG9uY2UgdHJhdmVyc2VkIG5vZGUgaXMgcmVtb3Zl
ZCBmcm9tIHRoZSBFZGVuIHNwYWNlLgotICAgICAgICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJs
ZUR1cmluZ01pbm9yR0MoZmFsc2UpOwotICAgICAgICAgICAgbmV3U3BhY2VXcmFwcGVycy5hcHBl
bmQobm9kZS0+d3JhcHBlcigpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+Zmlyc3RD
aGlsZCgpKSB7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgIG5v
ZGUgPSBub2RlLT5uZXh0U2libGluZygpOwotICAgIH0gd2hpbGUgKG5vZGUgIT0gc3RhcnROb2Rl
KTsKLQotICAgIC8vIFdlIGNvbXBsZXRlZCB0aGUgRE9NIHRyZWUgdHJhdmVyc2FsLiBBbGwgd3Jh
cHBlcnMgaW4gdGhlIERPTSB0cmVlIGFyZQotICAgIC8vIHN0b3JlZCBpbiBuZXdTcGFjZVdyYXBw
ZXJzIGFuZCBhcmUgZXhwZWN0ZWQgdG8gZXhpc3QgaW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4KLSAg
ICAvLyBXZSByZXBvcnQgdGhvc2Ugd3JhcHBlcnMgdG8gVjggYXMgYW4gb2JqZWN0IGdyb3VwLgot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCk7IGkrKykK
LSAgICAgICAgbmV3U3BhY2VXcmFwcGVyc1tpXS5NYXJrUGFydGlhbGx5RGVwZW5kZW50KCk7Ci0g
ICAgaWYgKG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpID4gMCkKLSAgICAgICAgdjg6OlY4OjpBZGRP
YmplY3RHcm91cCgmbmV3U3BhY2VXcmFwcGVyc1swXSwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCkp
OwotfQotCi12b2lkIFY4R0NDb250cm9sbGVyOjpkaWRDcmVhdGVXcmFwcGVyRm9yTm9kZShOb2Rl
KiBub2RlKQotewotICAgIC8vIFRvIG1ha2UgbWlub3IgR0MgY3ljbGUgdGltZSBib3VuZGVkLCB3
ZSBsaW1pdCB0aGUgbnVtYmVyIG9mIHdyYXBwZXJzIGhhbmRsZWQKLSAgICAvLyBieSBlYWNoIG1p
bm9yIEdDIGN5Y2xlIHRvIDEwMDAwLiBUaGlzIHZhbHVlIHdhcyBzZWxlY3RlZCBzbyB0aGF0IHRo
ZSBtaW5vcgotICAgIC8vIEdDIGN5Y2xlIHRpbWUgaXMgYm91bmRlZCB0byAyMCBtcyBpbiBhIGNh
c2Ugd2hlcmUgdGhlIG5ldyBzcGFjZSBzaXplCi0gICAgLy8gaXMgMTYgTUIgYW5kIGl0IGlzIGZ1
bGwgb2Ygd3JhcHBlcnMgKHdoaWNoIGlzIGFsbW9zdCB0aGUgd29yc3QgY2FzZSkuCi0gICAgLy8g
UHJhY3RpY2FsbHkgc3BlYWtpbmcsIGFzIGZhciBhcyBJIGNyYXdsZWQgcmVhbCB3ZWIgYXBwbGlj
YXRpb25zLAotICAgIC8vIHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgaGFuZGxlZCBieSBlYWNoIG1p
bm9yIEdDIGN5Y2xlIGlzIGF0IG1vc3QgMzAwMC4KLSAgICAvLyBTbyB0aGlzIGxpbWl0IGlzIG1h
aW5seSBmb3IgcGF0aG9sb2dpY2FsIG1pY3JvIGJlbmNobWFya3MuCi0gICAgY29uc3QgdW5zaWdu
ZWQgd3JhcHBlcnNIYW5kbGVkQnlFYWNoTWlub3JHQyA9IDEwMDAwOwotICAgIEFTU0VSVCghbm9k
ZS0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgaWYgKCFtX2VkZW5Ob2RlcykKLSAgICAgICAg
bV9lZGVuTm9kZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPE5vZGUqPikubGVha1B0cigpOwotICAg
IGlmIChtX2VkZW5Ob2Rlcy0+c2l6ZSgpIDw9IHdyYXBwZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0Mp
IHsKLSAgICAgICAgLy8gQSBub2RlIG9mIGEgbmV3bHkgY3JlYXRlZCB3cmFwcGVyIGlzIHB1dCBp
bnRvIHRoZSBFZGVuIHNwYWNlLgotICAgICAgICBtX2VkZW5Ob2Rlcy0+YXBwZW5kKG5vZGUpOwot
ICAgICAgICBub2RlLT5zZXRWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQyh0cnVlKTsKLSAgICB9
Ci19Ci0KIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUodjg6OkdDVHlwZSB0eXBlLCB2
ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQogewogICAgIGlmICh0eXBlID09IHY4OjprR0NUeXBl
U2NhdmVuZ2UpCiAgICAgICAgIG1pbm9yR0NQcm9sb2d1ZSgpOwogICAgIGVsc2UgaWYgKHR5cGUg
PT0gdjg6OmtHQ1R5cGVNYXJrU3dlZXBDb21wYWN0KQogICAgICAgICBtYWpvckdDUHJvbG9ndWUo
KTsKLQotICAgIGlmIChpc01haW5UaHJlYWRPckdDVGhyZWFkKCkgJiYgbV9lZGVuTm9kZXMpIHsK
LSAgICAgICAgLy8gVGhlIEVkZW4gc3BhY2UgaXMgY2xlYXJlZCBhdCBldmVyeSBtaW5vci9tYWpv
ciBHQy4KLSAgICAgICAgbV9lZGVuTm9kZXMtPmNsZWFyKCk7Ci0gICAgfQogfQogCiB2b2lkIFY4
R0NDb250cm9sbGVyOjptaW5vckdDUHJvbG9ndWUoKQogewogICAgIFRSQUNFX0VWRU5UX0JFR0lO
MCgidjgiLCAiR0MiKTsKIAotICAgIGlmIChpc01haW5UaHJlYWRPckdDVGhyZWFkKCkgJiYgbV9l
ZGVuTm9kZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VkZW5Ob2Rlcy0+
c2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9lZGVuTm9kZXMtPmF0KGkpLT53
cmFwcGVyKCkuSXNFbXB0eSgpKTsKLSAgICAgICAgICAgIGlmIChtX2VkZW5Ob2Rlcy0+YXQoaSkt
PmlzVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0MoKSkgLy8gVGhpcyBicmFuY2ggaXMganVzdCBm
b3IgcGVyZm9ybWFuY2UuCi0gICAgICAgICAgICAgICAgZ2NUcmVlKG1fZWRlbk5vZGVzLT5hdChp
KSk7Ci0gICAgICAgIH0KKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpH
ZXRDdXJyZW50KCk7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworCisgICAgLy8gQSBtaW5v
ciBHQyBjYW4gaGFuZGxlIHRoZSBtYWluIHdvcmxkIG9ubHkuCisgICAgRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCA9IHdvcmxkRm9yRW50ZXJlZENvbnRleHRXaXRob3V0Q29udGV4dENoZWNrKCk7Cisg
ICAgaWYgKHdvcmxkICYmIHdvcmxkLT5pc01haW5Xb3JsZCgpKSB7CisgICAgICAgIE1pbm9yR0NX
cmFwcGVyVmlzaXRvciB2aXNpdG9yKGlzb2xhdGUpOworICAgICAgICB2ODo6Vjg6OlZpc2l0SGFu
ZGxlc0ZvclBhcnRpYWxEZXBlbmRlbmNlKGlzb2xhdGUsICZ2aXNpdG9yKTsKKyAgICAgICAgdmlz
aXRvci5ub3RpZnlGaW5pc2hlZCgpOwogICAgIH0KIH0KIApAQCAtMzU4LDcgKzM3OCw3IEBAIHZv
aWQgVjhHQ0NvbnRyb2xsZXI6Om1ham9yR0NQcm9sb2d1ZSgpCiAgICAgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAgIHY4OjpIYW5kbGVTY29wZSBz
Y29wZTsKIAotICAgIFdyYXBwZXJWaXNpdG9yIHZpc2l0b3IoaXNvbGF0ZSk7CisgICAgTWFqb3JH
Q1dyYXBwZXJWaXNpdG9yIHZpc2l0b3IoaXNvbGF0ZSk7CiAgICAgdjg6OlY4OjpWaXNpdEhhbmRs
ZXNXaXRoQ2xhc3NJZHMoJnZpc2l0b3IpOwogICAgIHZpc2l0b3Iubm90aWZ5RmluaXNoZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKaW5kZXggMzJk
MWEwOGMzMDE1MDk2OGQwNTM5NmFjNzRmZDA0NTAzZDE5Y2RkZS4uZDM4MThmOGFlZWEwODZmNDc0
OTk5MjVhZmQ3NjUyOWMyZTQ4NGJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEdDQ29udHJvbGxlci5oCkBAIC01Miw3ICs1Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBjb2xsZWN0R2FyYmFnZSgpOwogCiAgICAgc3RhdGljIE5vZGUqIG9wYXF1ZVJvb3RGb3JHQyhO
b2RlKiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXcmFwcGVyRm9y
Tm9kZShOb2RlKik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIFZlY3RvcjxOb2RlKj4qIG1fZWRl
bk5vZGVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187286</attachid>
            <date>2013-02-08 04:07:44 -0800</date>
            <delta_ts>2013-02-08 04:07:44 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-108579-20130208210419.patch</filename>
            <type>text/plain</type>
            <size>18982</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVmZWExMWUwY2FiZDE3
ZTZlZjcwMTQ0M2NlN2VlZGYzMTEzOTk0OS4uMTA5YjZkOWY3ZGFmMjEwODhmN2NhMjAwNTk3NTQx
YmY3ZTRiMjk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBW
OEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgYW5kIG1ha2UgbWlub3IgRE9NIEdDIG1vcmUgcHJl
Y2lzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4
NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBDdXJyZW50
bHkgVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVzIHN0b3JlcyBhIGxpc3Qgb2Ygbm9kZXMgd2hv
c2UKKyAgICAgICAgd3JhcHBlcnMgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhdGVzdCBH
Qy4gVGhlIHJlYXNvbiB3aHkgd2UKKyAgICAgICAgbmVlZGVkIG1fZWRlbk5vZGVzIGlzIHRoYXQg
dGhlcmUgd2FzIG5vIHdheSB0byBrbm93IGEgbGlzdCBvZiB3cmFwcGVycworICAgICAgICBpbiB0
aGUgbmV3IHNwYWNlIG9mIFY4LiBCeSB1c2luZyBtX2VkZW5Ob2Rlcywgd2UgaGFkIGJlZW4gYXBw
cm94aW1hdGluZworICAgICAgICAnd3JhcHBlcnMgaW4gdGhlIG5ldyBzcGFjZScgYnkgJ3dyYXBw
ZXJzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UKKyAgICAgICAgdGhlIGxhdGVzdCBHQycu
CisKKyAgICAgICAgTm93IFY4IHByb3ZpZGVzIFZpc2l0SGFuZGxlc0ZvclBhcnRpYWxEZXBlbmRl
bmNlKCksIHdpdGggd2hpY2ggV2ViS2l0CisgICAgICAgIGNhbiBrbm93IGEgbGlzdCBvZiB3cmFw
cGVycyBpbiB0aGUgbmV3IHNwYWNlLiBCeSB1c2luZyB0aGUgQVBJLCB3ZSBjYW4KKyAgICAgICAg
cmVtb3ZlIFY4R0NDb250cm9sbGVyOjptX2VkZW5Ob2Rlcy4gVGhlIGJlbmVmaXQgaXMgdGhhdCAo
MSkgd2Ugbm8gbG9uZ2VyCisgICAgICAgIG5lZWQgdG8ga2VlcCBtX2VkZW5Ob2RlcyBhbmQgdGhh
dCAoMikgaXQgZW5hYmxlcyBtb3JlIHByZWNpc2UgbWlub3IKKyAgICAgICAgRE9NIEdDIChSZW1l
bWJlciB0aGF0IG1fZWRlbk5vZGVzIHdhcyBqdXN0IGFuIGFwcHJveGltYXRpb24pLgorCisgICAg
ICAgIFBlcmZvcm1hbmNlIGJlbmNobWFyazogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNo
bWVudC5jZ2k/aWQ9MTg1OTQwCisgICAgICAgIFRoZSBiZW5jaG1hcmsgcnVucyAzMDAgaXRlcmF0
aW9ucywgZWFjaCBvZiB3aGljaCBjcmVhdGVzIDEwMDAwMCBlbGVtZW50cy4KKyAgICAgICAgVGhl
IGJlbmNobWFyayBtZWFzdXJlcyBhdmVyYWdlLCBtaW4sIG1lZGlhbiwgbWF4IGFuZCBzdGRldiBv
ZiBleGVjdXRpb24gdGltZXMKKyAgICAgICAgb2YgdGhlIDMwMCBpdGVyYXRpb25zLiBUaGlzIHdp
bGwgdGVsbCB1cyB0aGUgd29yc3QtY2FzZSBvdmVyaGVhZCBvZiB0aGlzIGNoYW5nZS4KKworICAg
ICAgICBCZWZvcmU6CisgICAgICAgICAgbWVhbj01OS45MW1zLCBtaW49MzltcywgbWVkaWFuPTQy
bXMsIG1heD0yNThtcywgc3RkZXY9NDcuNDhtcworCisgICAgICAgIEFmdGVyOgorICAgICAgICAg
IG1lYW49NTguNzVtcywgbWluPTM1bXMsIG1lZGlhbj00MW1zLCBtYXg9MjUwbXMsIHN0ZGV2PTQ3
LjMybXMKKworICAgICAgICBBcyBzaG93biBhYm92ZSwgSSBjb3VsZG4ndCBvYnNlcnZlIGFueSBw
ZXJmb3JtYW5jZSByZWdyZXNzaW9uLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6c2V0V3JhcHBlckluT2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAgKERPTVdyYXBwZXJXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmdldFdvcmxkV2l0aG91dENv
bnRleHRDaGVjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRJZklz
b2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmxkRm9yRW50ZXJlZENvbnRleHRXaXRob3V0
Q29udGV4dENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRpYWxpemVJZk5lZWRl
ZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWlub3JHQ1dy
YXBwZXJWaXNpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbm9yR0NXcmFwcGVyVmlzaXRvcjo6
TWlub3JHQ1dyYXBwZXJWaXNpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbm9yR0NXcmFwcGVy
VmlzaXRvcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFqb3JHQ1dyYXBw
ZXJWaXNpdG9yOjpNYWpvckdDV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VjhH
Q0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xs
ZXI6Om1pbm9yR0NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6
bWFqb3JHQ1Byb2xvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5o
OgorICAgICAgICAoVjhHQ0NvbnRyb2xsZXIpOgorCiAyMDEzLTAyLTA2ICBLZW50IFRhbXVyYSAg
PHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNDExOTUpOiBJTlBV
VF9NVUxUSVBMRV9GSUVMRFNfVUk6IFNwYWNlIGluIGEgcGxhY2Vob2xkZXIgc3RyaW5nIGlzIHJl
bW92ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggYzk4
YjVlNDFjZmVhMzRlZWMzNzk1YWZiNDk5MjcwYzU2MTMwMWRhNC4uZDcyZDRhNTEwNTM3NjJkZDI3
MjMxNTU1MWYyOTMyMGYyNTI4YWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
RGF0YVN0b3JlLmgKQEAgLTE2NCwxMyArMTY0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgb2JqZWN0
LT5zZXRXcmFwcGVyKHdyYXBwZXIpOwogICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKGlzb2xhdGUs
IG9iamVjdCwgd2Vha0NhbGxiYWNrKTsKICAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBl
ckluT2JqZWN0KE5vZGUqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
ciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi0gICAgewotICAgICAgICBBU1NFUlQob2JqZWN0LT53
cmFwcGVyKCkuSXNFbXB0eSgpKTsKLSAgICAgICAgb2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIp
OwotICAgICAgICBWOEdDQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV3JhcHBlckZvck5vZGUob2JqZWN0
KTsKLSAgICAgICAgd3JhcHBlci5NYWtlV2Vhayhpc29sYXRlLCBzdGF0aWNfY2FzdDxTY3JpcHRX
cmFwcGFibGUqPihvYmplY3QpLCB3ZWFrQ2FsbGJhY2spOwotICAgIH0KIAogICAgIHN0YXRpYyB2
b2lkIHdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSosIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4s
IHZvaWQqIGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01XcmFwcGVyV29ybGQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBw
ZXJXb3JsZC5oCmluZGV4IGQ2MjVmZTc2YzI2YWE4ZDRiMWVhYWI4ZWIwZWY3YjM2ZTJkY2M3Njcu
LjhmMmE5MGFiNWQyY2Y4MmQ5NDQ5M2Y5YTEyNTgyNjJiY2RlOTM5M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCkBAIC02Myw2ICs2Myw3IEBAIHB1
YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29udGV4dEhhc0Nv
cnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogI2VuZGlmCisgICAgLy8g
RklYTUU6IFJlbmFtZSB0aGlzIG1ldGhvZCB0byBnZXRXb3JsZCgpLgogICAgIHN0YXRpYyBET01X
cmFwcGVyV29ybGQqIGlzb2xhdGVkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiAg
ICAgewogI2lmbmRlZiBOREVCVUcKQEAgLTcwLDYgKzcxLDEwIEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dC0+R2V0
QWxpZ25lZFBvaW50ZXJGcm9tRW1iZWRkZXJEYXRhKHY4Q29udGV4dElzb2xhdGVkV29ybGQpKTsK
ICAgICB9CisgICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCogZ2V0V29ybGRXaXRob3V0Q29udGV4
dENoZWNrKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dC0+R2V0QWxpZ25lZFBv
aW50ZXJGcm9tRW1iZWRkZXJEYXRhKHY4Q29udGV4dElzb2xhdGVkV29ybGQpKTsKKyAgICB9CiAK
ICAgICAvLyBBc3NvY2lhdGVzIGFuIGlzb2xhdGVkIHdvcmxkIChzZWUgYWJvdmUgZm9yIGRlc2Ny
aXB0aW9uKSB3aXRoIGEgc2VjdXJpdHkKICAgICAvLyBvcmlnaW4uIFhNTEh0dHBSZXF1ZXN0IGlu
c3RhbmNlcyB1c2VkIGluIHRoYXQgd29ybGQgd2lsbCBiZSBjb25zaWRlcmVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDE3ZWZhYTI1NTQ4MDE3YTZiZmNhMjg2YzZi
MzdmZDE0MWZjYzJjOGEuLjYzYWQ2ZDBlN2I2NDUwZDQxMjYzNGFjMGQzNmUzMGIyMzM2NGIzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC00MzcsMTEgKzQzNywy
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gYSBjb250ZXh0LCBpZiB0aGUgd2luZG93
IGlzIGN1cnJlbnRseSBiZWluZyBkaXNwbGF5ZWQgaW4gdGhlIEZyYW1lLgogICAgIEZyYW1lKiB0
b0ZyYW1lSWZOb3REZXRhY2hlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAKKyAgICAvLyBG
SVhNRTogUmVuYW1lIHRoaXMgbWV0aG9kIHRvIHdvcmxkRm9yRW50ZXJlZENvbnRleHQoKS4KICAg
ICBpbmxpbmUgRE9NV3JhcHBlcldvcmxkKiB3b3JsZEZvckVudGVyZWRDb250ZXh0SWZJc29sYXRl
ZCgpCiAgICAgewotICAgICAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRl
cmVkKCk7CisgICAgICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZCh2ODo6Q29udGV4
dDo6R2V0RW50ZXJlZCgpKTsKKyAgICAgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0
ZWQoY29udGV4dCk7CisgICAgfQorCisgICAgLy8gVGhpcyBpcyBhIHNsaWdodGx5IGRpZmZlcmVu
dCB2ZXJzaW9uIG9mIHdvcmxkRm9yRW50ZXJlZENvbnRleHQoKS4KKyAgICAvLyBUaGUgZGlmZmVy
ZW5jZSBpcyBqdXN0IHRoYXQgd29ybGRGb3JFbnRlcmVkQ29udGV4dFdpdGhvdXRDb250ZXh0Q2hl
Y2soKQorICAgIC8vIGRvZXMgbm90IGNhbGwgYXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5
cGUoKSAod2hpY2ggaXMgZW5hYmxlZCBvbgorICAgIC8vIERlYnVnIGJ1aWxkcyBvbmx5KS4gQmVj
YXVzZSBhc3NlcnRDb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSgpIGNyYXNoZXMKKyAgICAvLyBp
ZiBpdCBpcyBjYWxsZWQgd2hlbiBhIGN1cnJlbnQgY29udGV4dCBpcyBub3QgY29tcGxldGVseSBp
bml0aWFsaXplZCwKKyAgICAvLyB5b3UgaGF2ZSB0byB1c2Ugd29ybGRGb3JFbnRlcmVkQ29udGV4
dFdpdGhvdXRDb250ZXh0Q2hlY2soKSBpZiB5b3UgbmVlZAorICAgIC8vIHRvIGdldCBhIERPTVdy
YXBwZXJXb3JsZCB3aGlsZSBhIGN1cnJlbnQgY29udGV4dCBpcyBiZWluZyBpbml0aWFsaXplZC4K
KyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODU3
OSNjMTUgZm9yIG1vcmUgZGV0YWlscy4KKyAgICBpbmxpbmUgRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZEZvckVudGVyZWRDb250ZXh0V2l0aG91dENvbnRleHRDaGVjaygpCisgICAgeworICAgICAgICB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEVudGVyZWQo
KTsKKyAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBET01XcmFwcGVyV29ybGQ6OmdldFdvcmxkV2l0aG91dENvbnRleHRD
aGVjayhjb250ZXh0KTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgY3VycmVudCBjb250ZXh0IGNh
dXNlcyBvdXQgb2YgbWVtb3J5LCBKYXZhU2NyaXB0IHNldHRpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggY2E2MDA5OTkzMjFmMzhk
MWNiZjU2NTI2NzVjMGU3Y2U5OTk5Y2I5Yi4uMzVjNmQ2YTQ2OGZlMTA2MTNjMGY1OGFlNDE0NWUy
YjE0MzFjZjJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
aW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5k
b3dTaGVsbC5jcHAKQEAgLTIwOCwxMyArMjA4LDEzIEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6
aW5pdGlhbGl6ZUlmTmVlZGVkKCkKICAgICBpZiAobV9jb250ZXh0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisgICAgbV93b3JsZC0+c2V0SXNvbGF0ZWRXb3JsZEZpZWxkKG1f
Y29udGV4dC5nZXQoKSk7CisKICAgICBib29sIGlzTWFpbldvcmxkID0gbV93b3JsZC0+aXNNYWlu
V29ybGQoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQuZ2V0KCkpOwogICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CiAKLSAgICBtX3dvcmxkLT5zZXRJc29sYXRlZFdv
cmxkRmllbGQobV9jb250ZXh0LmdldCgpKTsKLQogICAgIGlmIChtX2dsb2JhbC5pc0VtcHR5KCkp
IHsKICAgICAgICAgbV9nbG9iYWwuc2V0KGNvbnRleHQtPkdsb2JhbCgpKTsKICAgICAgICAgaWYg
KG1fZ2xvYmFsLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhH
Q0NvbnRyb2xsZXIuY3BwCmluZGV4IDI4MmM0MTA3YjViMzM5OTBiN2RkMWVlMTkxYzgyYWZkYWNh
ZGYxNWUuLjQ1OWM1MjZjMDNjOTU1N2Y0M2JiMDQwYTkxN2Y1MzU0NmFkMDJhMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTE3OCw5ICsx
NzgsMTA3IEBAIE5vZGUqIFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9yR0MoTm9kZSogbm9k
ZSwgdjg6Oklzb2xhdGUqKQogICAgIHJldHVybiBub2RlOwogfQogCi1jbGFzcyBXcmFwcGVyVmlz
aXRvciA6IHB1YmxpYyB2ODo6UGVyc2lzdGVudEhhbmRsZVZpc2l0b3Igeworc3RhdGljIHZvaWQg
Z2NUcmVlKE5vZGUqIHN0YXJ0Tm9kZSkKK3sKKyAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6
OlZhbHVlPiwgaW5pdGlhbE5vZGVWZWN0b3JTaXplPiBuZXdTcGFjZVdyYXBwZXJzOworCisgICAg
Ly8gV2UgdHJhdmVyc2UgYSBET00gdHJlZSBpbiB0aGUgREZTIG9yZGVyIHN0YXJ0aW5nIGZyb20g
c3RhcnROb2RlLgorICAgIC8vIFRoZSB0cmF2ZXJzYWwgb3JkZXIgZG9lcyBub3QgbWF0dGVyIGZv
ciBjb3JyZWN0bmVzcyBidXQgZG9lcyBtYXR0ZXIgZm9yIHBlcmZvcm1hbmNlLgorICAgIE5vZGUq
IG5vZGUgPSBzdGFydE5vZGU7CisgICAgLy8gVG8gbWFrZSBlYWNoIG1pbm9yIEdDIHRpbWUgYm91
bmRlZCwgd2UgbWlnaHQgbmVlZCB0byBnaXZlIHVwCisgICAgLy8gdHJhdmVyc2luZyBhdCBzb21l
IHBvaW50IGZvciBhIGxhcmdlIERPTSB0cmVlLiBUaGF0IGJlaW5nIHNhaWQsCisgICAgLy8gSSBj
b3VsZCBub3Qgb2JzZXJ2ZSB0aGUgbmVlZCBldmVuIGluIHBhdGhvbG9naWNhbCB0ZXN0IGNhc2Vz
LgorICAgIGRvIHsKKyAgICAgICAgQVNTRVJUKG5vZGUpOworICAgICAgICBpZiAoIW5vZGUtPndy
YXBwZXIoKS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHNw
ZWNpYWwgaGFuZGxpbmcgZm9yIGltYWdlIGVsZW1lbnRzLgorICAgICAgICAgICAgLy8gVGhlIHNh
bWUgc3BlY2lhbCBoYW5kbGluZyBpcyBpbiBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdD
KCkuCisgICAgICAgICAgICAvLyBNYXliZSBzaG91bGQgaW1hZ2UgZWxlbWVudHMgYmUgYWN0aXZl
IERPTSBub2Rlcz8KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9w
L2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTY0ODgyCisgICAgICAgICAgICBpZiAoIW5vZGUt
PmlzVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0MoKSB8fCAobm9kZS0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OmltZ1RhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUpLT5o
YXNQZW5kaW5nQWN0aXZpdHkoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgaXMg
bm90IGluIHRoZSBuZXcgc3BhY2Ugb2YgVjguIFRoaXMgaW5kaWNhdGVzIHRoYXQKKyAgICAgICAg
ICAgICAgICAvLyB0aGUgbWlub3IgR0MgY2Fubm90IGFueXdheSBqdWRnZSByZWFjaGFiaWxpdHkg
b2YgdGhpcyBET00gdHJlZS4KKyAgICAgICAgICAgICAgICAvLyBUaHVzIHdlIGdpdmUgdXAgdHJh
dmVyc2luZyB0aGUgRE9NIHRyZWUuCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0MoZmFs
c2UpOworICAgICAgICAgICAgbmV3U3BhY2VXcmFwcGVycy5hcHBlbmQobm9kZS0+d3JhcHBlcigp
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAg
ICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
ICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpOworICAgIH0gd2hpbGUgKG5vZGUgIT0gc3RhcnROb2RlKTsKKworICAgIC8vIFdlIGNv
bXBsZXRlZCB0aGUgRE9NIHRyZWUgdHJhdmVyc2FsLiBBbGwgd3JhcHBlcnMgaW4gdGhlIERPTSB0
cmVlIGFyZQorICAgIC8vIHN0b3JlZCBpbiBuZXdTcGFjZVdyYXBwZXJzIGFuZCBhcmUgZXhwZWN0
ZWQgdG8gZXhpc3QgaW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4KKyAgICAvLyBXZSByZXBvcnQgdGhv
c2Ugd3JhcHBlcnMgdG8gVjggYXMgYW4gb2JqZWN0IGdyb3VwLgorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCk7IGkrKykKKyAgICAgICAgbmV3U3BhY2VX
cmFwcGVyc1tpXS5NYXJrUGFydGlhbGx5RGVwZW5kZW50KCk7CisgICAgaWYgKG5ld1NwYWNlV3Jh
cHBlcnMuc2l6ZSgpID4gMCkKKyAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cCgmbmV3U3Bh
Y2VXcmFwcGVyc1swXSwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCkpOworfQorCisvLyBSZWdhcmRp
bmcgYSBtaW5vciBHQyBhbGdvcml0aG0gZm9yIERPTSBub2Rlcywgc2VlIHRoaXMgZG9jdW1lbnQ6
CisvLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vcHJlc2VudGF0aW9uL2Qv
MXVpZndWWUdOWVRaRG9HTHlDYjdzWGE3ZzQ5bVdOTVcyZ2FXdk1ONU5MazgvZWRpdCNzbGlkZT1p
ZC5wCitjbGFzcyBNaW5vckdDV3JhcHBlclZpc2l0b3IgOiBwdWJsaWMgdjg6OlBlcnNpc3RlbnRI
YW5kbGVWaXNpdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXcmFwcGVyVmlzaXRvcih2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICBleHBsaWNpdCBNaW5vckdDV3JhcHBlclZpc2l0b3Iodjg6
Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgICAgIDogbV9pc29sYXRlKGlzb2xhdGUpCisgICAgewor
ICAgICAgICBVTlVTRURfUEFSQU0obV9pc29sYXRlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgVmlzaXRQZXJzaXN0ZW50SGFuZGxlKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUs
IHVpbnQxNl90IGNsYXNzSWQpIE9WRVJSSURFCisgICAgeworICAgICAgICAvLyBBIG1pbm9yIERP
TSBHQyBjYW4gY29sbGVjdCBvbmx5IE5vZGVzLgorICAgICAgICBpZiAoY2xhc3NJZCAhPSB2OERP
TU5vZGVDbGFzc0lkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFRvIG1ha2Ug
bWlub3IgR0MgY3ljbGUgdGltZSBib3VuZGVkLCB3ZSBsaW1pdCB0aGUgbnVtYmVyIG9mIHdyYXBw
ZXJzIGhhbmRsZWQKKyAgICAgICAgLy8gYnkgZWFjaCBtaW5vciBHQyBjeWNsZSB0byAxMDAwMC4g
VGhpcyB2YWx1ZSB3YXMgc2VsZWN0ZWQgc28gdGhhdCB0aGUgbWlub3IKKyAgICAgICAgLy8gR0Mg
Y3ljbGUgdGltZSBpcyBib3VuZGVkIHRvIDIwIG1zIGluIGEgY2FzZSB3aGVyZSB0aGUgbmV3IHNw
YWNlIHNpemUKKyAgICAgICAgLy8gaXMgMTYgTUIgYW5kIGl0IGlzIGZ1bGwgb2Ygd3JhcHBlcnMg
KHdoaWNoIGlzIGFsbW9zdCB0aGUgd29yc3QgY2FzZSkuCisgICAgICAgIC8vIFByYWN0aWNhbGx5
IHNwZWFraW5nLCBhcyBmYXIgYXMgSSBjcmF3bGVkIHJlYWwgd2ViIGFwcGxpY2F0aW9ucywKKyAg
ICAgICAgLy8gdGhlIG51bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkIGJ5IGVhY2ggbWlub3IgR0Mg
Y3ljbGUgaXMgYXQgbW9zdCAzMDAwLgorICAgICAgICAvLyBTbyB0aGlzIGxpbWl0IGlzIG1haW5s
eSBmb3IgcGF0aG9sb2dpY2FsIG1pY3JvIGJlbmNobWFya3MuCisgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHdyYXBwZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0MgPSAxMDAwMDsKKyAgICAgICAgaWYgKG1f
bm9kZXNJbk5ld1NwYWNlLnNpemUoKSA+PSB3cmFwcGVyc0hhbmRsZWRCeUVhY2hNaW5vckdDKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7
CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisgICAgICAgIEFTU0VSVChWOERPTVdyYXBw
ZXI6Om1heWJlRE9NV3JhcHBlcih2YWx1ZSkpOworICAgICAgICBBU1NFUlQoVjhOb2RlOjpIYXNJ
bnN0YW5jZSh3cmFwcGVyLCBtX2lzb2xhdGUpKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IFY4Tm9k
ZTo6dG9OYXRpdmUod3JhcHBlcik7CisgICAgICAgIG1fbm9kZXNJbk5ld1NwYWNlLmFwcGVuZChu
b2RlKTsKKyAgICAgICAgbm9kZS0+c2V0VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0ModHJ1ZSk7
CisgICAgfQorCisgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpCisgICAgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fbm9kZXNJbk5ld1NwYWNlLnNpemUoKTsgaSsrKSB7CisgICAg
ICAgICAgICBBU1NFUlQoIW1fbm9kZXNJbk5ld1NwYWNlW2ldLT53cmFwcGVyKCkuSXNFbXB0eSgp
KTsKKyAgICAgICAgICAgIGlmIChtX25vZGVzSW5OZXdTcGFjZVtpXS0+aXNWOENvbGxlY3RhYmxl
RHVyaW5nTWlub3JHQygpKSAvLyBUaGlzIGJyYW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4K
KyAgICAgICAgICAgICAgICBnY1RyZWUobV9ub2Rlc0luTmV3U3BhY2VbaV0pOworICAgICAgICB9
CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxOb2RlKj4gbV9ub2Rlc0luTmV3U3BhY2U7
CisgICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsKK307CisKK2NsYXNzIE1ham9yR0NXcmFwcGVy
VmlzaXRvciA6IHB1YmxpYyB2ODo6UGVyc2lzdGVudEhhbmRsZVZpc2l0b3IgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IE1ham9yR0NXcmFwcGVyVmlzaXRvcih2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
ICAgICAgICAgOiBtX2lzb2xhdGUoaXNvbGF0ZSkKICAgICB7CiAgICAgfQpAQCAtMjQ4LDEwNCAr
MzQ2LDI4IEBAIHByaXZhdGU6CiAgICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsKIH07CiAKLS8v
IFJlZ2FyZGluZyBhIG1pbm9yIEdDIGFsZ29yaXRobSBmb3IgRE9NIG5vZGVzLCBzZWUgdGhpcyBk
b2N1bWVudDoKLS8vIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9wcmVzZW50
YXRpb24vZC8xdWlmd1ZZR05ZVFpEb0dMeUNiN3NYYTdnNDltV05NVzJnYVd2TU41TkxrOC9lZGl0
I3NsaWRlPWlkLnAKLS8vCi0vLyBtX2VkZW5Ob2RlcyBzdG9yZXMgbm9kZXMgdGhhdCBoYXZlIHdy
YXBwZXJzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgbWlub3IvbWFqb3Ig
R0MuCi1WZWN0b3I8Tm9kZSo+KiBWOEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgPSAwOwotCi1z
dGF0aWMgdm9pZCBnY1RyZWUoTm9kZSogc3RhcnROb2RlKQotewotICAgIFZlY3Rvcjx2ODo6UGVy
c2lzdGVudDx2ODo6VmFsdWU+LCBpbml0aWFsTm9kZVZlY3RvclNpemU+IG5ld1NwYWNlV3JhcHBl
cnM7Ci0KLSAgICAvLyBXZSB0cmF2ZXJzZSBhIERPTSB0cmVlIGluIHRoZSBERlMgb3JkZXIgc3Rh
cnRpbmcgZnJvbSBzdGFydE5vZGUuCi0gICAgLy8gVGhlIHRyYXZlcnNhbCBvcmRlciBkb2VzIG5v
dCBtYXR0ZXIgZm9yIGNvcnJlY3RuZXNzIGJ1dCBkb2VzIG1hdHRlciBmb3IgcGVyZm9ybWFuY2Uu
Ci0gICAgTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsKLSAgICAvLyBUbyBtYWtlIGVhY2ggbWlub3Ig
R0MgdGltZSBib3VuZGVkLCB3ZSBtaWdodCBuZWVkIHRvIGdpdmUgdXAKLSAgICAvLyB0cmF2ZXJz
aW5nIGF0IHNvbWUgcG9pbnQgZm9yIGEgbGFyZ2UgRE9NIHRyZWUuIFRoYXQgYmVpbmcgc2FpZCwK
LSAgICAvLyBJIGNvdWxkIG5vdCBvYnNlcnZlIHRoZSBuZWVkIGV2ZW4gaW4gcGF0aG9sb2dpY2Fs
IHRlc3QgY2FzZXMuCi0gICAgZG8gewotICAgICAgICBBU1NFUlQobm9kZSk7Ci0gICAgICAgIGlm
ICghbm9kZS0+d3JhcHBlcigpLklzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW1hZ2UgZWxlbWVudHMuCi0gICAgICAgICAg
ICAvLyBUaGUgc2FtZSBzcGVjaWFsIGhhbmRsaW5nIGlzIGluIFY4R0NDb250cm9sbGVyOjpvcGFx
dWVSb290Rm9yR0MoKS4KLSAgICAgICAgICAgIC8vIE1heWJlIHNob3VsZCBpbWFnZSBlbGVtZW50
cyBiZSBhY3RpdmUgRE9NIG5vZGVzPwotICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vY29kZS5n
b29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjQ4ODIKLSAgICAgICAgICAg
IGlmICghbm9kZS0+aXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQygpIHx8IChub2RlLT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50
Kj4obm9kZSktPmhhc1BlbmRpbmdBY3Rpdml0eSgpKSkgewotICAgICAgICAgICAgICAgIC8vIFRo
ZSBmYWN0IHRoYXQgd2UgZW5jb3VudGVyIGEgbm9kZSB0aGF0IGlzIG5vdCBpbiB0aGUgRWRlbiBz
cGFjZQotICAgICAgICAgICAgICAgIC8vIGltcGxpZXMgdGhhdCBpdHMgd3JhcHBlciBtaWdodCBi
ZSBpbiB0aGUgb2xkIHNwYWNlIG9mIFY4LgotICAgICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNh
dGVzIHRoYXQgdGhlIG1pbm9yIEdDIGNhbm5vdCBhbnl3YXkganVkZ2UgcmVhY2hhYmlsaXR5Ci0g
ICAgICAgICAgICAgICAgLy8gb2YgdGhpcyBET00gdHJlZS4gVGh1cyB3ZSBnaXZlIHVwIHRyYXZl
cnNpbmcgdGhlIERPTSB0cmVlLgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIC8vIEEgb25jZSB0cmF2ZXJzZWQgbm9kZSBpcyByZW1vdmVkIGZyb20g
dGhlIEVkZW4gc3BhY2UuCi0gICAgICAgICAgICBub2RlLT5zZXRWOENvbGxlY3RhYmxlRHVyaW5n
TWlub3JHQyhmYWxzZSk7Ci0gICAgICAgICAgICBuZXdTcGFjZVdyYXBwZXJzLmFwcGVuZChub2Rl
LT53cmFwcGVyKCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5maXJzdENoaWxkKCkp
IHsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotICAgICAgICB3aGlsZSAoIW5vZGUtPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgIGlmICghbm9kZS0+cGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAg
fQotICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCk7Ci0gICAgfSB3aGlsZSAobm9kZSAhPSBzdGFydE5vZGUpOwotCi0g
ICAgLy8gV2UgY29tcGxldGVkIHRoZSBET00gdHJlZSB0cmF2ZXJzYWwuIEFsbCB3cmFwcGVycyBp
biB0aGUgRE9NIHRyZWUgYXJlCi0gICAgLy8gc3RvcmVkIGluIG5ld1NwYWNlV3JhcHBlcnMgYW5k
IGFyZSBleHBlY3RlZCB0byBleGlzdCBpbiB0aGUgbmV3IHNwYWNlIG9mIFY4LgotICAgIC8vIFdl
IHJlcG9ydCB0aG9zZSB3cmFwcGVycyB0byBWOCBhcyBhbiBvYmplY3QgZ3JvdXAuCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKTsgaSsrKQotICAgICAg
ICBuZXdTcGFjZVdyYXBwZXJzW2ldLk1hcmtQYXJ0aWFsbHlEZXBlbmRlbnQoKTsKLSAgICBpZiAo
bmV3U3BhY2VXcmFwcGVycy5zaXplKCkgPiAwKQotICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdy
b3VwKCZuZXdTcGFjZVdyYXBwZXJzWzBdLCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSk7Ci19Ci0K
LXZvaWQgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJGb3JOb2RlKE5vZGUqIG5vZGUp
Ci17Ci0gICAgLy8gVG8gbWFrZSBtaW5vciBHQyBjeWNsZSB0aW1lIGJvdW5kZWQsIHdlIGxpbWl0
IHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgaGFuZGxlZAotICAgIC8vIGJ5IGVhY2ggbWlub3IgR0Mg
Y3ljbGUgdG8gMTAwMDAuIFRoaXMgdmFsdWUgd2FzIHNlbGVjdGVkIHNvIHRoYXQgdGhlIG1pbm9y
Ci0gICAgLy8gR0MgY3ljbGUgdGltZSBpcyBib3VuZGVkIHRvIDIwIG1zIGluIGEgY2FzZSB3aGVy
ZSB0aGUgbmV3IHNwYWNlIHNpemUKLSAgICAvLyBpcyAxNiBNQiBhbmQgaXQgaXMgZnVsbCBvZiB3
cmFwcGVycyAod2hpY2ggaXMgYWxtb3N0IHRoZSB3b3JzdCBjYXNlKS4KLSAgICAvLyBQcmFjdGlj
YWxseSBzcGVha2luZywgYXMgZmFyIGFzIEkgY3Jhd2xlZCByZWFsIHdlYiBhcHBsaWNhdGlvbnMs
Ci0gICAgLy8gdGhlIG51bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkIGJ5IGVhY2ggbWlub3IgR0Mg
Y3ljbGUgaXMgYXQgbW9zdCAzMDAwLgotICAgIC8vIFNvIHRoaXMgbGltaXQgaXMgbWFpbmx5IGZv
ciBwYXRob2xvZ2ljYWwgbWljcm8gYmVuY2htYXJrcy4KLSAgICBjb25zdCB1bnNpZ25lZCB3cmFw
cGVyc0hhbmRsZWRCeUVhY2hNaW5vckdDID0gMTAwMDA7Ci0gICAgQVNTRVJUKCFub2RlLT53cmFw
cGVyKCkuSXNFbXB0eSgpKTsKLSAgICBpZiAoIW1fZWRlbk5vZGVzKQotICAgICAgICBtX2VkZW5O
b2RlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Tm9kZSo+KS5sZWFrUHRyKCk7Ci0gICAgaWYgKG1f
ZWRlbk5vZGVzLT5zaXplKCkgPD0gd3JhcHBlcnNIYW5kbGVkQnlFYWNoTWlub3JHQykgewotICAg
ICAgICAvLyBBIG5vZGUgb2YgYSBuZXdseSBjcmVhdGVkIHdyYXBwZXIgaXMgcHV0IGludG8gdGhl
IEVkZW4gc3BhY2UuCi0gICAgICAgIG1fZWRlbk5vZGVzLT5hcHBlbmQobm9kZSk7Ci0gICAgICAg
IG5vZGUtPnNldFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKHRydWUpOwotICAgIH0KLX0KLQog
dm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSh2ODo6R0NUeXBlIHR5cGUsIHY4OjpHQ0Nh
bGxiYWNrRmxhZ3MgZmxhZ3MpCiB7CiAgICAgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVTY2F2ZW5n
ZSkKICAgICAgICAgbWlub3JHQ1Byb2xvZ3VlKCk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSB2ODo6
a0dDVHlwZU1hcmtTd2VlcENvbXBhY3QpCiAgICAgICAgIG1ham9yR0NQcm9sb2d1ZSgpOwotCi0g
ICAgaWYgKGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgewotICAgICAg
ICAvLyBUaGUgRWRlbiBzcGFjZSBpcyBjbGVhcmVkIGF0IGV2ZXJ5IG1pbm9yL21ham9yIEdDLgot
ICAgICAgICBtX2VkZW5Ob2Rlcy0+Y2xlYXIoKTsKLSAgICB9CiB9CiAKIHZvaWQgVjhHQ0NvbnRy
b2xsZXI6Om1pbm9yR0NQcm9sb2d1ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJ2OCIs
ICJHQyIpOwogCi0gICAgaWYgKGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2Rl
cykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZWRlbk5vZGVzLT5zaXplKCk7
IGkrKykgewotICAgICAgICAgICAgQVNTRVJUKCFtX2VkZW5Ob2Rlcy0+YXQoaSktPndyYXBwZXIo
KS5Jc0VtcHR5KCkpOwotICAgICAgICAgICAgaWYgKG1fZWRlbk5vZGVzLT5hdChpKS0+aXNWOENv
bGxlY3RhYmxlRHVyaW5nTWlub3JHQygpKSAvLyBUaGlzIGJyYW5jaCBpcyBqdXN0IGZvciBwZXJm
b3JtYW5jZS4KLSAgICAgICAgICAgICAgICBnY1RyZWUobV9lZGVuTm9kZXMtPmF0KGkpKTsKKyAg
ICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSB2
ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7
CisKKyAgICAgICAgLy8gQSBtaW5vciBHQyBjYW4gaGFuZGxlIHRoZSBtYWluIHdvcmxkIG9ubHku
CisgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSB3b3JsZEZvckVudGVyZWRDb250ZXh0
V2l0aG91dENvbnRleHRDaGVjaygpOworICAgICAgICBpZiAod29ybGQgJiYgd29ybGQtPmlzTWFp
bldvcmxkKCkpIHsKKyAgICAgICAgICAgIE1pbm9yR0NXcmFwcGVyVmlzaXRvciB2aXNpdG9yKGlz
b2xhdGUpOworICAgICAgICAgICAgdjg6OlY4OjpWaXNpdEhhbmRsZXNGb3JQYXJ0aWFsRGVwZW5k
ZW5jZShpc29sYXRlLCAmdmlzaXRvcik7CisgICAgICAgICAgICB2aXNpdG9yLm5vdGlmeUZpbmlz
aGVkKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zNTgsNyArMzgwLDcgQEAgdm9pZCBWOEdD
Q29udHJvbGxlcjo6bWFqb3JHQ1Byb2xvZ3VlKCkKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9
IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwog
Ci0gICAgV3JhcHBlclZpc2l0b3IgdmlzaXRvcihpc29sYXRlKTsKKyAgICBNYWpvckdDV3JhcHBl
clZpc2l0b3IgdmlzaXRvcihpc29sYXRlKTsKICAgICB2ODo6Vjg6OlZpc2l0SGFuZGxlc1dpdGhD
bGFzc0lkcygmdmlzaXRvcik7CiAgICAgdmlzaXRvci5ub3RpZnlGaW5pc2hlZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAppbmRleCAzMmQxYTA4YzMw
MTUwOTY4ZDA1Mzk2YWM3NGZkMDQ1MDNkMTljZGRlLi5kMzgxOGY4YWVlYTA4NmY0NzQ5OTkyNWFm
ZDc2NTI5YzJlNDg0YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEdDQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250
cm9sbGVyLmgKQEAgLTUyLDcgKzUyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNvbGxl
Y3RHYXJiYWdlKCk7CiAKICAgICBzdGF0aWMgTm9kZSogb3BhcXVlUm9vdEZvckdDKE5vZGUqLCB2
ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdyYXBwZXJGb3JOb2RlKE5v
ZGUqKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgVmVjdG9yPE5vZGUqPiogbV9lZGVuTm9kZXM7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>