<?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>91231</bug_id>
          
          <creation_ts>2012-07-13 06:27:35 -0700</creation_ts>
          <short_desc>FormController, WebHistoryItem: Enable reading selected file names from document state</short_desc>
          <delta_ts>2012-08-25 13:37:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>95007</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marja Hölttä">marja</reporter>
          <assigned_to name="Marja Hölttä">marja</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>jochen</cc>
    
    <cc>mifenton</cc>
    
    <cc>philn</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vivekgalatage</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>668950</commentid>
    <comment_count>0</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-07-13 06:27:35 -0700</bug_when>
    <thetext>Chromium would need to read the selected file names from the document state, in order to set the file permissions properly after restoring a page which contains a form with selected files.

The patch I&apos;ll soon add adds WebDocumentState which has a function for getting the file names.

Migration plan:

Patch 1, webkit:
WebDocumentState WebHistoryItem::documentState(bool) &lt;&lt; added
WebVector&lt;WebString&gt; WebHistoryItem::documentState() &lt;&lt; old one

Patch 2, chromium:
use documentState(true)

Patch 3, webkit:
WebDocumentState WebHistoryItem::documentState(bool = true)

Patch 4: chromium:
use documentState()

Patch 5, webkit:
WebDocumentState WebHistoryItem::documentState()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668965</commentid>
    <comment_count>1</comment_count>
      <attachid>152246</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-07-13 06:37:24 -0700</bug_when>
    <thetext>Created attachment 152246
.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668971</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 06:42:19 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668975</commentid>
    <comment_count>3</comment_count>
      <attachid>152246</attachid>
    <who name="">jochen</who>
    <bug_when>2012-07-13 06:49:53 -0700</bug_when>
    <thetext>Comment on attachment 152246
.

Can you add a test that this works? See tests/WebViewTest for how to easily create a HTMLDocument

Also, a ChangeLog is missing :)

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

&gt; Source/WebKit/chromium/public/WebDocumentState.h:39
&gt; +    WebDocumentState(const WebVector&lt;WebString&gt;&amp;);

explicit?

&gt; Source/WebKit/chromium/public/WebHistoryItem.h:106
&gt;      WEBKIT_EXPORT WebVector&lt;WebString&gt; documentState() const;

I&apos;d group the new and old methods together and add a // FIXME: comment about removing the old ones and dropping the bool

&gt; Source/WebKit/chromium/src/WebDocumentState.cpp:37
&gt; +    : m_data(documentState)

the constructor and the data() accessor are so small, you could move them to the header

&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:221
&gt; +void WebHistoryItem::setDocumentState(const WebDocumentState&amp; state)

can you implement the old setDocumentState / documentState by means of the new methods, so we don&apos;t have a copy of the code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669026</commentid>
    <comment_count>4</comment_count>
      <attachid>152246</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 07:45:26 -0700</bug_when>
    <thetext>Comment on attachment 152246
.

Attachment 152246 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13237129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669142</commentid>
    <comment_count>5</comment_count>
      <attachid>152246</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-13 09:53:33 -0700</bug_when>
    <thetext>Comment on attachment 152246
.

Is exposing a WebDocumentState primitive really the best thing to do?  I&apos;ve always
found the concept of &quot;document state&quot; rather vague / cryptic.  Maybe it just needs
a better name, or maybe the functionality that you really need could / should just
be a method on WebHistoryItem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669327</commentid>
    <comment_count>6</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-07-13 12:10:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 152246 [details])
&gt; Is exposing a WebDocumentState primitive really the best thing to do?  I&apos;ve always
&gt; found the concept of &quot;document state&quot; rather vague / cryptic.  Maybe it just needs
&gt; a better name, or maybe the functionality that you really need could / should just
&gt; be a method on WebHistoryItem?

The intention is to allow access to the files for the file input elements restored from the document state (see https://chromiumcodereview.appspot.com/10695107/) without deserializing the document state in webkit/glue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669368</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-13 13:23:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 152246 [details] [details])
&gt; &gt; Is exposing a WebDocumentState primitive really the best thing to do?  I&apos;ve always
&gt; &gt; found the concept of &quot;document state&quot; rather vague / cryptic.  Maybe it just needs
&gt; &gt; a better name, or maybe the functionality that you really need could / should just
&gt; &gt; be a method on WebHistoryItem?
&gt; 
&gt; The intention is to allow access to the files for the file input elements restored from the document state (see https://chromiumcodereview.appspot.com/10695107/) without deserializing the document state in webkit/glue

WebHistoryItem::getReferencedFilePaths?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669373</commentid>
    <comment_count>8</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-07-13 13:26:32 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (From update of attachment 152246 [details] [details] [details])
&gt; &gt; &gt; Is exposing a WebDocumentState primitive really the best thing to do?  I&apos;ve always
&gt; &gt; &gt; found the concept of &quot;document state&quot; rather vague / cryptic.  Maybe it just needs
&gt; &gt; &gt; a better name, or maybe the functionality that you really need could / should just
&gt; &gt; &gt; be a method on WebHistoryItem?
&gt; &gt; 
&gt; &gt; The intention is to allow access to the files for the file input elements restored from the document state (see https://chromiumcodereview.appspot.com/10695107/) without deserializing the document state in webkit/glue
&gt; 
&gt; WebHistoryItem::getReferencedFilePaths?

sg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689085</commentid>
    <comment_count>9</comment_count>
      <attachid>156925</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-07 06:05:50 -0700</bug_when>
    <thetext>Created attachment 156925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689096</commentid>
    <comment_count>10</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-08-07 06:26:07 -0700</bug_when>
    <thetext>ok,

since it touches the WebKit API, we&apos;ll need to wait for Darin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691365</commentid>
    <comment_count>11</comment_count>
      <attachid>157429</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-09 02:11:17 -0700</bug_when>
    <thetext>Created attachment 157429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691395</commentid>
    <comment_count>12</comment_count>
      <attachid>157429</attachid>
    <who name="">jochen</who>
    <bug_when>2012-08-09 05:13:37 -0700</bug_when>
    <thetext>Comment on attachment 157429
Patch

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

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:2355
&gt; +    result-&gt;setNull();

why not -&gt;set(&quot;&quot;) ?

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:2356
&gt; +    WebHistoryItem historyItem =  m_shell-&gt;webViewHost()-&gt;webView()-&gt;focusedFrame()-&gt;currentHistoryItem();

m_shell-&gt;webView() should be enough

&gt; LayoutTests/platform/chromium/fast/forms/file/selected-files-from-history-state.html:13
&gt; +        testFailed(&apos;This test requires a LayoutTestController.&apos;);

it&apos;s called TestRunner these days

&gt; LayoutTests/platform/chromium/fast/forms/file/selected-files-from-history-state.html:43
&gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;

please add a short description what the test is supposed to do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691427</commentid>
    <comment_count>13</comment_count>
      <attachid>157448</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-09 05:29:42 -0700</bug_when>
    <thetext>Created attachment 157448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691428</commentid>
    <comment_count>14</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-09 05:30:31 -0700</bug_when>
    <thetext>Thanks for comments, the new patch addresses all of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691429</commentid>
    <comment_count>15</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-08-09 05:31:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Thanks for comments, the new patch addresses all of them.

Thanks


Darin, are the WebKit API changes ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691617</commentid>
    <comment_count>16</comment_count>
      <attachid>157448</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-08-09 11:09:14 -0700</bug_when>
    <thetext>Comment on attachment 157448
Patch

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

&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:290
&gt; +WebVector&lt;WebString&gt; WebHistoryItem::getReferredFilePaths() const

nit: getReferencedFilePaths().  getReferredFilePaths() sounds a bit awkward
to me.  did you have a reason for preferring &quot;referred&quot; here?  just because
it is shorter?

&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:292
&gt; +    WTF::Vector&lt;WebString&gt; filePaths;

nit: no need for WTF:: in .cpp files

&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:295
&gt; +        WebHTTPBody::Element element;

nit: prefer using WebCore types inside the implementation of WebKit.
There are hidden costs to using WebKit API here.

&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:302
&gt; +    const WebVector&lt;WebString&gt;&amp; state = documentState();

it is a bit wasteful to allocate a WebVector here.  you should just
use Vector&lt;String&gt; as returned by m_private-&gt;documentState() to avoid
copying the array.

&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:304
&gt; +    while (i + 2 &lt; state.size()) {

you should explain what these magic numbers are all about.

&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:317
&gt; +    WebVector&lt;WebString&gt; toReturn(filePaths.size());

nit: you can just do &quot;return filePaths;&quot; and it will automagically
create a WebVector&lt;WebString&gt; for you.

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:2353
&gt; +void LayoutTestController::getReferredFiles(const CppArgumentList&amp; arguments, CppVariant* result)

can you do this by extending Internals.idl instead?  we try to avoid adding new methods
on LayoutTestController (now TestRunner) when possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691997</commentid>
    <comment_count>17</comment_count>
      <attachid>157448</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-09 16:59:33 -0700</bug_when>
    <thetext>Comment on attachment 157448
Patch

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

&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:316
&gt; +    const WebVector&lt;WebString&gt;&amp; state = documentState();
&gt; +    size_t i = 3;
&gt; +    while (i + 2 &lt; state.size()) {
&gt; +        bool ok = false;
&gt; +        size_t fields = WTF::String(state[i + 2]).toInt(&amp;ok);
&gt; +        if (!ok)
&gt; +            break;
&gt; +        if (i + 2 + fields &gt;= state.size())
&gt; +            break;
&gt; +        if (state[i + 1] == &quot;file&quot;) {
&gt; +            for (size_t j = i + 3; j &lt; i + 3 + fields; j += 2)
&gt; +                filePaths.append(state[j]);
&gt; +        }
&gt; +        i += (3 + fields);
&gt; +    }

This is not a good idea.
The internal structure of documentState() is not exposed from WebCore and it is changeable. Actually, this code is for an old version of the structure and it doesn&apos;t work now.

I recommend to add a function to WebCore/html/FormController.{cpp,h}. The function deserializes SavedFormState objects from the documentState vector, collects the file paths in SavedFormState, and returns them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694636</commentid>
    <comment_count>18</comment_count>
      <attachid>158251</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-14 01:13:05 -0700</bug_when>
    <thetext>Created attachment 158251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694638</commentid>
    <comment_count>19</comment_count>
      <attachid>157448</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-14 01:14:47 -0700</bug_when>
    <thetext>Comment on attachment 157448
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:290
&gt;&gt; +WebVector&lt;WebString&gt; WebHistoryItem::getReferredFilePaths() const
&gt; 
&gt; nit: getReferencedFilePaths().  getReferredFilePaths() sounds a bit awkward
&gt; to me.  did you have a reason for preferring &quot;referred&quot; here?  just because
&gt; it is shorter?

Changed to getReferencedFilePaths.

&gt;&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:292
&gt;&gt; +    WTF::Vector&lt;WebString&gt; filePaths;
&gt; 
&gt; nit: no need for WTF:: in .cpp files

Done

&gt;&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:295
&gt;&gt; +        WebHTTPBody::Element element;
&gt; 
&gt; nit: prefer using WebCore types inside the implementation of WebKit.
&gt; There are hidden costs to using WebKit API here.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:302
&gt;&gt; +    const WebVector&lt;WebString&gt;&amp; state = documentState();
&gt; 
&gt; it is a bit wasteful to allocate a WebVector here.  you should just
&gt; use Vector&lt;String&gt; as returned by m_private-&gt;documentState() to avoid
&gt; copying the array.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:304
&gt;&gt; +    while (i + 2 &lt; state.size()) {
&gt; 
&gt; you should explain what these magic numbers are all about.

The code was moved to FormController / SavedFormState / FormControlState -&gt; less magic numbers.

&gt;&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:316
&gt;&gt; +    }
&gt; 
&gt; This is not a good idea.
&gt; The internal structure of documentState() is not exposed from WebCore and it is changeable. Actually, this code is for an old version of the structure and it doesn&apos;t work now.
&gt; 
&gt; I recommend to add a function to WebCore/html/FormController.{cpp,h}. The function deserializes SavedFormState objects from the documentState vector, collects the file paths in SavedFormState, and returns them.

Moved the logic to FormController / SavedFormState / FormControlState.

(The serialization format has changed recently but afaics this uses the new version.)

&gt;&gt; Source/WebKit/chromium/src/WebHistoryItem.cpp:317
&gt;&gt; +    WebVector&lt;WebString&gt; toReturn(filePaths.size());
&gt; 
&gt; nit: you can just do &quot;return filePaths;&quot; and it will automagically
&gt; create a WebVector&lt;WebString&gt; for you.

Done

&gt;&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:2353
&gt;&gt; +void LayoutTestController::getReferredFiles(const CppArgumentList&amp; arguments, CppVariant* result)
&gt; 
&gt; can you do this by extending Internals.idl instead?  we try to avoid adding new methods
&gt; on LayoutTestController (now TestRunner) when possible.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694672</commentid>
    <comment_count>20</comment_count>
      <attachid>158251</attachid>
    <who name="">jochen</who>
    <bug_when>2012-08-14 01:47:31 -0700</bug_when>
    <thetext>Comment on attachment 158251
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        (WebCore::FormController::getReferencedFilePaths):

please add a comment to the newly added methods explaining what they do

&gt; Source/WebCore/html/FormController.cpp:81
&gt; +    for (size_t i = 0; i &lt; m_values.size(); i += 2) {

this seems to assume that the FormControlState is representing a file input which is not necessarily true. I think I&apos;d prefer a static function that does the magic of getting the filepaths out of the form control state. It could be something like getReferencedFilePathsForFileFormControlState(FormControlState&amp;) or so

&gt; Source/WebCore/html/FormController.cpp:287
&gt; +            const Vector&lt;String&gt;&amp; files = queIterator-&gt;getReferencedFilePaths();

just toReturn.append(queIterator-&gt;getReferencedFilePaths())

&gt; Source/WebCore/html/FormController.cpp:522
&gt; +        const Vector&lt;String&gt;&amp; filePaths = state-&gt;getReferencedFilePaths();

just toReturn.append(state-&gt;getReferencedFilePaths())

&gt; Source/WebCore/testing/Internals.cpp:1198
&gt; +    for (size_t i = 0; i &lt; filePaths.size(); ++i)

you could Vector&lt;String&gt;&amp; result = stringList; result.append(filePaths)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694677</commentid>
    <comment_count>21</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-08-14 01:51:18 -0700</bug_when>
    <thetext>You should probably also update the bug title now that it&apos;s not a WebHistoryItem-only change anymore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694721</commentid>
    <comment_count>22</comment_count>
      <attachid>158268</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-14 02:31:24 -0700</bug_when>
    <thetext>Created attachment 158268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694723</commentid>
    <comment_count>23</comment_count>
      <attachid>158251</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-14 02:32:48 -0700</bug_when>
    <thetext>Comment on attachment 158251
Patch

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

&gt; Source/WebCore/html/FormController.cpp:84
&gt; +Vector&lt;String&gt; FormControlState::getReferencedFilePaths() const
&gt; +{
&gt; +    Vector&lt;String&gt; toReturn;
&gt; +    for (size_t i = 0; i &lt; m_values.size(); i += 2) {
&gt; +        if (!m_values[i].isNull())
&gt; +            toReturn.append(m_values[i]);
&gt; +    }

This logic should be in FileInputType.cpp because of encapsulation.

&gt; Source/WebCore/html/FormController.cpp:521
&gt; +Vector&lt;String&gt; FormController::getReferencedFilePaths(const Vector&lt;String&gt;&amp; stateVector)
&gt; +{
&gt; +    Vector&lt;String&gt; toReturn;
&gt; +    size_t i = 0;
&gt; +    if (stateVector.size() &lt; 1 || stateVector[i++] != formStateSignature())
&gt; +        return toReturn;
&gt; +    while (i + 1 &lt; stateVector.size()) {
&gt; +        ++i; // Skip form key.
&gt; +        OwnPtr&lt;SavedFormState&gt; state = SavedFormState::deserialize(stateVector, i);
&gt; +        if (!state)
&gt; +            break;

We should share the code with FormController::setStateForNewFormElements().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694751</commentid>
    <comment_count>24</comment_count>
      <attachid>158268</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 03:27:26 -0700</bug_when>
    <thetext>Comment on attachment 158268
Patch

Attachment 158268 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13504109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694822</commentid>
    <comment_count>25</comment_count>
      <attachid>158268</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 04:48:54 -0700</bug_when>
    <thetext>Comment on attachment 158268
Patch

Attachment 158268 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13490533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694848</commentid>
    <comment_count>26</comment_count>
      <attachid>158299</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-14 05:07:55 -0700</bug_when>
    <thetext>Created attachment 158299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694849</commentid>
    <comment_count>27</comment_count>
      <attachid>158251</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-14 05:10:43 -0700</bug_when>
    <thetext>Comment on attachment 158251
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt; +        (WebCore::FormController::getReferencedFilePaths):
&gt; 
&gt; please add a comment to the newly added methods explaining what they do

Done

&gt;&gt; Source/WebCore/html/FormController.cpp:81
&gt;&gt; +    for (size_t i = 0; i &lt; m_values.size(); i += 2) {
&gt; 
&gt; this seems to assume that the FormControlState is representing a file input which is not necessarily true. I think I&apos;d prefer a static function that does the magic of getting the filepaths out of the form control state. It could be something like getReferencedFilePathsForFileFormControlState(FormControlState&amp;) or so

The logic is moved to FileInputType.cpp

&gt;&gt; Source/WebCore/html/FormController.cpp:84
&gt;&gt; +    }
&gt; 
&gt; This logic should be in FileInputType.cpp because of encapsulation.

Done

&gt;&gt; Source/WebCore/html/FormController.cpp:521
&gt;&gt; +            break;
&gt; 
&gt; We should share the code with FormController::setStateForNewFormElements().

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694900</commentid>
    <comment_count>28</comment_count>
      <attachid>158299</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 06:16:19 -0700</bug_when>
    <thetext>Comment on attachment 158299
Patch

Attachment 158299 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13502183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694916</commentid>
    <comment_count>29</comment_count>
      <attachid>158316</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-14 06:52:32 -0700</bug_when>
    <thetext>Created attachment 158316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694951</commentid>
    <comment_count>30</comment_count>
      <attachid>158316</attachid>
    <who name="">jochen</who>
    <bug_when>2012-08-14 07:29:46 -0700</bug_when>
    <thetext>Comment on attachment 158316
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

You forgot to copy this over from the last version

&gt; ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

same here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694983</commentid>
    <comment_count>31</comment_count>
      <attachid>158333</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-14 08:07:24 -0700</bug_when>
    <thetext>Created attachment 158333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694984</commentid>
    <comment_count>32</comment_count>
      <attachid>158316</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-14 08:08:26 -0700</bug_when>
    <thetext>Comment on attachment 158316
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; 
&gt; You forgot to copy this over from the last version

Fixed

&gt;&gt; ChangeLog:8
&gt;&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; 
&gt; same here

Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695006</commentid>
    <comment_count>33</comment_count>
      <attachid>158333</attachid>
    <who name="">jochen</who>
    <bug_when>2012-08-14 08:33:33 -0700</bug_when>
    <thetext>Comment on attachment 158333
Patch

let&apos;s wait for darin or tkent before cq</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695628</commentid>
    <comment_count>34</comment_count>
      <attachid>158333</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-14 18:22:02 -0700</bug_when>
    <thetext>Comment on attachment 158333
Patch

Looks ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696866</commentid>
    <comment_count>35</comment_count>
      <attachid>158333</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 00:56:04 -0700</bug_when>
    <thetext>Comment on attachment 158333
Patch

Rejecting attachment 158333 from commit-queue.

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

Last 500 characters of output:
ucceeded at 71 (offset 1 line).
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/forms/file/selected-files-from-history-state-expected.txt
patching file LayoutTests/fast/forms/file/selected-files-from-history-state.html
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

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

Full output: http://queues.webkit.org/results/13509508</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696880</commentid>
    <comment_count>36</comment_count>
      <attachid>158744</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2012-08-16 01:14:45 -0700</bug_when>
    <thetext>Created attachment 158744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696916</commentid>
    <comment_count>37</comment_count>
      <attachid>158744</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 01:52:41 -0700</bug_when>
    <thetext>Comment on attachment 158744
Patch

Clearing flags on attachment: 158744

Committed r125759: &lt;http://trac.webkit.org/changeset/125759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696917</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 01:52:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152246</attachid>
            <date>2012-07-13 06:37:24 -0700</date>
            <delta_ts>2012-08-07 06:05:36 -0700</delta_ts>
            <desc>.</desc>
            <filename>bug-91231-20120713153722.patch</filename>
            <type>text/plain</type>
            <size>8423</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggZjY4NjgyMDFjNjEwMWE5YmI2ZGZmNTY5OTM4OWE3YTBjNDhkZDJlZi4uY2U4NzZjZTM4YmQ2
OTVjMGViMjQyZTE4YmEwOTQ3NWM1YmI5MGFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cApAQCAtMTQwLDYgKzE0MCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJE
b2N1bWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkRvY3VtZW50U3RhdGUuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudFR5cGUuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJFZGl0aW5nQWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRWxlbWVudC5oJywKQEAgLTUyMCw2ICs1MjEsNyBAQAogICAgICAgICAgICAgICAgICdz
cmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkRvY3VtZW50LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJEb2N1bWVu
dFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEb2N1bWVudFR5cGUuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkRyYWdEYXRhLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEb2N1bWVudFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEb2N1bWVudFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVjYzcxNmFiYmQ5MzkzMWMwMDg3N2M4
OTJmZmQ3NTE0ZDE0MWYwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRvY3VtZW50U3RhdGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJE
b2N1bWVudFN0YXRlX2gKKyNkZWZpbmUgV2ViRG9jdW1lbnRTdGF0ZV9oCisKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKwor
Y2xhc3MgV2ViRG9jdW1lbnRTdGF0ZSB7CitwdWJsaWM6CisgICAgV2ViRG9jdW1lbnRTdGF0ZShj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYpOworICAgIH5XZWJEb2N1bWVudFN0YXRlKCkgeyB9
CisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gZGF0YSgpIGNvbnN0OworICAgIFdlYlZlY3RvcjxX
ZWJTdHJpbmc+IGZpbGVQYXRoc0Zyb21GaWxlSW5wdXRzKCkgY29uc3Q7Citwcml2YXRlOgorICAg
IFdlYlZlY3RvcjxXZWJTdHJpbmc+IG1fZGF0YTsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgKaW5kZXggMDE1YTc5YmViZmZl
ODQ5YTAyZmJjYWE2M2I0N2Y5ZGI3NzQxN2VmZC4uNTI4ZWJiYjhiMjcxMDJmZGI5NmQ0OGZhNGI3
MTRhZDJhMWM3Njg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJI
aXN0b3J5SXRlbS5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFdlYkhpc3RvcnlJdGVtX2gK
IAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkRvY3VtZW50U3RhdGUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSGlzdG9yeUl0ZW07IH0KQEAgLTEwMyw3ICsxMDQs
OSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpc2l0Q291bnQoaW50KTsK
IAogICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYlN0cmluZz4gZG9jdW1lbnRTdGF0ZSgp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViRG9jdW1lbnRTdGF0ZSBkb2N1bWVudFN0YXRl
KGJvb2wpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREb2N1bWVudFN0YXRlKGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERv
Y3VtZW50U3RhdGUoY29uc3QgV2ViRG9jdW1lbnRTdGF0ZSYpOwogCiAgICAgV0VCS0lUX0VYUE9S
VCBsb25nIGxvbmcgaXRlbVNlcXVlbmNlTnVtYmVyKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldEl0ZW1TZXF1ZW5jZU51bWJlcihsb25nIGxvbmcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDEwYjE4
OGFkYTJhZTllYzBkZjVhM2U2ODdjYjJhZTE2YTg3MDQwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnRTdGF0ZS5jcHAKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudFN0YXRlLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJEb2N1bWVudFN0YXRlOjpXZWJEb2N1bWVudFN0YXRl
KGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBkb2N1bWVudFN0YXRlKQorICAgIDogbV9kYXRh
KGRvY3VtZW50U3RhdGUpCit7Cit9CisKK1dlYlZlY3RvcjxXZWJTdHJpbmc+IFdlYkRvY3VtZW50
U3RhdGU6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGE7Cit9CisKK1dlYlZlY3Rv
cjxXZWJTdHJpbmc+IFdlYkRvY3VtZW50U3RhdGU6OmZpbGVQYXRoc0Zyb21GaWxlSW5wdXRzKCkg
Y29uc3QKK3sKKyAgICBXVEY6OlZlY3RvcjxXZWJTdHJpbmc+IGZpbGVQYXRoczsKKyAgICBpZiAo
bV9kYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdlYlZlY3RvcjxXZWJTdHJpbmc+KCk7
CisgICAgc2l6ZV90IGkgPSAxOworICAgIHdoaWxlIChpICsgMyA8IG1fZGF0YS5zaXplKCkpIHsK
KyAgICAgICAgYm9vbCBvayA9IGZhbHNlOworICAgICAgICBzaXplX3QgZmllbGRzID0gV1RGOjpT
dHJpbmcobV9kYXRhW2kgKyAzXSkudG9JbnQoJm9rKTsKKyAgICAgICAgaWYgKCFvaykKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBpZiAoaSArIDMgKyBmaWVsZHMgPj0gbV9kYXRhLnNpemUo
KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobV9kYXRhW2kgKyAxXSA9PSAiZmls
ZSIpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgNDsgaiA8IGkgKyA0ICsgZmll
bGRzOyBqICs9IDIpCisgICAgICAgICAgICAgICAgZmlsZVBhdGhzLmFwcGVuZChtX2RhdGFbal0p
OworICAgICAgICB9CisgICAgICAgIGkgKz0gKDQgKyBmaWVsZHMpOworICAgIH0KKyAgICBXZWJW
ZWN0b3I8V2ViU3RyaW5nPiB0b1JldHVybihmaWxlUGF0aHMuc2l6ZSgpKTsKKyAgICB0b1JldHVy
bi5hc3NpZ24oZmlsZVBhdGhzKTsKKyAgICByZXR1cm4gdG9SZXR1cm47Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBkYjM1MzE3
YWQ5ODNjZGQ2OWQ5ZDA2NTUyNjU1ZjJjMWY5OTQzNjcwLi41OTBiZmM3OTJlNzgxYzgxZDAzMjNm
YTRmNjJjNTZhNTM2YWIwZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SGlzdG9yeUl0ZW0uY3BwCkBAIC0yMDMsNiArMjAzLDExIEBAIFdlYlZlY3RvcjxXZWJTdHJpbmc+
IFdlYkhpc3RvcnlJdGVtOjpkb2N1bWVudFN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2
YXRlLT5kb2N1bWVudFN0YXRlKCk7CiB9CiAKK1dlYkRvY3VtZW50U3RhdGUgV2ViSGlzdG9yeUl0
ZW06OmRvY3VtZW50U3RhdGUoYm9vbCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViRG9jdW1lbnRT
dGF0ZShtX3ByaXZhdGUtPmRvY3VtZW50U3RhdGUoKSk7Cit9CisKIHZvaWQgV2ViSGlzdG9yeUl0
ZW06OnNldERvY3VtZW50U3RhdGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIHN0YXRlKQog
ewogICAgIGVuc3VyZU11dGFibGUoKTsKQEAgLTIxMyw2ICsyMTgsMTcgQEAgdm9pZCBXZWJIaXN0
b3J5SXRlbTo6c2V0RG9jdW1lbnRTdGF0ZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgc3Rh
dGUpCiAgICAgbV9wcml2YXRlLT5zZXREb2N1bWVudFN0YXRlKGRzKTsKIH0KIAordm9pZCBXZWJI
aXN0b3J5SXRlbTo6c2V0RG9jdW1lbnRTdGF0ZShjb25zdCBXZWJEb2N1bWVudFN0YXRlJiBzdGF0
ZSkKK3sKKyAgICBlbnN1cmVNdXRhYmxlKCk7CisgICAgLy8gRklYTUU6IHdvdWxkIGJlIG5pY2Ug
dG8gYXZvaWQgdGhlIGludGVybWVkaWF0ZSBjb3B5CisgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0
cmluZz4mIGRhdGEgPSBzdGF0ZS5kYXRhKCk7CisgICAgVmVjdG9yPFN0cmluZz4gZHM7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLnNpemUoKTsgKytpKQorICAgICAgICBkcy5hcHBl
bmQoZGF0YVtpXSk7CisgICAgbV9wcml2YXRlLT5zZXREb2N1bWVudFN0YXRlKGRzKTsKK30KKwog
bG9uZyBsb25nIFdlYkhpc3RvcnlJdGVtOjppdGVtU2VxdWVuY2VOdW1iZXIoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3ByaXZhdGUtPml0ZW1TZXF1ZW5jZU51bWJlcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156925</attachid>
            <date>2012-08-07 06:05:50 -0700</date>
            <delta_ts>2012-08-09 02:11:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120807150525.patch</filename>
            <type>text/plain</type>
            <size>3347</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDE0M2VmMDAyYmU0NWE1ZDI1MjNiYzZhOTM4ZjhiYmRlMDg0NWYwNzAuLmVkMTc2Y2IzMjUxYTA3
ZDkxYmEzMGNmNTI3YjQyMjliNDM3MjgyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMDcgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYkhpc3RvcnlJdGVtOiBBZGQgYSBmdW5jdGlvbiBmb3IgcmVh
ZGluZyBzZWxlY3RlZCBmaWxlIG5hbWVzIGZyb20gZG9jdW1lbnQgc3RhdGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMg
Y2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkgd2hlbiBpdCByZXN0
b3JlcworICAgICAgICBhIHBhZ2Ugd2l0aCBzZWxlY3RlZCBmaWxlcyBhbG9uZyBpdHMgc2Vzc2lv
biByZXN0b3JlLgorCisgICAgICAgICogcHVibGljL1dlYkhpc3RvcnlJdGVtLmg6CisgICAgICAg
IChXZWJIaXN0b3J5SXRlbSk6IEFkZCBXZWJIaXN0b3J5SXRlbTo6Z2V0UmVmZXJyZWRGaWxlUGF0
aHMuCisgICAgICAgICogc3JjL1dlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSGlzdG9yeUl0ZW06OmdldFJlZmVycmVkRmlsZVBhdGhzKTogQWRkZWQKKyAgICAgICAgKFdl
YktpdCk6CisKIDIwMTItMDgtMDYgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViU29ja2V0LnNlbmQoKSBzaG91bGQgYWNjZXB0IEFycmF5QnVmZmVyVmll
dwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0
ZW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgKaW5k
ZXggMDE1YTc5YmViZmZlODQ5YTAyZmJjYWE2M2I0N2Y5ZGI3NzQxN2VmZC4uZTE0MDMxNDM2ZTQ5
YzQwMTdlMjc4NzhhMjQ2Yjg3OWU2ZTdhNWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oCkBAIC0xMjQsNiArMTI0LDggQEAgcHVibGljOgog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViSGlz
dG9yeUl0ZW0+Jik7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZFRvQ2hpbGRyZW4oY29u
c3QgV2ViSGlzdG9yeUl0ZW0mKTsKIAorICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYlN0
cmluZz4gZ2V0UmVmZXJyZWRGaWxlUGF0aHMoKSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgogICAgIFdlYkhpc3RvcnlJdGVtKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4mKTsKICAgICBXZWJIaXN0b3J5SXRlbSYgb3BlcmF0b3I9KGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBkYjM1MzE3YWQ5ODNjZGQ2OWQ5
ZDA2NTUyNjU1ZjJjMWY5OTQzNjcwLi5lMDdmMWE2ZmVlODYxNDU2ZDk4MTE4OGJjY2IyYmVjZDNh
NmZmNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIaXN0b3J5
SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0u
Y3BwCkBAIC0yODcsNiArMjg3LDM4IEBAIHZvaWQgV2ViSGlzdG9yeUl0ZW06OmFwcGVuZFRvQ2hp
bGRyZW4oY29uc3QgV2ViSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgbV9wcml2YXRlLT5hZGRDaGls
ZEl0ZW0oaXRlbSk7CiB9CiAKK1dlYlZlY3RvcjxXZWJTdHJpbmc+IFdlYkhpc3RvcnlJdGVtOjpn
ZXRSZWZlcnJlZEZpbGVQYXRocygpIGNvbnN0Cit7CisgICAgV1RGOjpWZWN0b3I8V2ViU3RyaW5n
PiBmaWxlUGF0aHM7CisgICAgY29uc3QgV2ViSFRUUEJvZHkmIGJvZHkgPSBodHRwQm9keSgpOwor
ICAgIGlmICghYm9keS5pc051bGwoKSkgeworICAgICAgICBXZWJIVFRQQm9keTo6RWxlbWVudCBl
bGVtZW50OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJvZHkuZWxlbWVudENvdW50
KCk7ICsraSkgeworICAgICAgICAgICAgYm9keS5lbGVtZW50QXQoaSwgZWxlbWVudCk7CisgICAg
ICAgICAgICBpZiAoZWxlbWVudC50eXBlID09IFdlYkhUVFBCb2R5OjpFbGVtZW50OjpUeXBlRmls
ZSkKKyAgICAgICAgICAgICAgICBmaWxlUGF0aHMuYXBwZW5kKGVsZW1lbnQuZmlsZVBhdGgpOwor
ICAgICAgICB9CisgICAgfQorICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBzdGF0ZSA9
IGRvY3VtZW50U3RhdGUoKTsKKyAgICBzaXplX3QgaSA9IDM7CisgICAgd2hpbGUgKGkgKyAyIDwg
c3RhdGUuc2l6ZSgpKSB7CisgICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICAgICAgc2l6ZV90
IGZpZWxkcyA9IFdURjo6U3RyaW5nKHN0YXRlW2kgKyAyXSkudG9JbnQoJm9rKTsKKyAgICAgICAg
aWYgKCFvaykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoaSArIDIgKyBmaWVsZHMg
Pj0gc3RhdGUuc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChzdGF0ZVtp
ICsgMV0gPT0gImZpbGUiKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDM7IGog
PCBpICsgMyArIGZpZWxkczsgaiArPSAyKQorICAgICAgICAgICAgICAgIGZpbGVQYXRocy5hcHBl
bmQoc3RhdGVbal0pOworICAgICAgICB9CisgICAgICAgIGkgKz0gKDMgKyBmaWVsZHMpOworICAg
IH0KKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiB0b1JldHVybihmaWxlUGF0aHMuc2l6ZSgpKTsK
KyAgICB0b1JldHVybi5hc3NpZ24oZmlsZVBhdGhzKTsKKyAgICByZXR1cm4gdG9SZXR1cm47Cit9
CisKIFdlYkhpc3RvcnlJdGVtOjpXZWJIaXN0b3J5SXRlbShjb25zdCBQYXNzUmVmUHRyPEhpc3Rv
cnlJdGVtPiYgaXRlbSkKICAgICA6IG1fcHJpdmF0ZShpdGVtKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157429</attachid>
            <date>2012-08-09 02:11:17 -0700</date>
            <delta_ts>2012-08-09 05:29:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120809111050.patch</filename>
            <type>text/plain</type>
            <size>9899</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDM3OTEwMzVmMzM4OTU0NzM3YjEyYzNkZGYxNGE4Yjc0NjczZThhNWEuLmFlYTJkNjU3NzBmOWM5
M2FiOGUyNjU5YWYyZjc3Nzg1YjExMDk1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMDkgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYkhpc3RvcnlJdGVtOiBBZGQgYSBmdW5jdGlvbiBmb3IgcmVh
ZGluZyBzZWxlY3RlZCBmaWxlIG5hbWVzIGZyb20gZG9jdW1lbnQgc3RhdGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMg
Q2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkgd2hlbgorICAgICAg
ICB0aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUgcmVzdG9yZXMgYSBwYWdlIHdpdGggc2VsZWN0
ZWQgZmlsZXMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSGlzdG9yeUl0ZW0uaDoKKyAgICAgICAg
KFdlYkhpc3RvcnlJdGVtKTogQWRkZWQgZ2V0UmVmZXJyZWRGaWxlUGF0aHMuCisgICAgICAgICog
c3JjL1dlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGlzdG9yeUl0ZW06
OmdldFJlZmVycmVkRmlsZVBhdGhzKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorCiAyMDEy
LTA4LTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5
b3V0IFRlc3Qgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5odG1s
IGlzIGZsYWt5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJI
aXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0
ZW0uaAppbmRleCAwMTVhNzliZWJmZmU4NDlhMDJmYmNhYTYzYjQ3ZjlkYjc3NDE3ZWZkLi5lMTQw
MzE0MzZlNDljNDAxN2UyNzg3OGEyNDZiODc5ZTZlN2E1ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3Rv
cjxXZWJIaXN0b3J5SXRlbT4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kVG9DaGls
ZHJlbihjb25zdCBXZWJIaXN0b3J5SXRlbSYpOwogCisgICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiBnZXRSZWZlcnJlZEZpbGVQYXRocygpIGNvbnN0OworCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSGlzdG9yeUl0ZW0oY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYpOwogICAgIFdlYkhpc3RvcnlJdGVtJiBvcGVyYXRvcj0o
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IGRiMzUzMTdhZDk4
M2NkZDY5ZDlkMDY1NTI2NTVmMmMxZjk5NDM2NzAuLmUwN2YxYTZmZWU4NjE0NTZkOTgxMTg4YmNj
YjJiZWNkM2E2ZmY3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Ykhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIaXN0
b3J5SXRlbS5jcHAKQEAgLTI4Nyw2ICsyODcsMzggQEAgdm9pZCBXZWJIaXN0b3J5SXRlbTo6YXBw
ZW5kVG9DaGlsZHJlbihjb25zdCBXZWJIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBtX3ByaXZhdGUt
PmFkZENoaWxkSXRlbShpdGVtKTsKIH0KIAorV2ViVmVjdG9yPFdlYlN0cmluZz4gV2ViSGlzdG9y
eUl0ZW06OmdldFJlZmVycmVkRmlsZVBhdGhzKCkgY29uc3QKK3sKKyAgICBXVEY6OlZlY3RvcjxX
ZWJTdHJpbmc+IGZpbGVQYXRoczsKKyAgICBjb25zdCBXZWJIVFRQQm9keSYgYm9keSA9IGh0dHBC
b2R5KCk7CisgICAgaWYgKCFib2R5LmlzTnVsbCgpKSB7CisgICAgICAgIFdlYkhUVFBCb2R5OjpF
bGVtZW50IGVsZW1lbnQ7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYm9keS5lbGVt
ZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBib2R5LmVsZW1lbnRBdChpLCBlbGVtZW50
KTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gV2ViSFRUUEJvZHk6OkVsZW1lbnQ6
OlR5cGVGaWxlKQorICAgICAgICAgICAgICAgIGZpbGVQYXRocy5hcHBlbmQoZWxlbWVudC5maWxl
UGF0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4m
IHN0YXRlID0gZG9jdW1lbnRTdGF0ZSgpOworICAgIHNpemVfdCBpID0gMzsKKyAgICB3aGlsZSAo
aSArIDIgPCBzdGF0ZS5zaXplKCkpIHsKKyAgICAgICAgYm9vbCBvayA9IGZhbHNlOworICAgICAg
ICBzaXplX3QgZmllbGRzID0gV1RGOjpTdHJpbmcoc3RhdGVbaSArIDJdKS50b0ludCgmb2spOwor
ICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChpICsgMiAr
IGZpZWxkcyA+PSBzdGF0ZS5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYg
KHN0YXRlW2kgKyAxXSA9PSAiZmlsZSIpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSBp
ICsgMzsgaiA8IGkgKyAzICsgZmllbGRzOyBqICs9IDIpCisgICAgICAgICAgICAgICAgZmlsZVBh
dGhzLmFwcGVuZChzdGF0ZVtqXSk7CisgICAgICAgIH0KKyAgICAgICAgaSArPSAoMyArIGZpZWxk
cyk7CisgICAgfQorICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHRvUmV0dXJuKGZpbGVQYXRocy5z
aXplKCkpOworICAgIHRvUmV0dXJuLmFzc2lnbihmaWxlUGF0aHMpOworICAgIHJldHVybiB0b1Jl
dHVybjsKK30KKwogV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKGNvbnN0IFBhc3NSZWZQ
dHI8SGlzdG9yeUl0ZW0+JiBpdGVtKQogICAgIDogbV9wcml2YXRlKGl0ZW0pCiB7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDQ3ZDUyNWZmZGY2
MjBkNTNmYmVkODQzODk1MjlkY2YzMTRkMWRlOC4uMjAwYzVlOWIyZGFjMjkzZmVlZjJjNDZmYjQy
ZDBmYmVhZWM2MzRmNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA4LTA5ICBNYXJqYSBIw7ZsdHTDpCAgPG1h
cmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJIaXN0b3J5SXRlbTogRW5hYmxlIHJlYWRp
bmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9tIGRvY3VtZW50IHN0YXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24g
b2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVy
LWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpnZXRSZWZlcnJlZEZpbGVzKTogQWRkZWQuCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyKTogQWRkZWQgZ2V0UmVmZXJyZWRGaWxlcy4KKwogMjAxMi0wOC0w
NyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgdHlwbyBmaXggYWZ0ZXIgcjEyNDk4OC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwNDZlMWVjMmQ3
YmNkNmNkOTFmMDIyNGExOGE1OTk4YjJkYzMzMmU5Li4yYWJiZTc0MDI4Njg2OGExYmQzMjkzNzc2
M2FjMGQ2NDQ0NzdmNGU3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yNzYsNiArMjc2LDcgQEAgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAg
ICAgYmluZE1ldGhvZCgic2VsZWN0aW9uQXNNYXJrdXAiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNlbGVjdGlvbkFzTWFya3VwKTsKICAgICBiaW5kTWV0aG9kKCJzZXRIYXNDdXN0b21GdWxsU2Ny
ZWVuQmVoYXZpb3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEhhc0N1c3RvbUZ1bGxTY3Jl
ZW5CZWhhdmlvcik7CiAgICAgYmluZE1ldGhvZCgidGV4dFN1cnJvdW5kaW5nTm9kZSIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6dGV4dFN1cnJvdW5kaW5nTm9kZSk7CisgICAgYmluZE1ldGhvZCgi
Z2V0UmVmZXJyZWRGaWxlcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z2V0UmVmZXJyZWRGaWxl
cyk7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIHVua25v
d24gbWV0aG9kIGlzIGludm9rZWQuCiAgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZmFsbGJhY2tNZXRob2QpOwpAQCAtMjM0OCwzICsyMzQ5LDE4IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnRleHRTdXJyb3VuZGluZ05vZGUoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsCiAKICAgICByZXN1bHQtPnNldChzdXJyb3VuZGluZ1RleHQudGV4
dENvbnRlbnQoKS51dGY4KCkpOwogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpnZXRS
ZWZlcnJlZEZpbGVzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgV2ViSGlzdG9yeUl0ZW0g
aGlzdG9yeUl0ZW0gPSAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+d2ViVmlldygpLT5mb2N1c2Vk
RnJhbWUoKS0+Y3VycmVudEhpc3RvcnlJdGVtKCk7CisgICAgaWYgKGhpc3RvcnlJdGVtLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm47CisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gZmlsZVBhdGhz
ID0gaGlzdG9yeUl0ZW0uZ2V0UmVmZXJyZWRGaWxlUGF0aHMoKTsKKyAgICBzdHJpbmcgZmlsZVN0
cmluZzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVQYXRocy5zaXplKCk7ICsraSkg
eworICAgICAgICBmaWxlU3RyaW5nLmFwcGVuZChmaWxlUGF0aHNbaV0udXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIGZpbGVTdHJpbmcuYXBwZW5kKCJcbiIpOworICAgIH0KKyAgICByZXN1bHQtPnNl
dChmaWxlU3RyaW5nKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDljZmQxMjM1OTIxYTIxYWI1YTFiM2VjNGMy
MjNhOTdkZDI1NjAwYTAuLmVkNTZjMzAzY2YwYTExNjk4MWFmZGRlOWNmYWI4ZDIzOTBkYzg5MWUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuaApAQCAtNDQzLDYgKzQ0Myw5IEBAIHB1YmxpYzoKICAgICAvLyBsZW5ndGggdG8g
cmV0cmlldmUuCiAgICAgdm9pZCB0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIEdldHMgdGhlIHNlbGVjdGVkIGZpbGVzIGZy
b20gdGhlIFdlYlZpZXcuCisgICAgdm9pZCBnZXRSZWZlcnJlZEZpbGVzKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcg
bWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lkIHNldFdvcmtR
dWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsg
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDM4YTk5ZmY4OWI1MzdiN2IwMTg0YmFlZmZhZDJhY2YzODcwMzZiZDcuLmY0ZDM4
NTA2MWM3OWFhMzUxN2JiNzRhYWNmM2FmOTFkN2E4MjRhMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxMi0wOC0wOSAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViSGlzdG9yeUl0ZW06IEFkZCBhIGZ1bmN0aW9uIGZvciByZWFkaW5nIHNlbGVjdGVk
IGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZW5hYmxlcyBDaHJvbWl1bSB0byBz
ZXQgdXAgZmlsZSBwZXJtaXNzaW9ucyBwcm9wZXJseSB3aGVuCisgICAgICAgIHRoZSBzZXNzaW9u
IHJlc3RvcmUgZmVhdHVyZSByZXN0b3JlcyBhIHBhZ2Ugd2l0aCBzZWxlY3RlZCBmaWxlcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxl
cy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5
LXN0YXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTA3ICBUYWthc2hpIFRveW9zaGltYSAgPHRv
eW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgZXhwZWN0
YXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zv
cm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1m
aWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1ZTgyYTk1
Y2I4NzAzM2Q4NmNiMzIyYTQ5NDUwYTU0YzNkNWMyZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMt
ZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyAK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2ZpbGUvc2Vs
ZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0
YXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM2YjJkY2Y4YzYyMTg2M2QzNDllYzE4NTY5YzJjNjk1NTcy
MzcxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbApAQCAt
MCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2Z1bmN0aW9uIG9u
TG9hZCgpIHsKKyAgICBzZXRUaW1lb3V0KHJ1blRlc3QsIDApOworfQorCitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIGEgTGF5b3V0VGVzdENvbnRyb2xsZXIuJyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ZpbGVpbnB1dCcpOworCisgICAgdmFyIGRpZEZpcmVPbkNoYW5nZSA9IGZhbHNlOworICAgIHZh
ciBvdXRwdXRWZXJpZmllZCA9IGZhbHNlOworICAgIGlucHV0Lm9uY2hhbmdlID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGRpZEZpcmVPbkNoYW5nZSA9IHRydWU7CisgICAgICAgIHZhciBmaWxlcyA9
IHRlc3RSdW5uZXIuZ2V0UmVmZXJyZWRGaWxlcygpOworICAgICAgICBpZiAoZmlsZXMgPT0gJy9o
b21lL3VzZXIvdGVzdGZpbGUudHh0XG4nKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCcnKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWQgZmls
ZXM6ICcgKyBmaWxlcyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgZXZlbnRTZW5kZXIuYmVn
aW5EcmFnV2l0aEZpbGVzKFsnL2hvbWUvdXNlci90ZXN0ZmlsZS50eHQnXSk7CisgICAgdmFyIGNl
bnRlclggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGggLyAyOworICAgIHZh
ciBjZW50ZXJZID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CisgICAgaWYgKCFkaWRGaXJlT25DaGFuZ2UpIHsKKyAgICAgICAgdGVz
dEZhaWxlZCgnb25jaGFuZ2UgbmV2ZXIgZmlyZWQnKTsKKyAgICB9CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29udGFpbmVyIj4KKzxpbnB1dCBpZD0i
ZmlsZWlucHV0IiB0eXBlPSJmaWxlIiAvPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157448</attachid>
            <date>2012-08-09 05:29:42 -0700</date>
            <delta_ts>2012-08-14 01:14:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120809142914.patch</filename>
            <type>text/plain</type>
            <size>10132</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDM3OTEwMzVmMzM4OTU0NzM3YjEyYzNkZGYxNGE4Yjc0NjczZThhNWEuLmFlYTJkNjU3NzBmOWM5
M2FiOGUyNjU5YWYyZjc3Nzg1YjExMDk1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMDkgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYkhpc3RvcnlJdGVtOiBBZGQgYSBmdW5jdGlvbiBmb3IgcmVh
ZGluZyBzZWxlY3RlZCBmaWxlIG5hbWVzIGZyb20gZG9jdW1lbnQgc3RhdGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMg
Q2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkgd2hlbgorICAgICAg
ICB0aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUgcmVzdG9yZXMgYSBwYWdlIHdpdGggc2VsZWN0
ZWQgZmlsZXMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSGlzdG9yeUl0ZW0uaDoKKyAgICAgICAg
KFdlYkhpc3RvcnlJdGVtKTogQWRkZWQgZ2V0UmVmZXJyZWRGaWxlUGF0aHMuCisgICAgICAgICog
c3JjL1dlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGlzdG9yeUl0ZW06
OmdldFJlZmVycmVkRmlsZVBhdGhzKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorCiAyMDEy
LTA4LTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5
b3V0IFRlc3Qgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5odG1s
IGlzIGZsYWt5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJI
aXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0
ZW0uaAppbmRleCAwMTVhNzliZWJmZmU4NDlhMDJmYmNhYTYzYjQ3ZjlkYjc3NDE3ZWZkLi5lMTQw
MzE0MzZlNDljNDAxN2UyNzg3OGEyNDZiODc5ZTZlN2E1ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3Rv
cjxXZWJIaXN0b3J5SXRlbT4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kVG9DaGls
ZHJlbihjb25zdCBXZWJIaXN0b3J5SXRlbSYpOwogCisgICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiBnZXRSZWZlcnJlZEZpbGVQYXRocygpIGNvbnN0OworCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSGlzdG9yeUl0ZW0oY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYpOwogICAgIFdlYkhpc3RvcnlJdGVtJiBvcGVyYXRvcj0o
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IGRiMzUzMTdhZDk4
M2NkZDY5ZDlkMDY1NTI2NTVmMmMxZjk5NDM2NzAuLmUwN2YxYTZmZWU4NjE0NTZkOTgxMTg4YmNj
YjJiZWNkM2E2ZmY3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Ykhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIaXN0
b3J5SXRlbS5jcHAKQEAgLTI4Nyw2ICsyODcsMzggQEAgdm9pZCBXZWJIaXN0b3J5SXRlbTo6YXBw
ZW5kVG9DaGlsZHJlbihjb25zdCBXZWJIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBtX3ByaXZhdGUt
PmFkZENoaWxkSXRlbShpdGVtKTsKIH0KIAorV2ViVmVjdG9yPFdlYlN0cmluZz4gV2ViSGlzdG9y
eUl0ZW06OmdldFJlZmVycmVkRmlsZVBhdGhzKCkgY29uc3QKK3sKKyAgICBXVEY6OlZlY3RvcjxX
ZWJTdHJpbmc+IGZpbGVQYXRoczsKKyAgICBjb25zdCBXZWJIVFRQQm9keSYgYm9keSA9IGh0dHBC
b2R5KCk7CisgICAgaWYgKCFib2R5LmlzTnVsbCgpKSB7CisgICAgICAgIFdlYkhUVFBCb2R5OjpF
bGVtZW50IGVsZW1lbnQ7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYm9keS5lbGVt
ZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBib2R5LmVsZW1lbnRBdChpLCBlbGVtZW50
KTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gV2ViSFRUUEJvZHk6OkVsZW1lbnQ6
OlR5cGVGaWxlKQorICAgICAgICAgICAgICAgIGZpbGVQYXRocy5hcHBlbmQoZWxlbWVudC5maWxl
UGF0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4m
IHN0YXRlID0gZG9jdW1lbnRTdGF0ZSgpOworICAgIHNpemVfdCBpID0gMzsKKyAgICB3aGlsZSAo
aSArIDIgPCBzdGF0ZS5zaXplKCkpIHsKKyAgICAgICAgYm9vbCBvayA9IGZhbHNlOworICAgICAg
ICBzaXplX3QgZmllbGRzID0gV1RGOjpTdHJpbmcoc3RhdGVbaSArIDJdKS50b0ludCgmb2spOwor
ICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChpICsgMiAr
IGZpZWxkcyA+PSBzdGF0ZS5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYg
KHN0YXRlW2kgKyAxXSA9PSAiZmlsZSIpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSBp
ICsgMzsgaiA8IGkgKyAzICsgZmllbGRzOyBqICs9IDIpCisgICAgICAgICAgICAgICAgZmlsZVBh
dGhzLmFwcGVuZChzdGF0ZVtqXSk7CisgICAgICAgIH0KKyAgICAgICAgaSArPSAoMyArIGZpZWxk
cyk7CisgICAgfQorICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHRvUmV0dXJuKGZpbGVQYXRocy5z
aXplKCkpOworICAgIHRvUmV0dXJuLmFzc2lnbihmaWxlUGF0aHMpOworICAgIHJldHVybiB0b1Jl
dHVybjsKK30KKwogV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKGNvbnN0IFBhc3NSZWZQ
dHI8SGlzdG9yeUl0ZW0+JiBpdGVtKQogICAgIDogbV9wcml2YXRlKGl0ZW0pCiB7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDQ3ZDUyNWZmZGY2
MjBkNTNmYmVkODQzODk1MjlkY2YzMTRkMWRlOC4uOWEyMjFkYmM2MzZhNGZkY2JlZTEyMGViNDFk
N2E0NzEzNDJlMjgyNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTA5ICBNYXJqYSBIw7ZsdHTDpCAgPG1h
cmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJIaXN0b3J5SXRlbTogRW5hYmxlIHJlYWRp
bmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9tIGRvY3VtZW50IHN0YXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMgQ2hy
b21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkgd2hlbgorICAgICAgICB0
aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUgcmVzdG9yZXMgYSBwYWdlIHdpdGggc2VsZWN0ZWQg
ZmlsZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENv
bnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmdldFJlZmVycmVkRmls
ZXMpOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOiBBZGRlZCBnZXRS
ZWZlcnJlZEZpbGVzLgorCiAyMDEyLTA4LTA3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0eXBvIGZpeCBhZnRlciByMTI0OTg4Lgpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDA0NmUxZWMyZDdiY2Q2Y2Q5MWYwMjI0YTE4YTU5OThiMmRjMzMyZTku
LmY1NzA1Yzc2NTE2YTM1NTQ1MTg2OGIzZjdmMzkxZjA1NzY0MWIxYWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTI3Niw2ICsyNzYsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRy
b2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZWxlY3Rpb25Bc01hcmt1
cCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2VsZWN0aW9uQXNNYXJrdXApOwogICAgIGJpbmRN
ZXRob2QoInNldEhhc0N1c3RvbUZ1bGxTY3JlZW5CZWhhdmlvciIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0SGFzQ3VzdG9tRnVsbFNjcmVlbkJlaGF2aW9yKTsKICAgICBiaW5kTWV0aG9kKCJ0
ZXh0U3Vycm91bmRpbmdOb2RlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjp0ZXh0U3Vycm91bmRp
bmdOb2RlKTsKKyAgICBiaW5kTWV0aG9kKCJnZXRSZWZlcnJlZEZpbGVzIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpnZXRSZWZlcnJlZEZpbGVzKTsKIAogICAgIC8vIFRoZSBmYWxsYmFjayBtZXRo
b2QgaXMgY2FsbGVkIHdoZW4gYW4gdW5rbm93biBtZXRob2QgaXMgaW52b2tlZC4KICAgICBiaW5k
RmFsbGJhY2tNZXRob2QoJkxheW91dFRlc3RDb250cm9sbGVyOjpmYWxsYmFja01ldGhvZCk7CkBA
IC0yMzQ4LDMgKzIzNDksMTggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dGV4dFN1cnJv
dW5kaW5nTm9kZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywKIAogICAgIHJlc3Vs
dC0+c2V0KHN1cnJvdW5kaW5nVGV4dC50ZXh0Q29udGVudCgpLnV0ZjgoKSk7CiB9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmdldFJlZmVycmVkRmlsZXMoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldCgi
Iik7CisgICAgV2ViSGlzdG9yeUl0ZW0gaGlzdG9yeUl0ZW0gPSAgbV9zaGVsbC0+d2ViVmlldygp
LT5mb2N1c2VkRnJhbWUoKS0+Y3VycmVudEhpc3RvcnlJdGVtKCk7CisgICAgaWYgKGhpc3RvcnlJ
dGVtLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4g
ZmlsZVBhdGhzID0gaGlzdG9yeUl0ZW0uZ2V0UmVmZXJyZWRGaWxlUGF0aHMoKTsKKyAgICBzdHJp
bmcgZmlsZVN0cmluZzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVQYXRocy5zaXpl
KCk7ICsraSkgeworICAgICAgICBmaWxlU3RyaW5nLmFwcGVuZChmaWxlUGF0aHNbaV0udXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIGZpbGVTdHJpbmcuYXBwZW5kKCJcbiIpOworICAgIH0KKyAgICBy
ZXN1bHQtPnNldChmaWxlU3RyaW5nKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDljZmQxMjM1OTIxYTIxYWI1
YTFiM2VjNGMyMjNhOTdkZDI1NjAwYTAuLmVkNTZjMzAzY2YwYTExNjk4MWFmZGRlOWNmYWI4ZDIz
OTBkYzg5MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNDQzLDYgKzQ0Myw5IEBAIHB1YmxpYzoKICAgICAvLyBs
ZW5ndGggdG8gcmV0cmlldmUuCiAgICAgdm9pZCB0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIEdldHMgdGhlIHNlbGVjdGVk
IGZpbGVzIGZyb20gdGhlIFdlYlZpZXcuCisgICAgdm9pZCBnZXRSZWZlcnJlZEZpbGVzKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBm
b2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lk
IHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4o
ZnJvemVuKTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDM4YTk5ZmY4OWI1MzdiN2IwMTg0YmFlZmZhZDJhY2YzODcwMzZi
ZDcuLmY0ZDM4NTA2MWM3OWFhMzUxN2JiNzRhYWNmM2FmOTFkN2E4MjRhMzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMi0wOC0wOSAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViSGlzdG9yeUl0ZW06IEFkZCBhIGZ1bmN0aW9uIGZvciByZWFkaW5n
IHNlbGVjdGVkIGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0ZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZW5hYmxlcyBDaHJv
bWl1bSB0byBzZXQgdXAgZmlsZSBwZXJtaXNzaW9ucyBwcm9wZXJseSB3aGVuCisgICAgICAgIHRo
ZSBzZXNzaW9uIHJlc3RvcmUgZmVhdHVyZSByZXN0b3JlcyBhIHBhZ2Ugd2l0aCBzZWxlY3RlZCBm
aWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZmlsZS9zZWxl
Y3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJv
bS1oaXN0b3J5LXN0YXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTA3ICBUYWthc2hpIFRveW9z
aGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRh
dGUgZXhwZWN0YXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZmlsZS9z
ZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJkMWVjMjE5OWRjYmNhMjI4MWM1MzliM2I4ODY4OWM5YzM1YzIzMzcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0
ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAK
K1Rlc3RzIHRoYXQgc2VsZWN0ZWQgZmlsZXMgaW4gZmlsZSBpbnB1dCBlbGVtZW50cyBhcmUgY29y
cmVjdGx5IHJldHJpZXZlZCBieSBXZWJIaXN0b3J5SXRlbTo6Z2V0UmVmZXJyZWRGaWxlUGF0aHMo
KS4KKworCitQQVNTIAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
Zm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1m
cm9tLWhpc3Rvcnktc3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDk2YmY5MDgwYWFmMzA2NmU2ZGNj
NTQ3NDQ3YTY2ZWExZTFmNjMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1z
dGF0ZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworZnVuY3Rpb24gb25Mb2FkKCkgeworICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7Cit9CisK
K2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgYSB0ZXN0UnVubmVyLicpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdmaWxlaW5wdXQnKTsKKworICAgIHZhciBkaWRGaXJlT25DaGFuZ2UgPSBmYWxzZTsKKyAg
ICB2YXIgb3V0cHV0VmVyaWZpZWQgPSBmYWxzZTsKKyAgICBpbnB1dC5vbmNoYW5nZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBkaWRGaXJlT25DaGFuZ2UgPSB0cnVlOworICAgICAgICB2YXIgZmls
ZXMgPSB0ZXN0UnVubmVyLmdldFJlZmVycmVkRmlsZXMoKTsKKyAgICAgICAgaWYgKGZpbGVzID09
ICcvaG9tZS91c2VyL3Rlc3RmaWxlLnR4dFxuJykgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgn
Jyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdVbmV4cGVjdGVk
IGZpbGVzOiAnICsgZmlsZXMpOworICAgICAgICB9CisgICAgfTsKKworICAgIGV2ZW50U2VuZGVy
LmJlZ2luRHJhZ1dpdGhGaWxlcyhbJy9ob21lL3VzZXIvdGVzdGZpbGUudHh0J10pOworICAgIHZh
ciBjZW50ZXJYID0gaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldFdpZHRoIC8gMjsKKyAg
ICB2YXIgY2VudGVyWSA9IGlucHV0Lm9mZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAvIDI7
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworICAgIGlmICghZGlkRmlyZU9uQ2hhbmdlKSB7CisgICAgICAg
IHRlc3RGYWlsZWQoJ29uY2hhbmdlIG5ldmVyIGZpcmVkJyk7CisgICAgfQorICAgIGZpbmlzaEpT
VGVzdCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgc2VsZWN0ZWQgZmlsZXMgaW4gZmlsZSBp
bnB1dCBlbGVtZW50cyBhcmUgY29ycmVjdGx5IHJldHJpZXZlZCBieSBXZWJIaXN0b3J5SXRlbTo6
Z2V0UmVmZXJyZWRGaWxlUGF0aHMoKS48L3A+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorPGlucHV0
IGlkPSJmaWxlaW5wdXQiIHR5cGU9ImZpbGUiIC8+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158251</attachid>
            <date>2012-08-14 01:13:05 -0700</date>
            <delta_ts>2012-08-14 05:10:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120814101232.patch</filename>
            <type>text/plain</type>
            <size>14711</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg4NjdmNWIwNDU5OWI2
OGE3ODNhZTU5NjY5ZTNiZWFmM2Q5Zjc3Ni4uMzQ3YTE1NzRiMThiY2Y4M2YxNmJmZTdmMzljODgw
MmI1Zjk2ZjJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA4LTE0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGdvb2dsZS5jb20+CisKKyAgICAgICAgRm9ybUNvbnRyb2xsZXI6
IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBlbmFibGVzIENocm9taXVtIHRvIHNldCB1cCBmaWxlIHBlcm1pc3Npb25zIHByb3Blcmx5IHdo
ZW4KKyAgICAgICAgdGhlIHNlc3Npb24gcmVzdG9yZSBmZWF0dXJlIHJlc3RvcmVzIGEgcGFnZSB3
aXRoIHNlbGVjdGVkIGZpbGVzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvZmlsZS9zZWxl
Y3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbAorCisgICAgICAgICogaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbFN0YXRlOjpnZXRS
ZWZlcmVuY2VkRmlsZVBhdGhzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2F2ZWRG
b3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3JtU3RhdGU6OmdldFJlZmVyZW5j
ZWRGaWxlUGF0aHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmdldFJlZmVy
ZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKEZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoRm9ybUNvbnRyb2xsZXIpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDgtMTAgIFZpbmVldCBDaGF1ZGhhcnkgIDxyZ2Y3
NDhAbW90b3JvbGEuY29tPgogCiAgICAgICAgIE1vdmluZyB0aGUgY29tbW9uIGNvZGUgZnJvbSBD
b2RlZ2VuZXJhdG9ySlMvVjgucG0gdG8gQ29kZWdlbmVyYXRvci5wbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA0ODY0MDUyZDI3ZDc3YTQzNGI2MDY0MWZiNjY3ODk3NGEyNDVhNjg2Li4z
OWNjYjIxZTA1NmViNzVhNjU0MzNjMTE0NTA1ZjA3NjJkMWEzNTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTE0ICBNYXJqYSBIw7ZsdHTDpCAg
PG1hcmphQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViSGlzdG9yeUl0ZW06IEVuYWJsZSByZWFk
aW5nIHNlbGVjdGVkIGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIENo
cm9taXVtIHRvIHNldCB1cCBmaWxlIHBlcm1pc3Npb25zIHByb3Blcmx5IHdoZW4KKyAgICAgICAg
dGhlIHNlc3Npb24gcmVzdG9yZSBmZWF0dXJlIHJlc3RvcmVzIGEgcGFnZSB3aXRoIHNlbGVjdGVk
IGZpbGVzLgorCisgICAgICAgICogcHVibGljL1dlYkhpc3RvcnlJdGVtLmg6CisgICAgICAgIChX
ZWJIaXN0b3J5SXRlbSk6IEFkZGVkIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICog
c3JjL1dlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGlzdG9yeUl0ZW06
OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisKIDIw
MTItMDgtMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjUyMzAgYW5kIHIxMjUyMzguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IDVlMzlmZTIyOTM5Yjc0OTQwZWM1
NDQ5NDE2OGVkOWM1Mjg5YmM5N2QuLmZiYzFhODRiNjAxYjM2YzA3ZTVjYjIyNjQ0ZGJiMmU1ZmMy
OTNlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC03NSw2ICs3
NSwxNiBAQCBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250cm9sU3RhdGU6OmRlc2VyaWFsaXplKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3RvcgogICAgIHJldHVybiBzdGF0ZTsKIH0KIAor
VmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xTdGF0ZTo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygp
IGNvbnN0Cit7CisgICAgVmVjdG9yPFN0cmluZz4gdG9SZXR1cm47CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7IGkgKz0gMikgeworICAgICAgICBpZiAoIW1fdmFs
dWVzW2ldLmlzTnVsbCgpKQorICAgICAgICAgICAgdG9SZXR1cm4uYXBwZW5kKG1fdmFsdWVzW2ld
KTsKKyAgICB9CisgICAgcmV0dXJuIHRvUmV0dXJuOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIGNsYXNzIEZvcm1FbGVtZW50S2V5IHsKQEAgLTE4MCw2ICsxOTAsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcHBlbmRDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKICAgICBG
b3JtQ29udHJvbFN0YXRlIHRha2VDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOwogCisgICAgVmVjdG9yPFN0cmluZz4gZ2V0UmVm
ZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNhdmVkRm9ybVN0YXRl
KCkgOiBtX2NvbnRyb2xTdGF0ZUNvdW50KDApIHsgfQogCkBAIC0yNjMsNiArMjc1LDIzIEBAIEZv
cm1Db250cm9sU3RhdGUgU2F2ZWRGb3JtU3RhdGU6OnRha2VDb250cm9sU3RhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCitWZWN0b3I8U3Ry
aW5nPiBTYXZlZEZvcm1TdGF0ZTo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPFN0cmluZz4gdG9SZXR1cm47CisgICAgZm9yIChGb3JtRWxlbWVudFN0YXRlTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMuYmVnaW4oKTsg
aXQgIT0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5lbmQoKTsgKytpdCkgeworICAgICAgICBj
b25zdCBGb3JtRWxlbWVudEtleSYga2V5ID0gaXQtPmZpcnN0OworICAgICAgICBpZiAoQXRvbWlj
U3RyaW5nKGtleS50eXBlKCkpICE9IEF0b21pY1N0cmluZygiZmlsZSIpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGNvbnN0IERlcXVlPEZvcm1Db250cm9sU3RhdGU+JiBxdWV1ZSA9
IGl0LT5zZWNvbmQ7CisgICAgICAgIGZvciAoRGVxdWU8Rm9ybUNvbnRyb2xTdGF0ZT46OmNvbnN0
X2l0ZXJhdG9yIHF1ZUl0ZXJhdG9yID0gcXVldWUuYmVnaW4oKTsgcXVlSXRlcmF0b3IgIT0gcXVl
dWUuZW5kKCk7ICsrcXVlSXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlcyA9IHF1ZUl0ZXJhdG9yLT5nZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgICAgIHRvUmV0dXJuLmFwcGVuZChmaWxlc1tpXSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHRvUmV0dXJuOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNz
IEZvcm1LZXlHZW5lcmF0b3IgewpAQCAtNDc5LDUgKzUwOCwyMiBAQCB2b2lkIEZvcm1Db250cm9s
bGVyOjpyZXN0b3JlQ29udHJvbFN0YXRlSW4oSFRNTEZvcm1FbGVtZW50JiBmb3JtKQogICAgIH0K
IH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorVmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xs
ZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVj
dG9yKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0dXJuOworICAgIHNpemVfdCBpID0gMDsK
KyAgICBpZiAoc3RhdGVWZWN0b3Iuc2l6ZSgpIDwgMSB8fCBzdGF0ZVZlY3RvcltpKytdICE9IGZv
cm1TdGF0ZVNpZ25hdHVyZSgpKQorICAgICAgICByZXR1cm4gdG9SZXR1cm47CisgICAgd2hpbGUg
KGkgKyAxIDwgc3RhdGVWZWN0b3Iuc2l6ZSgpKSB7CisgICAgICAgICsraTsgLy8gU2tpcCBmb3Jt
IGtleS4KKyAgICAgICAgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiBzdGF0ZSA9IFNhdmVkRm9ybVN0
YXRlOjpkZXNlcmlhbGl6ZShzdGF0ZVZlY3RvciwgaSk7CisgICAgICAgIGlmICghc3RhdGUpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRo
cyA9IHN0YXRlLT5nZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7CisgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgZmlsZVBhdGhzLnNpemUoKTsgKytqKQorICAgICAgICAgICAgdG9SZXR1cm4u
YXBwZW5kKGZpbGVQYXRoc1tqXSk7CisgICAgfQorICAgIHJldHVybiB0b1JldHVybjsKK30KIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCmlu
ZGV4IDVkMzc0OGQwZWU1OGUzMTIxMWQyOWJkOGUwNTExMGVmMTliNGZjNmIuLmMxNDllMTQyMTIy
MTIzZGM5YWVjOWJkYzI5MmRmZTdlZWI4NDZhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2VyaWFsaXplVG8oVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVj
dG9yKSBjb25zdDsKIAorICAgIFZlY3RvcjxTdHJpbmc+IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBlbnVtIFR5cGUgeyBUeXBlU2tpcCwgVHlwZVJlc3Rv
cmUsIFR5cGVGYWlsdXJlIH07CiAgICAgZXhwbGljaXQgRm9ybUNvbnRyb2xTdGF0ZShUeXBlIHR5
cGUpIDogbV90eXBlKHR5cGUpIHsgfQpAQCAtOTIsNiArOTQsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXN0b3JlQ29udHJvbFN0YXRlRm9yKEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUm
KTsKICAgICB2b2lkIHJlc3RvcmVDb250cm9sU3RhdGVJbihIVE1MRm9ybUVsZW1lbnQmKTsKIAor
ICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvcik7CisKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBMaXN0
SGFzaFNldDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKiwgNjQ+IEZvcm1FbGVtZW50
TGlzdEhhc2hTZXQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJbXBs
PiwgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiA+IFNhdmVkRm9ybVN0YXRlTWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDZhYWE3ZjE3Mjg3NTdhMWU0YmMwNGE3ZDk5MWMz
M2Y2OTJlYjI3NDIuLjEwZWNhY2M0OTA1ZDIzMzIwYzQxYmM2YWI5MjViZTU5YzVlMzUyNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcm5hbHMuaCIKIAorI2luY2x1ZGUgIkJhY2tG
b3J3YXJkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCkBAIC0z
OCw2ICszOSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJGYXN0TWFsbG9jU3RhdGlzdGljcy5oIgorI2luY2x1ZGUg
IkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKQEAgLTExODgsNCArMTE5MCwx
NCBAQCBQYXNzUmVmUHRyPEZhc3RNYWxsb2NTdGF0aXN0aWNzPiBJbnRlcm5hbHM6OmZhc3RNYWxs
b2NTdGF0aXN0aWNzKCkgY29uc3QKICAgICByZXR1cm4gRmFzdE1hbGxvY1N0YXRpc3RpY3M6OmNy
ZWF0ZSgpOwogfQogCitQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IEludGVybmFsczo6Z2V0UmVm
ZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0Cit7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0
cmluZ0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBmcmFtZSgpLT5sb2FkZXIo
KS0+aGlzdG9yeSgpLT5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOworICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMgPSBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZp
bGVQYXRocyhmcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpLT5kb2N1
bWVudFN0YXRlKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVBhdGhzLnNpemUo
KTsgKytpKQorICAgICAgICBzdHJpbmdMaXN0LT5hcHBlbmQoZmlsZVBhdGhzW2ldKTsKKyAgICBy
ZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IDE1NzY2MmMzZGU2YjRlZDE0NGEyOTk5ODM2MDNjY2ViNjQwMGFiZGUuLjRh
ODY2NWNiNTI1YTI0MGRkYTE3YTdjMTllMWQ0ZjFhMzk0NjVkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMjEwLDYgKzIxMCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQ
dHI8RmFzdE1hbGxvY1N0YXRpc3RpY3M+IGZhc3RNYWxsb2NTdGF0aXN0aWNzKCkgY29uc3Q7CiAK
KyAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAg
ICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggNjAxZThhNzRmOWYxMGQyNGU0MThmMTM4MzM4NmUwNTdmNThhMDRi
Zi4uNzcxY2M1MTFkNzg5YTQ0OTMyODk3ZTA5ZDJlMDEzYjc3YjRmZmU5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTg2LDYgKzE4Niw4IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICB2b2lkIHJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRl
bnRTZWN1cml0eVBvbGljeShpbiBET01TdHJpbmcgc2NoZW1lKTsKIAogICAgICAgICBGYXN0TWFs
bG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcygpOworCisgICAgICAgIERPTVN0cmlu
Z1tdIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0ZW0uaAppbmRleCAwMTVhNzliZWJmZmU4
NDlhMDJmYmNhYTYzYjQ3ZjlkYjc3NDE3ZWZkLi4yYzQxNmY4MjdlODQ4NjViMzg2MDUwOTBhMTY5
YTJmYmE5MmMzNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJIaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhp
c3RvcnlJdGVtLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJIaXN0b3J5SXRlbT4mKTsKICAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kVG9DaGlsZHJlbihjb25zdCBXZWJIaXN0b3J5SXRl
bSYpOwogCisgICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0b3I8V2ViU3RyaW5nPiBnZXRSZWZlcmVu
Y2VkRmlsZVBhdGhzKCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBX
ZWJIaXN0b3J5SXRlbShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+
Jik7CiAgICAgV2ViSGlzdG9yeUl0ZW0mIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6SGlzdG9yeUl0ZW0+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZGIzNTMxN2FkOTgzY2RkNjlkOWQwNjU1MjY1NWYyYzFm
OTk0MzY3MC4uMzFkMmJkNTY0ZDkwMTljYjdmYjAxODViNWVmYmMzMzRhYmZlMDY1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgi
CiAKKyNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAj
aW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0yODcsNiArMjg4
LDIzIEBAIHZvaWQgV2ViSGlzdG9yeUl0ZW06OmFwcGVuZFRvQ2hpbGRyZW4oY29uc3QgV2ViSGlz
dG9yeUl0ZW0mIGl0ZW0pCiAgICAgbV9wcml2YXRlLT5hZGRDaGlsZEl0ZW0oaXRlbSk7CiB9CiAK
K1dlYlZlY3RvcjxXZWJTdHJpbmc+IFdlYkhpc3RvcnlJdGVtOjpnZXRSZWZlcmVuY2VkRmlsZVBh
dGhzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8V2ViU3RyaW5nPiBmaWxlUGF0aHM7CisgICAgY29u
c3QgRm9ybURhdGEqIGZvcm1EYXRhID0gbV9wcml2YXRlLT5mb3JtRGF0YSgpOworICAgIGlmIChm
b3JtRGF0YSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZvcm1EYXRhLT5lbGVt
ZW50cygpLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQm
IGVsZW1lbnQgPSBmb3JtRGF0YS0+ZWxlbWVudHMoKVtpXTsKKyAgICAgICAgICAgIGlmIChlbGVt
ZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlKQorICAgICAgICAgICAg
ICAgIGZpbGVQYXRocy5hcHBlbmQoZWxlbWVudC5tX2ZpbGVuYW1lKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VsZWN0ZWRGaWxlUGF0aHMgPSBXZWJDb3Jl
OjpGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyhtX3ByaXZhdGUtPmRvY3Vt
ZW50U3RhdGUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWxlY3RlZEZpbGVQYXRo
cy5zaXplKCk7ICsraSkKKyAgICAgICAgZmlsZVBhdGhzLmFwcGVuZChzZWxlY3RlZEZpbGVQYXRo
c1tpXSk7CisgICAgcmV0dXJuIGZpbGVQYXRoczsKK30KKwogV2ViSGlzdG9yeUl0ZW06OldlYkhp
c3RvcnlJdGVtKGNvbnN0IFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+JiBpdGVtKQogICAgIDogbV9w
cml2YXRlKGl0ZW0pCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGEzNDQ0ZDM4MDVkOGNjMzQ0MWExMzEyOWRhODc5ZWU2
MmJlMzFmYS4uNDNkMWNlZDFjMzgyODBiYTI0NTc2OGFiYzE3ZDMwOTg1MGUwYzljZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTE0ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgRm9ybUNvbnRyb2xsZXI6IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVk
IGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIENocm9taXVtIHRvIHNl
dCB1cCBmaWxlIHBlcm1pc3Npb25zIHByb3Blcmx5IHdoZW4KKyAgICAgICAgdGhlIHNlc3Npb24g
cmVzdG9yZSBmZWF0dXJlIHJlc3RvcmVzIGEgcGFnZSB3aXRoIHNlbGVjdGVkIGZpbGVzLgorCisg
ICAgICAgICogZmFzdC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9zZWxlY3Rl
ZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMTAgIFph
biBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IEdUSyBnYXJkZW5pbmcsIHJlYmFzZWxpbmluZyBhZnRlciByMTI1MTY3LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1z
dGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQt
ZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTY1Nzll
M2IxODVmZDI4MGNlYWMwYTVlZTcxNzIwYzgyZDZjM2E5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyB0aGF0IHNlbGVjdGVkIGZpbGVz
IGluIGZpbGUgaW5wdXQgZWxlbWVudHMgYXJlIGNvcnJlY3RseSByZXRyaWV2ZWQgYnkgRm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMuCisKKworCitQQVNTIAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3Rh
dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9t
LWhpc3Rvcnktc3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjczMGIzMzRiMjJlZWI5ODY3NGNjOGRj
M2ZkODY4NDkwZDJkZGVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sCkBAIC0wLDAgKzEs
NjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2Z1bmN0aW9uIG9uTG9hZCgpIHsKKyAgICBzZXRUaW1l
b3V0KHJ1blRlc3QsIDApOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghd2lu
ZG93LmludGVybmFscykgeworICAgICAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMg
d2luZG93LmludGVybmFscy4nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBv
bkNoYW5nZUZpcmVkID0gMDsKKyAgICB2YXIgaW5wdXQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ZpbGVpbnB1dDEnKTsKKyAgICBpbnB1dDEub25jaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgKytvbkNoYW5nZUZpcmVkOworICAgIH07CisgICAgdmFyIGlucHV0MiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdmaWxlaW5wdXQyJyk7CisgICAgaW5wdXQyLm9uY2hhbmdlID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICsrb25DaGFuZ2VGaXJlZDsKKyAgICB9OworCisgICAgZXZlbnRT
ZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKFsnL2hvbWUvdXNlci90ZXN0ZmlsZS50eHQnXSk7Cisg
ICAgdmFyIGNlbnRlclggPSBpbnB1dDEub2Zmc2V0TGVmdCArIGlucHV0MS5vZmZzZXRXaWR0aCAv
IDI7CisgICAgdmFyIGNlbnRlclkgPSBpbnB1dDEub2Zmc2V0VG9wICsgaW5wdXQxLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFn
V2l0aEZpbGVzKFsnL2hvbWUvdXNlci90ZXN0ZmlsZTIudHh0J10pOworICAgIGNlbnRlclggPSBp
bnB1dDIub2Zmc2V0TGVmdCArIGlucHV0Mi5vZmZzZXRXaWR0aCAvIDI7CisgICAgY2VudGVyWSA9
IGlucHV0Mi5vZmZzZXRUb3AgKyBpbnB1dDIub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisKKyAgICBpZiAob25DaGFuZ2VGaXJlZCAhPSAyKSB7CisgICAgICAgIHRlc3RGYWls
ZWQoJ29uY2hhbmdlIGZpcmVkIHVuZXhwZWN0ZWQgdGltZXM6ICcgKyBvbkNoYW5nZUZpcmVkKTsK
KyAgICB9CisKKyAgICB2YXIgZmlsZXMgPSBpbnRlcm5hbHMuZ2V0UmVmZXJlbmNlZEZpbGVQYXRo
cygpOworICAgIGlmIChmaWxlcy5sZW5ndGggPT0gMiAmJgorICAgICAgICAoKGZpbGVzWzBdID09
ICcvaG9tZS91c2VyL3Rlc3RmaWxlLnR4dCcgJiYgZmlsZXNbMV0gPT0gJy9ob21lL3VzZXIvdGVz
dGZpbGUyLnR4dCcpIHx8CisgICAgICAgICAoZmlsZXNbMV0gPT0gJy9ob21lL3VzZXIvdGVzdGZp
bGUudHh0JyAmJiBmaWxlc1swXSA9PSAnL2hvbWUvdXNlci90ZXN0ZmlsZTIudHh0JykpKSB7Cisg
ICAgICAgIHRlc3RQYXNzZWQoJycpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
J1VuZXhwZWN0ZWQgZmlsZXM6ICcgKyBmaWxlcyk7CisgICAgfQorICAgIGZpbmlzaEpTVGVzdCgp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgc2VsZWN0ZWQgZmlsZXMgaW4gZmlsZSBpbnB1dCBl
bGVtZW50cyBhcmUgY29ycmVjdGx5IHJldHJpZXZlZCBieSBGb3JtQ29udHJvbGxlcjo6Z2V0UmVm
ZXJlbmNlZEZpbGVQYXRocy48L3A+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorPGZvcm0gaWQ9ImZv
cm0xIj4KKzxpbnB1dCBpZD0iZmlsZWlucHV0MSIgdHlwZT0iZmlsZSIgLz4KKzwvZm9ybT4KKzxm
b3JtIGlkPSJmb3JtMiI+Cis8aW5wdXQgaWQ9ImZpbGVpbnB1dDIiIHR5cGU9ImZpbGUiIC8+Cis8
L2Zvcm0+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158268</attachid>
            <date>2012-08-14 02:31:24 -0700</date>
            <delta_ts>2012-08-14 05:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120814113051.patch</filename>
            <type>text/plain</type>
            <size>14661</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg4NjdmNWIwNDU5OWI2
OGE3ODNhZTU5NjY5ZTNiZWFmM2Q5Zjc3Ni4uYWM5YzlhMmUzNzNlNDFkOTZmM2Y1YWJlY2JmMjA5
MTk5NjIyYjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA4LTE0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxl
cjogRW5hYmxlIHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9tIGRvY3VtZW50IHN0YXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGVuYWJsZXMgQ2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkg
d2hlbgorICAgICAgICB0aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUgcmVzdG9yZXMgYSBwYWdl
IHdpdGggc2VsZWN0ZWQgZmlsZXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9maWxlL3Nl
bGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0Zv
cm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJlZmVyZW5jZWRGaWxlUGF0
aHNGcm9tRmlsZUZvcm1Db250cm9sU3RhdGUpOiBFeHRyYWN0cyBzZWxlY3RlZCBmaWxlIHBhdGhz
IGZyb20gYSBGb3JtQ29udHJvbFN0YXRlIG9mIGEgZmlsZSBpbnB1dC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoU2F2ZWRGb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2F2ZWRG
b3JtU3RhdGU6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBFeHRyYWN0cyBzZWxlY3RlZCBmaWxl
IHBhdGhzIGZyb20gU2F2ZWRGb3JtU3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJv
bGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyk6IFN0YXRpYywgZXh0cmFjdHMgc2VsZWN0ZWQg
ZmlsZSBwYXRocyBmcm9tIGEgZG9jdW1lbnQgc3RhdGUuCisgICAgICAgICogaHRtbC9Gb3JtQ29u
dHJvbGxlci5oOgorICAgICAgICAoRm9ybUNvbnRyb2xsZXIpOiBBZGRlZCBnZXRSZWZlcmVuY2Vk
RmlsZVBhdGhzLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyk6IENhbGxzIEZvcm1Db250
cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6IEFkZGVkIGdl
dFJlZmVyZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBB
ZGRlZCBiaW5kaW5nIGZvciBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorCiAyMDEyLTA4LTEwICBW
aW5lZXQgQ2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBNb3Zpbmcg
dGhlIGNvbW1vbiBjb2RlIGZyb20gQ29kZWdlbmVyYXRvckpTL1Y4LnBtIHRvIENvZGVnZW5lcmF0
b3IucG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDg2NDA1MmQyN2Q3N2E0MzRiNjA2
NDFmYjY2Nzg5NzRhMjQ1YTY4Ni4uMGQzOWNlODZjOWRmNDM5MzIyYTczNWFiZWJiNWIyYTE2MTRi
MTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0w
OC0xNCAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2Vi
SGlzdG9yeUl0ZW06IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZpbGUgbmFtZXMgZnJvbSBkb2N1
bWVudCBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTEyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBlbmFibGVzIENocm9taXVtIHRvIHNldCB1cCBmaWxlIHBlcm1pc3Npb25z
IHByb3Blcmx5IHdoZW4KKyAgICAgICAgdGhlIHNlc3Npb24gcmVzdG9yZSBmZWF0dXJlIHJlc3Rv
cmVzIGEgcGFnZSB3aXRoIHNlbGVjdGVkIGZpbGVzLgorCisgICAgICAgICogcHVibGljL1dlYkhp
c3RvcnlJdGVtLmg6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbSk6IEFkZGVkIGdldFJlZmVyZW5j
ZWRGaWxlUGF0aHMuCisgICAgICAgICogc3JjL1dlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSGlzdG9yeUl0ZW06OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBFeHRyYWN0
cyBzZWxlY3RlZCBhbmQgcG9zdGVkIGZpbGUgcGF0aHMgZnJvbSBhIGRvY3VtZW50IHN0YXRlLgor
ICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOC0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEy
NTIzMCBhbmQgcjEyNTIzOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5k
ZXggNWUzOWZlMjI5MzliNzQ5NDBlYzU0NDk0MTY4ZWQ5YzUyODliYzk3ZC4uMDBmMDZjN2Y0NDI5
N2I4OTk0YzRjMjAwMWNkNWJkMWUyNGRkNjhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKQEAgLTM3LDYgKzM3LDE3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTEZvcm1FbGVt
ZW50KiBvd25lckZvcm1Gb3JTdGF0ZShjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0CiAg
ICAgcmV0dXJuIGNvbnRyb2wuZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikgPyAwIDogY29udHJv
bC5mb3JtKCk7CiB9CiAKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBh
dGhzRnJvbUZpbGVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmIHN0YXRl
KQoreworICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RhdGUudmFsdWVTaXplKCk7IGkgKz0gMikgeworICAgICAgICBpZiAoIXN0YXRlW2ld
LmlzTnVsbCgpKQorICAgICAgICAgICAgdG9SZXR1cm4uYXBwZW5kKHN0YXRlW2ldKTsKKyAgICB9
CisgICAgcmV0dXJuIHRvUmV0dXJuOworfQorCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
Ly8gU2VyaWxpemVkIGZvcm0gb2YgRm9ybUNvbnRyb2xTdGF0ZToKQEAgLTE4MCw2ICsxOTEsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEZvcm1Db250cm9sU3RhdGUm
KTsKICAgICBGb3JtQ29udHJvbFN0YXRlIHRha2VDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOwogCisgICAgVmVjdG9yPFN0cmlu
Zz4gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNhdmVk
Rm9ybVN0YXRlKCkgOiBtX2NvbnRyb2xTdGF0ZUNvdW50KDApIHsgfQogCkBAIC0yNjMsNiArMjc2
LDIwIEBAIEZvcm1Db250cm9sU3RhdGUgU2F2ZWRGb3JtU3RhdGU6OnRha2VDb250cm9sU3RhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCitW
ZWN0b3I8U3RyaW5nPiBTYXZlZEZvcm1TdGF0ZTo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNv
bnN0Cit7CisgICAgVmVjdG9yPFN0cmluZz4gdG9SZXR1cm47CisgICAgZm9yIChGb3JtRWxlbWVu
dFN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMu
YmVnaW4oKTsgaXQgIT0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5lbmQoKTsgKytpdCkgewor
ICAgICAgICBjb25zdCBGb3JtRWxlbWVudEtleSYga2V5ID0gaXQtPmZpcnN0OworICAgICAgICBp
ZiAoQXRvbWljU3RyaW5nKGtleS50eXBlKCkpICE9IEF0b21pY1N0cmluZygiZmlsZSIpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGNvbnN0IERlcXVlPEZvcm1Db250cm9sU3RhdGU+
JiBxdWV1ZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGZvciAoRGVxdWU8Rm9ybUNvbnRyb2xTdGF0
ZT46OmNvbnN0X2l0ZXJhdG9yIHF1ZUl0ZXJhdG9yID0gcXVldWUuYmVnaW4oKTsgcXVlSXRlcmF0
b3IgIT0gcXVldWUuZW5kKCk7ICsrcXVlSXRlcmF0b3IpCisgICAgICAgICAgICB0b1JldHVybi5h
cHBlbmQoZ2V0UmVmZXJlbmNlZEZpbGVQYXRoc0Zyb21GaWxlRm9ybUNvbnRyb2xTdGF0ZSgqcXVl
SXRlcmF0b3IpKTsKKyAgICB9CisgICAgcmV0dXJuIHRvUmV0dXJuOworfQorCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIGNsYXNzIEZvcm1LZXlHZW5lcmF0b3IgewpAQCAtNDc5LDUgKzUwNiwy
MCBAQCB2b2lkIEZvcm1Db250cm9sbGVyOjpyZXN0b3JlQ29udHJvbFN0YXRlSW4oSFRNTEZvcm1F
bGVtZW50JiBmb3JtKQogICAgIH0KIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorVmVjdG9y
PFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0dXJu
OworICAgIHNpemVfdCBpID0gMDsKKyAgICBpZiAoc3RhdGVWZWN0b3Iuc2l6ZSgpIDwgMSB8fCBz
dGF0ZVZlY3RvcltpKytdICE9IGZvcm1TdGF0ZVNpZ25hdHVyZSgpKQorICAgICAgICByZXR1cm4g
dG9SZXR1cm47CisgICAgd2hpbGUgKGkgKyAxIDwgc3RhdGVWZWN0b3Iuc2l6ZSgpKSB7CisgICAg
ICAgICsraTsgLy8gU2tpcCBmb3JtIGtleS4KKyAgICAgICAgT3duUHRyPFNhdmVkRm9ybVN0YXRl
PiBzdGF0ZSA9IFNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZShzdGF0ZVZlY3RvciwgaSk7Cisg
ICAgICAgIGlmICghc3RhdGUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdG9SZXR1cm4u
YXBwZW5kKHN0YXRlLT5nZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkpOworICAgIH0KKyAgICByZXR1
cm4gdG9SZXR1cm47Cit9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuaAppbmRleCA1ZDM3NDhkMGVlNThlMzEyMTFkMjliZDhlMDUxMTBlZjE5
YjRmYzZiLi4zY2Q0N2M2MmYzNjlmOWI5NzkwZmMzODg4YzM1ZTlhNzQ3MWNkMmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCkBAIC05Miw2ICs5Miw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3RvcmVDb250cm9sU3RhdGVGb3IoSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZSYpOwogICAgIHZvaWQgcmVzdG9yZUNvbnRyb2xTdGF0ZUluKEhUTUxGb3JtRWxlbWVudCYp
OwogCisgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKTsKKwogcHJpdmF0ZToKICAgICB0eXBlZGVm
IExpc3RIYXNoU2V0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUqLCA2ND4gRm9ybUVs
ZW1lbnRMaXN0SGFzaFNldDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+LCBPd25QdHI8U2F2ZWRGb3JtU3RhdGU+ID4gU2F2ZWRGb3JtU3RhdGVNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNmFhYTdmMTcyODc1N2ExZTRiYzA0YTdk
OTkxYzMzZjY5MmViMjc0Mi4uMTBlY2FjYzQ5MDVkMjMzMjBjNDFiYzZhYjkyNWJlNTljNWUzNTI1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGVybmFscy5oIgogCisjaW5jbHVkZSAi
QmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdExpc3QuaCIK
QEAgLTM4LDYgKzM5LDcgQEAKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZhc3RNYWxsb2NTdGF0aXN0aWNzLmgiCisjaW5j
bHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgpAQCAtMTE4OCw0ICsx
MTkwLDE0IEBAIFBhc3NSZWZQdHI8RmFzdE1hbGxvY1N0YXRpc3RpY3M+IEludGVybmFsczo6ZmFz
dE1hbGxvY1N0YXRpc3RpY3MoKSBjb25zdAogICAgIHJldHVybiBGYXN0TWFsbG9jU3RhdGlzdGlj
czo6Y3JlYXRlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSW50ZXJuYWxzOjpn
ZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gc3RyaW5nTGlzdCA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGZyYW1lKCktPmxv
YWRlcigpLT5oaXN0b3J5KCktPnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CisgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyA9IEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVu
Y2VkRmlsZVBhdGhzKGZyYW1lKCktPmxvYWRlcigpLT5oaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkt
PmRvY3VtZW50U3RhdGUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlUGF0aHMu
c2l6ZSgpOyArK2kpCisgICAgICAgIHN0cmluZ0xpc3QtPmFwcGVuZChmaWxlUGF0aHNbaV0pOwor
ICAgIHJldHVybiBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKaW5kZXggMTU3NjYyYzNkZTZiNGVkMTQ0YTI5OTk4MzYwM2NjZWI2NDAwYWJk
ZS4uNGE4NjY1Y2I1MjVhMjQwZGRhMTdhN2MxOWUxZDRmMWEzOTQ2NWRmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMTAsNiArMjEwLDggQEAgcHVibGljOgogCiAgICAgUGFz
c1JlZlB0cjxGYXN0TWFsbG9jU3RhdGlzdGljcz4gZmFzdE1hbGxvY1N0YXRpc3RpY3MoKSBjb25z
dDsKIAorICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZ2V0UmVmZXJlbmNlZEZpbGVQYXRo
cygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCop
OwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCA2MDFlOGE3NGY5ZjEwZDI0ZTQxOGYxMzgzMzg2ZTA1N2Y1
OGEwNGJmLi43NzFjYzUxMWQ3ODlhNDQ5MzI4OTdlMDlkMmUwMTNiNzdiNGZmZTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xODYsNiArMTg2LDggQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIHZvaWQgcmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5n
Q29udGVudFNlY3VyaXR5UG9saWN5KGluIERPTVN0cmluZyBzY2hlbWUpOwogCiAgICAgICAgIEZh
c3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CisKKyAgICAgICAgRE9N
U3RyaW5nW10gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygpOwogICAgIH07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oCmluZGV4IDAxNWE3OWJl
YmZmZTg0OWEwMmZiY2FhNjNiNDdmOWRiNzc0MTdlZmQuLjJjNDE2ZjgyN2U4NDg2NWIzODYwNTA5
MGExNjlhMmZiYTkyYzM2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkhpc3RvcnlJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSGlzdG9yeUl0ZW0uaApAQCAtMTI0LDYgKzEyNCw4IEBAIHB1YmxpYzoKICAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkhpc3RvcnlJdGVtPiYp
OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmRUb0NoaWxkcmVuKGNvbnN0IFdlYkhpc3Rv
cnlJdGVtJik7CiAKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGdldFJl
ZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgog
ICAgIFdlYkhpc3RvcnlJdGVtKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5
SXRlbT4mKTsKICAgICBXZWJIaXN0b3J5SXRlbSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBkYjM1MzE3YWQ5ODNjZGQ2OWQ5ZDA2NTUyNjU1
ZjJjMWY5OTQzNjcwLi4zMWQyYmQ1NjRkOTAxOWNiN2ZiMDE4NWI1ZWZiYzMzNGFiZmUwNjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIaXN0b3J5SXRlbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0
ZW0uaCIKIAorI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEu
aCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTI4Nyw2
ICsyODgsMjMgQEAgdm9pZCBXZWJIaXN0b3J5SXRlbTo6YXBwZW5kVG9DaGlsZHJlbihjb25zdCBX
ZWJIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBtX3ByaXZhdGUtPmFkZENoaWxkSXRlbShpdGVtKTsK
IH0KIAorV2ViVmVjdG9yPFdlYlN0cmluZz4gV2ViSGlzdG9yeUl0ZW06OmdldFJlZmVyZW5jZWRG
aWxlUGF0aHMoKSBjb25zdAoreworICAgIFZlY3RvcjxXZWJTdHJpbmc+IGZpbGVQYXRoczsKKyAg
ICBjb25zdCBGb3JtRGF0YSogZm9ybURhdGEgPSBtX3ByaXZhdGUtPmZvcm1EYXRhKCk7CisgICAg
aWYgKGZvcm1EYXRhKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZm9ybURhdGEt
PmVsZW1lbnRzKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IEZvcm1EYXRhRWxl
bWVudCYgZWxlbWVudCA9IGZvcm1EYXRhLT5lbGVtZW50cygpW2ldOworICAgICAgICAgICAgaWYg
KGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCisgICAgICAg
ICAgICAgICAgZmlsZVBhdGhzLmFwcGVuZChlbGVtZW50Lm1fZmlsZW5hbWUpOworICAgICAgICB9
CisgICAgfQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWxlY3RlZEZpbGVQYXRocyA9IFdl
YkNvcmU6OkZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKG1fcHJpdmF0ZS0+
ZG9jdW1lbnRTdGF0ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlbGVjdGVkRmls
ZVBhdGhzLnNpemUoKTsgKytpKQorICAgICAgICBmaWxlUGF0aHMuYXBwZW5kKHNlbGVjdGVkRmls
ZVBhdGhzW2ldKTsKKyAgICByZXR1cm4gZmlsZVBhdGhzOworfQorCiBXZWJIaXN0b3J5SXRlbTo6
V2ViSGlzdG9yeUl0ZW0oY29uc3QgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4mIGl0ZW0pCiAgICAg
OiBtX3ByaXZhdGUoaXRlbSkKIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YTM0NDRkMzgwNWQ4Y2MzNDQxYTEzMTI5ZGE4
NzllZTYyYmUzMWZhLi45MWVlNTRjYzI3NTQwOTdkMjc5NTVkZWQ1ZTNmMDJmMDk4MmFlMzg4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMTQgIE1hcmphIEjDtmx0dMOkICA8bWFyamFA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEZvcm1Db250cm9sbGVyOiBFbmFibGUgcmVhZGluZyBz
ZWxlY3RlZCBmaWxlIG5hbWVzIGZyb20gZG9jdW1lbnQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZW5hYmxlcyBDaHJvbWl1
bSB0byBzZXQgdXAgZmlsZSBwZXJtaXNzaW9ucyBwcm9wZXJseSB3aGVuCisgICAgICAgIHRoZSBz
ZXNzaW9uIHJlc3RvcmUgZmVhdHVyZSByZXN0b3JlcyBhIHBhZ2Ugd2l0aCBzZWxlY3RlZCBmaWxl
cy4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rv
cnktc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUv
c2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4
LTEwICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLCByZWJhc2VsaW5pbmcgYWZ0ZXIgcjEyNTE2Ny4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhp
c3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3Nl
bGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDU2NTc5ZTNiMTg1ZmQyODBjZWFjMGE1ZWU3MTcyMGM4MmQ2YzNhOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rv
cnktc3RhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgdGhhdCBzZWxlY3Rl
ZCBmaWxlcyBpbiBmaWxlIGlucHV0IGVsZW1lbnRzIGFyZSBjb3JyZWN0bHkgcmV0cmlldmVkIGJ5
IEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorCisKKworUEFTUyAKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0
b3J5LXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmls
ZXMtZnJvbS1oaXN0b3J5LXN0YXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y3MzBiMzM0YjIyZWViOTg2
NzRjYzhkYzNmZDg2ODQ5MGQyZGRlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbApAQCAt
MCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitmdW5jdGlvbiBvbkxvYWQoKSB7CisgICAg
c2V0VGltZW91dChydW5UZXN0LCAwKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBp
ZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJl
cXVpcmVzIHdpbmRvdy5pbnRlcm5hbHMuJyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB2YXIgb25DaGFuZ2VGaXJlZCA9IDA7CisgICAgdmFyIGlucHV0MSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdmaWxlaW5wdXQxJyk7CisgICAgaW5wdXQxLm9uY2hhbmdlID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICsrb25DaGFuZ2VGaXJlZDsKKyAgICB9OworICAgIHZhciBpbnB1dDIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZWlucHV0MicpOworICAgIGlucHV0Mi5vbmNoYW5n
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICArK29uQ2hhbmdlRmlyZWQ7CisgICAgfTsKKworICAg
IGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbJy9ob21lL3VzZXIvdGVzdGZpbGUudHh0
J10pOworICAgIHZhciBjZW50ZXJYID0gaW5wdXQxLm9mZnNldExlZnQgKyBpbnB1dDEub2Zmc2V0
V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gaW5wdXQxLm9mZnNldFRvcCArIGlucHV0MS5v
ZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNl
bnRlclkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIGV2ZW50U2VuZGVyLmJl
Z2luRHJhZ1dpdGhGaWxlcyhbJy9ob21lL3VzZXIvdGVzdGZpbGUyLnR4dCddKTsKKyAgICBjZW50
ZXJYID0gaW5wdXQyLm9mZnNldExlZnQgKyBpbnB1dDIub2Zmc2V0V2lkdGggLyAyOworICAgIGNl
bnRlclkgPSBpbnB1dDIub2Zmc2V0VG9wICsgaW5wdXQyLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VVcCgpOworCisgICAgaWYgKG9uQ2hhbmdlRmlyZWQgIT0gMikgeworICAgICAgICB0
ZXN0RmFpbGVkKCdvbmNoYW5nZSBmaXJlZCB1bmV4cGVjdGVkIHRpbWVzOiAnICsgb25DaGFuZ2VG
aXJlZCk7CisgICAgfQorCisgICAgdmFyIGZpbGVzID0gaW50ZXJuYWxzLmdldFJlZmVyZW5jZWRG
aWxlUGF0aHMoKTsKKyAgICBpZiAoZmlsZXMubGVuZ3RoID09IDIgJiYKKyAgICAgICAgKChmaWxl
c1swXSA9PSAnL2hvbWUvdXNlci90ZXN0ZmlsZS50eHQnICYmIGZpbGVzWzFdID09ICcvaG9tZS91
c2VyL3Rlc3RmaWxlMi50eHQnKSB8fAorICAgICAgICAgKGZpbGVzWzFdID09ICcvaG9tZS91c2Vy
L3Rlc3RmaWxlLnR4dCcgJiYgZmlsZXNbMF0gPT0gJy9ob21lL3VzZXIvdGVzdGZpbGUyLnR4dCcp
KSkgeworICAgICAgICB0ZXN0UGFzc2VkKCcnKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0
RmFpbGVkKCdVbmV4cGVjdGVkIGZpbGVzOiAnICsgZmlsZXMpOworICAgIH0KKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0IHNlbGVjdGVkIGZpbGVzIGluIGZpbGUg
aW5wdXQgZWxlbWVudHMgYXJlIGNvcnJlY3RseSByZXRyaWV2ZWQgYnkgRm9ybUNvbnRyb2xsZXI6
OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMuPC9wPgorPGRpdiBpZD0iY29udGFpbmVyIj4KKzxmb3Jt
IGlkPSJmb3JtMSI+Cis8aW5wdXQgaWQ9ImZpbGVpbnB1dDEiIHR5cGU9ImZpbGUiIC8+Cis8L2Zv
cm0+Cis8Zm9ybSBpZD0iZm9ybTIiPgorPGlucHV0IGlkPSJmaWxlaW5wdXQyIiB0eXBlPSJmaWxl
IiAvPgorPC9mb3JtPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158299</attachid>
            <date>2012-08-14 05:07:55 -0700</date>
            <delta_ts>2012-08-14 06:52:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120814140722.patch</filename>
            <type>text/plain</type>
            <size>22081</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg4NjdmNWIwNDU5OWI2
OGE3ODNhZTU5NjY5ZTNiZWFmM2Q5Zjc3Ni4uZDRlNGJjMzMxYjQ3YTNiN2JjN2UwMGVlYzkwMmY1
ZDU5NjNmYjZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA4LTE0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxl
ciwgRmlsZUlucHV0VHlwZTogRW5hYmxlIHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9t
IGRvY3VtZW50IHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJv
YWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxv
dyAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxl
cy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEFk
ZGVkIGV4cG9ydGVkIHN5bWJvbCBmb3IgRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxl
UGF0aHMuCisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzRnJvbUZvcm1Db250cm9sU3RhdGUpOiBBZGRlZC4gRXh0
cmFjdHMgRmlsZUNob29zZXJGaWxlSW5mb3MgZnJvbSBhIEZvcm1Db250cm9sU3RhdGUuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJlc3RvcmVG
b3JtQ29udHJvbFN0YXRlKTogUmVmYWN0b3JlZCB0byB1c2UgZmlsZXNGcm9tRm9ybUNvbnRyb2xT
dGF0ZS4KKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKEZpbGVJbnB1
dFR5cGUpOiBBZGRlZCBmaWxlc0Zyb21Gb3JtQ29udHJvbFN0YXRlLgorICAgICAgICAqIGh0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoU2F2ZWRGb3JtU3RhdGUpOiBBZGRlZCBnZXRS
ZWZlcmVuY2VkRmlsZVBhdGhzLgorICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3JtU3RhdGU6Omdl
dFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBBZGRlZC4gRXh0cmFjdHMgc2VsZWN0ZWQgZmlsZSBwYXRo
cyBmcm9tIFNhdmVkRm9ybVN0YXRlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtQ29udHJvbGxlcjo6c2V0U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMpOiBSZWZhY3Rv
cmVkIHRvIHVzZSBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybUNvbnRyb2xsZXI6OmZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBBZGRlZC4gU3Rh
dGljLiBFeHRyYWN0cyBzZWxlY3RlZCBmaWxlIHBhdGhzIGZyb20gYSBkb2N1bWVudCBzdGF0ZS4K
KyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChGb3JtQ29udHJvbGxl
cik6IEFkZGVkIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMgYW5kIGZvcm1TdGF0ZXNGcm9tU3RhdGVW
ZWN0b3IuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmZpbGVzRnJvbUZpbGVJbnB1dEZvcm1Db250cm9sU3Rh
dGUpOiBBZGRlZC4gRGVsZWdhdGVzIHRvIEZpbGVJbnB1dFR5cGU6OmZpbGVzRnJvbUZvcm1Db250
cm9sU3RhdGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDogQWRkZWQgZmlsZXNGcm9tRmlsZUlucHV0Rm9ybUNvbnRyb2xTdGF0ZS4KKyAgICAg
ICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyk6IENh
bGxzIEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFs
cyk6IEFkZGVkIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOiBBZGRlZCBiaW5kaW5nIGZvciBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorCiAy
MDEyLTA4LTEwICBWaW5lZXQgQ2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KIAogICAg
ICAgICBNb3ZpbmcgdGhlIGNvbW1vbiBjb2RlIGZyb20gQ29kZWdlbmVyYXRvckpTL1Y4LnBtIHRv
IENvZGVnZW5lcmF0b3IucG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDg2NDA1MmQy
N2Q3N2E0MzRiNjA2NDFmYjY2Nzg5NzRhMjQ1YTY4Ni4uMGQzOWNlODZjOWRmNDM5MzIyYTczNWFi
ZWJiNWIyYTE2MTRiMTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMi0wOC0xNCAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViSGlzdG9yeUl0ZW06IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZpbGUgbmFt
ZXMgZnJvbSBkb2N1bWVudCBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTEyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIENocm9taXVtIHRvIHNldCB1cCBmaWxl
IHBlcm1pc3Npb25zIHByb3Blcmx5IHdoZW4KKyAgICAgICAgdGhlIHNlc3Npb24gcmVzdG9yZSBm
ZWF0dXJlIHJlc3RvcmVzIGEgcGFnZSB3aXRoIHNlbGVjdGVkIGZpbGVzLgorCisgICAgICAgICog
cHVibGljL1dlYkhpc3RvcnlJdGVtLmg6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbSk6IEFkZGVk
IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICogc3JjL1dlYkhpc3RvcnlJdGVtLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGlzdG9yeUl0ZW06OmdldFJlZmVyZW5jZWRGaWxlUGF0
aHMpOiBFeHRyYWN0cyBzZWxlY3RlZCBhbmQgcG9zdGVkIGZpbGUgcGF0aHMgZnJvbSBhIGRvY3Vt
ZW50IHN0YXRlLgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOC0xMCAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEyNTIzMCBhbmQgcjEyNTIzOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmRj
YTEyOTFkNmI5YTY0MzFhNWNjMjQxOWI4MDI1ZjJmMzI4NTIxOS4uZTkyMjdlZjY5Y2IwNTNmMDBm
ZDQ3ZWRhOGM4NDg5ZDRlOTU5YjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI1Myw2ICsy
NTMsNyBAQCBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyRDJFdgogX19aTks3V2ViQ29yZTE0
RG9jdW1lbnRMb2FkZXIxN3JlcG9ydE1lbW9yeVVzYWdlRVBOU18xNk1lbW9yeU9iamVjdEluZm9F
CiBfX1pON1dlYkNvcmUxNERvY3VtZW50V3JpdGVyMTFzZXRFbmNvZGluZ0VSS04zV1RGNlN0cmlu
Z0ViCiBfX1pON1dlYkNvcmUxNEZpbGVJY29uTG9hZGVyMTRub3RpZnlGaW5pc2hlZEVOM1dURjEw
UGFzc1JlZlB0cklOU180SWNvbkVFRQorX19aTjdXZWJDb3JlMTRGb3JtQ29udHJvbGxlcjIyZ2V0
UmVmZXJlbmNlZEZpbGVQYXRoc0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFRUUKIF9f
Wk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xMHNldEZvY3VzZWRFYgogX19aTjdXZWJDb3JlMTRG
cmFtZVNlbGVjdGlvbjEyc2V0U2VsZWN0aW9uRVJLTlNfMTZWaXNpYmxlU2VsZWN0aW9uRWpOUzBf
MTlDdXJzb3JBbGlnbk9uU2Nyb2xsRU5TXzE1VGV4dEdyYW51bGFyaXR5RQogX19aTjdXZWJDb3Jl
MTRGcmFtZVNlbGVjdGlvbjE1cmV2ZWFsU2VsZWN0aW9uRVJLTlNfMTVTY3JvbGxBbGlnbm1lbnRF
TlNfMThSZXZlYWxFeHRlbnRPcHRpb25FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cAppbmRleCBkMDhmZTI0NTE2M2VmZDg2M2IwNWVjNDFkZTI1MThjNjJiYjA5NGZlLi5mNzg5NmJh
Yjg2NWJiMDc3ZDllNjk4NmFhNzAyZDVmNzNjYmE0NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAKQEAgLTk2LDYgKzk2LDE4IEBAIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBG
aWxlSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEZpbGVJbnB1dFR5cGUoZWxlbWVudCkpOwogfQogCitWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSW5mbz4gRmlsZUlucHV0VHlwZTo6ZmlsZXNGcm9tRm9ybUNvbnRyb2xTdGF0
ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKK3sKKyAgICBWZWN0b3I8RmlsZUNob29z
ZXJGaWxlSW5mbz4gZmlsZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS52YWx1
ZVNpemUoKTsgaSArPSAyKSB7CisgICAgICAgIGlmICghc3RhdGVbaSArIDFdLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKHN0YXRlW2ldLCBz
dGF0ZVtpICsgMV0pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZp
bGVDaG9vc2VyRmlsZUluZm8oc3RhdGVbaV0pKTsKKyAgICB9CisgICAgcmV0dXJuIGZpbGVzOwor
fQorCiBjb25zdCBBdG9taWNTdHJpbmcmIEZpbGVJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpmaWxlKCk7CkBAIC0xMTgsMTQg
KzEzMCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29u
c3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLnZhbHVlU2l6ZSgp
ICUgMikKICAgICAgICAgcmV0dXJuOwotICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBm
aWxlczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLnZhbHVlU2l6ZSgpOyBpICs9
IDIpIHsKLSAgICAgICAgaWYgKCFzdGF0ZVtpICsgMV0uaXNFbXB0eSgpKQotICAgICAgICAgICAg
ZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oc3RhdGVbaV0sIHN0YXRlW2kgKyAxXSkp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxl
SW5mbyhzdGF0ZVtpXSkpOwotICAgIH0KLSAgICBmaWxlc0Nob3NlbihmaWxlcyk7CisgICAgZmls
ZXNDaG9zZW4oZmlsZXNGcm9tRm9ybUNvbnRyb2xTdGF0ZShzdGF0ZSkpOwogfQogCiBib29sIEZp
bGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wg
bXVsdGlwYXJ0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAppbmRleCA5MDM2
MzllYzA5YTMxYjYzMWY0ZGJjMzgzOTgxNDJlMTM3NmY4MzIxLi4xMGFjZGU3MDJkODE4ZDg2MWRm
YTlmMmI0NWU1YzNhYjNmZDA1NjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApA
QCAtNDUsNiArNDUsNyBAQCBjbGFzcyBGaWxlTGlzdDsKIGNsYXNzIEZpbGVJbnB1dFR5cGUgOiBw
dWJsaWMgQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUsIHByaXZhdGUgRmlsZUNob29zZXJD
bGllbnQsIHByaXZhdGUgRmlsZUljb25Mb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICBz
dGF0aWMgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzRnJvbUZvcm1Db250cm9sU3Rh
dGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpOwogCiBwcml2YXRlOgogICAgIEZpbGVJbnB1dFR5
cGUoSFRNTElucHV0RWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cAppbmRleCA1ZTM5ZmUyMjkzOWI3NDk0MGVjNTQ0OTQxNjhlZDljNTI4OWJjOTdkLi5lMzVlZmYx
OWUxOWJhOWM1ZTVkMTVjODAyYjZiYjlmZTQ1NDFhNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmNwcApAQCAtMjEsOCArMjEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIK
ICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmgiCiAjaW5jbHVkZSAi
SFRNTEZvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTgwLDYgKzE4Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZENvbnRyb2xTdGF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgRm9y
bUNvbnRyb2xTdGF0ZSYpOwogICAgIEZvcm1Db250cm9sU3RhdGUgdGFrZUNvbnRyb2xTdGF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSk7CiAKKyAg
ICBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgU2F2ZWRGb3JtU3RhdGUoKSA6IG1fY29udHJvbFN0YXRlQ291bnQoMCkgeyB9CiAK
QEAgLTI2Myw2ICsyNjcsMjMgQEAgRm9ybUNvbnRyb2xTdGF0ZSBTYXZlZEZvcm1TdGF0ZTo6dGFr
ZUNvbnRyb2xTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnMKICAgICByZXR1cm4g
c3RhdGU7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IFNhdmVkRm9ybVN0YXRlOjpnZXRSZWZlcmVuY2Vk
RmlsZVBhdGhzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB0b1JldHVybjsKKyAgICBm
b3IgKEZvcm1FbGVtZW50U3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGF0ZUZvck5l
d0Zvcm1FbGVtZW50cy5iZWdpbigpOyBpdCAhPSBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIGNvbnN0IEZvcm1FbGVtZW50S2V5JiBrZXkgPSBpdC0+Zmly
c3Q7CisgICAgICAgIGlmIChBdG9taWNTdHJpbmcoa2V5LnR5cGUoKSkgIT0gQXRvbWljU3RyaW5n
KCJmaWxlIikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY29uc3QgRGVxdWU8Rm9y
bUNvbnRyb2xTdGF0ZT4mIHF1ZXVlID0gaXQtPnNlY29uZDsKKyAgICAgICAgZm9yIChEZXF1ZTxG
b3JtQ29udHJvbFN0YXRlPjo6Y29uc3RfaXRlcmF0b3IgcXVlSXRlcmF0b3IgPSBxdWV1ZS5iZWdp
bigpOyBxdWVJdGVyYXRvciAhPSBxdWV1ZS5lbmQoKTsgKytxdWVJdGVyYXRvcikgeworICAgICAg
ICAgICAgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBzZWxlY3RlZEZpbGVzID0g
SFRNTElucHV0RWxlbWVudDo6ZmlsZXNGcm9tRmlsZUlucHV0Rm9ybUNvbnRyb2xTdGF0ZSgqcXVl
SXRlcmF0b3IpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWxlY3RlZEZp
bGVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIHRvUmV0dXJuLmFwcGVuZChzZWxlY3Rl
ZEZpbGVzW2ldLnBhdGgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0b1JldHVybjsK
K30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBGb3JtS2V5R2VuZXJhdG9yIHsK
QEAgLTQwOCwyMyArNDI5LDcgQEAgVmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmZvcm1F
bGVtZW50c1N0YXRlKCkgY29uc3QKIAogdm9pZCBGb3JtQ29udHJvbGxlcjo6c2V0U3RhdGVGb3JO
ZXdGb3JtRWxlbWVudHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKQogewotICAg
IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLmNsZWFyKCk7Ci0KLSAgICBzaXplX3QgaSA9IDA7Ci0g
ICAgaWYgKHN0YXRlVmVjdG9yLnNpemUoKSA8IDEgfHwgc3RhdGVWZWN0b3JbaSsrXSAhPSBmb3Jt
U3RhdGVTaWduYXR1cmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd2hpbGUgKGkgKyAxIDwg
c3RhdGVWZWN0b3Iuc2l6ZSgpKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBmb3JtS2V5ID0gc3Rh
dGVWZWN0b3JbaSsrXTsKLSAgICAgICAgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiBzdGF0ZSA9IFNh
dmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZShzdGF0ZVZlY3RvciwgaSk7Ci0gICAgICAgIGlmICgh
c3RhdGUpIHsKLSAgICAgICAgICAgIGkgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgbV9zYXZlZEZvcm1TdGF0ZU1hcC5hZGQoZm9ybUtleS5pbXBsKCksIHN0YXRl
LnJlbGVhc2UoKSk7Ci0gICAgfQotICAgIGlmIChpICE9IHN0YXRlVmVjdG9yLnNpemUoKSkKLSAg
ICAgICAgbV9zYXZlZEZvcm1TdGF0ZU1hcC5jbGVhcigpOworICAgIGZvcm1TdGF0ZXNGcm9tU3Rh
dGVWZWN0b3Ioc3RhdGVWZWN0b3IsIG1fc2F2ZWRGb3JtU3RhdGVNYXApOwogfQogCiBGb3JtQ29u
dHJvbFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlJiBjb250cm9sKQpAQCAtNDQyLDYgKzQ0Nywy
NyBAQCBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxl
bWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbAogICAgIHJldHVybiBzdGF0ZTsKIH0KIAordm9p
ZCBGb3JtQ29udHJvbGxlcjo6Zm9ybVN0YXRlc0Zyb21TdGF0ZVZlY3Rvcihjb25zdCBWZWN0b3I8
U3RyaW5nPiYgc3RhdGVWZWN0b3IsIFNhdmVkRm9ybVN0YXRlTWFwJiBtYXApCit7CisgICAgbWFw
LmNsZWFyKCk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgaWYgKHN0YXRlVmVjdG9yLnNpemUo
KSA8IDEgfHwgc3RhdGVWZWN0b3JbaSsrXSAhPSBmb3JtU3RhdGVTaWduYXR1cmUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgd2hpbGUgKGkgKyAxIDwgc3RhdGVWZWN0b3Iuc2l6ZSgpKSB7Cisg
ICAgICAgIEF0b21pY1N0cmluZyBmb3JtS2V5ID0gc3RhdGVWZWN0b3JbaSsrXTsKKyAgICAgICAg
T3duUHRyPFNhdmVkRm9ybVN0YXRlPiBzdGF0ZSA9IFNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6
ZShzdGF0ZVZlY3RvciwgaSk7CisgICAgICAgIGlmICghc3RhdGUpIHsKKyAgICAgICAgICAgIGkg
PSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbWFwLmFkZChmb3Jt
S2V5LmltcGwoKSwgc3RhdGUucmVsZWFzZSgpKTsKKyAgICB9CisgICAgaWYgKGkgIT0gc3RhdGVW
ZWN0b3Iuc2l6ZSgpKQorICAgICAgICBtYXAuY2xlYXIoKTsKK30KKwogdm9pZCBGb3JtQ29udHJv
bGxlcjo6d2lsbERlbGV0ZUZvcm0oSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewogICAgIGlmICht
X2Zvcm1LZXlHZW5lcmF0b3IpCkBAIC00NzksNSArNTA1LDE0IEBAIHZvaWQgRm9ybUNvbnRyb2xs
ZXI6OnJlc3RvcmVDb250cm9sU3RhdGVJbihIVE1MRm9ybUVsZW1lbnQmIGZvcm0pCiAgICAgfQog
fQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCitWZWN0b3I8U3RyaW5nPiBGb3JtQ29udHJvbGxl
cjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0
b3IpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdG9SZXR1cm47CisgICAgU2F2ZWRGb3JtU3RhdGVN
YXAgbWFwOworICAgIGZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3Ioc3RhdGVWZWN0b3IsIG1hcCk7
CisgICAgZm9yIChTYXZlZEZvcm1TdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVn
aW4oKTsgaXQgIT0gbWFwLmVuZCgpOyArK2l0KQorICAgICAgICB0b1JldHVybi5hcHBlbmQoaXQt
PnNlY29uZC0+Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpKTsKKyAgICByZXR1cm4gdG9SZXR1cm47
Cit9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuaAppbmRleCA1ZDM3NDhkMGVlNThlMzEyMTFkMjliZDhlMDUxMTBlZjE5YjRmYzZiLi4wNDAy
YjJjZDE3ODNjNDIyNTllZmQ4NzNhZTliNjY0ZjIzNDY4OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5oCkBAIC05Miw2ICs5Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3Rv
cmVDb250cm9sU3RhdGVGb3IoSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYpOwogICAg
IHZvaWQgcmVzdG9yZUNvbnRyb2xTdGF0ZUluKEhUTUxGb3JtRWxlbWVudCYpOwogCisgICAgc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHN0YXRlVmVjdG9yKTsKKwogcHJpdmF0ZToKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUqLCA2ND4gRm9ybUVsZW1lbnRMaXN0SGFz
aFNldDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+LCBPd25Q
dHI8U2F2ZWRGb3JtU3RhdGU+ID4gU2F2ZWRGb3JtU3RhdGVNYXA7CkBAIC05OSw2ICsxMDEsNyBA
QCBwcml2YXRlOgogICAgIEZvcm1Db250cm9sbGVyKCk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
U2F2ZWRGb3JtU3RhdGVNYXA+IGNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKGNvbnN0IEZvcm1FbGVt
ZW50TGlzdEhhc2hTZXQmKTsKICAgICBGb3JtQ29udHJvbFN0YXRlIHRha2VTdGF0ZUZvckZvcm1F
bGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUmKTsKKyAgICBzdGF0
aWMgdm9pZCBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
U2F2ZWRGb3JtU3RhdGVNYXAmKTsKIAogICAgIENoZWNrZWRSYWRpb0J1dHRvbnMgbV9jaGVja2Vk
UmFkaW9CdXR0b25zOwogICAgIEZvcm1FbGVtZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNX
aXRoU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBl
MDcwNjdjNjZkY2YzM2NmNDc1OWQzZjgxMTRlZGI2NTQ1NjgxNzYzLi45OGQxMThkMjM1MWU4ZmVm
YTIxY2NhZjkwZDUxODg4NmQ4NTZkZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiRmlsZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRm9y
bUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTYwLDYgKzE2MSwxMSBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6Om5hbWUoKSBjb25zdAogICAgIHJl
dHVybiBtX25hbWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiBtX25hbWU7CiB9CiAKK1ZlY3RvcjxG
aWxlQ2hvb3NlckZpbGVJbmZvPiBIVE1MSW5wdXRFbGVtZW50OjpmaWxlc0Zyb21GaWxlSW5wdXRG
b3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmIHN0YXRlKQoreworICAgIHJl
dHVybiBGaWxlSW5wdXRUeXBlOjpmaWxlc0Zyb21Gb3JtQ29udHJvbFN0YXRlKHN0YXRlKTsKK30K
KwogSFRNTEVsZW1lbnQqIEhUTUxJbnB1dEVsZW1lbnQ6OmNvbnRhaW5lckVsZW1lbnQoKSBjb25z
dAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+Y29udGFpbmVyRWxlbWVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBkYzMyMTU5ZjI1MzkwYzJkMmNhN2I2
ZTI4ZDMyYmI1NzQ4ZTdkYjIwLi44YTBlNGQ0YjcyYTkyYzY4YTgxOGMyZGMxN2QyNWEyNDY4MjNh
ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMjUsNiArMjUs
NyBAQAogI2lmbmRlZiBIVE1MSW5wdXRFbGVtZW50X2gKICNkZWZpbmUgSFRNTElucHV0RWxlbWVu
dF9oCiAKKyNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJTdGVwUmFuZ2UuaCIKQEAgLTI3Nyw2ICsyNzgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IE9WRVJSSURFOwogCisgICAgc3RhdGlj
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlc0Zyb21GaWxlSW5wdXRGb3JtQ29udHJv
bFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxJ
bnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVt
ZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJl
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDZhYWE3ZjE3Mjg3NTdh
MWU0YmMwNGE3ZDk5MWMzM2Y2OTJlYjI3NDIuLjEwZWNhY2M0OTA1ZDIzMzIwYzQxYmM2YWI5MjVi
ZTU5YzVlMzUyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcm5hbHMuaCIKIAor
I2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJl
Y3RMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGYXN0TWFsbG9jU3RhdGlzdGlj
cy5oIgorI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKQEAg
LTExODgsNCArMTE5MCwxNCBAQCBQYXNzUmVmUHRyPEZhc3RNYWxsb2NTdGF0aXN0aWNzPiBJbnRl
cm5hbHM6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCkgY29uc3QKICAgICByZXR1cm4gRmFzdE1hbGxv
Y1N0YXRpc3RpY3M6OmNyZWF0ZSgpOwogfQogCitQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElu
dGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0Cit7CisgICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IHN0cmluZ0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBm
cmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgp
OworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMgPSBGb3JtQ29udHJvbGxlcjo6
Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyhmcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJy
ZW50SXRlbSgpLT5kb2N1bWVudFN0YXRlKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZmlsZVBhdGhzLnNpemUoKTsgKytpKQorICAgICAgICBzdHJpbmdMaXN0LT5hcHBlbmQoZmlsZVBh
dGhzW2ldKTsKKyAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDE1NzY2MmMzZGU2YjRlZDE0NGEyOTk5ODM2MDNj
Y2ViNjQwMGFiZGUuLjRhODY2NWNiNTI1YTI0MGRkYTE3YTdjMTllMWQ0ZjFhMzk0NjVkZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjEwLDYgKzIxMCw4IEBAIHB1YmxpYzoK
IAogICAgIFBhc3NSZWZQdHI8RmFzdE1hbGxvY1N0YXRpc3RpY3M+IGZhc3RNYWxsb2NTdGF0aXN0
aWNzKCkgY29uc3Q7CiAKKyAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGdldFJlZmVyZW5j
ZWRGaWxlUGF0aHMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMo
RG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNjAxZThhNzRmOWYxMGQyNGU0MThmMTM4
MzM4NmUwNTdmNThhMDRiZi4uNzcxY2M1MTFkNzg5YTQ0OTMyODk3ZTA5ZDJlMDEzYjc3YjRmZmU5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTg2LDYgKzE4Niw4IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICB2b2lkIHJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRB
c0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShpbiBET01TdHJpbmcgc2NoZW1lKTsKIAog
ICAgICAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcygpOworCisg
ICAgICAgIERPTVN0cmluZ1tdIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKTsKICAgICB9OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRl
bS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0ZW0uaAppbmRl
eCAwMTVhNzliZWJmZmU4NDlhMDJmYmNhYTYzYjQ3ZjlkYjc3NDE3ZWZkLi4yYzQxNmY4MjdlODQ4
NjViMzg2MDUwOTBhMTY5YTJmYmE5MmMzNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBwdWJsaWM6CiAg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJIaXN0
b3J5SXRlbT4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kVG9DaGlsZHJlbihjb25z
dCBXZWJIaXN0b3J5SXRlbSYpOwogCisgICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0b3I8V2ViU3Ry
aW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KICAgICBXZWJIaXN0b3J5SXRlbShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6SGlzdG9yeUl0ZW0+Jik7CiAgICAgV2ViSGlzdG9yeUl0ZW0mIG9wZXJhdG9yPShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZGIzNTMxN2FkOTgzY2RkNjlk
OWQwNjU1MjY1NWYyYzFmOTk0MzY3MC4uMzFkMmJkNTY0ZDkwMTljYjdmYjAxODViNWVmYmMzMzRh
YmZlMDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9y
eUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhpc3RvcnlJdGVt
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
Ykhpc3RvcnlJdGVtLmgiCiAKKyNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJLVVJMLmgi
CkBAIC0yODcsNiArMjg4LDIzIEBAIHZvaWQgV2ViSGlzdG9yeUl0ZW06OmFwcGVuZFRvQ2hpbGRy
ZW4oY29uc3QgV2ViSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgbV9wcml2YXRlLT5hZGRDaGlsZEl0
ZW0oaXRlbSk7CiB9CiAKK1dlYlZlY3RvcjxXZWJTdHJpbmc+IFdlYkhpc3RvcnlJdGVtOjpnZXRS
ZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8V2ViU3RyaW5nPiBmaWxl
UGF0aHM7CisgICAgY29uc3QgRm9ybURhdGEqIGZvcm1EYXRhID0gbV9wcml2YXRlLT5mb3JtRGF0
YSgpOworICAgIGlmIChmb3JtRGF0YSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBG
b3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgPSBmb3JtRGF0YS0+ZWxlbWVudHMoKVtpXTsKKyAgICAg
ICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxl
KQorICAgICAgICAgICAgICAgIGZpbGVQYXRocy5hcHBlbmQoZWxlbWVudC5tX2ZpbGVuYW1lKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VsZWN0ZWRGaWxl
UGF0aHMgPSBXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyht
X3ByaXZhdGUtPmRvY3VtZW50U3RhdGUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
ZWxlY3RlZEZpbGVQYXRocy5zaXplKCk7ICsraSkKKyAgICAgICAgZmlsZVBhdGhzLmFwcGVuZChz
ZWxlY3RlZEZpbGVQYXRoc1tpXSk7CisgICAgcmV0dXJuIGZpbGVQYXRoczsKK30KKwogV2ViSGlz
dG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKGNvbnN0IFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+JiBp
dGVtKQogICAgIDogbV9wcml2YXRlKGl0ZW0pCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGEzNDQ0ZDM4MDVkOGNjMzQ0
MWExMzEyOWRhODc5ZWU2MmJlMzFmYS4uOTFlZTU0Y2MyNzU0MDk3ZDI3OTU1ZGVkNWUzZjAyZjA5
ODJhZTM4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTE0ICBNYXJqYSBIw7ZsdHTD
pCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxlcjogRW5hYmxl
IHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9tIGRvY3VtZW50IHN0YXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJs
ZXMgQ2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkgd2hlbgorICAg
ICAgICB0aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUgcmVzdG9yZXMgYSBwYWdlIHdpdGggc2Vs
ZWN0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMt
ZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sOiBBZGRlZC4K
KwogMjAxMi0wOC0xMCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZywgcmViYXNlbGluaW5nIGFmdGVyIHIxMjUx
NjcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmls
ZXMtZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1NjU3OWUzYjE4NWZkMjgwY2VhYzBhNWVlNzE3MjBjODJkNmMzYTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMt
ZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIHRo
YXQgc2VsZWN0ZWQgZmlsZXMgaW4gZmlsZSBpbnB1dCBlbGVtZW50cyBhcmUgY29ycmVjdGx5IHJl
dHJpZXZlZCBieSBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocy4KKworCisK
K1BBU1MgCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVz
LWZyb20taGlzdG9yeS1zdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3Nl
bGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNzMwYjMz
NGIyMmVlYjk4Njc0Y2M4ZGMzZmQ4Njg0OTBkMmRkZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRl
Lmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworZnVuY3Rpb24gb25Mb2Fk
KCkgeworICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ1Ro
aXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdmFyIG9uQ2hhbmdlRmlyZWQgPSAwOworICAgIHZhciBpbnB1dDEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZWlucHV0MScpOworICAgIGlucHV0MS5vbmNoYW5nZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICArK29uQ2hhbmdlRmlyZWQ7CisgICAgfTsKKyAgICB2YXIg
aW5wdXQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVpbnB1dDInKTsKKyAgICBpbnB1
dDIub25jaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgKytvbkNoYW5nZUZpcmVkOworICAg
IH07CisKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWycvaG9tZS91c2VyL3Rl
c3RmaWxlLnR4dCddKTsKKyAgICB2YXIgY2VudGVyWCA9IGlucHV0MS5vZmZzZXRMZWZ0ICsgaW5w
dXQxLm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGlucHV0MS5vZmZzZXRUb3Ag
KyBpbnB1dDEub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhj
ZW50ZXJYLCBjZW50ZXJZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBldmVu
dFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWycvaG9tZS91c2VyL3Rlc3RmaWxlMi50eHQnXSk7
CisgICAgY2VudGVyWCA9IGlucHV0Mi5vZmZzZXRMZWZ0ICsgaW5wdXQyLm9mZnNldFdpZHRoIC8g
MjsKKyAgICBjZW50ZXJZID0gaW5wdXQyLm9mZnNldFRvcCArIGlucHV0Mi5vZmZzZXRIZWlnaHQg
LyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIGlmIChvbkNoYW5nZUZpcmVkICE9IDIpIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgnb25jaGFuZ2UgZmlyZWQgdW5leHBlY3RlZCB0aW1lczogJyAr
IG9uQ2hhbmdlRmlyZWQpOworICAgIH0KKworICAgIHZhciBmaWxlcyA9IGludGVybmFscy5nZXRS
ZWZlcmVuY2VkRmlsZVBhdGhzKCk7CisgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAyICYmCisgICAg
ICAgICgoZmlsZXNbMF0gPT0gJy9ob21lL3VzZXIvdGVzdGZpbGUudHh0JyAmJiBmaWxlc1sxXSA9
PSAnL2hvbWUvdXNlci90ZXN0ZmlsZTIudHh0JykgfHwKKyAgICAgICAgIChmaWxlc1sxXSA9PSAn
L2hvbWUvdXNlci90ZXN0ZmlsZS50eHQnICYmIGZpbGVzWzBdID09ICcvaG9tZS91c2VyL3Rlc3Rm
aWxlMi50eHQnKSkpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnJyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZCBmaWxlczogJyArIGZpbGVzKTsKKyAgICB9Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCBzZWxlY3RlZCBmaWxl
cyBpbiBmaWxlIGlucHV0IGVsZW1lbnRzIGFyZSBjb3JyZWN0bHkgcmV0cmlldmVkIGJ5IEZvcm1D
b250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLjwvcD4KKzxkaXYgaWQ9ImNvbnRhaW5l
ciI+Cis8Zm9ybSBpZD0iZm9ybTEiPgorPGlucHV0IGlkPSJmaWxlaW5wdXQxIiB0eXBlPSJmaWxl
IiAvPgorPC9mb3JtPgorPGZvcm0gaWQ9ImZvcm0yIj4KKzxpbnB1dCBpZD0iZmlsZWlucHV0MiIg
dHlwZT0iZmlsZSIgLz4KKzwvZm9ybT4KKzwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158316</attachid>
            <date>2012-08-14 06:52:32 -0700</date>
            <delta_ts>2012-08-14 08:08:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120814155159.patch</filename>
            <type>text/plain</type>
            <size>26547</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg4NjdmNWIwNDU5OWI2
OGE3ODNhZTU5NjY5ZTNiZWFmM2Q5Zjc3Ni4uM2FlZjlkNzk0NTcyMzAwYjVlZTE0ZTY1MjczYThi
ODcyZjY0MGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA4LTE0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxl
ciwgRmlsZUlucHV0VHlwZTogRW5hYmxlIHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9t
IGRvY3VtZW50IHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJv
YWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxv
dyAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxl
cy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4
cG9ydGVkIEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpmaWxlc0Zyb21Gb3JtQ29udHJvbFN0YXRlKTogQWRkZWQuIEV4dHJhY3RzIEZpbGVDaG9vc2Vy
RmlsZUluZm9zIGZyb20gYSBGb3JtQ29udHJvbFN0YXRlLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6
IFJlZmFjdG9yZWQgdG8gdXNlIGZpbGVzRnJvbUZvcm1Db250cm9sU3RhdGUuCisgICAgICAgICog
aHRtbC9GaWxlSW5wdXRUeXBlLmg6CisgICAgICAgIChGaWxlSW5wdXRUeXBlKTogQWRkZWQgZmls
ZXNGcm9tRm9ybUNvbnRyb2xTdGF0ZS4KKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFNhdmVkRm9ybVN0YXRlKTogQWRkZWQgZ2V0UmVmZXJlbmNlZEZpbGVQYXRo
cy4KKyAgICAgICAgKFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjpnZXRSZWZlcmVuY2VkRmlsZVBh
dGhzKTogQWRkZWQuIEV4dHJhY3RzIHNlbGVjdGVkIGZpbGUgcGF0aHMgZnJvbSBTYXZlZEZvcm1T
dGF0ZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xs
ZXI6OnNldFN0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKTogUmVmYWN0b3JlZCB0byB1c2UgZm9ybVN0
YXRlc0Zyb21TdGF0ZVZlY3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpm
b3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9s
bGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKTogQWRkZWQuIFN0YXRpYy4gRXh0cmFjdHMgc2Vs
ZWN0ZWQgZmlsZSBwYXRocyBmcm9tIGEgZG9jdW1lbnQgc3RhdGUuCisgICAgICAgICogaHRtbC9G
b3JtQ29udHJvbGxlci5oOgorICAgICAgICAoRm9ybUNvbnRyb2xsZXIpOiBBZGRlZCBnZXRSZWZl
cmVuY2VkRmlsZVBhdGhzIGFuZCBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yLgorICAgICAgICAq
IGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjpmaWxlc0Zyb21GaWxlSW5wdXRGb3JtQ29udHJvbFN0YXRlKTogQWRkZWQuIERlbGVn
YXRlcyB0byBGaWxlSW5wdXRUeXBlOjpmaWxlc0Zyb21Gb3JtQ29udHJvbFN0YXRlLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6IEFkZGVkIGZp
bGVzRnJvbUZpbGVJbnB1dEZvcm1Db250cm9sU3RhdGUuCisgICAgICAgIChIVE1MSW5wdXRFbGVt
ZW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBDYWxscyBGb3JtQ29udHJvbGxl
cjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOiBBZGRlZCBnZXRSZWZl
cmVuY2VkRmlsZVBhdGhzLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogQWRkZWQg
YmluZGluZyBmb3IgZ2V0UmVmZXJlbmNlZEZpbGVQYXRocy4KKwogMjAxMi0wOC0xMCAgVmluZWV0
IENoYXVkaGFyeSAgPHJnZjc0OEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgTW92aW5nIHRoZSBj
b21tb24gY29kZSBmcm9tIENvZGVnZW5lcmF0b3JKUy9WOC5wbSB0byBDb2RlZ2VuZXJhdG9yLnBt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDQ4NjQwNTJkMjdkNzdhNDM0YjYwNjQxZmI2
Njc4OTc0YTI0NWE2ODYuLjBkMzljZTg2YzlkZjQzOTMyMmE3MzVhYmViYjViMmExNjE0YjE2ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMTQg
IE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYkhpc3Rv
cnlJdGVtOiBFbmFibGUgcmVhZGluZyBzZWxlY3RlZCBmaWxlIG5hbWVzIGZyb20gZG9jdW1lbnQg
c3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkx
MjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgZW5hYmxlcyBDaHJvbWl1bSB0byBzZXQgdXAgZmlsZSBwZXJtaXNzaW9ucyBwcm9w
ZXJseSB3aGVuCisgICAgICAgIHRoZSBzZXNzaW9uIHJlc3RvcmUgZmVhdHVyZSByZXN0b3JlcyBh
IHBhZ2Ugd2l0aCBzZWxlY3RlZCBmaWxlcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJIaXN0b3J5
SXRlbS5oOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW0pOiBBZGRlZCBnZXRSZWZlcmVuY2VkRmls
ZVBhdGhzLgorICAgICAgICAqIHNyYy9XZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkhpc3RvcnlJdGVtOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKTogRXh0cmFjdHMgc2Vs
ZWN0ZWQgYW5kIHBvc3RlZCBmaWxlIHBhdGhzIGZyb20gYSBkb2N1bWVudCBzdGF0ZS4KKyAgICAg
ICAgKFdlYktpdCk6CisKIDIwMTItMDgtMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjUyMzAg
YW5kIHIxMjUyMzguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWJkNTliODFmM2NlNWIyOGE4NzQxZTNjNGE2ZWQ0
ZTRlYjFmMTMxMS4uMmY1NGExMmVmOTRmMGNkMzllMmRhZTgzMDhkYTM0NDlhNGMxN2ZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTE0ICBNYXJqYSBIw7ZsdHTDpCAgPG1h
cmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxlciwgV2ViSGlzdG9yeUl0
ZW06IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlv
bmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxl
LiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjogRXhwb3J0ZWQgRm9ybUNvbnRyb2xsZXI6OmdldFJl
ZmVyZW5jZWRGaWxlUGF0aHMgYW5kIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1lbnRBbmRT
Y3JvbGxTdGF0ZS4KKwogMjAxMi0wOC0wOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgSGFuZGxlIFNTTCBlcnJvcnMgZm9yIFNPVVAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggYmRjYTEyOTFkNmI5YTY0MzFhNWNjMjQxOWI4MDI1ZjJmMzI4NTIx
OS4uZTkyMjdlZjY5Y2IwNTNmMDBmZDQ3ZWRhOGM4NDg5ZDRlOTU5YjRjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTI1Myw2ICsyNTMsNyBAQCBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVy
RDJFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxN3JlcG9ydE1lbW9yeVVzYWdlRVBO
U18xNk1lbW9yeU9iamVjdEluZm9FCiBfX1pON1dlYkNvcmUxNERvY3VtZW50V3JpdGVyMTFzZXRF
bmNvZGluZ0VSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxNEZpbGVJY29uTG9hZGVyMTRu
b3RpZnlGaW5pc2hlZEVOM1dURjEwUGFzc1JlZlB0cklOU180SWNvbkVFRQorX19aTjdXZWJDb3Jl
MTRGb3JtQ29udHJvbGxlcjIyZ2V0UmVmZXJlbmNlZEZpbGVQYXRoc0VSS04zV1RGNlZlY3RvcklO
UzFfNlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xMHNldEZvY3Vz
ZWRFYgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjEyc2V0U2VsZWN0aW9uRVJLTlNfMTZW
aXNpYmxlU2VsZWN0aW9uRWpOUzBfMTlDdXJzb3JBbGlnbk9uU2Nyb2xsRU5TXzE1VGV4dEdyYW51
bGFyaXR5RQogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE1cmV2ZWFsU2VsZWN0aW9uRVJL
TlNfMTVTY3JvbGxBbGlnbm1lbnRFTlNfMThSZXZlYWxFeHRlbnRPcHRpb25FCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBkMDhmZTI0NTE2M2VmZDg2M2IwNWVjNDFkZTI1
MThjNjJiYjA5NGZlLi5mNzg5NmJhYjg2NWJiMDc3ZDllNjk4NmFhNzAyZDVmNzNjYmE0NDcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTk2LDYgKzk2LDE4IEBAIFBh
c3NPd25QdHI8SW5wdXRUeXBlPiBGaWxlSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbGVJbnB1dFR5cGUoZWxlbWVu
dCkpOwogfQogCitWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gRmlsZUlucHV0VHlwZTo6Zmls
ZXNGcm9tRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKK3sK
KyAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdGF0ZS52YWx1ZVNpemUoKTsgaSArPSAyKSB7CisgICAgICAgIGlmICghc3Rh
dGVbaSArIDFdLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3Nl
ckZpbGVJbmZvKHN0YXRlW2ldLCBzdGF0ZVtpICsgMV0pKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oc3RhdGVbaV0pKTsKKyAgICB9
CisgICAgcmV0dXJuIGZpbGVzOworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIEZpbGVJbnB1dFR5
cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVz
OjpmaWxlKCk7CkBAIC0xMTgsMTQgKzEzMCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVzdG9y
ZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCiB7CiAgICAg
aWYgKHN0YXRlLnZhbHVlU2l6ZSgpICUgMikKICAgICAgICAgcmV0dXJuOwotICAgIFZlY3RvcjxG
aWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
YXRlLnZhbHVlU2l6ZSgpOyBpICs9IDIpIHsKLSAgICAgICAgaWYgKCFzdGF0ZVtpICsgMV0uaXNF
bXB0eSgpKQotICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oc3Rh
dGVbaV0sIHN0YXRlW2kgKyAxXSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlcy5h
cHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhzdGF0ZVtpXSkpOwotICAgIH0KLSAgICBmaWxlc0No
b3NlbihmaWxlcyk7CisgICAgZmlsZXNDaG9zZW4oZmlsZXNGcm9tRm9ybUNvbnRyb2xTdGF0ZShz
dGF0ZSkpOwogfQogCiBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRh
TGlzdCYgZW5jb2RpbmcsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuaAppbmRleCA5MDM2MzllYzA5YTMxYjYzMWY0ZGJjMzgzOTgxNDJlMTM3NmY4MzIx
Li4xMGFjZGU3MDJkODE4ZDg2MWRmYTlmMmI0NWU1YzNhYjNmZDA1NjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBGaWxlTGlzdDsKIGNs
YXNzIEZpbGVJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUs
IHByaXZhdGUgRmlsZUNob29zZXJDbGllbnQsIHByaXZhdGUgRmlsZUljb25Mb2FkZXJDbGllbnQg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJ
bnB1dEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZp
bGVzRnJvbUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpOwogCiBwcml2
YXRlOgogICAgIEZpbGVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA1ZTM5ZmUyMjkzOWI3NDk0MGVjNTQ0OTQxNjhl
ZDljNTI4OWJjOTdkLi5lMzVlZmYxOWUxOWJhOWM1ZTVkMTVjODAyYjZiYjlmZTQ1NDFhNDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMjEsOCArMjEsMTAgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogCisjaW5j
bHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTElu
cHV0RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTgwLDYgKzE4Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZENvbnRyb2xTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpOwogICAgIEZvcm1Db250cm9sU3Rh
dGUgdGFrZUNvbnRyb2xTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSk7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBh
dGhzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgU2F2ZWRGb3JtU3RhdGUoKSA6IG1fY29udHJv
bFN0YXRlQ291bnQoMCkgeyB9CiAKQEAgLTI2Myw2ICsyNjcsMjMgQEAgRm9ybUNvbnRyb2xTdGF0
ZSBTYXZlZEZvcm1TdGF0ZTo6dGFrZUNvbnRyb2xTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIGNvbnMKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IFNhdmVkRm9y
bVN0YXRlOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3Ry
aW5nPiB0b1JldHVybjsKKyAgICBmb3IgKEZvcm1FbGVtZW50U3RhdGVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5iZWdpbigpOyBpdCAhPSBtX3N0YXRl
Rm9yTmV3Rm9ybUVsZW1lbnRzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGNvbnN0IEZvcm1FbGVt
ZW50S2V5JiBrZXkgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGlmIChBdG9taWNTdHJpbmcoa2V5LnR5
cGUoKSkgIT0gQXRvbWljU3RyaW5nKCJmaWxlIikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgY29uc3QgRGVxdWU8Rm9ybUNvbnRyb2xTdGF0ZT4mIHF1ZXVlID0gaXQtPnNlY29uZDsK
KyAgICAgICAgZm9yIChEZXF1ZTxGb3JtQ29udHJvbFN0YXRlPjo6Y29uc3RfaXRlcmF0b3IgcXVl
SXRlcmF0b3IgPSBxdWV1ZS5iZWdpbigpOyBxdWVJdGVyYXRvciAhPSBxdWV1ZS5lbmQoKTsgKytx
dWVJdGVyYXRvcikgeworICAgICAgICAgICAgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBzZWxlY3RlZEZpbGVzID0gSFRNTElucHV0RWxlbWVudDo6ZmlsZXNGcm9tRmlsZUlucHV0
Rm9ybUNvbnRyb2xTdGF0ZSgqcXVlSXRlcmF0b3IpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzZWxlY3RlZEZpbGVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIHRv
UmV0dXJuLmFwcGVuZChzZWxlY3RlZEZpbGVzW2ldLnBhdGgpOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiB0b1JldHVybjsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFz
cyBGb3JtS2V5R2VuZXJhdG9yIHsKQEAgLTQwOCwyMyArNDI5LDcgQEAgVmVjdG9yPFN0cmluZz4g
Rm9ybUNvbnRyb2xsZXI6OmZvcm1FbGVtZW50c1N0YXRlKCkgY29uc3QKIAogdm9pZCBGb3JtQ29u
dHJvbGxlcjo6c2V0U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHN0YXRlVmVjdG9yKQogewotICAgIG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLmNsZWFyKCk7Ci0K
LSAgICBzaXplX3QgaSA9IDA7Ci0gICAgaWYgKHN0YXRlVmVjdG9yLnNpemUoKSA8IDEgfHwgc3Rh
dGVWZWN0b3JbaSsrXSAhPSBmb3JtU3RhdGVTaWduYXR1cmUoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgd2hpbGUgKGkgKyAxIDwgc3RhdGVWZWN0b3Iuc2l6ZSgpKSB7Ci0gICAgICAgIEF0b21p
Y1N0cmluZyBmb3JtS2V5ID0gc3RhdGVWZWN0b3JbaSsrXTsKLSAgICAgICAgT3duUHRyPFNhdmVk
Rm9ybVN0YXRlPiBzdGF0ZSA9IFNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZShzdGF0ZVZlY3Rv
ciwgaSk7Ci0gICAgICAgIGlmICghc3RhdGUpIHsKLSAgICAgICAgICAgIGkgPSAwOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgbV9zYXZlZEZvcm1TdGF0ZU1hcC5hZGQo
Zm9ybUtleS5pbXBsKCksIHN0YXRlLnJlbGVhc2UoKSk7Ci0gICAgfQotICAgIGlmIChpICE9IHN0
YXRlVmVjdG9yLnNpemUoKSkKLSAgICAgICAgbV9zYXZlZEZvcm1TdGF0ZU1hcC5jbGVhcigpOwor
ICAgIGZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3Ioc3RhdGVWZWN0b3IsIG1fc2F2ZWRGb3JtU3Rh
dGVNYXApOwogfQogCiBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVG
b3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlJiBjb250
cm9sKQpAQCAtNDQyLDYgKzQ0NywyNyBAQCBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250cm9sbGVy
Ojp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbAogICAgIHJl
dHVybiBzdGF0ZTsKIH0KIAordm9pZCBGb3JtQ29udHJvbGxlcjo6Zm9ybVN0YXRlc0Zyb21TdGF0
ZVZlY3Rvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IsIFNhdmVkRm9ybVN0YXRl
TWFwJiBtYXApCit7CisgICAgbWFwLmNsZWFyKCk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAg
aWYgKHN0YXRlVmVjdG9yLnNpemUoKSA8IDEgfHwgc3RhdGVWZWN0b3JbaSsrXSAhPSBmb3JtU3Rh
dGVTaWduYXR1cmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKGkgKyAxIDwgc3Rh
dGVWZWN0b3Iuc2l6ZSgpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBmb3JtS2V5ID0gc3RhdGVW
ZWN0b3JbaSsrXTsKKyAgICAgICAgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiBzdGF0ZSA9IFNhdmVk
Rm9ybVN0YXRlOjpkZXNlcmlhbGl6ZShzdGF0ZVZlY3RvciwgaSk7CisgICAgICAgIGlmICghc3Rh
dGUpIHsKKyAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgbWFwLmFkZChmb3JtS2V5LmltcGwoKSwgc3RhdGUucmVsZWFzZSgpKTsKKyAgICB9
CisgICAgaWYgKGkgIT0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQorICAgICAgICBtYXAuY2xlYXIoKTsK
K30KKwogdm9pZCBGb3JtQ29udHJvbGxlcjo6d2lsbERlbGV0ZUZvcm0oSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQogewogICAgIGlmIChtX2Zvcm1LZXlHZW5lcmF0b3IpCkBAIC00NzksNSArNTA1LDE0
IEBAIHZvaWQgRm9ybUNvbnRyb2xsZXI6OnJlc3RvcmVDb250cm9sU3RhdGVJbihIVE1MRm9ybUVs
ZW1lbnQmIGZvcm0pCiAgICAgfQogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCitWZWN0b3I8
U3RyaW5nPiBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdG9SZXR1cm47
CisgICAgU2F2ZWRGb3JtU3RhdGVNYXAgbWFwOworICAgIGZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0
b3Ioc3RhdGVWZWN0b3IsIG1hcCk7CisgICAgZm9yIChTYXZlZEZvcm1TdGF0ZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gbWFwLmVuZCgpOyArK2l0KQorICAgICAg
ICB0b1JldHVybi5hcHBlbmQoaXQtPnNlY29uZC0+Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpKTsK
KyAgICByZXR1cm4gdG9SZXR1cm47Cit9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAppbmRleCA1ZDM3NDhkMGVlNThlMzEyMTFkMjliZDhl
MDUxMTBlZjE5YjRmYzZiLi4wNDAyYjJjZDE3ODNjNDIyNTllZmQ4NzNhZTliNjY0ZjIzNDY4OGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCkBAIC05Miw2ICs5Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3RvcmVDb250cm9sU3RhdGVGb3IoSFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZSYpOwogICAgIHZvaWQgcmVzdG9yZUNvbnRyb2xTdGF0ZUluKEhUTUxGb3Jt
RWxlbWVudCYpOwogCisgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldFJlZmVyZW5jZWRGaWxl
UGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKTsKKwogcHJpdmF0ZToKICAg
ICB0eXBlZGVmIExpc3RIYXNoU2V0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUqLCA2
ND4gRm9ybUVsZW1lbnRMaXN0SGFzaFNldDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEF0
b21pY1N0cmluZ0ltcGw+LCBPd25QdHI8U2F2ZWRGb3JtU3RhdGU+ID4gU2F2ZWRGb3JtU3RhdGVN
YXA7CkBAIC05OSw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIEZvcm1Db250cm9sbGVyKCk7CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8U2F2ZWRGb3JtU3RhdGVNYXA+IGNyZWF0ZVNhdmVkRm9ybVN0
YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQmKTsKICAgICBGb3JtQ29udHJvbFN0
YXRlIHRha2VTdGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUmKTsKKyAgICBzdGF0aWMgdm9pZCBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgU2F2ZWRGb3JtU3RhdGVNYXAmKTsKIAogICAgIENoZWNrZWRS
YWRpb0J1dHRvbnMgbV9jaGVja2VkUmFkaW9CdXR0b25zOwogICAgIEZvcm1FbGVtZW50TGlzdEhh
c2hTZXQgbV9mb3JtRWxlbWVudHNXaXRoU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAppbmRleCBlMDcwNjdjNjZkY2YzM2NmNDc1OWQzZjgxMTRlZGI2NTQ1Njgx
NzYzLi45OGQxMThkMjM1MWU4ZmVmYTIxY2NhZjkwZDUxODg4NmQ4NTZkZGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRmlsZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIkZpbGVM
aXN0LmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtMTYwLDYgKzE2MSwxMSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6
Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX25hbWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiBt
X25hbWU7CiB9CiAKK1ZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBIVE1MSW5wdXRFbGVtZW50
OjpmaWxlc0Zyb21GaWxlSW5wdXRGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3Rh
dGUmIHN0YXRlKQoreworICAgIHJldHVybiBGaWxlSW5wdXRUeXBlOjpmaWxlc0Zyb21Gb3JtQ29u
dHJvbFN0YXRlKHN0YXRlKTsKK30KKwogSFRNTEVsZW1lbnQqIEhUTUxJbnB1dEVsZW1lbnQ6OmNv
bnRhaW5lckVsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+Y29udGFp
bmVyRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBk
YzMyMTU5ZjI1MzkwYzJkMmNhN2I2ZTI4ZDMyYmI1NzQ4ZTdkYjIwLi44YTBlNGQ0YjcyYTkyYzY4
YTgxOGMyZGMxN2QyNWEyNDY4MjNhZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBIVE1MSW5wdXRFbGVtZW50X2gKICNk
ZWZpbmUgSFRNTElucHV0RWxlbWVudF9oCiAKKyNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2lu
Y2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJTdGVwUmFuZ2UuaCIKQEAgLTI3Nyw2ICsyNzgsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IE9W
RVJSSURFOwogCisgICAgc3RhdGljIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlc0Zy
b21GaWxlSW5wdXRGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKKwog
cHJvdGVjdGVkOgogICAgIEhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50KiwgSFRNTEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZv
aWQgY3JlYXRlU2hhZG93U3VidHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDZhYWE3ZjE3Mjg3NTdhMWU0YmMwNGE3ZDk5MWMzM2Y2OTJlYjI3NDIuLjEwZWNhY2M0
OTA1ZDIzMzIwYzQxYmM2YWI5MjViZTU5YzVlMzUyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJbnRlcm5hbHMuaCIKIAorI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5o
IgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJGYXN0TWFsbG9jU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1M
Q29udGVudEVsZW1lbnQuaCIKQEAgLTExODgsNCArMTE5MCwxNCBAQCBQYXNzUmVmUHRyPEZhc3RN
YWxsb2NTdGF0aXN0aWNzPiBJbnRlcm5hbHM6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCkgY29uc3QK
ICAgICByZXR1cm4gRmFzdE1hbGxvY1N0YXRpc3RpY3M6OmNyZWF0ZSgpOwogfQogCitQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IEludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNv
bnN0Cit7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0cmluZ0xpc3QgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKKyAgICBmcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5zYXZlRG9j
dW1lbnRBbmRTY3JvbGxTdGF0ZSgpOworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0
aHMgPSBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyhmcmFtZSgpLT5sb2Fk
ZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpLT5kb2N1bWVudFN0YXRlKCkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVBhdGhzLnNpemUoKTsgKytpKQorICAgICAgICBzdHJp
bmdMaXN0LT5hcHBlbmQoZmlsZVBhdGhzW2ldKTsKKyAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxl
YXNlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDE1NzY2MmMz
ZGU2YjRlZDE0NGEyOTk5ODM2MDNjY2ViNjQwMGFiZGUuLjRhODY2NWNiNTI1YTI0MGRkYTE3YTdj
MTllMWQ0ZjFhMzk0NjVkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjEw
LDYgKzIxMCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8RmFzdE1hbGxvY1N0YXRpc3Rp
Y3M+IGZhc3RNYWxsb2NTdGF0aXN0aWNzKCkgY29uc3Q7CiAKKyAgICBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERv
Y3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNjAx
ZThhNzRmOWYxMGQyNGU0MThmMTM4MzM4NmUwNTdmNThhMDRiZi4uNzcxY2M1MTFkNzg5YTQ0OTMy
ODk3ZTA5ZDJlMDEzYjc3YjRmZmU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtMTg2LDYgKzE4Niw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICB2b2lkIHJlbW92
ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShpbiBE
T01TdHJpbmcgc2NoZW1lKTsKIAogICAgICAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFs
bG9jU3RhdGlzdGljcygpOworCisgICAgICAgIERPTVN0cmluZ1tdIGdldFJlZmVyZW5jZWRGaWxl
UGF0aHMoKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSGlzdG9yeUl0ZW0uaAppbmRleCAwMTVhNzliZWJmZmU4NDlhMDJmYmNhYTYzYjQ3ZjlkYjc3
NDE3ZWZkLi4yYzQxNmY4MjdlODQ4NjViMzg2MDUwOTBhMTY5YTJmYmE5MmMzNjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgKQEAgLTEyNCw2
ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENoaWxkcmVuKGNv
bnN0IFdlYlZlY3RvcjxXZWJIaXN0b3J5SXRlbT4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
YXBwZW5kVG9DaGlsZHJlbihjb25zdCBXZWJIaXN0b3J5SXRlbSYpOwogCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJWZWN0b3I8V2ViU3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7
CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJIaXN0b3J5SXRlbShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+Jik7CiAgICAgV2ViSGlzdG9yeUl0
ZW0mIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIaXN0b3J5SXRl
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIaXN0b3J5SXRlbS5jcHAKaW5k
ZXggZGIzNTMxN2FkOTgzY2RkNjlkOWQwNjU1MjY1NWYyYzFmOTk0MzY3MC4uMzFkMmJkNTY0ZDkw
MTljYjdmYjAxODViNWVmYmMzMzRhYmZlMDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCiAKKyNpbmNsdWRlICJGb3JtQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0u
aCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0yODcsNiArMjg4LDIzIEBAIHZvaWQgV2ViSGlzdG9y
eUl0ZW06OmFwcGVuZFRvQ2hpbGRyZW4oY29uc3QgV2ViSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAg
bV9wcml2YXRlLT5hZGRDaGlsZEl0ZW0oaXRlbSk7CiB9CiAKK1dlYlZlY3RvcjxXZWJTdHJpbmc+
IFdlYkhpc3RvcnlJdGVtOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3QKK3sKKyAgICBW
ZWN0b3I8V2ViU3RyaW5nPiBmaWxlUGF0aHM7CisgICAgY29uc3QgRm9ybURhdGEqIGZvcm1EYXRh
ID0gbV9wcml2YXRlLT5mb3JtRGF0YSgpOworICAgIGlmIChmb3JtRGF0YSkgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgPSBmb3JtRGF0YS0+
ZWxlbWVudHMoKVtpXTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0
YUVsZW1lbnQ6OmVuY29kZWRGaWxlKQorICAgICAgICAgICAgICAgIGZpbGVQYXRocy5hcHBlbmQo
ZWxlbWVudC5tX2ZpbGVuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgc2VsZWN0ZWRGaWxlUGF0aHMgPSBXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6Z2V0
UmVmZXJlbmNlZEZpbGVQYXRocyhtX3ByaXZhdGUtPmRvY3VtZW50U3RhdGUoKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzZWxlY3RlZEZpbGVQYXRocy5zaXplKCk7ICsraSkKKyAgICAg
ICAgZmlsZVBhdGhzLmFwcGVuZChzZWxlY3RlZEZpbGVQYXRoc1tpXSk7CisgICAgcmV0dXJuIGZp
bGVQYXRoczsKK30KKwogV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKGNvbnN0IFBhc3NS
ZWZQdHI8SGlzdG9yeUl0ZW0+JiBpdGVtKQogICAgIDogbV9wcml2YXRlKGl0ZW0pCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi5kZWYKaW5kZXggZGVhMzZlZDkwMjlhZWIyMmQ1NWFjNzMxNzdhOWZjZTRlMjg1
OTQ5Mi4uNDYwNTIwYjZiZDhjOWZjZTMzZWFiYWY2ZTEwMjY0ZjMxNTExODY2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLmRlZgpAQCAtMTgxLDYgKzE4MSw3IEBAIEVYUE9SVFMKICAgICAgICAgP2dldEVs
ZW1lbnRCeUlkQFRyZWVTY29wZUBXZWJDb3JlQEBRQkVQQVZFbGVtZW50QDJAQUJWQXRvbWljU3Ry
aW5nQFdURkBAQFoKICAgICAgICAgP2dldEhpZ2hsaWdodEBJbnNwZWN0b3JDb250cm9sbGVyQFdl
YkNvcmVAQFFCRVhQQVVIaWdobGlnaHRAMkBAWgogICAgICAgICA/Z2V0TG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2VAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBX05QQVZFbGVtZW50QDJAUEJWUmFu
Z2VAMkBBQUkyQFoKKyAgICAgICAgP2dldFJlZmVyZW5jZWRGaWxlUGF0aHNARm9ybUNvbnRyb2xs
ZXJAV2ViQ29yZUBAU0E/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQEFCVjM0QEBa
CiAgICAgICAgID9pbnB1dFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZRdWFsaWZpZWROYW1lQDJA
QgogICAgICAgICA/aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2VASW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQFdlYkNvcmVAQENBUEFWSW5zdHJ1bWVudGluZ0FnZW50c0AyQFBBVlBhZ2VAMkBAWgog
ICAgICAgICA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBa
CkBAIC0yMDcsNiArMjA4LDcgQEAgRVhQT1JUUwogICAgICAgICA/cmVtb3ZlZExhc3RSZWZATm9k
ZUBXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0cmluZ0ltcGxAV1RGQEBR
QUVJX1dJQFoKICAgICAgICAgP3NfZnJvbnRlbmRDb3VudGVyQEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkBXZWJDb3JlQEAwSEEKKyAgICAgICAgP3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlQEhp
c3RvcnlDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9u
Q29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25D
b250ZXh0QDJAWFoKICAgICAgICAgP3NjcmlwdE5hbWVUb0NvZGVAV2ViQ29yZUBAWUE/QVc0VVNj
cmlwdENvZGVAQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0
QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgpkaWZm
IC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKaW5kZXggODJmZmMyZTlhNGM0MzNiYzg4ODY0YWY1M2IzOWVmYzMy
MDhmZDAwMC4uOGRmMTYzNWI1NzBkZTUzMGQ4NzEyM2I5NzdiZWYxZTk5NmU2ZjE2YyAxMDA2NDQK
LS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCkBAIC01OSw2ICs1OSw3IEBAIF9aTjdXZWJDb3JlMTRDbGllbnRS
ZWN0TGlzdEMxRVJLTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTGowRUVFOwogX1pON1dlYkNv
cmUxNENsaWVudFJlY3RMaXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UXVhZEVMbTBFRUU7
CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUV2OwogX1pON1dlYkNvcmUxNENsaWVudFJl
Y3RMaXN0RDFFdjsKK19aTjdXZWJDb3JlMTRGb3JtQ29udHJvbGxlcjIyZ2V0UmVmZXJlbmNlZEZp
bGVQYXRoc0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFRUU7CiBfWk43V2ViQ29yZTE0
RnJhbWVTZWxlY3Rpb24xOWFic29sdXRlQ2FyZXRCb3VuZHNFdjsKIF9aTjdXZWJDb3JlMTRTY2hl
bWVSZWdpc3RyeTQ5cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBv
bGljeUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk1N3JlbW92
ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeUVSS04z
V1RGNlN0cmluZ0U7CkBAIC02OSw2ICs3MCw3IEBAIF9aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVt
ZW50MTVzZXRFZGl0aW5nVmFsdWVFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUxNmpzU3Ry
aW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5n
SW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFzaElTNl9FRU5TM18xMEhh
c2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl87CiBfWk43V2ViQ29yZTE2c2NyaXB0TmFtZVRv
Q29kZUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5T
XzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRTsK
K19aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3Rh
dGVFdjsKIF9aTjdXZWJDb3JlMTdJbnNwZWN0b3JDb3VudGVyczEyY291bnRlclZhbHVlRU5TMF8x
MUNvdW50ZXJUeXBlRTsKIF9aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBO
U184RG9jdW1lbnRFOwogX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIzOXNldFJlc291
cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFsc0VpaTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YTM0NDRkMzgwNWQ4
Y2MzNDQxYTEzMTI5ZGE4NzllZTYyYmUzMWZhLi45MWVlNTRjYzI3NTQwOTdkMjc5NTVkZWQ1ZTNm
MDJmMDk4MmFlMzg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMTQgIE1hcmphIEjD
tmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZvcm1Db250cm9sbGVyOiBF
bmFibGUgcmVhZGluZyBzZWxlY3RlZCBmaWxlIG5hbWVzIGZyb20gZG9jdW1lbnQgc3RhdGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
ZW5hYmxlcyBDaHJvbWl1bSB0byBzZXQgdXAgZmlsZSBwZXJtaXNzaW9ucyBwcm9wZXJseSB3aGVu
CisgICAgICAgIHRoZSBzZXNzaW9uIHJlc3RvcmUgZmVhdHVyZSByZXN0b3JlcyBhIHBhZ2Ugd2l0
aCBzZWxlY3RlZCBmaWxlcy4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1m
aWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA4LTEwICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLCByZWJhc2VsaW5pbmcgYWZ0ZXIg
cjEyNTE2Ny4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3Rl
ZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDU2NTc5ZTNiMTg1ZmQyODBjZWFjMGE1ZWU3MTcyMGM4MmQ2YzNhOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1m
aWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVz
dHMgdGhhdCBzZWxlY3RlZCBmaWxlcyBpbiBmaWxlIGlucHV0IGVsZW1lbnRzIGFyZSBjb3JyZWN0
bHkgcmV0cmlldmVkIGJ5IEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgor
CisKKworUEFTUyAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQt
ZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
bGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y3
MzBiMzM0YjIyZWViOTg2NzRjYzhkYzNmZDg2ODQ5MGQyZGRlZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnkt
c3RhdGUuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitmdW5jdGlvbiBv
bkxvYWQoKSB7CisgICAgc2V0VGltZW91dChydW5UZXN0LCAwKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIHdpbmRvdy5pbnRlcm5hbHMuJyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB2YXIgb25DaGFuZ2VGaXJlZCA9IDA7CisgICAgdmFyIGlucHV0MSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlaW5wdXQxJyk7CisgICAgaW5wdXQxLm9uY2hh
bmdlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICsrb25DaGFuZ2VGaXJlZDsKKyAgICB9OworICAg
IHZhciBpbnB1dDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZWlucHV0MicpOworICAg
IGlucHV0Mi5vbmNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICArK29uQ2hhbmdlRmlyZWQ7
CisgICAgfTsKKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbJy9ob21lL3Vz
ZXIvdGVzdGZpbGUudHh0J10pOworICAgIHZhciBjZW50ZXJYID0gaW5wdXQxLm9mZnNldExlZnQg
KyBpbnB1dDEub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gaW5wdXQxLm9mZnNl
dFRvcCArIGlucHV0MS5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKGNlbnRlclgsIGNlbnRlclkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAg
IGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbJy9ob21lL3VzZXIvdGVzdGZpbGUyLnR4
dCddKTsKKyAgICBjZW50ZXJYID0gaW5wdXQyLm9mZnNldExlZnQgKyBpbnB1dDIub2Zmc2V0V2lk
dGggLyAyOworICAgIGNlbnRlclkgPSBpbnB1dDIub2Zmc2V0VG9wICsgaW5wdXQyLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgaWYgKG9uQ2hhbmdlRmlyZWQgIT0g
MikgeworICAgICAgICB0ZXN0RmFpbGVkKCdvbmNoYW5nZSBmaXJlZCB1bmV4cGVjdGVkIHRpbWVz
OiAnICsgb25DaGFuZ2VGaXJlZCk7CisgICAgfQorCisgICAgdmFyIGZpbGVzID0gaW50ZXJuYWxz
LmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKTsKKyAgICBpZiAoZmlsZXMubGVuZ3RoID09IDIgJiYK
KyAgICAgICAgKChmaWxlc1swXSA9PSAnL2hvbWUvdXNlci90ZXN0ZmlsZS50eHQnICYmIGZpbGVz
WzFdID09ICcvaG9tZS91c2VyL3Rlc3RmaWxlMi50eHQnKSB8fAorICAgICAgICAgKGZpbGVzWzFd
ID09ICcvaG9tZS91c2VyL3Rlc3RmaWxlLnR4dCcgJiYgZmlsZXNbMF0gPT0gJy9ob21lL3VzZXIv
dGVzdGZpbGUyLnR4dCcpKSkgeworICAgICAgICB0ZXN0UGFzc2VkKCcnKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICB0ZXN0RmFpbGVkKCdVbmV4cGVjdGVkIGZpbGVzOiAnICsgZmlsZXMpOworICAg
IH0KKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0IHNlbGVjdGVk
IGZpbGVzIGluIGZpbGUgaW5wdXQgZWxlbWVudHMgYXJlIGNvcnJlY3RseSByZXRyaWV2ZWQgYnkg
Rm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMuPC9wPgorPGRpdiBpZD0iY29u
dGFpbmVyIj4KKzxmb3JtIGlkPSJmb3JtMSI+Cis8aW5wdXQgaWQ9ImZpbGVpbnB1dDEiIHR5cGU9
ImZpbGUiIC8+Cis8L2Zvcm0+Cis8Zm9ybSBpZD0iZm9ybTIiPgorPGlucHV0IGlkPSJmaWxlaW5w
dXQyIiB0eXBlPSJmaWxlIiAvPgorPC9mb3JtPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA0YzZjM2U5NzNhYjU2OGE4MzQ3MDgwMTc3NTBiNDFkNTk4MDFkZmIyLi4wYjg1
ZjQ4MzM3ZDQwZjRkOTQwMTgwMWY5ZWI1MmJmM2M3YzEyYTViIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDgtMTQgIE1hcmphIEjD
tmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZvcm1Db250cm9sbGVyLCBX
ZWJIaXN0b3J5SXRlbTogRW5hYmxlIHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9tIGRv
Y3VtZW50IHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNo
LCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAo
T09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogRXhw
b3J0ZWQgRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMgYW5kIEhpc3RvcnlD
b250cm9sbGVyOjpzYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZS4KKwogMjAxMi0wOC0wOSAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NNYWtl
XSBCdW1wIG1pbmltdW0gcmVxdWlyZWQgdmVyc2lvbiB0byAyLjguMy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158333</attachid>
            <date>2012-08-14 08:07:24 -0700</date>
            <delta_ts>2012-08-16 01:14:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120814170651.patch</filename>
            <type>text/plain</type>
            <size>26625</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg4NjdmNWIwNDU5OWI2
OGE3ODNhZTU5NjY5ZTNiZWFmM2Q5Zjc3Ni4uNTM1NzU4NjQ5NDQwOWE0M2ZhYTk0OWRjNWFmODBm
MWY3YzY3N2Q1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA4LTE0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxl
ciwgRmlsZUlucHV0VHlwZTogRW5hYmxlIHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9t
IGRvY3VtZW50IHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMgQ2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlz
c2lvbnMgcHJvcGVybHkgd2hlbgorICAgICAgICB0aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUg
cmVzdG9yZXMgYSBwYWdlIHdpdGggc2VsZWN0ZWQgZmlsZXMuCisKKyAgICAgICAgVGVzdDogZmFz
dC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0ZWQgRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVy
ZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzRnJvbUZvcm1Db250cm9sU3RhdGUpOiBB
ZGRlZC4gRXh0cmFjdHMgRmlsZUNob29zZXJGaWxlSW5mb3MgZnJvbSBhIEZvcm1Db250cm9sU3Rh
dGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6
OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKTogUmVmYWN0b3JlZCB0byB1c2UgZmlsZXNGcm9tRm9y
bUNvbnRyb2xTdGF0ZS4KKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAg
KEZpbGVJbnB1dFR5cGUpOiBBZGRlZCBmaWxlc0Zyb21Gb3JtQ29udHJvbFN0YXRlLgorICAgICAg
ICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoU2F2ZWRGb3JtU3RhdGUpOiBB
ZGRlZCBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3Jt
U3RhdGU6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBBZGRlZC4gRXh0cmFjdHMgc2VsZWN0ZWQg
ZmlsZSBwYXRocyBmcm9tIFNhdmVkRm9ybVN0YXRlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6c2V0U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMp
OiBSZWZhY3RvcmVkIHRvIHVzZSBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yLgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBB
ZGRlZC4gU3RhdGljLiBFeHRyYWN0cyBzZWxlY3RlZCBmaWxlIHBhdGhzIGZyb20gYSBkb2N1bWVu
dCBzdGF0ZS4KKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChGb3Jt
Q29udHJvbGxlcik6IEFkZGVkIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMgYW5kIGZvcm1TdGF0ZXNG
cm9tU3RhdGVWZWN0b3IuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmZpbGVzRnJvbUZpbGVJbnB1dEZvcm1D
b250cm9sU3RhdGUpOiBBZGRlZC4gRGVsZWdhdGVzIHRvIEZpbGVJbnB1dFR5cGU6OmZpbGVzRnJv
bUZvcm1Db250cm9sU3RhdGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuaDogQWRkZWQgZmlsZXNGcm9tRmlsZUlucHV0Rm9ybUNvbnRyb2xTdGF0
ZS4KKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQ
YXRocyk6IENhbGxzIEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAg
KEludGVybmFscyk6IEFkZGVkIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaWRsOiBBZGRlZCBiaW5kaW5nIGZvciBnZXRSZWZlcmVuY2VkRmlsZVBh
dGhzLgorCiAyMDEyLTA4LTEwICBWaW5lZXQgQ2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNv
bT4KIAogICAgICAgICBNb3ZpbmcgdGhlIGNvbW1vbiBjb2RlIGZyb20gQ29kZWdlbmVyYXRvckpT
L1Y4LnBtIHRvIENvZGVnZW5lcmF0b3IucG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NDg2NDA1MmQyN2Q3N2E0MzRiNjA2NDFmYjY2Nzg5NzRhMjQ1YTY4Ni4uMGQzOWNlODZjOWRmNDM5
MzIyYTczNWFiZWJiNWIyYTE2MTRiMTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMi0wOC0xNCAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViSGlzdG9yeUl0ZW06IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVk
IGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIENocm9taXVtIHRvIHNl
dCB1cCBmaWxlIHBlcm1pc3Npb25zIHByb3Blcmx5IHdoZW4KKyAgICAgICAgdGhlIHNlc3Npb24g
cmVzdG9yZSBmZWF0dXJlIHJlc3RvcmVzIGEgcGFnZSB3aXRoIHNlbGVjdGVkIGZpbGVzLgorCisg
ICAgICAgICogcHVibGljL1dlYkhpc3RvcnlJdGVtLmg6CisgICAgICAgIChXZWJIaXN0b3J5SXRl
bSk6IEFkZGVkIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICogc3JjL1dlYkhpc3Rv
cnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGlzdG9yeUl0ZW06OmdldFJlZmVyZW5j
ZWRGaWxlUGF0aHMpOiBFeHRyYWN0cyBzZWxlY3RlZCBhbmQgcG9zdGVkIGZpbGUgcGF0aHMgZnJv
bSBhIGRvY3VtZW50IHN0YXRlLgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOC0xMCAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyNTIzMCBhbmQgcjEyNTIzOC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5YmQ1
OWI4MWYzY2U1YjI4YTg3NDFlM2M0YTZlZDRlNGViMWYxMzExLi5lN2U2ZTE0NDA5OGM4MGJmOTVi
ZDc2MmM2NDUyMmVkYzBlZDE5YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MDgtMTQgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZv
cm1Db250cm9sbGVyLCBXZWJIaXN0b3J5SXRlbTogRW5hYmxlIHJlYWRpbmcgc2VsZWN0ZWQgZmls
ZSBuYW1lcyBmcm9tIGRvY3VtZW50IHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMgQ2hyb21pdW0gdG8gc2V0IHVw
IGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkgd2hlbgorICAgICAgICB0aGUgc2Vzc2lvbiByZXN0
b3JlIGZlYXR1cmUgcmVzdG9yZXMgYSBwYWdlIHdpdGggc2VsZWN0ZWQgZmlsZXMuCisKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi5kZWY6IEV4cG9ydGVkIEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVu
Y2VkRmlsZVBhdGhzIGFuZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50QW5kU2Nyb2xs
U3RhdGUuCisKIDIwMTItMDgtMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIEhhbmRsZSBTU0wgZXJyb3JzIGZvciBTT1VQCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGJkY2ExMjkxZDZiOWE2NDMxYTVjYzI0MTliODAyNWYyZjMyODUyMTkuLmU5
MjI3ZWY2OWNiMDUzZjAwZmQ0N2VkYThjODQ4OWQ0ZTk1OWI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yNTMsNiArMjUzLDcgQEAgX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlckQyRXYK
IF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTdyZXBvcnRNZW1vcnlVc2FnZUVQTlNfMTZN
ZW1vcnlPYmplY3RJbmZvRQogX19aTjdXZWJDb3JlMTREb2N1bWVudFdyaXRlcjExc2V0RW5jb2Rp
bmdFUktOM1dURjZTdHJpbmdFYgogX19aTjdXZWJDb3JlMTRGaWxlSWNvbkxvYWRlcjE0bm90aWZ5
RmluaXNoZWRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNEljb25FRUUKK19fWk43V2ViQ29yZTE0Rm9y
bUNvbnRyb2xsZXIyMmdldFJlZmVyZW5jZWRGaWxlUGF0aHNFUktOM1dURjZWZWN0b3JJTlMxXzZT
dHJpbmdFTG0wRUVFCiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMTBzZXRGb2N1c2VkRWIK
IF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xMnNldFNlbGVjdGlvbkVSS05TXzE2VmlzaWJs
ZVNlbGVjdGlvbkVqTlMwXzE5Q3Vyc29yQWxpZ25PblNjcm9sbEVOU18xNVRleHRHcmFudWxhcml0
eUUKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xNXJldmVhbFNlbGVjdGlvbkVSS05TXzE1
U2Nyb2xsQWxpZ25tZW50RU5TXzE4UmV2ZWFsRXh0ZW50T3B0aW9uRQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAKaW5kZXggZDA4ZmUyNDUxNjNlZmQ4NjNiMDVlYzQxZGUyNTE4YzYy
YmIwOTRmZS4uZjc4OTZiYWI4NjViYjA3N2Q5ZTY5ODZhYTcwMmQ1ZjczY2JhNDQ3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC05Niw2ICs5NiwxOCBAQCBQYXNzT3du
UHRyPElucHV0VHlwZT4gRmlsZUlucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQpCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlSW5wdXRUeXBlKGVsZW1lbnQpKTsK
IH0KIAorVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IEZpbGVJbnB1dFR5cGU6OmZpbGVzRnJv
bUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCit7CisgICAg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RhdGUudmFsdWVTaXplKCk7IGkgKz0gMikgeworICAgICAgICBpZiAoIXN0YXRlW2kg
KyAxXS5pc0VtcHR5KCkpCisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxl
SW5mbyhzdGF0ZVtpXSwgc3RhdGVbaSArIDFdKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKHN0YXRlW2ldKSk7CisgICAgfQorICAg
IHJldHVybiBmaWxlczsKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBGaWxlSW5wdXRUeXBlOjpm
b3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBJbnB1dFR5cGVOYW1lczo6Zmls
ZSgpOwpAQCAtMTE4LDE0ICsxMzAsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlc3RvcmVGb3Jt
Q29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmIHN0YXRlKQogewogICAgIGlmIChz
dGF0ZS52YWx1ZVNpemUoKSAlIDIpCiAgICAgICAgIHJldHVybjsKLSAgICBWZWN0b3I8RmlsZUNo
b29zZXJGaWxlSW5mbz4gZmlsZXM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS52
YWx1ZVNpemUoKTsgaSArPSAyKSB7Ci0gICAgICAgIGlmICghc3RhdGVbaSArIDFdLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKHN0YXRlW2ld
LCBzdGF0ZVtpICsgMV0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmlsZXMuYXBwZW5k
KEZpbGVDaG9vc2VyRmlsZUluZm8oc3RhdGVbaV0pKTsKLSAgICB9Ci0gICAgZmlsZXNDaG9zZW4o
ZmlsZXMpOworICAgIGZpbGVzQ2hvc2VuKGZpbGVzRnJvbUZvcm1Db250cm9sU3RhdGUoc3RhdGUp
KTsKIH0KIAogYm9vbCBGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3Qm
IGVuY29kaW5nLCBib29sIG11bHRpcGFydCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmgKaW5kZXggOTAzNjM5ZWMwOWEzMWI2MzFmNGRiYzM4Mzk4MTQyZTEzNzZmODMyMS4uMTBh
Y2RlNzAyZDgxOGQ4NjFkZmE5ZjJiNDVlNWMzYWIzZmQwNTY1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRmlsZUxpc3Q7CiBjbGFzcyBG
aWxlSW5wdXRUeXBlIDogcHVibGljIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLCBwcml2
YXRlIEZpbGVDaG9vc2VyQ2xpZW50LCBwcml2YXRlIEZpbGVJY29uTG9hZGVyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50Kik7CisgICAgc3RhdGljIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlc0Zy
b21Gb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKIAogcHJpdmF0ZToK
ICAgICBGaWxlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5jcHAKaW5kZXggNWUzOWZlMjI5MzliNzQ5NDBlYzU0NDk0MTY4ZWQ5YzUy
ODliYzk3ZC4uZTM1ZWZmMTllMTliYTljNWU1ZDE1YzgwMmI2YmI5ZmU0NTQxYTQ2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIxLDggKzIxLDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUg
IkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZS5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE4MCw2ICsxODIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRD
b250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKICAgICBGb3JtQ29udHJvbFN0YXRlIHRh
a2VDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUpOwogCisgICAgVmVjdG9yPFN0cmluZz4gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIFNhdmVkRm9ybVN0YXRlKCkgOiBtX2NvbnRyb2xTdGF0
ZUNvdW50KDApIHsgfQogCkBAIC0yNjMsNiArMjY3LDIzIEBAIEZvcm1Db250cm9sU3RhdGUgU2F2
ZWRGb3JtU3RhdGU6OnRha2VDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCitWZWN0b3I8U3RyaW5nPiBTYXZlZEZvcm1TdGF0
ZTo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0Cit7CisgICAgVmVjdG9yPFN0cmluZz4g
dG9SZXR1cm47CisgICAgZm9yIChGb3JtRWxlbWVudFN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMuYmVnaW4oKTsgaXQgIT0gbV9zdGF0ZUZvck5l
d0Zvcm1FbGVtZW50cy5lbmQoKTsgKytpdCkgeworICAgICAgICBjb25zdCBGb3JtRWxlbWVudEtl
eSYga2V5ID0gaXQtPmZpcnN0OworICAgICAgICBpZiAoQXRvbWljU3RyaW5nKGtleS50eXBlKCkp
ICE9IEF0b21pY1N0cmluZygiZmlsZSIpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGNvbnN0IERlcXVlPEZvcm1Db250cm9sU3RhdGU+JiBxdWV1ZSA9IGl0LT5zZWNvbmQ7CisgICAg
ICAgIGZvciAoRGVxdWU8Rm9ybUNvbnRyb2xTdGF0ZT46OmNvbnN0X2l0ZXJhdG9yIHF1ZUl0ZXJh
dG9yID0gcXVldWUuYmVnaW4oKTsgcXVlSXRlcmF0b3IgIT0gcXVldWUuZW5kKCk7ICsrcXVlSXRl
cmF0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYg
c2VsZWN0ZWRGaWxlcyA9IEhUTUxJbnB1dEVsZW1lbnQ6OmZpbGVzRnJvbUZpbGVJbnB1dEZvcm1D
b250cm9sU3RhdGUoKnF1ZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2VsZWN0ZWRGaWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICB0b1JldHVy
bi5hcHBlbmQoc2VsZWN0ZWRGaWxlc1tpXS5wYXRoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gdG9SZXR1cm47Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgRm9y
bUtleUdlbmVyYXRvciB7CkBAIC00MDgsMjMgKzQyOSw3IEBAIFZlY3RvcjxTdHJpbmc+IEZvcm1D
b250cm9sbGVyOjpmb3JtRWxlbWVudHNTdGF0ZSgpIGNvbnN0CiAKIHZvaWQgRm9ybUNvbnRyb2xs
ZXI6OnNldFN0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0
ZVZlY3RvcikKIHsKLSAgICBtX2Zvcm1FbGVtZW50c1dpdGhTdGF0ZS5jbGVhcigpOwotCi0gICAg
c2l6ZV90IGkgPSAwOwotICAgIGlmIChzdGF0ZVZlY3Rvci5zaXplKCkgPCAxIHx8IHN0YXRlVmVj
dG9yW2krK10gIT0gZm9ybVN0YXRlU2lnbmF0dXJlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHdoaWxlIChpICsgMSA8IHN0YXRlVmVjdG9yLnNpemUoKSkgewotICAgICAgICBBdG9taWNTdHJp
bmcgZm9ybUtleSA9IHN0YXRlVmVjdG9yW2krK107Ci0gICAgICAgIE93blB0cjxTYXZlZEZvcm1T
dGF0ZT4gc3RhdGUgPSBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoc3RhdGVWZWN0b3IsIGkp
OwotICAgICAgICBpZiAoIXN0YXRlKSB7Ci0gICAgICAgICAgICBpID0gMDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIG1fc2F2ZWRGb3JtU3RhdGVNYXAuYWRkKGZvcm1L
ZXkuaW1wbCgpLCBzdGF0ZS5yZWxlYXNlKCkpOwotICAgIH0KLSAgICBpZiAoaSAhPSBzdGF0ZVZl
Y3Rvci5zaXplKCkpCi0gICAgICAgIG1fc2F2ZWRGb3JtU3RhdGVNYXAuY2xlYXIoKTsKKyAgICBm
b3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKHN0YXRlVmVjdG9yLCBtX3NhdmVkRm9ybVN0YXRlTWFw
KTsKIH0KIAogRm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9y
bUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYgY29udHJvbCkK
QEAgLTQ0Miw2ICs0NDcsMjcgQEAgRm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJvbGxlcjo6dGFr
ZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWwKICAgICByZXR1cm4g
c3RhdGU7CiB9CiAKK3ZvaWQgRm9ybUNvbnRyb2xsZXI6OmZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0
b3IoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yLCBTYXZlZEZvcm1TdGF0ZU1hcCYg
bWFwKQoreworICAgIG1hcC5jbGVhcigpOworCisgICAgc2l6ZV90IGkgPSAwOworICAgIGlmIChz
dGF0ZVZlY3Rvci5zaXplKCkgPCAxIHx8IHN0YXRlVmVjdG9yW2krK10gIT0gZm9ybVN0YXRlU2ln
bmF0dXJlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlIChpICsgMSA8IHN0YXRlVmVj
dG9yLnNpemUoKSkgeworICAgICAgICBBdG9taWNTdHJpbmcgZm9ybUtleSA9IHN0YXRlVmVjdG9y
W2krK107CisgICAgICAgIE93blB0cjxTYXZlZEZvcm1TdGF0ZT4gc3RhdGUgPSBTYXZlZEZvcm1T
dGF0ZTo6ZGVzZXJpYWxpemUoc3RhdGVWZWN0b3IsIGkpOworICAgICAgICBpZiAoIXN0YXRlKSB7
CisgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIG1hcC5hZGQoZm9ybUtleS5pbXBsKCksIHN0YXRlLnJlbGVhc2UoKSk7CisgICAgfQorICAg
IGlmIChpICE9IHN0YXRlVmVjdG9yLnNpemUoKSkKKyAgICAgICAgbWFwLmNsZWFyKCk7Cit9CisK
IHZvaWQgRm9ybUNvbnRyb2xsZXI6OndpbGxEZWxldGVGb3JtKEhUTUxGb3JtRWxlbWVudCogZm9y
bSkKIHsKICAgICBpZiAobV9mb3JtS2V5R2VuZXJhdG9yKQpAQCAtNDc5LDUgKzUwNSwxNCBAQCB2
b2lkIEZvcm1Db250cm9sbGVyOjpyZXN0b3JlQ29udHJvbFN0YXRlSW4oSFRNTEZvcm1FbGVtZW50
JiBmb3JtKQogICAgIH0KIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorVmVjdG9yPFN0cmlu
Zz4gRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHN0YXRlVmVjdG9yKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0dXJuOworICAg
IFNhdmVkRm9ybVN0YXRlTWFwIG1hcDsKKyAgICBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKHN0
YXRlVmVjdG9yLCBtYXApOworICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKKyAgICAgICAgdG9S
ZXR1cm4uYXBwZW5kKGl0LT5zZWNvbmQtPmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSk7CisgICAg
cmV0dXJuIHRvUmV0dXJuOworfQogCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Db250cm9sbGVyLmgKaW5kZXggNWQzNzQ4ZDBlZTU4ZTMxMjExZDI5YmQ4ZTA1MTEw
ZWYxOWI0ZmM2Yi4uMDQwMmIyY2QxNzgzYzQyMjU5ZWZkODczYWU5YjY2NGYyMzQ2ODhmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaApAQCAtOTIsNiArOTIsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXN0b3JlQ29udHJvbFN0YXRlRm9yKEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVDb250cm9sU3RhdGVJbihIVE1MRm9ybUVsZW1l
bnQmKTsKIAorICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvcik7CisKIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKiwgNjQ+IEZv
cm1FbGVtZW50TGlzdEhhc2hTZXQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiwgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiA+IFNhdmVkRm9ybVN0YXRlTWFwOwpA
QCAtOTksNiArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBGb3JtQ29udHJvbGxlcigpOwogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFNhdmVkRm9ybVN0YXRlTWFwPiBjcmVhdGVTYXZlZEZvcm1TdGF0ZU1h
cChjb25zdCBGb3JtRWxlbWVudExpc3RIYXNoU2V0Jik7CiAgICAgRm9ybUNvbnRyb2xTdGF0ZSB0
YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlJik7CisgICAgc3RhdGljIHZvaWQgZm9ybVN0YXRlc0Zyb21TdGF0ZVZlY3Rvcihjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIFNhdmVkRm9ybVN0YXRlTWFwJik7CiAKICAgICBDaGVja2VkUmFkaW9C
dXR0b25zIG1fY2hlY2tlZFJhZGlvQnV0dG9uczsKICAgICBGb3JtRWxlbWVudExpc3RIYXNoU2V0
IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKaW5kZXggZTA3MDY3YzY2ZGNmMzNjZjQ3NTlkM2Y4MTE0ZWRiNjU0NTY4MTc2My4u
OThkMTE4ZDIzNTFlOGZlZmEyMWNjYWY5MGQ1MTg4ODZkODU2ZGRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkZpbGVJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5o
IgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTE2
MCw2ICsxNjEsMTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MSW5wdXRFbGVtZW50OjpuYW1l
KCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lLmlzTnVsbCgpID8gZW1wdHlBdG9tIDogbV9uYW1l
OwogfQogCitWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gSFRNTElucHV0RWxlbWVudDo6Zmls
ZXNGcm9tRmlsZUlucHV0Rm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBz
dGF0ZSkKK3sKKyAgICByZXR1cm4gRmlsZUlucHV0VHlwZTo6ZmlsZXNGcm9tRm9ybUNvbnRyb2xT
dGF0ZShzdGF0ZSk7Cit9CisKIEhUTUxFbGVtZW50KiBIVE1MSW5wdXRFbGVtZW50Ojpjb250YWlu
ZXJFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmNvbnRhaW5lckVs
ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZGMzMjE1
OWYyNTM5MGMyZDJjYTdiNmUyOGQzMmJiNTc0OGU3ZGIyMC4uOGEwZTRkNGI3MmE5MmM2OGE4MThj
MmRjMTdkMjVhMjQ2ODIzYWRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgSFRNTElucHV0RWxlbWVudF9oCiAjZGVmaW5l
IEhUTUxJbnB1dEVsZW1lbnRfaAogCisjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRl
ICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCkBAIC0yNzcsNiArMjc4LDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCBPVkVSUklE
RTsKIAorICAgIHN0YXRpYyBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXNGcm9tRmls
ZUlucHV0Rm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJik7CisKIHByb3Rl
Y3RlZDoKICAgICBIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCosIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCA2YWFhN2YxNzI4NzU3YTFlNGJjMDRhN2Q5OTFjMzNmNjkyZWIyNzQyLi4xMGVjYWNjNDkwNWQy
MzMyMGM0MWJjNmFiOTI1YmU1OWM1ZTM1MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW50ZXJuYWxzLmgiCiAKKyNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKICNp
bmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIkVs
ZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmFz
dE1hbGxvY1N0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRl
bnRFbGVtZW50LmgiCkBAIC0xMTg4LDQgKzExOTAsMTQgQEAgUGFzc1JlZlB0cjxGYXN0TWFsbG9j
U3RhdGlzdGljcz4gSW50ZXJuYWxzOjpmYXN0TWFsbG9jU3RhdGlzdGljcygpIGNvbnN0CiAgICAg
cmV0dXJuIEZhc3RNYWxsb2NTdGF0aXN0aWNzOjpjcmVhdGUoKTsKIH0KIAorUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiBJbnRlcm5hbHM6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdAor
eworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBzdHJpbmdMaXN0ID0gRE9NU3RyaW5nTGlzdDo6
Y3JlYXRlKCk7CisgICAgZnJhbWUoKS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+c2F2ZURvY3VtZW50
QW5kU2Nyb2xsU3RhdGUoKTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzID0g
Rm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoZnJhbWUoKS0+bG9hZGVyKCkt
Pmhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKS0+ZG9jdW1lbnRTdGF0ZSgpKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZpbGVQYXRocy5zaXplKCk7ICsraSkKKyAgICAgICAgc3RyaW5nTGlz
dC0+YXBwZW5kKGZpbGVQYXRoc1tpXSk7CisgICAgcmV0dXJuIHN0cmluZ0xpc3QucmVsZWFzZSgp
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAxNTc2NjJjM2RlNmI0
ZWQxNDRhMjk5OTgzNjAzY2NlYjY0MDBhYmRlLi40YTg2NjVjYjUyNWEyNDBkZGExN2E3YzE5ZTFk
NGYxYTM5NDY1ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIxMCw2ICsy
MTAsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPEZhc3RNYWxsb2NTdGF0aXN0aWNzPiBm
YXN0TWFsbG9jU3RhdGlzdGljcygpIGNvbnN0OwogCisgICAgUGFzc1JlZlB0cjxET01TdHJpbmdM
aXN0PiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVu
dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDYwMWU4YTc0
ZjlmMTBkMjRlNDE4ZjEzODMzODZlMDU3ZjU4YTA0YmYuLjc3MWNjNTExZDc4OWE0NDkzMjg5N2Uw
OWQyZTAxM2I3N2I0ZmZlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTE4Niw2ICsxODYsOCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgdm9pZCByZW1vdmVVUkxT
Y2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koaW4gRE9NU3Ry
aW5nIHNjaGVtZSk7CiAKICAgICAgICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0
YXRpc3RpY3MoKTsKKworICAgICAgICBET01TdHJpbmdbXSBnZXRSZWZlcmVuY2VkRmlsZVBhdGhz
KCk7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhp
c3RvcnlJdGVtLmgKaW5kZXggMDE1YTc5YmViZmZlODQ5YTAyZmJjYWE2M2I0N2Y5ZGI3NzQxN2Vm
ZC4uMmM0MTZmODI3ZTg0ODY1YjM4NjA1MDkwYTE2OWEyZmJhOTJjMzYxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oCkBAIC0xMjQsNiArMTI0
LDggQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBX
ZWJWZWN0b3I8V2ViSGlzdG9yeUl0ZW0+Jik7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVu
ZFRvQ2hpbGRyZW4oY29uc3QgV2ViSGlzdG9yeUl0ZW0mKTsKIAorICAgIFdFQktJVF9FWFBPUlQg
V2ViVmVjdG9yPFdlYlN0cmluZz4gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0OworCiAj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSGlzdG9yeUl0ZW0oY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYpOwogICAgIFdlYkhpc3RvcnlJdGVtJiBv
cGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IGRi
MzUzMTdhZDk4M2NkZDY5ZDlkMDY1NTI2NTVmMmMxZjk5NDM2NzAuLjMxZDJiZDU2NGQ5MDE5Y2I3
ZmIwMTg1YjVlZmJjMzM0YWJmZTA2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgogCisjaW5jbHVkZSAiRm9ybUNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAj
aW5jbHVkZSAiS1VSTC5oIgpAQCAtMjg3LDYgKzI4OCwyMyBAQCB2b2lkIFdlYkhpc3RvcnlJdGVt
OjphcHBlbmRUb0NoaWxkcmVuKGNvbnN0IFdlYkhpc3RvcnlJdGVtJiBpdGVtKQogICAgIG1fcHJp
dmF0ZS0+YWRkQ2hpbGRJdGVtKGl0ZW0pOwogfQogCitXZWJWZWN0b3I8V2ViU3RyaW5nPiBXZWJI
aXN0b3J5SXRlbTo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0Cit7CisgICAgVmVjdG9y
PFdlYlN0cmluZz4gZmlsZVBhdGhzOworICAgIGNvbnN0IEZvcm1EYXRhKiBmb3JtRGF0YSA9IG1f
cHJpdmF0ZS0+Zm9ybURhdGEoKTsKKyAgICBpZiAoZm9ybURhdGEpIHsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50ID0gZm9ybURhdGEtPmVsZW1l
bnRzKClbaV07CisgICAgICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVt
ZW50OjplbmNvZGVkRmlsZSkKKyAgICAgICAgICAgICAgICBmaWxlUGF0aHMuYXBwZW5kKGVsZW1l
bnQubV9maWxlbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNlbGVjdGVkRmlsZVBhdGhzID0gV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmdldFJlZmVy
ZW5jZWRGaWxlUGF0aHMobV9wcml2YXRlLT5kb2N1bWVudFN0YXRlKCkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWxlUGF0aHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGZp
bGVQYXRocy5hcHBlbmQoc2VsZWN0ZWRGaWxlUGF0aHNbaV0pOworICAgIHJldHVybiBmaWxlUGF0
aHM7Cit9CisKIFdlYkhpc3RvcnlJdGVtOjpXZWJIaXN0b3J5SXRlbShjb25zdCBQYXNzUmVmUHRy
PEhpc3RvcnlJdGVtPiYgaXRlbSkKICAgICA6IG1fcHJpdmF0ZShpdGVtKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmCmluZGV4IGRlYTM2ZWQ5MDI5YWViMjJkNTVhYzczMTc3YTlmY2U0ZTI4NTk0OTIu
LjQ2MDUyMGI2YmQ4YzlmY2UzM2VhYmFmNmUxMDI2NGYzMTUxMTg2NjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYKQEAgLTE4MSw2ICsxODEsNyBAQCBFWFBPUlRTCiAgICAgICAgID9nZXRFbGVtZW50
QnlJZEBUcmVlU2NvcGVAV2ViQ29yZUBAUUJFUEFWRWxlbWVudEAyQEFCVkF0b21pY1N0cmluZ0BX
VEZAQEBaCiAgICAgICAgID9nZXRIaWdobGlnaHRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3Jl
QEBRQkVYUEFVSGlnaGxpZ2h0QDJAQFoKICAgICAgICAgP2dldExvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWRWxlbWVudEAyQFBCVlJhbmdlQDJA
QUFJMkBaCisgICAgICAgID9nZXRSZWZlcmVuY2VkRmlsZVBhdGhzQEZvcm1Db250cm9sbGVyQFdl
YkNvcmVAQFNBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBBQlYzNEBAWgogICAg
ICAgICA/aW5wdXRUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNWUXVhbGlmaWVkTmFtZUAyQEIKICAg
ICAgICAgP2luc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlQEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkBXZWJDb3JlQEBDQVBBVkluc3RydW1lbnRpbmdBZ2VudHNAMkBQQVZQYWdlQDJAQFoKICAgICAg
ICAgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBCVk5vZGVAMUBAWgpAQCAt
MjA3LDYgKzIwOCw3IEBAIEVYUE9SVFMKICAgICAgICAgP3JlbW92ZWRMYXN0UmVmQE5vZGVAV2Vi
Q29yZUBAQUFFWFhaCiAgICAgICAgID9yZXZlcnNlRmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSV9X
SUBaCiAgICAgICAgID9zX2Zyb250ZW5kQ291bnRlckBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25A
V2ViQ29yZUBAMEhBCisgICAgICAgID9zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZUBIaXN0b3J5
Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEAyQFhaCiAgICAgICAgID9zY3JpcHROYW1lVG9Db2RlQFdlYkNvcmVAQFlBP0FXNFVTY3JpcHRD
b2RlQEBBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/c2Nyb2xsRWxlbWVudFRvUmVjdEBGcmFt
ZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCmluZGV4IDgyZmZjMmU5YTRjNDMzYmM4ODg2NGFmNTNiMzllZmMzMjA4ZmQw
MDAuLjhkZjE2MzViNTcwZGU1MzBkODcxMjNiOTc3YmVmMWU5OTZlNmYxNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgpAQCAtNTksNiArNTksNyBAQCBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExp
c3RDMUVSS04zV1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxqMEVFRTsKIF9aTjdXZWJDb3JlMTRD
bGllbnRSZWN0TGlzdEMxRVJLTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTG0wRUVFOwogX1pO
N1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdjsKIF9aTjdXZWJDb3JlMTRDbGllbnRSZWN0TGlz
dEQxRXY7CitfWk43V2ViQ29yZTE0Rm9ybUNvbnRyb2xsZXIyMmdldFJlZmVyZW5jZWRGaWxlUGF0
aHNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0wRUVFOwogX1pON1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uMTlhYnNvbHV0ZUNhcmV0Qm91bmRzRXY7CiBfWk43V2ViQ29yZTE0U2NoZW1lUmVn
aXN0cnk0OXJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3lF
UktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5NTdyZW1vdmVVUkxT
Y2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3lFUktOM1dURjZT
dHJpbmdFOwpAQCAtNjksNiArNzAsNyBAQCBfWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE1
c2V0RWRpdGluZ1ZhbHVlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3JlMTZqc1N0cmluZ1Ns
b3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0ltcGxF
TlMwXzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfN1B0ckhhc2hJUzZfRUVOUzNfMTBIYXNoVHJh
aXRzSVM2X0VFTlNDX0lTOV9FRUVFUzZfOwogX1pON1dlYkNvcmUxNnNjcmlwdE5hbWVUb0NvZGVF
UktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0U7CitfWk43
V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIyNnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlRXY7
CiBfWk43V2ViQ29yZTE3SW5zcGVjdG9yQ291bnRlcnMxMmNvdW50ZXJWYWx1ZUVOUzBfMTFDb3Vu
dGVyVHlwZUU7CiBfWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERv
Y3VtZW50RTsKIF9aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMzlzZXRSZXNvdXJjZXNE
YXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGEzNDQ0ZDM4MDVkOGNjMzQ0
MWExMzEyOWRhODc5ZWU2MmJlMzFmYS4uOTFlZTU0Y2MyNzU0MDk3ZDI3OTU1ZGVkNWUzZjAyZjA5
ODJhZTM4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTE0ICBNYXJqYSBIw7ZsdHTD
pCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxlcjogRW5hYmxl
IHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9tIGRvY3VtZW50IHN0YXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJs
ZXMgQ2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkgd2hlbgorICAg
ICAgICB0aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUgcmVzdG9yZXMgYSBwYWdlIHdpdGggc2Vs
ZWN0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMt
ZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sOiBBZGRlZC4K
KwogMjAxMi0wOC0xMCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZywgcmViYXNlbGluaW5nIGFmdGVyIHIxMjUx
NjcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmls
ZXMtZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1NjU3OWUzYjE4NWZkMjgwY2VhYzBhNWVlNzE3MjBjODJkNmMzYTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMt
ZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIHRo
YXQgc2VsZWN0ZWQgZmlsZXMgaW4gZmlsZSBpbnB1dCBlbGVtZW50cyBhcmUgY29ycmVjdGx5IHJl
dHJpZXZlZCBieSBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocy4KKworCisK
K1BBU1MgCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVz
LWZyb20taGlzdG9yeS1zdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3Nl
bGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNzMwYjMz
NGIyMmVlYjk4Njc0Y2M4ZGMzZmQ4Njg0OTBkMmRkZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRl
Lmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworZnVuY3Rpb24gb25Mb2Fk
KCkgeworICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ1Ro
aXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdmFyIG9uQ2hhbmdlRmlyZWQgPSAwOworICAgIHZhciBpbnB1dDEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZWlucHV0MScpOworICAgIGlucHV0MS5vbmNoYW5nZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICArK29uQ2hhbmdlRmlyZWQ7CisgICAgfTsKKyAgICB2YXIg
aW5wdXQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVpbnB1dDInKTsKKyAgICBpbnB1
dDIub25jaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgKytvbkNoYW5nZUZpcmVkOworICAg
IH07CisKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWycvaG9tZS91c2VyL3Rl
c3RmaWxlLnR4dCddKTsKKyAgICB2YXIgY2VudGVyWCA9IGlucHV0MS5vZmZzZXRMZWZ0ICsgaW5w
dXQxLm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGlucHV0MS5vZmZzZXRUb3Ag
KyBpbnB1dDEub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhj
ZW50ZXJYLCBjZW50ZXJZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBldmVu
dFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWycvaG9tZS91c2VyL3Rlc3RmaWxlMi50eHQnXSk7
CisgICAgY2VudGVyWCA9IGlucHV0Mi5vZmZzZXRMZWZ0ICsgaW5wdXQyLm9mZnNldFdpZHRoIC8g
MjsKKyAgICBjZW50ZXJZID0gaW5wdXQyLm9mZnNldFRvcCArIGlucHV0Mi5vZmZzZXRIZWlnaHQg
LyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIGlmIChvbkNoYW5nZUZpcmVkICE9IDIpIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgnb25jaGFuZ2UgZmlyZWQgdW5leHBlY3RlZCB0aW1lczogJyAr
IG9uQ2hhbmdlRmlyZWQpOworICAgIH0KKworICAgIHZhciBmaWxlcyA9IGludGVybmFscy5nZXRS
ZWZlcmVuY2VkRmlsZVBhdGhzKCk7CisgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAyICYmCisgICAg
ICAgICgoZmlsZXNbMF0gPT0gJy9ob21lL3VzZXIvdGVzdGZpbGUudHh0JyAmJiBmaWxlc1sxXSA9
PSAnL2hvbWUvdXNlci90ZXN0ZmlsZTIudHh0JykgfHwKKyAgICAgICAgIChmaWxlc1sxXSA9PSAn
L2hvbWUvdXNlci90ZXN0ZmlsZS50eHQnICYmIGZpbGVzWzBdID09ICcvaG9tZS91c2VyL3Rlc3Rm
aWxlMi50eHQnKSkpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnJyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZCBmaWxlczogJyArIGZpbGVzKTsKKyAgICB9Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCBzZWxlY3RlZCBmaWxl
cyBpbiBmaWxlIGlucHV0IGVsZW1lbnRzIGFyZSBjb3JyZWN0bHkgcmV0cmlldmVkIGJ5IEZvcm1D
b250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLjwvcD4KKzxkaXYgaWQ9ImNvbnRhaW5l
ciI+Cis8Zm9ybSBpZD0iZm9ybTEiPgorPGlucHV0IGlkPSJmaWxlaW5wdXQxIiB0eXBlPSJmaWxl
IiAvPgorPC9mb3JtPgorPGZvcm0gaWQ9ImZvcm0yIj4KKzxpbnB1dCBpZD0iZmlsZWlucHV0MiIg
dHlwZT0iZmlsZSIgLz4KKzwvZm9ybT4KKzwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggNGM2YzNlOTczYWI1NjhhODM0NzA4MDE3NzUwYjQxZDU5ODAxZGZiMi4uNGQ2N2ZhNzZj
MzE3NTk4YjgzOWNhODcwZWNiZTQ4ZmQ0N2IyMjU0MiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTE0ICBNYXJqYSBIw7ZsdHTD
pCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxlciwgV2ViSGlz
dG9yeUl0ZW06IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVu
dCBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTEyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBlbmFibGVzIENocm9taXVtIHRvIHNldCB1cCBmaWxlIHBlcm1pc3Npb25zIHBy
b3Blcmx5IHdoZW4KKyAgICAgICAgdGhlIHNlc3Npb24gcmVzdG9yZSBmZWF0dXJlIHJlc3RvcmVz
IGEgcGFnZSB3aXRoIHNlbGVjdGVkIGZpbGVzLgorCisgICAgICAgICogU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcjogRXhwb3J0ZWQgRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRG
aWxlUGF0aHMgYW5kIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0
ZS4KKwogMjAxMi0wOC0wOSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW0NNYWtlXSBCdW1wIG1pbmltdW0gcmVxdWlyZWQgdmVyc2lvbiB0byAy
LjguMy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158744</attachid>
            <date>2012-08-16 01:14:45 -0700</date>
            <delta_ts>2012-08-16 01:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91231-20120816101410.patch</filename>
            <type>text/plain</type>
            <size>26575</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4NmFhNTIxN2E4MTBk
Mzg1Mzc5YjQ4YmE5M2RjOGQyMmIwMTlmOC4uNGJmMzRiYjhkNThmNDk2NGU1MzAxNjdmNWY5OWM1
M2NkNDQzOGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA4LTE0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxl
ciwgRmlsZUlucHV0VHlwZTogRW5hYmxlIHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9t
IGRvY3VtZW50IHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMgQ2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlz
c2lvbnMgcHJvcGVybHkgd2hlbgorICAgICAgICB0aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUg
cmVzdG9yZXMgYSBwYWdlIHdpdGggc2VsZWN0ZWQgZmlsZXMuCisKKyAgICAgICAgVGVzdDogZmFz
dC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0ZWQgRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVy
ZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzRnJvbUZvcm1Db250cm9sU3RhdGUpOiBB
ZGRlZC4gRXh0cmFjdHMgRmlsZUNob29zZXJGaWxlSW5mb3MgZnJvbSBhIEZvcm1Db250cm9sU3Rh
dGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6
OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKTogUmVmYWN0b3JlZCB0byB1c2UgZmlsZXNGcm9tRm9y
bUNvbnRyb2xTdGF0ZS4KKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAg
KEZpbGVJbnB1dFR5cGUpOiBBZGRlZCBmaWxlc0Zyb21Gb3JtQ29udHJvbFN0YXRlLgorICAgICAg
ICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoU2F2ZWRGb3JtU3RhdGUpOiBB
ZGRlZCBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3Jt
U3RhdGU6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBBZGRlZC4gRXh0cmFjdHMgc2VsZWN0ZWQg
ZmlsZSBwYXRocyBmcm9tIFNhdmVkRm9ybVN0YXRlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6c2V0U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMp
OiBSZWZhY3RvcmVkIHRvIHVzZSBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yLgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOiBB
ZGRlZC4gU3RhdGljLiBFeHRyYWN0cyBzZWxlY3RlZCBmaWxlIHBhdGhzIGZyb20gYSBkb2N1bWVu
dCBzdGF0ZS4KKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChGb3Jt
Q29udHJvbGxlcik6IEFkZGVkIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMgYW5kIGZvcm1TdGF0ZXNG
cm9tU3RhdGVWZWN0b3IuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmZpbGVzRnJvbUZpbGVJbnB1dEZvcm1D
b250cm9sU3RhdGUpOiBBZGRlZC4gRGVsZWdhdGVzIHRvIEZpbGVJbnB1dFR5cGU6OmZpbGVzRnJv
bUZvcm1Db250cm9sU3RhdGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuaDogQWRkZWQgZmlsZXNGcm9tRmlsZUlucHV0Rm9ybUNvbnRyb2xTdGF0
ZS4KKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQ
YXRocyk6IENhbGxzIEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAg
KEludGVybmFscyk6IEFkZGVkIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMuCisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaWRsOiBBZGRlZCBiaW5kaW5nIGZvciBnZXRSZWZlcmVuY2VkRmlsZVBh
dGhzLgorCiAyMDEyLTA4LTE2ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0Zvcm1zXSBXaGVlbCBldmVudCBzdXBwb3J0IGluIG11bHRpcGxlIGZpZWxk
cyB0aW1lIGlucHV0IFVJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGIyMzcyYTNiZTdl
ODYwODJjNTNjYTk2MDM4ZTI3YjAzYTRhNDM3NGUuLmQ4MzA4ODQ4NmIwYzFlZjhjZTM3MDE2MTRk
NmQwMmZjNmFiNmQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDgtMTQgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYkhpc3RvcnlJdGVtOiBFbmFibGUgcmVhZGluZyBzZWxlY3RlZCBmaWxlIG5hbWVz
IGZyb20gZG9jdW1lbnQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZW5hYmxlcyBDaHJvbWl1bSB0byBzZXQgdXAgZmlsZSBw
ZXJtaXNzaW9ucyBwcm9wZXJseSB3aGVuCisgICAgICAgIHRoZSBzZXNzaW9uIHJlc3RvcmUgZmVh
dHVyZSByZXN0b3JlcyBhIHBhZ2Ugd2l0aCBzZWxlY3RlZCBmaWxlcy4KKworICAgICAgICAqIHB1
YmxpYy9XZWJIaXN0b3J5SXRlbS5oOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW0pOiBBZGRlZCBn
ZXRSZWZlcmVuY2VkRmlsZVBhdGhzLgorICAgICAgICAqIHNyYy9XZWJIaXN0b3J5SXRlbS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkhpc3RvcnlJdGVtOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhz
KTogRXh0cmFjdHMgc2VsZWN0ZWQgYW5kIHBvc3RlZCBmaWxlIHBhdGhzIGZyb20gYSBkb2N1bWVu
dCBzdGF0ZS4KKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDgtMTUgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xs
ZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4YWM4ZTY5YzZmZTZlYzU1ZTljYTVhZThkZGFjMzY4NDlj
ZDExMmYwLi5iMjlmNGJmZTc5MzRkNThhZmE0MTA3MWFiZTM1YTNmZjgyZTI1ZjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMTQgIE1hcmphIEjDtmx0dMOkICA8bWFyamFA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEZvcm1Db250cm9sbGVyLCBXZWJIaXN0b3J5SXRlbTog
RW5hYmxlIHJlYWRpbmcgc2VsZWN0ZWQgZmlsZSBuYW1lcyBmcm9tIGRvY3VtZW50IHN0YXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGVuYWJsZXMgQ2hyb21pdW0gdG8gc2V0IHVwIGZpbGUgcGVybWlzc2lvbnMgcHJvcGVybHkgd2hl
bgorICAgICAgICB0aGUgc2Vzc2lvbiByZXN0b3JlIGZlYXR1cmUgcmVzdG9yZXMgYSBwYWdlIHdp
dGggc2VsZWN0ZWQgZmlsZXMuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6IEV4cG9ydGVk
IEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzIGFuZCBIaXN0b3J5Q29udHJv
bGxlcjo6c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUuCisKIDIwMTItMDgtMTUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIG1hbnVhbCB0ZXN0cyBh
bmQgY29tbWVudHMgdG8gcmVmZXIgdG8gVGVzdFJ1bm5lciBpbnN0ZWFkIG9mIExheW91dFRlc3RD
b250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDg5ZTExZThjNGRkZjBjMjYwNTdjNDEy
NTJlZjhlYWZmY2Q4ZGRkYWYuLjkzYTEwM2FiZTU3ZDY1OTViNTM3MTE3YmNhY2UwZGNmMDZjYzli
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNTMsNiArMjUzLDcgQEAgX19aTjdXZWJDb3Jl
MTREb2N1bWVudExvYWRlckQyRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTdyZXBv
cnRNZW1vcnlVc2FnZUVQTlNfMTZNZW1vcnlPYmplY3RJbmZvRQogX19aTjdXZWJDb3JlMTREb2N1
bWVudFdyaXRlcjExc2V0RW5jb2RpbmdFUktOM1dURjZTdHJpbmdFYgogX19aTjdXZWJDb3JlMTRG
aWxlSWNvbkxvYWRlcjE0bm90aWZ5RmluaXNoZWRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNEljb25F
RUUKK19fWk43V2ViQ29yZTE0Rm9ybUNvbnRyb2xsZXIyMmdldFJlZmVyZW5jZWRGaWxlUGF0aHNF
UktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0wRUVFCiBfX1pON1dlYkNvcmUxNEZyYW1lU2Vs
ZWN0aW9uMTBzZXRGb2N1c2VkRWIKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xMnNldFNl
bGVjdGlvbkVSS05TXzE2VmlzaWJsZVNlbGVjdGlvbkVqTlMwXzE5Q3Vyc29yQWxpZ25PblNjcm9s
bEVOU18xNVRleHRHcmFudWxhcml0eUUKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xNXJl
dmVhbFNlbGVjdGlvbkVSS05TXzE1U2Nyb2xsQWxpZ25tZW50RU5TXzE4UmV2ZWFsRXh0ZW50T3B0
aW9uRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggZDA4ZmUyNDUxNjNl
ZmQ4NjNiMDVlYzQxZGUyNTE4YzYyYmIwOTRmZS4uZjc4OTZiYWI4NjViYjA3N2Q5ZTY5ODZhYTcw
MmQ1ZjczY2JhNDQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC05
Niw2ICs5NiwxOCBAQCBQYXNzT3duUHRyPElucHV0VHlwZT4gRmlsZUlucHV0VHlwZTo6Y3JlYXRl
KEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxl
SW5wdXRUeXBlKGVsZW1lbnQpKTsKIH0KIAorVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IEZp
bGVJbnB1dFR5cGU6OmZpbGVzRnJvbUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xT
dGF0ZSYgc3RhdGUpCit7CisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUudmFsdWVTaXplKCk7IGkgKz0gMikgewor
ICAgICAgICBpZiAoIXN0YXRlW2kgKyAxXS5pc0VtcHR5KCkpCisgICAgICAgICAgICBmaWxlcy5h
cHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhzdGF0ZVtpXSwgc3RhdGVbaSArIDFdKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKHN0
YXRlW2ldKSk7CisgICAgfQorICAgIHJldHVybiBmaWxlczsKK30KKwogY29uc3QgQXRvbWljU3Ry
aW5nJiBGaWxlSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHJldHVy
biBJbnB1dFR5cGVOYW1lczo6ZmlsZSgpOwpAQCAtMTE4LDE0ICsxMzAsNyBAQCB2b2lkIEZpbGVJ
bnB1dFR5cGU6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUm
IHN0YXRlKQogewogICAgIGlmIChzdGF0ZS52YWx1ZVNpemUoKSAlIDIpCiAgICAgICAgIHJldHVy
bjsKLSAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdGF0ZS52YWx1ZVNpemUoKTsgaSArPSAyKSB7Ci0gICAgICAgIGlmICgh
c3RhdGVbaSArIDFdLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hv
b3NlckZpbGVJbmZvKHN0YXRlW2ldLCBzdGF0ZVtpICsgMV0pKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oc3RhdGVbaV0pKTsKLSAg
ICB9Ci0gICAgZmlsZXNDaG9zZW4oZmlsZXMpOworICAgIGZpbGVzQ2hvc2VuKGZpbGVzRnJvbUZv
cm1Db250cm9sU3RhdGUoc3RhdGUpKTsKIH0KIAogYm9vbCBGaWxlSW5wdXRUeXBlOjphcHBlbmRG
b3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sIG11bHRpcGFydCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggOTAzNjM5ZWMwOWEzMWI2MzFmNGRiYzM4
Mzk4MTQyZTEzNzZmODMyMS4uMTBhY2RlNzAyZDgxOGQ4NjFkZmE5ZjJiNDVlNWMzYWIzZmQwNTY1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xh
c3MgRmlsZUxpc3Q7CiBjbGFzcyBGaWxlSW5wdXRUeXBlIDogcHVibGljIEJhc2VDbGlja2FibGVX
aXRoS2V5SW5wdXRUeXBlLCBwcml2YXRlIEZpbGVDaG9vc2VyQ2xpZW50LCBwcml2YXRlIEZpbGVJ
Y29uTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5
cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgc3RhdGljIFZlY3RvcjxGaWxlQ2hv
b3NlckZpbGVJbmZvPiBmaWxlc0Zyb21Gb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9s
U3RhdGUmKTsKIAogcHJpdmF0ZToKICAgICBGaWxlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggNWUzOWZlMjI5Mzli
NzQ5NDBlYzU0NDk0MTY4ZWQ5YzUyODliYzk3ZC4uZTM1ZWZmMTllMTliYTljNWU1ZDE1YzgwMmI2
YmI5ZmU0NTQxYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAg
LTIxLDggKzIxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybUNvbnRy
b2xsZXIuaCIKIAorI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZS5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4MCw2ICsxODIsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmRDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKICAg
ICBGb3JtQ29udHJvbFN0YXRlIHRha2VDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOwogCisgICAgVmVjdG9yPFN0cmluZz4gZ2V0
UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNhdmVkRm9ybVN0
YXRlKCkgOiBtX2NvbnRyb2xTdGF0ZUNvdW50KDApIHsgfQogCkBAIC0yNjMsNiArMjY3LDIzIEBA
IEZvcm1Db250cm9sU3RhdGUgU2F2ZWRGb3JtU3RhdGU6OnRha2VDb250cm9sU3RhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCitWZWN0b3I8
U3RyaW5nPiBTYXZlZEZvcm1TdGF0ZTo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0Cit7
CisgICAgVmVjdG9yPFN0cmluZz4gdG9SZXR1cm47CisgICAgZm9yIChGb3JtRWxlbWVudFN0YXRl
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMuYmVnaW4o
KTsgaXQgIT0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5lbmQoKTsgKytpdCkgeworICAgICAg
ICBjb25zdCBGb3JtRWxlbWVudEtleSYga2V5ID0gaXQtPmZpcnN0OworICAgICAgICBpZiAoQXRv
bWljU3RyaW5nKGtleS50eXBlKCkpICE9IEF0b21pY1N0cmluZygiZmlsZSIpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGNvbnN0IERlcXVlPEZvcm1Db250cm9sU3RhdGU+JiBxdWV1
ZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGZvciAoRGVxdWU8Rm9ybUNvbnRyb2xTdGF0ZT46OmNv
bnN0X2l0ZXJhdG9yIHF1ZUl0ZXJhdG9yID0gcXVldWUuYmVnaW4oKTsgcXVlSXRlcmF0b3IgIT0g
cXVldWUuZW5kKCk7ICsrcXVlSXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxG
aWxlQ2hvb3NlckZpbGVJbmZvPiYgc2VsZWN0ZWRGaWxlcyA9IEhUTUxJbnB1dEVsZW1lbnQ6OmZp
bGVzRnJvbUZpbGVJbnB1dEZvcm1Db250cm9sU3RhdGUoKnF1ZUl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWxlcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgICAgICB0b1JldHVybi5hcHBlbmQoc2VsZWN0ZWRGaWxlc1tpXS5wYXRoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdG9SZXR1cm47Cit9CisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogY2xhc3MgRm9ybUtleUdlbmVyYXRvciB7CkBAIC00MDgsMjMgKzQyOSw3IEBA
IFZlY3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVyOjpmb3JtRWxlbWVudHNTdGF0ZSgpIGNvbnN0
CiAKIHZvaWQgRm9ybUNvbnRyb2xsZXI6OnNldFN0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3RvcikKIHsKLSAgICBtX2Zvcm1FbGVtZW50c1dpdGhT
dGF0ZS5jbGVhcigpOwotCi0gICAgc2l6ZV90IGkgPSAwOwotICAgIGlmIChzdGF0ZVZlY3Rvci5z
aXplKCkgPCAxIHx8IHN0YXRlVmVjdG9yW2krK10gIT0gZm9ybVN0YXRlU2lnbmF0dXJlKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHdoaWxlIChpICsgMSA8IHN0YXRlVmVjdG9yLnNpemUoKSkg
ewotICAgICAgICBBdG9taWNTdHJpbmcgZm9ybUtleSA9IHN0YXRlVmVjdG9yW2krK107Ci0gICAg
ICAgIE93blB0cjxTYXZlZEZvcm1TdGF0ZT4gc3RhdGUgPSBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJp
YWxpemUoc3RhdGVWZWN0b3IsIGkpOwotICAgICAgICBpZiAoIXN0YXRlKSB7Ci0gICAgICAgICAg
ICBpID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIG1fc2F2ZWRG
b3JtU3RhdGVNYXAuYWRkKGZvcm1LZXkuaW1wbCgpLCBzdGF0ZS5yZWxlYXNlKCkpOwotICAgIH0K
LSAgICBpZiAoaSAhPSBzdGF0ZVZlY3Rvci5zaXplKCkpCi0gICAgICAgIG1fc2F2ZWRGb3JtU3Rh
dGVNYXAuY2xlYXIoKTsKKyAgICBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKHN0YXRlVmVjdG9y
LCBtX3NhdmVkRm9ybVN0YXRlTWFwKTsKIH0KIAogRm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJv
bGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZSYgY29udHJvbCkKQEAgLTQ0Miw2ICs0NDcsMjcgQEAgRm9ybUNvbnRyb2xTdGF0
ZSBGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1D
b250cm9sRWwKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKK3ZvaWQgRm9ybUNvbnRyb2xsZXI6OmZv
cm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3IoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9y
LCBTYXZlZEZvcm1TdGF0ZU1hcCYgbWFwKQoreworICAgIG1hcC5jbGVhcigpOworCisgICAgc2l6
ZV90IGkgPSAwOworICAgIGlmIChzdGF0ZVZlY3Rvci5zaXplKCkgPCAxIHx8IHN0YXRlVmVjdG9y
W2krK10gIT0gZm9ybVN0YXRlU2lnbmF0dXJlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHdo
aWxlIChpICsgMSA8IHN0YXRlVmVjdG9yLnNpemUoKSkgeworICAgICAgICBBdG9taWNTdHJpbmcg
Zm9ybUtleSA9IHN0YXRlVmVjdG9yW2krK107CisgICAgICAgIE93blB0cjxTYXZlZEZvcm1TdGF0
ZT4gc3RhdGUgPSBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoc3RhdGVWZWN0b3IsIGkpOwor
ICAgICAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIG1hcC5hZGQoZm9ybUtleS5pbXBsKCksIHN0YXRlLnJl
bGVhc2UoKSk7CisgICAgfQorICAgIGlmIChpICE9IHN0YXRlVmVjdG9yLnNpemUoKSkKKyAgICAg
ICAgbWFwLmNsZWFyKCk7Cit9CisKIHZvaWQgRm9ybUNvbnRyb2xsZXI6OndpbGxEZWxldGVGb3Jt
KEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKICAgICBpZiAobV9mb3JtS2V5R2VuZXJhdG9yKQpA
QCAtNDc5LDUgKzUwNSwxNCBAQCB2b2lkIEZvcm1Db250cm9sbGVyOjpyZXN0b3JlQ29udHJvbFN0
YXRlSW4oSFRNTEZvcm1FbGVtZW50JiBmb3JtKQogICAgIH0KIH0KIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorVmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxl
UGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKQoreworICAgIFZlY3RvcjxT
dHJpbmc+IHRvUmV0dXJuOworICAgIFNhdmVkRm9ybVN0YXRlTWFwIG1hcDsKKyAgICBmb3JtU3Rh
dGVzRnJvbVN0YXRlVmVjdG9yKHN0YXRlVmVjdG9yLCBtYXApOworICAgIGZvciAoU2F2ZWRGb3Jt
U3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQo
KTsgKytpdCkKKyAgICAgICAgdG9SZXR1cm4uYXBwZW5kKGl0LT5zZWNvbmQtPmdldFJlZmVyZW5j
ZWRGaWxlUGF0aHMoKSk7CisgICAgcmV0dXJuIHRvUmV0dXJuOworfQogCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKaW5kZXggNWQzNzQ4ZDBl
ZTU4ZTMxMjExZDI5YmQ4ZTA1MTEwZWYxOWI0ZmM2Yi4uMDQwMmIyY2QxNzgzYzQyMjU5ZWZkODcz
YWU5YjY2NGYyMzQ2ODhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaApAQCAt
OTIsNiArOTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN0b3JlQ29udHJvbFN0YXRlRm9yKEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVDb250cm9s
U3RhdGVJbihIVE1MRm9ybUVsZW1lbnQmKTsKIAorICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBn
ZXRSZWZlcmVuY2VkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvcik7
CisKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlKiwgNjQ+IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQ7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiwgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiA+
IFNhdmVkRm9ybVN0YXRlTWFwOwpAQCAtOTksNiArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBGb3Jt
Q29udHJvbGxlcigpOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNhdmVkRm9ybVN0YXRlTWFwPiBj
cmVhdGVTYXZlZEZvcm1TdGF0ZU1hcChjb25zdCBGb3JtRWxlbWVudExpc3RIYXNoU2V0Jik7CiAg
ICAgRm9ybUNvbnRyb2xTdGF0ZSB0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlJik7CisgICAgc3RhdGljIHZvaWQgZm9ybVN0YXRlc0Zy
b21TdGF0ZVZlY3Rvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFNhdmVkRm9ybVN0YXRlTWFwJik7
CiAKICAgICBDaGVja2VkUmFkaW9CdXR0b25zIG1fY2hlY2tlZFJhZGlvQnV0dG9uczsKICAgICBG
b3JtRWxlbWVudExpc3RIYXNoU2V0IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggY2ZkMmJmNjlhYjMyZmI5M2VkNWVm
MzYzNDUwZjg4YTI3MDhiMWZkMi4uYTQ4ZDc2YTk0Nzk0MWIzY2FhNmZhMjE5MDVlZWQzMDMwMzNl
NmFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZpbGVJbnB1dFR5cGUuaCIK
ICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKQEAgLTE1OSw2ICsxNjAsMTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MSW5wdXRFbGVtZW50OjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lLmlzTnVsbCgp
ID8gZW1wdHlBdG9tIDogbV9uYW1lOwogfQogCitWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4g
SFRNTElucHV0RWxlbWVudDo6ZmlsZXNGcm9tRmlsZUlucHV0Rm9ybUNvbnRyb2xTdGF0ZShjb25z
dCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gRmlsZUlucHV0VHlwZTo6
ZmlsZXNGcm9tRm9ybUNvbnRyb2xTdGF0ZShzdGF0ZSk7Cit9CisKIEhUTUxFbGVtZW50KiBIVE1M
SW5wdXRFbGVtZW50Ojpjb250YWluZXJFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9p
bnB1dFR5cGUtPmNvbnRhaW5lckVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKaW5kZXggZGMzMjE1OWYyNTM5MGMyZDJjYTdiNmUyOGQzMmJiNTc0OGU3ZGIyMC4u
OGEwZTRkNGI3MmE5MmM2OGE4MThjMmRjMTdkMjVhMjQ2ODIzYWRkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgSFRNTElu
cHV0RWxlbWVudF9oCiAjZGVmaW5lIEhUTUxJbnB1dEVsZW1lbnRfaAogCisjaW5jbHVkZSAiRmls
ZUNob29zZXIuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkltYWdlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCkBAIC0y
NzcsNiArMjc4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUoKSBjb25zdCBPVkVSUklERTsKIAorICAgIHN0YXRpYyBWZWN0b3I8RmlsZUNob29zZXJG
aWxlSW5mbz4gZmlsZXNGcm9tRmlsZUlucHV0Rm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29u
dHJvbFN0YXRlJik7CisKIHByb3RlY3RlZDoKICAgICBIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5
UGFyc2VyKTsKICAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCAzM2MzMjUyZDRlZTgwNTI1MTg3MDc3MzdiYWI4OTlmYTNj
NzgzMWQyLi5mZTA0OGMwNDUwYWMzYjAxZmQxNzg1ZjA5MGEwMjc3YTRiZTJiMmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxzLmgiCiAKKyNpbmNsdWRlICJCYWNrRm9yd2Fy
ZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIkNsaWVudFJlY3QuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgpAQCAtMzcsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJI
VE1MQ29udGVudEVsZW1lbnQuaCIKQEAgLTExODgsNCArMTE5MCwxNCBAQCBQYXNzUmVmUHRyPE1h
bGxvY1N0YXRpc3RpY3M+IEludGVybmFsczo6bWFsbG9jU3RhdGlzdGljcygpIGNvbnN0CiAgICAg
cmV0dXJuIE1hbGxvY1N0YXRpc3RpY3M6OmNyZWF0ZSgpOwogfQogCitQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IEludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0Cit7Cisg
ICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0cmluZ0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVh
dGUoKTsKKyAgICBmcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5zYXZlRG9jdW1lbnRBbmRT
Y3JvbGxTdGF0ZSgpOworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMgPSBGb3Jt
Q29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyhmcmFtZSgpLT5sb2FkZXIoKS0+aGlz
dG9yeSgpLT5jdXJyZW50SXRlbSgpLT5kb2N1bWVudFN0YXRlKCkpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmlsZVBhdGhzLnNpemUoKTsgKytpKQorICAgICAgICBzdHJpbmdMaXN0LT5h
cHBlbmQoZmlsZVBhdGhzW2ldKTsKKyAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDg2NjFkZjFkMGY5MDg5ZjA5
YjlhNjk3YjQ5MmIxNmZlOTM5ZDg1NzQuLmI4YjUwNGY0OGUwZDFmMmJhZGQ3YmEwMzBjYWIyMDk4
ZjUxYzJlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjEwLDYgKzIxMCw4
IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8TWFsbG9jU3RhdGlzdGljcz4gbWFsbG9jU3Rh
dGlzdGljcygpIGNvbnN0OwogCisgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBnZXRSZWZl
cmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJu
YWxzKERvY3VtZW50Kik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDFkZWU5ODFmNmY0MmYzMzliNzNk
NDIxZGZjMTk1OTM0N2E3ZGEzYTMuLmZlZDIyMGQxNTViOTI4YmMwNzJhM2MxMzUwODNmMTNhYmE1
ZDc0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE4Niw2ICsxODYs
OCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgdm9pZCByZW1vdmVVUkxTY2hlbWVSZWdpc3Rl
cmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koaW4gRE9NU3RyaW5nIHNjaGVtZSk7
CiAKICAgICAgICAgTWFsbG9jU3RhdGlzdGljcyBtYWxsb2NTdGF0aXN0aWNzKCk7CisKKyAgICAg
ICAgRE9NU3RyaW5nW10gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygpOwogICAgIH07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oCmluZGV4IDAx
NWE3OWJlYmZmZTg0OWEwMmZiY2FhNjNiNDdmOWRiNzc0MTdlZmQuLjJjNDE2ZjgyN2U4NDg2NWIz
ODYwNTA5MGExNjlhMmZiYTkyYzM2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSGlzdG9yeUl0ZW0uaApAQCAtMTI0LDYgKzEyNCw4IEBAIHB1YmxpYzoKICAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkhpc3RvcnlJ
dGVtPiYpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmRUb0NoaWxkcmVuKGNvbnN0IFdl
Ykhpc3RvcnlJdGVtJik7CiAKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlZlY3RvcjxXZWJTdHJpbmc+
IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgogICAgIFdlYkhpc3RvcnlJdGVtKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpI
aXN0b3J5SXRlbT4mKTsKICAgICBXZWJIaXN0b3J5SXRlbSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBkYjM1MzE3YWQ5ODNjZGQ2OWQ5ZDA2
NTUyNjU1ZjJjMWY5OTQzNjcwLi4zMWQyYmQ1NjRkOTAxOWNiN2ZiMDE4NWI1ZWZiYzMzNGFiZmUw
NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIaXN0b3J5SXRl
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGlzdG9yeUl0ZW0uY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSGlz
dG9yeUl0ZW0uaCIKIAorI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9y
bURhdGEuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAg
LTI4Nyw2ICsyODgsMjMgQEAgdm9pZCBXZWJIaXN0b3J5SXRlbTo6YXBwZW5kVG9DaGlsZHJlbihj
b25zdCBXZWJIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBtX3ByaXZhdGUtPmFkZENoaWxkSXRlbShp
dGVtKTsKIH0KIAorV2ViVmVjdG9yPFdlYlN0cmluZz4gV2ViSGlzdG9yeUl0ZW06OmdldFJlZmVy
ZW5jZWRGaWxlUGF0aHMoKSBjb25zdAoreworICAgIFZlY3RvcjxXZWJTdHJpbmc+IGZpbGVQYXRo
czsKKyAgICBjb25zdCBGb3JtRGF0YSogZm9ybURhdGEgPSBtX3ByaXZhdGUtPmZvcm1EYXRhKCk7
CisgICAgaWYgKGZvcm1EYXRhKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZm9y
bURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IEZvcm1E
YXRhRWxlbWVudCYgZWxlbWVudCA9IGZvcm1EYXRhLT5lbGVtZW50cygpW2ldOworICAgICAgICAg
ICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCisg
ICAgICAgICAgICAgICAgZmlsZVBhdGhzLmFwcGVuZChlbGVtZW50Lm1fZmlsZW5hbWUpOworICAg
ICAgICB9CisgICAgfQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWxlY3RlZEZpbGVQYXRo
cyA9IFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKG1fcHJp
dmF0ZS0+ZG9jdW1lbnRTdGF0ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlbGVj
dGVkRmlsZVBhdGhzLnNpemUoKTsgKytpKQorICAgICAgICBmaWxlUGF0aHMuYXBwZW5kKHNlbGVj
dGVkRmlsZVBhdGhzW2ldKTsKKyAgICByZXR1cm4gZmlsZVBhdGhzOworfQorCiBXZWJIaXN0b3J5
SXRlbTo6V2ViSGlzdG9yeUl0ZW0oY29uc3QgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4mIGl0ZW0p
CiAgICAgOiBtX3ByaXZhdGUoaXRlbSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA2ZThl
NDE3MTEwNDI2ZjUwMGVjOTliYTJiOGUxZDgxZjNhM2U3Y2MzLi4xMmMxZjMwMzMwM2YwMjQ4NmFl
OWM1NDhkODhmMGVlZGI0ODNkZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xODEsNiAr
MTgxLDcgQEAgRVhQT1JUUwogICAgICAgICA/Z2V0RWxlbWVudEJ5SWRAVHJlZVNjb3BlQFdlYkNv
cmVAQFFCRVBBVkVsZW1lbnRAMkBBQlZBdG9taWNTdHJpbmdAV1RGQEBAWgogICAgICAgICA/Z2V0
SGlnaGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAy
QEBaCiAgICAgICAgID9nZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUBUZXh0SXRlcmF0b3JA
V2ViQ29yZUBAU0FfTlBBVkVsZW1lbnRAMkBQQlZSYW5nZUAyQEFBSTJAWgorICAgICAgICA/Z2V0
UmVmZXJlbmNlZEZpbGVQYXRoc0BGb3JtQ29udHJvbGxlckBXZWJDb3JlQEBTQT9BVj8kVmVjdG9y
QFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQUJWMzRAQFoKICAgICAgICAgP2lucHV0VGFnQEhUTUxO
YW1lc0BXZWJDb3JlQEAzVlF1YWxpZmllZE5hbWVAMkBCCiAgICAgICAgID9pbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZUBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAQ0FQQVZJbnN0
cnVtZW50aW5nQWdlbnRzQDJAUEFWUGFnZUAyQEBaCiAgICAgICAgID9pc0FjdGl2ZUluc2VydGlv
blBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFoKQEAgLTIwNyw2ICsyMDgsNyBAQCBFWFBP
UlRTCiAgICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgogICAgICAg
ICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lAWgogICAgICAgICA/c19mcm9u
dGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQorICAgICAg
ICA/c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGVASGlzdG9yeUNvbnRyb2xsZXJAV2ViQ29yZUBA
UUFFWFhaCiAgICAgICAgID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0
QFdlYkNvcmVAQFFCRVBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2Ny
aXB0TmFtZVRvQ29kZUBXZWJDb3JlQEBZQT9BVzRVU2NyaXB0Q29kZUBAQUJWU3RyaW5nQFdURkBA
QFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQ
QVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBl
MmVhNDM1YTYxZjBjZTc4N2FmNzBiODU3NmM3MmNlMTdmOGFmMTY2Li5lMDE0OTc1MTVmYmI1YmEy
YWZhYjE2MWNhNTM1YTA3NTU2OThhNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTYw
LDYgKzYwLDcgQEAgX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFUktOM1dURjZWZWN0b3JJ
TlNfOUZsb2F0UXVhZEVMajBFRUU7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVSS04z
V1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxtMEVFRTsKIF9aTjdXZWJDb3JlMTRDbGllbnRSZWN0
TGlzdEMxRXY7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3REMUV2OworX1pON1dlYkNvcmUx
NEZvcm1Db250cm9sbGVyMjJnZXRSZWZlcmVuY2VkRmlsZVBhdGhzRVJLTjNXVEY2VmVjdG9ySU5T
MV82U3RyaW5nRUxtMEVFRTsKIF9aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE5YWJzb2x1dGVD
YXJldEJvdW5kc0V2OwogX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5NDlyZWdpc3RlclVSTFNj
aGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5RVJLTjNXVEY2U3RyaW5nRTsKIF9a
TjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTU3cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlw
YXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5RVJLTjNXVEY2U3RyaW5nRTsKQEAgLTcwLDYgKzcx
LDcgQEAgX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQxNXNldEVkaXRpbmdWYWx1ZUVSS04z
V1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0
YXRlRVJOM1dURjdIYXNoTWFwSVBOUzNfMTBTdHJpbmdJbXBsRU5TMF80V2Vha0lOUzBfOEpTU3Ry
aW5nRUVFTlMzXzdQdHJIYXNoSVM2X0VFTlMzXzEwSGFzaFRyYWl0c0lTNl9FRU5TQ19JUzlfRUVF
RVM2XzsKIF9aTjdXZWJDb3JlMTZzY3JpcHROYW1lVG9Db2RlRVJLTjNXVEY2U3RyaW5nRTsKIF9a
TjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNK
U0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FOworX1pON1dlYkNvcmUxN0hpc3RvcnlDb250
cm9sbGVyMjZzYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZUV2OwogX1pON1dlYkNvcmUxN0luc3Bl
Y3RvckNvdW50ZXJzMTJjb3VudGVyVmFsdWVFTlMwXzExQ291bnRlclR5cGVFOwogX1pON1dlYkNv
cmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7CiBfWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50
ZXJuYWxzRWlpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDZiZjQwZDExODgzZDJmMTFjY2U0YjNkOWMxZWI1NDhmMWMzZWJl
Y2QuLjY5ZTYzMTUwNDAyYTliMzg0NmZhOTA4OTI0NDQxMjE2NGEyYTY4ZjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMi0wOC0xNCAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgRm9ybUNvbnRyb2xsZXI6IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZp
bGUgbmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIENocm9taXVtIHRvIHNldCB1
cCBmaWxlIHBlcm1pc3Npb25zIHByb3Blcmx5IHdoZW4KKyAgICAgICAgdGhlIHNlc3Npb24gcmVz
dG9yZSBmZWF0dXJlIHJlc3RvcmVzIGEgcGFnZSB3aXRoIHNlbGVjdGVkIGZpbGVzLgorCisgICAg
ICAgICogZmFzdC9mb3Jtcy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1m
aWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMTYgIFphbiBE
b2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdU
SyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2Vs
ZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1NjU3OWUzYjE4NWZkMjgwY2VhYzBhNWVlNzE3MjBjODJkNmMz
YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0
ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAK
K1Rlc3RzIHRoYXQgc2VsZWN0ZWQgZmlsZXMgaW4gZmlsZSBpbnB1dCBlbGVtZW50cyBhcmUgY29y
cmVjdGx5IHJldHJpZXZlZCBieSBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRo
cy4KKworCisKK1BBU1MgCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3NlbGVj
dGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNmNzMwYjMzNGIyMmVlYjk4Njc0Y2M4ZGMzZmQ4Njg0OTBkMmRkZWYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0
b3J5LXN0YXRlLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworZnVuY3Rp
b24gb25Mb2FkKCkgeworICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7Cit9CisKK2Z1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHRlc3RG
YWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgdmFyIG9uQ2hhbmdlRmlyZWQgPSAwOworICAgIHZhciBpbnB1
dDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZWlucHV0MScpOworICAgIGlucHV0MS5v
bmNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICArK29uQ2hhbmdlRmlyZWQ7CisgICAgfTsK
KyAgICB2YXIgaW5wdXQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVpbnB1dDInKTsK
KyAgICBpbnB1dDIub25jaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgKytvbkNoYW5nZUZp
cmVkOworICAgIH07CisKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWycvaG9t
ZS91c2VyL3Rlc3RmaWxlLnR4dCddKTsKKyAgICB2YXIgY2VudGVyWCA9IGlucHV0MS5vZmZzZXRM
ZWZ0ICsgaW5wdXQxLm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGlucHV0MS5v
ZmZzZXRUb3AgKyBpbnB1dDEub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisK
KyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWycvaG9tZS91c2VyL3Rlc3RmaWxl
Mi50eHQnXSk7CisgICAgY2VudGVyWCA9IGlucHV0Mi5vZmZzZXRMZWZ0ICsgaW5wdXQyLm9mZnNl
dFdpZHRoIC8gMjsKKyAgICBjZW50ZXJZID0gaW5wdXQyLm9mZnNldFRvcCArIGlucHV0Mi5vZmZz
ZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRl
clkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIGlmIChvbkNoYW5nZUZpcmVk
ICE9IDIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnb25jaGFuZ2UgZmlyZWQgdW5leHBlY3RlZCB0
aW1lczogJyArIG9uQ2hhbmdlRmlyZWQpOworICAgIH0KKworICAgIHZhciBmaWxlcyA9IGludGVy
bmFscy5nZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7CisgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAy
ICYmCisgICAgICAgICgoZmlsZXNbMF0gPT0gJy9ob21lL3VzZXIvdGVzdGZpbGUudHh0JyAmJiBm
aWxlc1sxXSA9PSAnL2hvbWUvdXNlci90ZXN0ZmlsZTIudHh0JykgfHwKKyAgICAgICAgIChmaWxl
c1sxXSA9PSAnL2hvbWUvdXNlci90ZXN0ZmlsZS50eHQnICYmIGZpbGVzWzBdID09ICcvaG9tZS91
c2VyL3Rlc3RmaWxlMi50eHQnKSkpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgnJyk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZCBmaWxlczogJyArIGZpbGVzKTsK
KyAgICB9CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCBzZWxl
Y3RlZCBmaWxlcyBpbiBmaWxlIGlucHV0IGVsZW1lbnRzIGFyZSBjb3JyZWN0bHkgcmV0cmlldmVk
IGJ5IEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzLjwvcD4KKzxkaXYgaWQ9
ImNvbnRhaW5lciI+Cis8Zm9ybSBpZD0iZm9ybTEiPgorPGlucHV0IGlkPSJmaWxlaW5wdXQxIiB0
eXBlPSJmaWxlIiAvPgorPC9mb3JtPgorPGZvcm0gaWQ9ImZvcm0yIj4KKzxpbnB1dCBpZD0iZmls
ZWlucHV0MiIgdHlwZT0iZmlsZSIgLz4KKzwvZm9ybT4KKzwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggNGY5NzVjNWE3OGEzNzVlNjFkNWI0NmI2MzJlODdmYmI3M2U3MTU5MS4u
OGIwODFiOGU4ODJhZDc2OTRiNDk4ZDBiYWJlYzFlNjJiZDJmODdmMSAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTE0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBGb3JtQ29udHJvbGxl
ciwgV2ViSGlzdG9yeUl0ZW06IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZpbGUgbmFtZXMgZnJv
bSBkb2N1bWVudCBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTEyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIENocm9taXVtIHRvIHNldCB1cCBmaWxlIHBlcm1p
c3Npb25zIHByb3Blcmx5IHdoZW4KKyAgICAgICAgdGhlIHNlc3Npb24gcmVzdG9yZSBmZWF0dXJl
IHJlc3RvcmVzIGEgcGFnZSB3aXRoIHNlbGVjdGVkIGZpbGVzLgorCisgICAgICAgICogU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogRXhwb3J0ZWQgRm9ybUNvbnRyb2xsZXI6OmdldFJl
ZmVyZW5jZWRGaWxlUGF0aHMgYW5kIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1lbnRBbmRT
Y3JvbGxTdGF0ZS4KKwogMjAxMi0wOC0xNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQ2FsZW5kYXIgUGlja2VyOiBMb2NhbGl6ZSBudW1iZXJzIGluIGEgY2Fs
ZW5kYXIgcGlja2VyCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>