<?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>62345</bug_id>
          
          <creation_ts>2011-06-08 18:12:14 -0700</creation_ts>
          <short_desc>[V8][Chromium] Use per-isolate embedder data instead of statics for caches in bindings</short_desc>
          <delta_ts>2011-07-04 20:35:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61016</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dmitry Lomov">dslomov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>antonm</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>dslomov</cc>
    
    <cc>hans</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>417731</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-08 18:12:14 -0700</bug_when>
    <thetext>Change caches for FunctionTemplates in v8 bindings to use v8 per-isolate embedder data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417733</commentid>
    <comment_count>1</comment_count>
      <attachid>96525</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-08 18:16:57 -0700</bug_when>
    <thetext>Created attachment 96525
Proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417736</commentid>
    <comment_count>2</comment_count>
      <attachid>96525</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-08 18:22:29 -0700</bug_when>
    <thetext>Comment on attachment 96525
Proposed fix

Not asking for cq, need trybots results - but would appreciate a review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417794</commentid>
    <comment_count>3</comment_count>
      <attachid>96525</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-08 21:14:09 -0700</bug_when>
    <thetext>Comment on attachment 96525
Proposed fix

Patch broke chromium unit-tests; I&apos;ll be back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417886</commentid>
    <comment_count>4</comment_count>
      <attachid>96525</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-09 00:46:21 -0700</bug_when>
    <thetext>Comment on attachment 96525
Proposed fix

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2206
&gt; +    V8BindingPerIsolateData::TemplateMap::iterator result = 
&gt; +        data-&gt;rawTemplateMap().find(&amp;info);

One line pls.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2207
&gt; +    if (result != data-&gt;rawTemplateMap().end()) {

No { pls

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2210
&gt; +    v8::HandleScope handle_scope;

handle_scope =&gt; handleScope

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2223
&gt; +    V8BindingPerIsolateData::TemplateMap::iterator result = 
&gt; +        data-&gt;templateMap().find(&amp;info);
&gt; +    if (result != data-&gt;templateMap().end()) {
&gt; +        return result-&gt;second;
&gt; +    }

ditto

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:72
&gt; +    void* data = isolate-&gt;GetData();
&gt; +    if (data)
&gt; +        delete static_cast&lt;V8BindingPerIsolateData*&gt;(data);

This pattern is really ugly.

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:595
&gt; +    v8::Persistent&lt;v8::FunctionTemplate&gt;&amp; toStringTemplate = V8BindingPerIsolateData::current()-&gt;toStringTemplate();

Using a reference here is very subtle.  Maybe use a pointer instead?

&gt; Source/WebCore/bindings/v8/V8Binding.h:76
&gt; +        V8BindingPerIsolateData(v8::Isolate*);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418171</commentid>
    <comment_count>5</comment_count>
      <attachid>96525</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-09 12:08:54 -0700</bug_when>
    <thetext>Comment on attachment 96525
Proposed fix

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2206
&gt;&gt; +        data-&gt;rawTemplateMap().find(&amp;info);
&gt; 
&gt; One line pls.

Thanks - will fix. I should also update example generation results in bindings/scripts/test - then the style checker would have caught me.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:72
&gt;&gt; +        delete static_cast&lt;V8BindingPerIsolateData*&gt;(data);
&gt; 
&gt; This pattern is really ugly.

What is ugly? How would you write this instead?

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:595
&gt;&gt; +    v8::Persistent&lt;v8::FunctionTemplate&gt;&amp; toStringTemplate = V8BindingPerIsolateData::current()-&gt;toStringTemplate();
&gt; 
&gt; Using a reference here is very subtle.  Maybe use a pointer instead?

I tend to use references when I want to enforce that pointers are not NULL. Tell me If this rubs strongly against webkit tradition - I&apos;ll change to pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418721</commentid>
    <comment_count>6</comment_count>
      <attachid>96747</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-10 09:14:14 -0700</bug_when>
    <thetext>Created attachment 96747
CR feedback + fixes for chromium tests

Chromium trybots successful</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418731</commentid>
    <comment_count>7</comment_count>
      <attachid>96747</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-10 09:31:40 -0700</bug_when>
    <thetext>Comment on attachment 96747
CR feedback + fixes for chromium tests

Attachment 96747 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8826430</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418811</commentid>
    <comment_count>8</comment_count>
      <attachid>96765</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-10 11:33:56 -0700</bug_when>
    <thetext>Created attachment 96765
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418848</commentid>
    <comment_count>9</comment_count>
      <attachid>96765</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-10 12:46:08 -0700</bug_when>
    <thetext>Comment on attachment 96765
Rebased patch

Attachment 96765 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8825447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418972</commentid>
    <comment_count>10</comment_count>
      <attachid>96803</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-10 15:25:29 -0700</bug_when>
    <thetext>Created attachment 96803
Release mode compilation fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419793</commentid>
    <comment_count>11</comment_count>
      <attachid>96803</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-13 13:15:21 -0700</bug_when>
    <thetext>Comment on attachment 96803
Release mode compilation fixed.

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

I&apos;m not in love with the raw memory management, but I don&apos;t see any other choice.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2206
&gt; +    if (result != data-&gt;rawTemplateMap().end())  return result-&gt;second;

One statement per line, plz.

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:79
&gt; +    void* data = isolate-&gt;GetData();
&gt; +    if (data)
&gt; +        delete static_cast&lt;V8BindingPerIsolateData*&gt;(data);

This code is still ugly, but I guess that&apos;s what we get for using void* in the V8 API.  This branch is probably not needed.  delete 0 is supposed to be safe.

&gt; Source/WebCore/bindings/v8/V8Utilities.h:73
&gt; +        v8::Persistent&lt;v8::Context&gt; m_context;

Please use OwnHandle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419858</commentid>
    <comment_count>12</comment_count>
      <attachid>97008</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-13 14:11:40 -0700</bug_when>
    <thetext>Created attachment 97008
CR feedback fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419867</commentid>
    <comment_count>13</comment_count>
      <attachid>97010</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-13 14:21:09 -0700</bug_when>
    <thetext>Created attachment 97010
Oops wrong patch uploaded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419876</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-13 14:35:03 -0700</bug_when>
    <thetext>Attachment 97010 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/v8/V8Utilities.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420023</commentid>
    <comment_count>15</comment_count>
      <attachid>97010</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-13 16:07:07 -0700</bug_when>
    <thetext>Comment on attachment 97010
Oops wrong patch uploaded

Clearing flags on attachment: 97010

Committed r88729: &lt;http://trac.webkit.org/changeset/88729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420024</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-13 16:07:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420319</commentid>
    <comment_count>17</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-06-14 04:40:04 -0700</bug_when>
    <thetext>Dmitry, may you provide more details why it is needed and what&apos;s the performance impact of this change?

(In reply to comment #16)
&gt; All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420525</commentid>
    <comment_count>18</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-14 10:12:38 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Dmitry, may you provide more details why it is needed and what&apos;s the performance impact of this change?

This is a needed part of moving webworkers in-process. I have not seen the perf impact from this particular change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420660</commentid>
    <comment_count>19</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-06-14 12:41:46 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; Dmitry, may you provide more details why it is needed and what&apos;s the performance impact of this change?
&gt; 
&gt; This is a needed part of moving webworkers in-process. I have not seen the perf impact from this particular change.

That part I understand.  I&apos;d be glad to know more why it&apos;s needed for in-process webworkers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420701</commentid>
    <comment_count>20</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-14 13:37:24 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; Dmitry, may you provide more details why it is needed and what&apos;s the performance impact of this change?
&gt; &gt; 
&gt; &gt; This is a needed part of moving webworkers in-process. I have not seen the perf impact from this particular change.
&gt; 
&gt; That part I understand.  I&apos;d be glad to know more why it&apos;s needed for in-process webworkers.

Workers access V8 bindings, starting with V8DedicatedWorkerContext. Therefore they need a per-isolate cache for function templates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431937</commentid>
    <comment_count>21</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-07-04 08:19:54 -0700</bug_when>
    <thetext>Hi Dmitry,

This patch causes problems for Indexed DB. It seems that when creating and destroying many V8LocalContext objects, memory is not free&apos;d properly, and we eventually run out of it.

This diff adds a test to webkit_unit_tests that exposes the problem (make sure to build in Release mode, this is pretty slow otherwise):

diff --git a/Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp b/Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp
index 3647ce6..aad9f02 100644
--- a/Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp
+++ b/Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp
@@ -106,6 +106,14 @@ TEST(IDBKeyFromValueAndKeyPathTest, TopLevelPropertyStringValue)
     checkKeyPathNullValue(serializedScriptValue.get(), &quot;[3]&quot;);
 }
 
+TEST(IDBKeyFromValueAndKeyPathTest, ManyV8LocalContexts)
+{
+    for (int i = 0; i &lt; 100000; ++i) {
+        printf(&quot;%d\n&quot;, i);
+        V8LocalContext v8context;
+    }
+}
+


There seems to be something subtle going wrong with the use of OwnHandle in V8LocalContext. If I apply the following patch, the problem goes away, but I&apos;m not sure why; can you take a look?


diff --git a/Source/WebCore/bindings/v8/V8Utilities.cpp b/Source/WebCore/bindings/v8/V8Utilities.cpp
index 490cb74..4f783b6 100644
--- a/Source/WebCore/bindings/v8/V8Utilities.cpp
+++ b/Source/WebCore/bindings/v8/V8Utilities.cpp
@@ -49,16 +49,17 @@
 namespace WebCore {
 
 V8LocalContext::V8LocalContext()
+    : m_context(v8::Context::New())
 {
     V8BindingPerIsolateData::ensureInitialized(v8::Isolate::GetCurrent());
-    m_context.set(v8::Context::New());
-    m_context.get()-&gt;Enter();
+    m_context-&gt;Enter();
 }
 
 
-V8LocalContext::~V8LocalContext() 
+V8LocalContext::~V8LocalContext()
 {
-    m_context.get()-&gt;Exit();
+    m_context-&gt;Exit();
+    m_context.Dispose();
 }
 
 // Use an array to hold dependents. It works like a ref-counted scheme.
diff --git a/Source/WebCore/bindings/v8/V8Utilities.h b/Source/WebCore/bindings/v8/V8Utilities.h
index 6f48907..c217964 100644
--- a/Source/WebCore/bindings/v8/V8Utilities.h
+++ b/Source/WebCore/bindings/v8/V8Utilities.h
@@ -71,7 +71,7 @@ namespace WebCore {
         virtual ~V8LocalContext();
     private:
         v8::HandleScope m_handleScope;
-        OwnHandle&lt;v8::Context&gt; m_context;
+        v8::Persistent&lt;v8::Context&gt; m_context;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431995</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-04 11:05:16 -0700</bug_when>
    <thetext>Please file a new bug rather than posting to this closed bug.

The problem is that OwnHandle is responsible for calling New and Disposed in a balanced way.  Because this code calls New, that New is never balanced with a Dispose, which leads to the leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432056</commentid>
    <comment_count>23</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-04 14:34:26 -0700</bug_when>
    <thetext>Hans, thanks for tracking this down - I guess it wasn&apos;t easy...

(In reply to comment #22)
&gt; Please file a new bug rather than posting to this closed bug.
&gt; 
&gt; The problem is that OwnHandle is responsible for calling New and Disposed in a balanced way.  Because this code calls New, that New is never balanced with a Dispose, which leads to the leak.

I do not think you are right: I am not sure what is the problem with the code yet, but OwnHandle only calls New and Dispose on Persistent, and this code calls New on Context. I feel this usage should be OK, but there might be a subtle reason for it not to - maybe I somehow misunderstand OwnHandle?

Anyway, it looks like OwnHandle leads to too much subtlety in this code, and direct use of Persistent (as in  https://bug-62345-attachments.webkit.org/attachment.cgi?id=96803 or Hans&apos; patch) is much easier to reason about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432099</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-04 20:35:31 -0700</bug_when>
    <thetext>OK.  The goal of OwnHandle is to make the code less subtle.  I guess that means ownhandle needs more work.  :(

In any case, please feel free to remove the use of ownhandle if its not helpful.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96525</attachid>
            <date>2011-06-08 18:16:57 -0700</date>
            <delta_ts>2011-06-10 09:14:14 -0700</delta_ts>
            <desc>Proposed fix</desc>
            <filename>62345.patch</filename>
            <type>text/plain</type>
            <size>8511</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NjM5OGMxLi5jMzZjMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDYtMDggIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM0NQorICAgICAgICBVc2UgcGVy
LWlzb2xhdGUgZW1iZWRkZXIgZGF0YSBpbnN0ZWFkIG9mIHN0YXRpY3MgZm9yIGNhY2hlcyBpbiBi
aW5kaW5ncy4KKyAgICAgICAgVGhpcyBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgbW9yZSB0aGFuIG9u
ZSB2OCBpc29sYXRlIHBlciBwcm9jZXNzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
flY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNv
bGF0ZURhdGE6OmRpc3Bvc2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VG9TdHJpbmdOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFRvU3RyaW5nVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0
ZURhdGE6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
Y3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmF3
VGVtcGxhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6
OnRlbXBsYXRlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRh
Ojp0b1N0cmluZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OnRvU3RyaW5nVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRl
eHRJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eTo6aW5pdFY4SWZOZWVkZWQpOgorCiAyMDExLTA2LTA4ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9u
amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IEdlbnRpbGNvcmUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCmluZGV4IDNhNWQ4NjYuLmFiOTcxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yMjAxLDE0ICsyMjAxLDMwIEBA
IEVORAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9
OjpHZXRSYXdUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX1SYXdDYWNoZSA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7
Ci0gICAgcmV0dXJuICR7Y2xhc3NOYW1lfVJhd0NhY2hlOworICAgIFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IAor
ICAgICAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkgeworICAgICAgICByZXR1cm4gcmVz
dWx0LT5zZWNvbmQ7CisgICAgfQorICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVfc2NvcGU7Cisg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3
VGVtcGxhdGUoKTsKKyAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwp
OworICAgIHJldHVybiB0ZW1wbDsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ICR7Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUoKVwKK3Y4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfUNhY2hl
ID0gQ29uZmlndXJlJHtjbGFzc05hbWV9VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7Ci0gICAg
cmV0dXJuICR7Y2xhc3NOYW1lfUNhY2hlOworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IAorICAgICAgICBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5lbmQoKSkgeworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7Cisg
ICAgfQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IAor
ICAgICAgICBDb25maWd1cmUke2NsYXNzTmFtZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsK
KyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0
ZW1wbDsKIH0KIAogYm9vbCAke2NsYXNzTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmlu
ZGV4IDJhY2QyOWEuLjY2ODU4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcApAQCAtNDcsNiArNDcsMzMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisKK1Y4
QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK3sKK30KKworVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6On5WOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YSgpCit7Cit9CisKK1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFT
U0VSVChpc29sYXRlKTsKKyAgICBBU1NFUlQoIWlzb2xhdGUtPkdldERhdGEoKSk7CisgICAgVjhC
aW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBuZXcgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEo
aXNvbGF0ZSk7CisgICAgaXNvbGF0ZS0+U2V0RGF0YShkYXRhKTsKKyAgICByZXR1cm4gZGF0YTsK
K30KKwordm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGlzcG9zZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKK3sKKyAgICB2b2lkKiBkYXRhID0gaXNvbGF0ZS0+R2V0RGF0YSgpOworICAgIGlm
IChkYXRhKQorICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGEqPihkYXRhKTsKK30KKworCisKIC8vIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSBpcyBhIGhlbHBl
ciBjbGFzcyBmb3IgdjhFeHRlcm5hbFN0cmluZy4gSXQgaXMgdXNlZAogLy8gdG8gbWFuYWdlIHRo
ZSBsaWZlLWN5Y2xlIG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBvZiB0aGUgZXh0ZXJuYWwgc3Ry
aW5nLgogY2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlIDogcHVibGljIHY4OjpTdHJpbmc6OkV4
dGVybmFsU3RyaW5nUmVzb3VyY2UgewpAQCAtNTQwLDEwICs1NjcsMTEgQEAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPgogCiB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBnZXRUb1N0cmluZ05hbWUo
KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwodjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4s
IHZhbHVlLCAoKSk7Ci0gICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKLSAgICAgICAgdmFsdWUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPjo6TmV3KHY4OjpTdHJpbmc6Ok5ldygidG9TdHJpbmci
KSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+JiB0
b1N0cmluZ05hbWUgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0cmlu
Z05hbWUoKTsKKyAgICBpZiAodG9TdHJpbmdOYW1lLklzRW1wdHkoKSkKKyAgICAgICAgdG9TdHJp
bmdOYW1lID0gdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz46Ok5ldyh2ODo6U3RyaW5nOjpOZXco
InRvU3RyaW5nIikpOworICAgIHJldHVybiAqdG9TdHJpbmdOYW1lOworCiB9CiAKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JUb1N0cmluZyhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQpAQCAtNTY0LDcgKzU5Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY29uc3RydWN0b3JUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpCiB7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4sIHRvU3RyaW5nVGVtcGxhdGUsICgpKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4mIHRvU3RyaW5nVGVtcGxhdGUgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YTo6Y3VycmVudCgpLT50b1N0cmluZ1RlbXBsYXRlKCk7CiAgICAgaWYgKHRvU3RyaW5nVGVtcGxh
dGUuSXNFbXB0eSgpKQogICAgICAgICB0b1N0cmluZ1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25z
dHJ1Y3RvclRvU3RyaW5nKSk7CiAgICAgcmV0dXJuIHRvU3RyaW5nVGVtcGxhdGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDc4NzNiNTQuLjM3MWNjOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC01MCw2ICs1MCwzOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICAgICB0eXBlZGVmIEJpbmRpbmdTZWN1cml0eTxWOEJp
bmRpbmc+IFY4QmluZGluZ1NlY3VyaXR5OwogCisgICAgY2xhc3MgVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFY4QmluZGluZ1Blcklzb2xhdGVE
YXRhKiBjcmVhdGUodjg6Oklzb2xhdGUqKTsKKyAgICAgICAgc3RhdGljIFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhKiBnZXQodjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChpc29sYXRlLT5HZXREYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKj4oaXNvbGF0ZS0+R2V0RGF0YSgpKTsgCisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGN1cnJl
bnQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2V0KHY4OjpJc29sYXRlOjpHZXRD
dXJyZW50KCkpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lkIGRpc3Bvc2Uodjg6Oklz
b2xhdGUqKTsKKworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ID4gVGVtcGxhdGVNYXA7CisKKyAgICAg
ICAgVGVtcGxhdGVNYXAmIHJhd1RlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV9yYXdUZW1wbGF0ZXM7
IH0KKyAgICAgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV90ZW1wbGF0
ZXM7IH0KKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4mIHRvU3RyaW5nTmFtZSgp
IHsgcmV0dXJuIG1fdG9TdHJpbmdOYW1lOyB9CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdU
ZW1wbGF0ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGEodjg6Oklzb2xhdGUqKTsKKyAgICAgICAgflY4QmluZGluZ1Blcklzb2xhdGVEYXRhKCk7CisK
KyAgICAgICAgVGVtcGxhdGVNYXAgbV9yYXdUZW1wbGF0ZXM7CisgICAgICAgIFRlbXBsYXRlTWFw
IG1fdGVtcGxhdGVzOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBtX3RvU3Ry
aW5nTmFtZTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1f
dG9TdHJpbmdUZW1wbGF0ZTsKKyAgICB9OworCisKICAgICBlbnVtIEV4dGVybmFsTW9kZSB7CiAg
ICAgICAgIEV4dGVybmFsaXplLAogICAgICAgICBEb05vdEV4dGVybmFsaXplCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDU4MzE2NDEu
Ljk1MDE3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwCkBAIC0yOTksMTEgKzI5OSwxMiBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6Omlu
aXRDb250ZXh0SWZOZWVkZWQoKQogICAgICAgICB2ODo6Vjg6OlNldEZhaWxlZEFjY2Vzc0NoZWNr
Q2FsbGJhY2tGdW5jdGlvbihyZXBvcnRVbnNhZmVKYXZhU2NyaXB0QWNjZXNzKTsKIAogICAgICAg
ICBTY3JpcHRQcm9maWxlcjo6aW5pdGlhbGl6ZSgpOwotICAgICAgICAKKworICAgICAgICBWOEJp
bmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpOwor
CiAgICAgICAgIGlzVjhJbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogCi0KICAgICBtX2NvbnRl
eHQgPSBjcmVhdGVOZXdDb250ZXh0KG1fZ2xvYmFsLCAwKTsKICAgICBpZiAobV9jb250ZXh0Lklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXgg
NDIyNTlkNS4uOTc1MmI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0xMjQsNiArMTI0LDgg
QEAgdm9pZCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRWOElmTmVlZGVkKCkKICAg
ICByZXNvdXJjZV9jb25zdHJhaW50cy5zZXRfc3RhY2tfbGltaXQoJmhlcmUgLSBrV29ya2VyTWF4
U3RhY2tTaXplIC8gc2l6ZW9mKHVpbnQzMl90KikpOwogICAgIHY4OjpTZXRSZXNvdXJjZUNvbnN0
cmFpbnRzKCZyZXNvdXJjZV9jb25zdHJhaW50cyk7CiAKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRl
RGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpOworCiAgICAgdjhJbml0aWFs
aXplZCA9IHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96747</attachid>
            <date>2011-06-10 09:14:14 -0700</date>
            <delta_ts>2011-06-10 11:33:56 -0700</delta_ts>
            <desc>CR feedback + fixes for chromium tests</desc>
            <filename>62345.patch</filename>
            <type>text/plain</type>
            <size>16890</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NjM5OGMxLi5iODM3MDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTEtMDYtMTAgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIzNDUKKyAgICAgICAgVXNlIHBlci1pc29sYXRl
IGVtYmVkZGVyIGRhdGEgaW5zdGVhZCBvZiBzdGF0aWNzIGZvciBjYWNoZXMgaW4gYmluZGluZ3Mu
CisgICAgICAgIFRoaXMgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIG1vcmUgdGhhbiBvbmUgdjggaXNv
bGF0ZSBwZXIgcHJvY2Vzcy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtl
eVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6flY4QmluZGluZ1Blcklz
b2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3Vy
ZUluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRh
OjpkaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRvU3RyaW5nTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpnZXRUb1N0cmluZ1RlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRl
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0ZW1wbGF0
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dG9TdHJp
bmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0b1N0
cmluZ1RlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVk
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4TG9jYWxDb250ZXh0OjpWOExvY2FsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2FsQ29udGV4dDo6flY4TG9jYWxDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFV0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHk6OmluaXRWOElmTmVlZGVkKToKKwogMjAxMS0wNi0wOCAgSmFtZXMgU2ltb25zZW4gIDxz
aW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBHZW50aWxj
b3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCAzYTVkODY2Li5jZTZjY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjIwMSwxNCArMjIwMSwy
NyBAQCBFTkQKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NO
YW1lfTo6R2V0UmF3VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9UmF3Q2FjaGUgPSBjcmVhdGVSYXdUZW1wbGF0
ZSgpOwotICAgIHJldHVybiAke2NsYXNzTmFtZX1SYXdDYWNoZTsKKyAgICBWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7Cisg
ICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkgIHJldHVybiByZXN1bHQtPnNlY29uZDsKKwor
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOworICAgIGRhdGEt
PnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgcmV0dXJuIHRlbXBsOwog
fQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9OjpH
ZXRUZW1wbGF0ZSgpXAordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xh
c3NOYW1lfTo6R2V0VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9Q2FjaGUgPSBDb25maWd1cmUke2NsYXNzTmFt
ZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsKLSAgICByZXR1cm4gJHtjbGFzc05hbWV9Q2Fj
aGU7CisgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YTo6Y3VycmVudCgpOworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
KyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpIHJldHVybiByZXN1
bHQtPnNlY29uZDsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQorICAgICAgICBDb25maWd1
cmUke2NsYXNzTmFtZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsKKyAgICBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0ZW1wbDsKIH0KIAogYm9v
bCAke2NsYXNzTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAKaW5kZXggZGNiZGQ4MS4uNzRiNjdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTk4LDI1ICs5OCw2IEBAIGJvb2wg
c2V0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgb2JqZWN0LCBjb25zdCBJREJLZXlQYXRoRWxlbWVu
dCYga2V5UGF0aEVsZW1lbnQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1jbGFzcyBMb2NhbENv
bnRleHQgewotcHVibGljOgotICAgIExvY2FsQ29udGV4dCgpCi0gICAgICAgIDogbV9jb250ZXh0
KHY4OjpDb250ZXh0OjpOZXcoKSkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+RW50ZXIoKTsK
LSAgICB9Ci0KLSAgICB+TG9jYWxDb250ZXh0KCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+
RXhpdCgpOwotICAgICAgICBtX2NvbnRleHQuRGlzcG9zZSgpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICB2ODo6SGFuZGxlU2NvcGUgbV9zY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29u
dGV4dD4gbV9jb250ZXh0OwotfTsKLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE50aFZhbHVl
T25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcm9vdFZhbHVlLCBjb25zdCBWZWN0b3I8
SURCS2V5UGF0aEVsZW1lbnQ+JiBrZXlQYXRoRWxlbWVudHMsIHNpemVfdCBpbmRleCkKIHsKICAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudFZhbHVlKHJvb3RWYWx1ZSk7CkBAIC0xMzQs
NyArMTE1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE50aFZhbHVlT25LZXlQYXRoKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiYgcm9vdFZhbHVlLCBjb24KIAogUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPElEQktleVBhdGhFbGVtZW50
PiYga2V5UGF0aCkKIHsKLSAgICBMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0OworICAgIFY4TG9j
YWxDb250ZXh0IGxvY2FsQ29udGV4dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1
ZSh2YWx1ZS0+ZGVzZXJpYWxpemUoKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5
KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGgsIGtleVBhdGguc2l6ZSgpKSk7
CiAgICAgaWYgKHY4S2V5LklzRW1wdHkoKSkKQEAgLTE0NCw3ICsxMjUsNyBAQCBQYXNzUmVmUHRy
PElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1Jl
ZlB0cjxTZXJpYWxpegogCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFZlY3RvcjxJREJLZXlQYXRo
RWxlbWVudD4mIGtleVBhdGgpCiB7Ci0gICAgTG9jYWxDb250ZXh0IGxvY2FsQ29udGV4dDsKKyAg
ICBWOExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7CiAgICAgaWYgKCFrZXlQYXRoLnNpemUoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCmluZGV4IDJhY2QyOWEuLjJmMjA4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcApAQCAtNDcsNiArNDcsNDAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CisKK1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKK30KKworVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6On5WOEJp
bmRpbmdQZXJJc29sYXRlRGF0YSgpCit7Cit9CisKK1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQorewor
ICAgIEFTU0VSVChpc29sYXRlKTsKKyAgICBBU1NFUlQoIWlzb2xhdGUtPkdldERhdGEoKSk7Cisg
ICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBuZXcgVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEoaXNvbGF0ZSk7CisgICAgaXNvbGF0ZS0+U2V0RGF0YShkYXRhKTsKKyAgICByZXR1cm4g
ZGF0YTsKK30KKwordm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlhbGl6
ZWQodjg6Oklzb2xhdGUqIGlzb2xhdGUpIAoreworICAgIEFTU0VSVChpc29sYXRlKTsKKyAgICBp
ZiAoIWlzb2xhdGUtPkdldERhdGEoKSkgCisgICAgICAgIGNyZWF0ZShpc29sYXRlKTsKK30KKwor
dm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGlzcG9zZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKK3sKKyAgICB2b2lkKiBkYXRhID0gaXNvbGF0ZS0+R2V0RGF0YSgpOworICAgIGlmIChkYXRh
KQorICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqPihk
YXRhKTsKK30KKworCisKIC8vIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSBpcyBhIGhlbHBlciBjbGFz
cyBmb3IgdjhFeHRlcm5hbFN0cmluZy4gSXQgaXMgdXNlZAogLy8gdG8gbWFuYWdlIHRoZSBsaWZl
LWN5Y2xlIG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBvZiB0aGUgZXh0ZXJuYWwgc3RyaW5nLgog
Y2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlIDogcHVibGljIHY4OjpTdHJpbmc6OkV4dGVybmFs
U3RyaW5nUmVzb3VyY2UgewpAQCAtNTQwLDEwICs1NzQsMTEgQEAgdjg6OkxvY2FsPHY4OjpTaWdu
YXR1cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPgogCiB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBnZXRUb1N0cmluZ05hbWUoKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwodjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4sIHZhbHVl
LCAoKSk7Ci0gICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKLSAgICAgICAgdmFsdWUgPSB2ODo6UGVy
c2lzdGVudDx2ODo6U3RyaW5nPjo6TmV3KHY4OjpTdHJpbmc6Ok5ldygidG9TdHJpbmciKSk7Ci0g
ICAgcmV0dXJuIHZhbHVlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+JiB0b1N0cmlu
Z05hbWUgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0cmluZ05hbWUo
KTsKKyAgICBpZiAodG9TdHJpbmdOYW1lLklzRW1wdHkoKSkKKyAgICAgICAgdG9TdHJpbmdOYW1l
ID0gdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz46Ok5ldyh2ODo6U3RyaW5nOjpOZXcoInRvU3Ry
aW5nIikpOworICAgIHJldHVybiAqdG9TdHJpbmdOYW1lOworCiB9CiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQpAQCAtNTY0LDcgKzU5OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29u
c3RydWN0b3JUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpCiB7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4s
IHRvU3RyaW5nVGVtcGxhdGUsICgpKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4mIHRvU3RyaW5nVGVtcGxhdGUgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpLT50b1N0cmluZ1RlbXBsYXRlKCk7CiAgICAgaWYgKHRvU3RyaW5nVGVtcGxhdGUuSXNF
bXB0eSgpKQogICAgICAgICB0b1N0cmluZ1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25zdHJ1Y3Rv
clRvU3RyaW5nKSk7CiAgICAgcmV0dXJuIHRvU3RyaW5nVGVtcGxhdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDc4NzNiNTQuLmIzYTkzNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC01MCw2ICs1MCw0MCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgfTsKICAgICB0eXBlZGVmIEJpbmRpbmdTZWN1cml0eTxWOEJpbmRpbmc+
IFY4QmluZGluZ1NlY3VyaXR5OwogCisgICAgY2xhc3MgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBj
cmVhdGUodjg6Oklzb2xhdGUqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZW5zdXJlSW5pdGlhbGl6
ZWQodjg6Oklzb2xhdGUqKTsKKyAgICAgICAgc3RhdGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRh
KiBnZXQodjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChpc29sYXRlLT5HZXREYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4
QmluZGluZ1Blcklzb2xhdGVEYXRhKj4oaXNvbGF0ZS0+R2V0RGF0YSgpKTsgCisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGN1cnJlbnQoKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2V0KHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkp
OworICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lkIGRpc3Bvc2Uodjg6Oklzb2xhdGUqKTsK
KworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ID4gVGVtcGxhdGVNYXA7CisKKyAgICAgICAgVGVtcGxh
dGVNYXAmIHJhd1RlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV9yYXdUZW1wbGF0ZXM7IH0KKyAgICAg
ICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV90ZW1wbGF0ZXM7IH0KKyAg
ICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4mIHRvU3RyaW5nTmFtZSgpIHsgcmV0dXJu
IG1fdG9TdHJpbmdOYW1lOyB9CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdUZW1wbGF0ZTsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGEodjg6Oklzb2xhdGUqKTsKKyAgICAgICAgflY4QmluZGluZ1Blcklzb2xhdGVEYXRhKCk7CisK
KyAgICAgICAgVGVtcGxhdGVNYXAgbV9yYXdUZW1wbGF0ZXM7CisgICAgICAgIFRlbXBsYXRlTWFw
IG1fdGVtcGxhdGVzOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBtX3RvU3Ry
aW5nTmFtZTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1f
dG9TdHJpbmdUZW1wbGF0ZTsKKyAgICB9OworCisKICAgICBlbnVtIEV4dGVybmFsTW9kZSB7CiAg
ICAgICAgIEV4dGVybmFsaXplLAogICAgICAgICBEb05vdEV4dGVybmFsaXplCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDU4MzE2NDEu
Ljc4YTQ4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwCkBAIC0yOTksMTEgKzI5OSwxMiBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6Omlu
aXRDb250ZXh0SWZOZWVkZWQoKQogICAgICAgICB2ODo6Vjg6OlNldEZhaWxlZEFjY2Vzc0NoZWNr
Q2FsbGJhY2tGdW5jdGlvbihyZXBvcnRVbnNhZmVKYXZhU2NyaXB0QWNjZXNzKTsKIAogICAgICAg
ICBTY3JpcHRQcm9maWxlcjo6aW5pdGlhbGl6ZSgpOwotICAgICAgICAKKworICAgICAgICBWOEJp
bmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlhbGl6ZWQodjg6Oklzb2xhdGU6OkdldEN1
cnJlbnQoKSk7CisKICAgICAgICAgaXNWOEluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAKLQog
ICAgIG1fY29udGV4dCA9IGNyZWF0ZU5ld0NvbnRleHQobV9nbG9iYWwsIDApOwogICAgIGlmICht
X2NvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggYjYzMTM1OS4uYmQzZjA0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApAQCAtNDgsNiArNDgs
MjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitWOExvY2FsQ29udGV4dDo6VjhMb2NhbENv
bnRleHQoKSAKK3sKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlhbGl6
ZWQodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSk7CisgICAgbV9jb250ZXh0ID0gdjg6OkNvbnRl
eHQ6Ok5ldygpOworICAgIG1fY29udGV4dC0+RW50ZXIoKTsKK30KKworCitWOExvY2FsQ29udGV4
dDo6flY4TG9jYWxDb250ZXh0KCkgCit7CisgICAgbV9jb250ZXh0LT5FeGl0KCk7CisgICAgbV9j
b250ZXh0LkRpc3Bvc2UoKTsKK30KKwogLy8gVXNlIGFuIGFycmF5IHRvIGhvbGQgZGVwZW5kZW50
cy4gSXQgd29ya3MgbGlrZSBhIHJlZi1jb3VudGVkIHNjaGVtZS4KIC8vIEEgdmFsdWUgY2FuIGJl
IGFkZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0Lgogdm9pZCBjcmVhdGVIaWRk
ZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhVdGlsaXRpZXMuaAppbmRleCA0YTQ0ZjNjLi42NDZhOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKQEAgLTY0LDYgKzY0LDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFnczsK
IAorICAgIGNsYXNzIFY4TG9jYWxDb250ZXh0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFY4TG9j
YWxDb250ZXh0KCk7CisgICAgICAgIHZpcnR1YWwgflY4TG9jYWxDb250ZXh0KCk7CisgICAgcHJp
dmF0ZToKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIG1faGFuZGxlU2NvcGU7CisgICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgfTsKKwogICAgIC8vICdG
dW5jdGlvbk9ubHknIGlzIGFzc3VtZWQgZm9yIHRoZSBjcmVhdGVkIGNhbGxiYWNrLgogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBWOENhbGxiYWNrVHlwZT4KICAgICBQYXNzUmVmUHRyPFY4Q2FsbGJh
Y2tUeXBlPiBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjayh2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgYm9vbCYgc3VjY2VlZGVkLCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdzIGFjY2VwdGVk
VmFsdWVzID0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDQyMjU5ZDUuLjk3NTJiNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMTI0LDYgKzEyNCw4IEBAIHZvaWQgV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5Ojppbml0VjhJZk5lZWRlZCgpCiAgICAgcmVzb3VyY2VfY29uc3RyYWlu
dHMuc2V0X3N0YWNrX2xpbWl0KCZoZXJlIC0ga1dvcmtlck1heFN0YWNrU2l6ZSAvIHNpemVvZih1
aW50MzJfdCopKTsKICAgICB2ODo6U2V0UmVzb3VyY2VDb25zdHJhaW50cygmcmVzb3VyY2VfY29u
c3RyYWludHMpOwogCisgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmNyZWF0ZSh2ODo6SXNv
bGF0ZTo6R2V0Q3VycmVudCgpKTsKKwogICAgIHY4SW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU3NmJiNzIuLmFjZDA0YzggMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTAgIERtaXRyeSBMb21v
diAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjIzNDUKKyAgICAgICAgW1Y4XVtDaHJvbWl1bV0gVXNlIHBlci1pc29sYXRlIGVtYmVkZGVyIGRh
dGEgaW5zdGVhZCBvZiBzdGF0aWNzIGZvciBjYWNoZXMgaW4gYmluZGluZ3MKKworICAgICAgICAq
IHRlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRF
U1QpOgorCiAyMDExLTA2LTA4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGFjNDI4
MmIuLmEwMWQwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
QmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC0zOCwyNSArMzgsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgTG9jYWxDb250ZXh0IHsK
LXB1YmxpYzoKLSAgICBMb2NhbENvbnRleHQoKQotICAgICAgICA6IG1fY29udGV4dCh2ODo6Q29u
dGV4dDo6TmV3KCkpCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPkVudGVyKCk7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+TG9jYWxDb250ZXh0KCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+
RXhpdCgpOwotICAgICAgICBtX2NvbnRleHQuRGlzcG9zZSgpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICB2ODo6SGFuZGxlU2NvcGUgbV9zY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29u
dGV4dD4gbV9jb250ZXh0OwotfTsKLQogUGFzc1JlZlB0cjxJREJLZXk+IGNoZWNrS2V5RnJvbVZh
bHVlQW5kS2V5UGF0aEludGVybmFsKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBWZWN0b3I8SURCS2V5UGF0aEVsZW1lbnQ+IGlkYktl
eVBhdGg7CkBAIC0xMTMsNyArOTQsNyBAQCB2b2lkIGNoZWNrS2V5UGF0aE51bWJlclZhbHVlKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aAogCiBURVNU
KElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5nVmFs
dWUpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2
OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6
Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpTdHJp
bmc6Ok5ldygiem9vIikpOwogCkBAIC0xMjYsNyArMTA3LDcgQEAgVEVTVChJREJLZXlGcm9tVmFs
dWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlKQogCiBURVNUKElE
QktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5TnVtYmVyVmFsdWUp
CiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2OGNv
bnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5l
dygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpOdW1iZXI6
Ok5ldyg0NTYpKTsKIApAQCAtMTM5LDcgKzEyMCw3IEBAIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5k
S2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVydHlOdW1iZXJWYWx1ZSkKIAogVEVTVChJREJLZXlG
cm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxBcnJheUVsZW1lbnQpCiB7Ci0gICAgTG9j
YWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAg
djg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJyYXk6Ok5ldygpOwogICAgIGFycmF5
LT5TZXQoMywgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKQEAgLTE1Miw3ICsxMzMsNyBAQCBU
RVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbEFycmF5RWxlbWVudCkK
IAogVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCiB7Ci0g
ICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7
CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwog
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzdWJQcm9wZXJ0eSA9IHY4OjpPYmplY3Q6Ok5ldygp
OwogICAgIHN1YlByb3BlcnR5LT5TZXQodjg6OlN0cmluZzo6TmV3KCJiYXIiKSwgdjg6OlN0cmlu
Zzo6TmV3KCJ6ZWUiKSk7CkBAIC0xNjcsNyArMTQ4LDcgQEAgVEVTVChJREJLZXlGcm9tVmFsdWVB
bmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCiAKIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5
UGF0aFRlc3QsIEFycmF5MkQpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBW
OExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVj
dCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0g
djg6OkFycmF5OjpOZXcoKTsKICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBzdWJBcnJheSA9IHY4
OjpBcnJheTo6TmV3KCk7CkBAIC0xODQsNyArMTY1LDcgQEAgVEVTVChJREJLZXlGcm9tVmFsdWVB
bmRLZXlQYXRoVGVzdCwgQXJyYXkyRCkKIAogVEVTVChJbmplY3RJREJLZXlUZXN0LCBUb3BMZXZl
bFByb3BlcnR5U3RyaW5nVmFsdWUpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAg
ICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5l
dygiZm9vIiksIHY4OjpTdHJpbmc6Ok5ldygiem9vIikpOwogCkBAIC0xOTcsNyArMTc4LDcgQEAg
VEVTVChJbmplY3RJREJLZXlUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5nVmFsdWUpCiAKIFRF
U1QoSW5qZWN0SURCS2V5VGVzdCwgVG9wTGV2ZWxBcnJheUVsZW1lbnQpCiB7Ci0gICAgTG9jYWxD
b250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAgdjg6
OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJyYXk6Ok5ldygpOwogICAgIGFycmF5LT5T
ZXQoMywgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKQEAgLTIxMCw3ICsxOTEsNyBAQCBURVNU
KEluamVjdElEQktleVRlc3QsIFRvcExldmVsQXJyYXlFbGVtZW50KQogCiBURVNUKEluamVjdElE
QktleVRlc3QsIFN1YlByb3BlcnR5KQogewotICAgIExvY2FsQ29udGV4dCB2OGNvbnRleHQ7Cisg
ICAgVjhMb2NhbENvbnRleHQgdjhjb250ZXh0OwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBv
YmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc3Vi
UHJvcGVydHkgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICBzdWJQcm9wZXJ0eS0+U2V0KHY4OjpT
dHJpbmc6Ok5ldygiYmFyIiksIHY4OjpTdHJpbmc6Ok5ldygiemVlIikpOwpAQCAtMjI3LDcgKzIw
OCw3IEBAIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgU3ViUHJvcGVydHkpCiAKIFRFU1QoSW5qZWN0
SURCS2V5VGVzdCwgQXJyYXkyRCkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAg
IFY4TG9jYWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2Jq
ZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkg
PSB2ODo6QXJyYXk6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHN1YkFycmF5ID0g
djg6OkFycmF5OjpOZXcoKTsK
</data>
<flag name="commit-queue"
          id="90524"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96765</attachid>
            <date>2011-06-10 11:33:56 -0700</date>
            <delta_ts>2011-06-10 15:25:29 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>62345.patch</filename>
            <type>text/plain</type>
            <size>16950</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NjRmYWU3Li5mMzY0OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTEtMDYtMTAgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIzNDUKKyAgICAgICAgVXNlIHBlci1pc29sYXRl
IGVtYmVkZGVyIGRhdGEgaW5zdGVhZCBvZiBzdGF0aWNzIGZvciBjYWNoZXMgaW4gYmluZGluZ3Mu
CisgICAgICAgIFRoaXMgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIG1vcmUgdGhhbiBvbmUgdjggaXNv
bGF0ZSBwZXIgcHJvY2Vzcy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtl
eVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6flY4QmluZGluZ1Blcklz
b2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3Vy
ZUluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRh
OjpkaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRvU3RyaW5nTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpnZXRUb1N0cmluZ1RlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRl
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0ZW1wbGF0
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dG9TdHJp
bmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0b1N0
cmluZ1RlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVk
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4TG9jYWxDb250ZXh0OjpWOExvY2FsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2FsQ29udGV4dDo6flY4TG9jYWxDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFV0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHk6OmluaXRWOElmTmVlZGVkKToKKwogMjAxMS0wNi0xMCAgRGltaXRyaSBHbGF6a292ICA8
ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCmluZGV4IDNhNWQ4NjYuLmNlNmNjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yMjAxLDE0ICsyMjAxLDI3IEBA
IEVORAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9
OjpHZXRSYXdUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX1SYXdDYWNoZSA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7
Ci0gICAgcmV0dXJuICR7Y2xhc3NOYW1lfVJhd0NhY2hlOworICAgIFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKSAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CisgICAgZGF0YS0+cmF3
VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICByZXR1cm4gdGVtcGw7CiB9CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFRl
bXBsYXRlKClcCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05h
bWV9OjpHZXRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX1DYWNoZSA9IENvbmZpZ3VyZSR7Y2xhc3NOYW1lfVRl
bXBsYXRlKEdldFJhd1RlbXBsYXRlKCkpOwotICAgIHJldHVybiAke2NsYXNzTmFtZX1DYWNoZTsK
KyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVE
YXRhOjpjdXJyZW50KCk7CisgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkgcmV0dXJuIHJlc3VsdC0+
c2Vjb25kOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9CisgICAgICAgIENvbmZpZ3VyZSR7
Y2xhc3NOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKCkpOworICAgIGRhdGEtPnRlbXBsYXRl
TWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29sICR7
Y2xhc3NOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApp
bmRleCBkY2JkZDgxLi43NGI2N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtOTgsMjUgKzk4LDYgQEAgYm9vbCBzZXQo
djg6OkhhbmRsZTx2ODo6VmFsdWU+JiBvYmplY3QsIGNvbnN0IElEQktleVBhdGhFbGVtZW50JiBr
ZXlQYXRoRWxlbWVudCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWNsYXNzIExvY2FsQ29udGV4
dCB7Ci1wdWJsaWM6Ci0gICAgTG9jYWxDb250ZXh0KCkKLSAgICAgICAgOiBtX2NvbnRleHQodjg6
OkNvbnRleHQ6Ok5ldygpKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5FbnRlcigpOwotICAg
IH0KLQotICAgIH5Mb2NhbENvbnRleHQoKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5FeGl0
KCk7Ci0gICAgICAgIG1fY29udGV4dC5EaXNwb3NlKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IHY4OjpIYW5kbGVTY29wZSBtX3Njb3BlOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0
PiBtX2NvbnRleHQ7Ci19OwotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TnRoVmFsdWVPbktl
eVBhdGgodjg6OkhhbmRsZTx2ODo6VmFsdWU+JiByb290VmFsdWUsIGNvbnN0IFZlY3RvcjxJREJL
ZXlQYXRoRWxlbWVudD4mIGtleVBhdGhFbGVtZW50cywgc2l6ZV90IGluZGV4KQogewogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50VmFsdWUocm9vdFZhbHVlKTsKQEAgLTEzNCw3ICsx
MTUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TnRoVmFsdWVPbktleVBhdGgodjg6Okhh
bmRsZTx2ODo6VmFsdWU+JiByb290VmFsdWUsIGNvbgogCiBQYXNzUmVmUHRyPElEQktleT4gY3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0b3I8SURCS2V5UGF0aEVsZW1lbnQ+JiBr
ZXlQYXRoKQogewotICAgIExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7CisgICAgVjhMb2NhbENv
bnRleHQgbG9jYWxDb250ZXh0OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZh
bHVlLT5kZXNlcmlhbGl6ZSgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhLZXkoZ2V0
TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aCwga2V5UGF0aC5zaXplKCkpKTsKICAg
ICBpZiAodjhLZXkuSXNFbXB0eSgpKQpAQCAtMTQ0LDcgKzEyNSw3IEBAIFBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRy
PFNlcmlhbGl6CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJL
ZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPElEQktleVBhdGhFbGVt
ZW50PiYga2V5UGF0aCkKIHsKLSAgICBMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0OworICAgIFY4
TG9jYWxDb250ZXh0IGxvY2FsQ29udGV4dDsKICAgICBpZiAoIWtleVBhdGguc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAK
aW5kZXggMmFjZDI5YS4uMmYyMDhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwCkBAIC00Nyw2ICs0Nyw0MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKwor
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29s
YXRlKiBpc29sYXRlKQoreworfQorCitWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6flY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhKCkKK3sKK30KKworVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIFY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjpjcmVhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAg
QVNTRVJUKGlzb2xhdGUpOworICAgIEFTU0VSVCghaXNvbGF0ZS0+R2V0RGF0YSgpKTsKKyAgICBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IG5ldyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YShpc29sYXRlKTsKKyAgICBpc29sYXRlLT5TZXREYXRhKGRhdGEpOworICAgIHJldHVybiBkYXRh
OworfQorCit2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkgCit7CisgICAgQVNTRVJUKGlzb2xhdGUpOworICAgIGlmICgh
aXNvbGF0ZS0+R2V0RGF0YSgpKSAKKyAgICAgICAgY3JlYXRlKGlzb2xhdGUpOworfQorCit2b2lk
IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkaXNwb3NlKHY4OjpJc29sYXRlKiBpc29sYXRlKQor
eworICAgIHZvaWQqIGRhdGEgPSBpc29sYXRlLT5HZXREYXRhKCk7CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSo+KGRhdGEp
OworfQorCisKKwogLy8gV2ViQ29yZVN0cmluZ1Jlc291cmNlIGlzIGEgaGVscGVyIGNsYXNzIGZv
ciB2OEV4dGVybmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAvLyB0byBtYW5hZ2UgdGhlIGxpZmUtY3lj
bGUgb2YgdGhlIHVuZGVybHlpbmcgYnVmZmVyIG9mIHRoZSBleHRlcm5hbCBzdHJpbmcuCiBjbGFz
cyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMgdjg6OlN0cmluZzo6RXh0ZXJuYWxTdHJp
bmdSZXNvdXJjZSB7CkBAIC01NDAsMTAgKzU3NCwxMSBAQCB2ODo6TG9jYWw8djg6OlNpZ25hdHVy
ZT4gY29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IGdldFRvU3RyaW5nTmFtZSgpCiB7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiwgdmFsdWUsICgp
KTsKLSAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQotICAgICAgICB2YWx1ZSA9IHY4OjpQZXJzaXN0
ZW50PHY4OjpTdHJpbmc+OjpOZXcodjg6OlN0cmluZzo6TmV3KCJ0b1N0cmluZyIpKTsKLSAgICBy
ZXR1cm4gdmFsdWU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4mIHRvU3RyaW5nTmFt
ZSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nTmFtZSgpOwor
ICAgIGlmICh0b1N0cmluZ05hbWUuSXNFbXB0eSgpKQorICAgICAgICB0b1N0cmluZ05hbWUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPjo6TmV3KHY4OjpTdHJpbmc6Ok5ldygidG9TdHJpbmci
KSk7CisgICAgcmV0dXJuICp0b1N0cmluZ05hbWU7CisKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RvclRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CkBAIC01NjQsNyArNTk5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1
Y3RvclRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUb1N0cmluZ1RlbXBsYXRlKCkKIHsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgdG9T
dHJpbmdUZW1wbGF0ZSwgKCkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPnRvU3RyaW5nVGVtcGxhdGUoKTsKICAgICBpZiAodG9TdHJpbmdUZW1wbGF0ZS5Jc0VtcHR5
KCkpCiAgICAgICAgIHRvU3RyaW5nVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KGNvbnN0cnVjdG9yVG9T
dHJpbmcpKTsKICAgICByZXR1cm4gdG9TdHJpbmdUZW1wbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNzg3M2I1NC4uYjNhOTM1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTUwLDYgKzUwLDQwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICB9OwogICAgIHR5cGVkZWYgQmluZGluZ1NlY3VyaXR5PFY4QmluZGluZz4gVjhC
aW5kaW5nU2VjdXJpdHk7CiAKKyAgICBjbGFzcyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGNyZWF0
ZSh2ODo6SXNvbGF0ZSopOworICAgICAgICBzdGF0aWMgdm9pZCBlbnN1cmVJbml0aWFsaXplZCh2
ODo6SXNvbGF0ZSopOworICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGdl
dCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlz
b2xhdGUtPkdldERhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VjhCaW5k
aW5nUGVySXNvbGF0ZURhdGEqPihpc29sYXRlLT5HZXREYXRhKCkpOyAKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogY3VycmVudCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnZXQodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgc3RhdGljIHZvaWQgZGlzcG9zZSh2ODo6SXNvbGF0ZSopOworCisg
ICAgICAgIHR5cGVkZWYgSGFzaE1hcDxXcmFwcGVyVHlwZUluZm8qLCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gPiBUZW1wbGF0ZU1hcDsKKworICAgICAgICBUZW1wbGF0ZU1h
cCYgcmF3VGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3Jhd1RlbXBsYXRlczsgfQorICAgICAgICBU
ZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3RlbXBsYXRlczsgfQorICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiYgdG9TdHJpbmdOYW1lKCkgeyByZXR1cm4gbV90
b1N0cmluZ05hbWU7IH0KKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+JiB0b1N0cmluZ1RlbXBsYXRlKCkgeyByZXR1cm4gbV90b1N0cmluZ1RlbXBsYXRlOyB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSh2
ODo6SXNvbGF0ZSopOworICAgICAgICB+VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEoKTsKKworICAg
ICAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlczsKKyAgICAgICAgVGVtcGxhdGVNYXAgbV90
ZW1wbGF0ZXM7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IG1fdG9TdHJpbmdO
YW1lOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV90b1N0
cmluZ1RlbXBsYXRlOworICAgIH07CisKKwogICAgIGVudW0gRXh0ZXJuYWxNb2RlIHsKICAgICAg
ICAgRXh0ZXJuYWxpemUsCiAgICAgICAgIERvTm90RXh0ZXJuYWxpemUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggNTgzMTY0MS4uNzhh
NDg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAKQEAgLTI5OSwxMSArMjk5LDEyIEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5pdENv
bnRleHRJZk5lZWRlZCgpCiAgICAgICAgIHY4OjpWODo6U2V0RmFpbGVkQWNjZXNzQ2hlY2tDYWxs
YmFja0Z1bmN0aW9uKHJlcG9ydFVuc2FmZUphdmFTY3JpcHRBY2Nlc3MpOwogCiAgICAgICAgIFNj
cmlwdFByb2ZpbGVyOjppbml0aWFsaXplKCk7Ci0gICAgICAgIAorCisgICAgICAgIFY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVu
dCgpKTsKKwogICAgICAgICBpc1Y4SW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KIAotCiAgICAg
bV9jb250ZXh0ID0gY3JlYXRlTmV3Q29udGV4dChtX2dsb2JhbCwgMCk7CiAgICAgaWYgKG1fY29u
dGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCBiNjMxMzU5Li5iZDNmMDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC00OCw2ICs0OCwyMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Y4TG9jYWxDb250ZXh0OjpWOExvY2FsQ29udGV4
dCgpIAoreworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2
ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKKyAgICBtX2NvbnRleHQgPSB2ODo6Q29udGV4dDo6
TmV3KCk7CisgICAgbV9jb250ZXh0LT5FbnRlcigpOworfQorCisKK1Y4TG9jYWxDb250ZXh0Ojp+
VjhMb2NhbENvbnRleHQoKSAKK3sKKyAgICBtX2NvbnRleHQtPkV4aXQoKTsKKyAgICBtX2NvbnRl
eHQuRGlzcG9zZSgpOworfQorCiAvLyBVc2UgYW4gYXJyYXkgdG8gaG9sZCBkZXBlbmRlbnRzLiBJ
dCB3b3JrcyBsaWtlIGEgcmVmLWNvdW50ZWQgc2NoZW1lLgogLy8gQSB2YWx1ZSBjYW4gYmUgYWRk
ZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2b2lkIGNyZWF0ZUhpZGRlbkRl
cGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0
aWxpdGllcy5oCmluZGV4IDRhNDRmM2MuLjY0NmE4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhVdGlsaXRpZXMuaApAQCAtNjQsNiArNjQsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdzOwogCisg
ICAgY2xhc3MgVjhMb2NhbENvbnRleHQgeworICAgIHB1YmxpYzoKKyAgICAgICAgVjhMb2NhbENv
bnRleHQoKTsKKyAgICAgICAgdmlydHVhbCB+VjhMb2NhbENvbnRleHQoKTsKKyAgICBwcml2YXRl
OgorICAgICAgICB2ODo6SGFuZGxlU2NvcGUgbV9oYW5kbGVTY29wZTsKKyAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICB9OworCiAgICAgLy8gJ0Z1bmN0
aW9uT25seScgaXMgYXNzdW1lZCBmb3IgdGhlIGNyZWF0ZWQgY2FsbGJhY2suCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFY4Q2FsbGJhY2tUeXBlPgogICAgIFBhc3NSZWZQdHI8VjhDYWxsYmFja1R5
cGU+IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBib29sJiBzdWNjZWVkZWQsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0ZWRWYWx1
ZXMgPSAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggNDIyNTlkNS4uOTc1MmI3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuY3BwCkBAIC0xMjQsNiArMTI0LDggQEAgdm9pZCBXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHk6OmluaXRWOElmTmVlZGVkKCkKICAgICByZXNvdXJjZV9jb25zdHJhaW50cy5z
ZXRfc3RhY2tfbGltaXQoJmhlcmUgLSBrV29ya2VyTWF4U3RhY2tTaXplIC8gc2l6ZW9mKHVpbnQz
Ml90KikpOwogICAgIHY4OjpTZXRSZXNvdXJjZUNvbnN0cmFpbnRzKCZyZXNvdXJjZV9jb25zdHJh
aW50cyk7CiAKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRl
OjpHZXRDdXJyZW50KCkpOworCiAgICAgdjhJbml0aWFsaXplZCA9IHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjJlZDdmNi4uNjU2YzRkNSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNi0xMCAgRG1pdHJ5IExvbW92ICA8
ZHNsb21vdkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM0
NQorICAgICAgICBVc2UgcGVyLWlzb2xhdGUgZW1iZWRkZXIgZGF0YSBpbnN0ZWFkIG9mIHN0YXRp
Y3MgZm9yIGNhY2hlcyBpbiBiaW5kaW5ncy4KKyAgICAgICAgVGhpcyBpcyBhIHByZXJlcXVpc2l0
ZSBmb3IgbW9yZSB0aGFuIG9uZSB2OCBpc29sYXRlIHBlciBwcm9jZXNzLgorCisgICAgICAgICog
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVT
VCk6CisKIDIwMTEtMDYtMTAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGFj
NDI4MmIuLmEwMWQwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC0zOCwyNSArMzgsNiBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgTG9jYWxDb250ZXh0
IHsKLXB1YmxpYzoKLSAgICBMb2NhbENvbnRleHQoKQotICAgICAgICA6IG1fY29udGV4dCh2ODo6
Q29udGV4dDo6TmV3KCkpCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPkVudGVyKCk7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB+TG9jYWxDb250ZXh0KCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4
dC0+RXhpdCgpOwotICAgICAgICBtX2NvbnRleHQuRGlzcG9zZSgpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICB2ODo6SGFuZGxlU2NvcGUgbV9zY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6
Q29udGV4dD4gbV9jb250ZXh0OwotfTsKLQogUGFzc1JlZlB0cjxJREJLZXk+IGNoZWNrS2V5RnJv
bVZhbHVlQW5kS2V5UGF0aEludGVybmFsKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBWZWN0b3I8SURCS2V5UGF0aEVsZW1lbnQ+IGlk
YktleVBhdGg7CkBAIC0xMTMsNyArOTQsNyBAQCB2b2lkIGNoZWNrS2V5UGF0aE51bWJlclZhbHVl
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aAogCiBU
RVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5n
VmFsdWUpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4
dCB2OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmpl
Y3Q6Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpT
dHJpbmc6Ok5ldygiem9vIikpOwogCkBAIC0xMjYsNyArMTA3LDcgQEAgVEVTVChJREJLZXlGcm9t
VmFsdWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlKQogCiBURVNU
KElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5TnVtYmVyVmFs
dWUpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2
OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6
Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpOdW1i
ZXI6Ok5ldyg0NTYpKTsKIApAQCAtMTM5LDcgKzEyMCw3IEBAIFRFU1QoSURCS2V5RnJvbVZhbHVl
QW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVydHlOdW1iZXJWYWx1ZSkKIAogVEVTVChJREJL
ZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxBcnJheUVsZW1lbnQpCiB7Ci0gICAg
TG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAg
ICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJyYXk6Ok5ldygpOwogICAgIGFy
cmF5LT5TZXQoMywgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKQEAgLTE1Miw3ICsxMzMsNyBA
QCBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbEFycmF5RWxlbWVu
dCkKIAogVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCiB7
Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2OGNvbnRl
eHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygp
OwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzdWJQcm9wZXJ0eSA9IHY4OjpPYmplY3Q6Ok5l
dygpOwogICAgIHN1YlByb3BlcnR5LT5TZXQodjg6OlN0cmluZzo6TmV3KCJiYXIiKSwgdjg6OlN0
cmluZzo6TmV3KCJ6ZWUiKSk7CkBAIC0xNjcsNyArMTQ4LDcgQEAgVEVTVChJREJLZXlGcm9tVmFs
dWVBbmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCiAKIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5k
S2V5UGF0aFRlc3QsIEFycmF5MkQpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAg
ICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5
ID0gdjg6OkFycmF5OjpOZXcoKTsKICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBzdWJBcnJheSA9
IHY4OjpBcnJheTo6TmV3KCk7CkBAIC0xODQsNyArMTY1LDcgQEAgVEVTVChJREJLZXlGcm9tVmFs
dWVBbmRLZXlQYXRoVGVzdCwgQXJyYXkyRCkKIAogVEVTVChJbmplY3RJREJLZXlUZXN0LCBUb3BM
ZXZlbFByb3BlcnR5U3RyaW5nVmFsdWUpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsK
KyAgICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6
Ok5ldygiZm9vIiksIHY4OjpTdHJpbmc6Ok5ldygiem9vIikpOwogCkBAIC0xOTcsNyArMTc4LDcg
QEAgVEVTVChJbmplY3RJREJLZXlUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5nVmFsdWUpCiAK
IFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgVG9wTGV2ZWxBcnJheUVsZW1lbnQpCiB7Ci0gICAgTG9j
YWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAg
djg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJyYXk6Ok5ldygpOwogICAgIGFycmF5
LT5TZXQoMywgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKQEAgLTIxMCw3ICsxOTEsNyBAQCBU
RVNUKEluamVjdElEQktleVRlc3QsIFRvcExldmVsQXJyYXlFbGVtZW50KQogCiBURVNUKEluamVj
dElEQktleVRlc3QsIFN1YlByb3BlcnR5KQogewotICAgIExvY2FsQ29udGV4dCB2OGNvbnRleHQ7
CisgICAgVjhMb2NhbENvbnRleHQgdjhjb250ZXh0OwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
c3ViUHJvcGVydHkgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICBzdWJQcm9wZXJ0eS0+U2V0KHY4
OjpTdHJpbmc6Ok5ldygiYmFyIiksIHY4OjpTdHJpbmc6Ok5ldygiemVlIikpOwpAQCAtMjI3LDcg
KzIwOCw3IEBAIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgU3ViUHJvcGVydHkpCiAKIFRFU1QoSW5q
ZWN0SURCS2V5VGVzdCwgQXJyYXkyRCkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0Owor
ICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
b2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJy
YXkgPSB2ODo6QXJyYXk6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHN1YkFycmF5
ID0gdjg6OkFycmF5OjpOZXcoKTsK
</data>
<flag name="commit-queue"
          id="90546"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96803</attachid>
            <date>2011-06-10 15:25:29 -0700</date>
            <delta_ts>2011-06-13 14:11:40 -0700</delta_ts>
            <desc>Release mode compilation fixed.</desc>
            <filename>62345.patch</filename>
            <type>text/plain</type>
            <size>17129</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NjRmYWU3Li5mMzY0OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTEtMDYtMTAgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIzNDUKKyAgICAgICAgVXNlIHBlci1pc29sYXRl
IGVtYmVkZGVyIGRhdGEgaW5zdGVhZCBvZiBzdGF0aWNzIGZvciBjYWNoZXMgaW4gYmluZGluZ3Mu
CisgICAgICAgIFRoaXMgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIG1vcmUgdGhhbiBvbmUgdjggaXNv
bGF0ZSBwZXIgcHJvY2Vzcy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtl
eVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6flY4QmluZGluZ1Blcklz
b2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3Vy
ZUluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRh
OjpkaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRvU3RyaW5nTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpnZXRUb1N0cmluZ1RlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRl
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0ZW1wbGF0
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dG9TdHJp
bmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0b1N0
cmluZ1RlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVk
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4TG9jYWxDb250ZXh0OjpWOExvY2FsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2FsQ29udGV4dDo6flY4TG9jYWxDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFV0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHk6OmluaXRWOElmTmVlZGVkKToKKwogMjAxMS0wNi0xMCAgRGltaXRyaSBHbGF6a292ICA8
ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCmluZGV4IDNhNWQ4NjYuLmNlNmNjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yMjAxLDE0ICsyMjAxLDI3IEBA
IEVORAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9
OjpHZXRSYXdUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX1SYXdDYWNoZSA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7
Ci0gICAgcmV0dXJuICR7Y2xhc3NOYW1lfVJhd0NhY2hlOworICAgIFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKSAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CisgICAgZGF0YS0+cmF3
VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICByZXR1cm4gdGVtcGw7CiB9CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFRl
bXBsYXRlKClcCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05h
bWV9OjpHZXRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX1DYWNoZSA9IENvbmZpZ3VyZSR7Y2xhc3NOYW1lfVRl
bXBsYXRlKEdldFJhd1RlbXBsYXRlKCkpOwotICAgIHJldHVybiAke2NsYXNzTmFtZX1DYWNoZTsK
KyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVE
YXRhOjpjdXJyZW50KCk7CisgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkgcmV0dXJuIHJlc3VsdC0+
c2Vjb25kOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9CisgICAgICAgIENvbmZpZ3VyZSR7
Y2xhc3NOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKCkpOworICAgIGRhdGEtPnRlbXBsYXRl
TWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29sICR7
Y2xhc3NOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApp
bmRleCBkY2JkZDgxLi43NGI2N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtOTgsMjUgKzk4LDYgQEAgYm9vbCBzZXQo
djg6OkhhbmRsZTx2ODo6VmFsdWU+JiBvYmplY3QsIGNvbnN0IElEQktleVBhdGhFbGVtZW50JiBr
ZXlQYXRoRWxlbWVudCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWNsYXNzIExvY2FsQ29udGV4
dCB7Ci1wdWJsaWM6Ci0gICAgTG9jYWxDb250ZXh0KCkKLSAgICAgICAgOiBtX2NvbnRleHQodjg6
OkNvbnRleHQ6Ok5ldygpKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5FbnRlcigpOwotICAg
IH0KLQotICAgIH5Mb2NhbENvbnRleHQoKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5FeGl0
KCk7Ci0gICAgICAgIG1fY29udGV4dC5EaXNwb3NlKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IHY4OjpIYW5kbGVTY29wZSBtX3Njb3BlOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0
PiBtX2NvbnRleHQ7Ci19OwotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TnRoVmFsdWVPbktl
eVBhdGgodjg6OkhhbmRsZTx2ODo6VmFsdWU+JiByb290VmFsdWUsIGNvbnN0IFZlY3RvcjxJREJL
ZXlQYXRoRWxlbWVudD4mIGtleVBhdGhFbGVtZW50cywgc2l6ZV90IGluZGV4KQogewogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50VmFsdWUocm9vdFZhbHVlKTsKQEAgLTEzNCw3ICsx
MTUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TnRoVmFsdWVPbktleVBhdGgodjg6Okhh
bmRsZTx2ODo6VmFsdWU+JiByb290VmFsdWUsIGNvbgogCiBQYXNzUmVmUHRyPElEQktleT4gY3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0b3I8SURCS2V5UGF0aEVsZW1lbnQ+JiBr
ZXlQYXRoKQogewotICAgIExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7CisgICAgVjhMb2NhbENv
bnRleHQgbG9jYWxDb250ZXh0OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZh
bHVlLT5kZXNlcmlhbGl6ZSgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhLZXkoZ2V0
TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aCwga2V5UGF0aC5zaXplKCkpKTsKICAg
ICBpZiAodjhLZXkuSXNFbXB0eSgpKQpAQCAtMTQ0LDcgKzEyNSw3IEBAIFBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRy
PFNlcmlhbGl6CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJL
ZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPElEQktleVBhdGhFbGVt
ZW50PiYga2V5UGF0aCkKIHsKLSAgICBMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0OworICAgIFY4
TG9jYWxDb250ZXh0IGxvY2FsQ29udGV4dDsKICAgICBpZiAoIWtleVBhdGguc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAK
aW5kZXggMmFjZDI5YS4uMmYyMDhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwCkBAIC00Nyw2ICs0Nyw0MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKwor
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29s
YXRlKiBpc29sYXRlKQoreworfQorCitWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6flY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhKCkKK3sKK30KKworVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIFY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjpjcmVhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAg
QVNTRVJUKGlzb2xhdGUpOworICAgIEFTU0VSVCghaXNvbGF0ZS0+R2V0RGF0YSgpKTsKKyAgICBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IG5ldyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YShpc29sYXRlKTsKKyAgICBpc29sYXRlLT5TZXREYXRhKGRhdGEpOworICAgIHJldHVybiBkYXRh
OworfQorCit2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkgCit7CisgICAgQVNTRVJUKGlzb2xhdGUpOworICAgIGlmICgh
aXNvbGF0ZS0+R2V0RGF0YSgpKSAKKyAgICAgICAgY3JlYXRlKGlzb2xhdGUpOworfQorCit2b2lk
IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkaXNwb3NlKHY4OjpJc29sYXRlKiBpc29sYXRlKQor
eworICAgIHZvaWQqIGRhdGEgPSBpc29sYXRlLT5HZXREYXRhKCk7CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSo+KGRhdGEp
OworfQorCisKKwogLy8gV2ViQ29yZVN0cmluZ1Jlc291cmNlIGlzIGEgaGVscGVyIGNsYXNzIGZv
ciB2OEV4dGVybmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAvLyB0byBtYW5hZ2UgdGhlIGxpZmUtY3lj
bGUgb2YgdGhlIHVuZGVybHlpbmcgYnVmZmVyIG9mIHRoZSBleHRlcm5hbCBzdHJpbmcuCiBjbGFz
cyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMgdjg6OlN0cmluZzo6RXh0ZXJuYWxTdHJp
bmdSZXNvdXJjZSB7CkBAIC01NDAsMTAgKzU3NCwxMSBAQCB2ODo6TG9jYWw8djg6OlNpZ25hdHVy
ZT4gY29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IGdldFRvU3RyaW5nTmFtZSgpCiB7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiwgdmFsdWUsICgp
KTsKLSAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQotICAgICAgICB2YWx1ZSA9IHY4OjpQZXJzaXN0
ZW50PHY4OjpTdHJpbmc+OjpOZXcodjg6OlN0cmluZzo6TmV3KCJ0b1N0cmluZyIpKTsKLSAgICBy
ZXR1cm4gdmFsdWU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4mIHRvU3RyaW5nTmFt
ZSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nTmFtZSgpOwor
ICAgIGlmICh0b1N0cmluZ05hbWUuSXNFbXB0eSgpKQorICAgICAgICB0b1N0cmluZ05hbWUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPjo6TmV3KHY4OjpTdHJpbmc6Ok5ldygidG9TdHJpbmci
KSk7CisgICAgcmV0dXJuICp0b1N0cmluZ05hbWU7CisKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RvclRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CkBAIC01NjQsNyArNTk5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1
Y3RvclRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUb1N0cmluZ1RlbXBsYXRlKCkKIHsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgdG9T
dHJpbmdUZW1wbGF0ZSwgKCkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPnRvU3RyaW5nVGVtcGxhdGUoKTsKICAgICBpZiAodG9TdHJpbmdUZW1wbGF0ZS5Jc0VtcHR5
KCkpCiAgICAgICAgIHRvU3RyaW5nVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KGNvbnN0cnVjdG9yVG9T
dHJpbmcpKTsKICAgICByZXR1cm4gdG9TdHJpbmdUZW1wbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNzg3M2I1NC4uYjNhOTM1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTUwLDYgKzUwLDQwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICB9OwogICAgIHR5cGVkZWYgQmluZGluZ1NlY3VyaXR5PFY4QmluZGluZz4gVjhC
aW5kaW5nU2VjdXJpdHk7CiAKKyAgICBjbGFzcyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGNyZWF0
ZSh2ODo6SXNvbGF0ZSopOworICAgICAgICBzdGF0aWMgdm9pZCBlbnN1cmVJbml0aWFsaXplZCh2
ODo6SXNvbGF0ZSopOworICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGdl
dCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlz
b2xhdGUtPkdldERhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VjhCaW5k
aW5nUGVySXNvbGF0ZURhdGEqPihpc29sYXRlLT5HZXREYXRhKCkpOyAKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogY3VycmVudCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnZXQodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgc3RhdGljIHZvaWQgZGlzcG9zZSh2ODo6SXNvbGF0ZSopOworCisg
ICAgICAgIHR5cGVkZWYgSGFzaE1hcDxXcmFwcGVyVHlwZUluZm8qLCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gPiBUZW1wbGF0ZU1hcDsKKworICAgICAgICBUZW1wbGF0ZU1h
cCYgcmF3VGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3Jhd1RlbXBsYXRlczsgfQorICAgICAgICBU
ZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3RlbXBsYXRlczsgfQorICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiYgdG9TdHJpbmdOYW1lKCkgeyByZXR1cm4gbV90
b1N0cmluZ05hbWU7IH0KKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+JiB0b1N0cmluZ1RlbXBsYXRlKCkgeyByZXR1cm4gbV90b1N0cmluZ1RlbXBsYXRlOyB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSh2
ODo6SXNvbGF0ZSopOworICAgICAgICB+VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEoKTsKKworICAg
ICAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlczsKKyAgICAgICAgVGVtcGxhdGVNYXAgbV90
ZW1wbGF0ZXM7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IG1fdG9TdHJpbmdO
YW1lOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV90b1N0
cmluZ1RlbXBsYXRlOworICAgIH07CisKKwogICAgIGVudW0gRXh0ZXJuYWxNb2RlIHsKICAgICAg
ICAgRXh0ZXJuYWxpemUsCiAgICAgICAgIERvTm90RXh0ZXJuYWxpemUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggNTgzMTY0MS4uNzhh
NDg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAKQEAgLTI5OSwxMSArMjk5LDEyIEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5pdENv
bnRleHRJZk5lZWRlZCgpCiAgICAgICAgIHY4OjpWODo6U2V0RmFpbGVkQWNjZXNzQ2hlY2tDYWxs
YmFja0Z1bmN0aW9uKHJlcG9ydFVuc2FmZUphdmFTY3JpcHRBY2Nlc3MpOwogCiAgICAgICAgIFNj
cmlwdFByb2ZpbGVyOjppbml0aWFsaXplKCk7Ci0gICAgICAgIAorCisgICAgICAgIFY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVu
dCgpKTsKKwogICAgICAgICBpc1Y4SW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KIAotCiAgICAg
bV9jb250ZXh0ID0gY3JlYXRlTmV3Q29udGV4dChtX2dsb2JhbCwgMCk7CiAgICAgaWYgKG1fY29u
dGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCBiNjMxMzU5Li5iZDNmMDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC00OCw2ICs0OCwyMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Y4TG9jYWxDb250ZXh0OjpWOExvY2FsQ29udGV4
dCgpIAoreworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2
ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKKyAgICBtX2NvbnRleHQgPSB2ODo6Q29udGV4dDo6
TmV3KCk7CisgICAgbV9jb250ZXh0LT5FbnRlcigpOworfQorCisKK1Y4TG9jYWxDb250ZXh0Ojp+
VjhMb2NhbENvbnRleHQoKSAKK3sKKyAgICBtX2NvbnRleHQtPkV4aXQoKTsKKyAgICBtX2NvbnRl
eHQuRGlzcG9zZSgpOworfQorCiAvLyBVc2UgYW4gYXJyYXkgdG8gaG9sZCBkZXBlbmRlbnRzLiBJ
dCB3b3JrcyBsaWtlIGEgcmVmLWNvdW50ZWQgc2NoZW1lLgogLy8gQSB2YWx1ZSBjYW4gYmUgYWRk
ZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2b2lkIGNyZWF0ZUhpZGRlbkRl
cGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0
aWxpdGllcy5oCmluZGV4IDRhNDRmM2MuLjY0NmE4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhVdGlsaXRpZXMuaApAQCAtNjQsNiArNjQsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdzOwogCisg
ICAgY2xhc3MgVjhMb2NhbENvbnRleHQgeworICAgIHB1YmxpYzoKKyAgICAgICAgVjhMb2NhbENv
bnRleHQoKTsKKyAgICAgICAgdmlydHVhbCB+VjhMb2NhbENvbnRleHQoKTsKKyAgICBwcml2YXRl
OgorICAgICAgICB2ODo6SGFuZGxlU2NvcGUgbV9oYW5kbGVTY29wZTsKKyAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICB9OworCiAgICAgLy8gJ0Z1bmN0
aW9uT25seScgaXMgYXNzdW1lZCBmb3IgdGhlIGNyZWF0ZWQgY2FsbGJhY2suCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFY4Q2FsbGJhY2tUeXBlPgogICAgIFBhc3NSZWZQdHI8VjhDYWxsYmFja1R5
cGU+IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBib29sJiBzdWNjZWVkZWQsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0ZWRWYWx1
ZXMgPSAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggNDIyNTlkNS4uOTc1MmI3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuY3BwCkBAIC0xMjQsNiArMTI0LDggQEAgdm9pZCBXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHk6OmluaXRWOElmTmVlZGVkKCkKICAgICByZXNvdXJjZV9jb25zdHJhaW50cy5z
ZXRfc3RhY2tfbGltaXQoJmhlcmUgLSBrV29ya2VyTWF4U3RhY2tTaXplIC8gc2l6ZW9mKHVpbnQz
Ml90KikpOwogICAgIHY4OjpTZXRSZXNvdXJjZUNvbnN0cmFpbnRzKCZyZXNvdXJjZV9jb25zdHJh
aW50cyk7CiAKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRl
OjpHZXRDdXJyZW50KCkpOworCiAgICAgdjhJbml0aWFsaXplZCA9IHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjJlZDdmNi4uNjU2YzRkNSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNi0xMCAgRG1pdHJ5IExvbW92ICA8
ZHNsb21vdkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM0
NQorICAgICAgICBVc2UgcGVyLWlzb2xhdGUgZW1iZWRkZXIgZGF0YSBpbnN0ZWFkIG9mIHN0YXRp
Y3MgZm9yIGNhY2hlcyBpbiBiaW5kaW5ncy4KKyAgICAgICAgVGhpcyBpcyBhIHByZXJlcXVpc2l0
ZSBmb3IgbW9yZSB0aGFuIG9uZSB2OCBpc29sYXRlIHBlciBwcm9jZXNzLgorCisgICAgICAgICog
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVT
VCk6CisKIDIwMTEtMDYtMTAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGFj
NDI4MmIuLjM2NDdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAKICNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM4LDI1ICszOSw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBMb2Nh
bENvbnRleHQgewotcHVibGljOgotICAgIExvY2FsQ29udGV4dCgpCi0gICAgICAgIDogbV9jb250
ZXh0KHY4OjpDb250ZXh0OjpOZXcoKSkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+RW50ZXIo
KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5Mb2NhbENvbnRleHQoKQotICAgIHsKLSAgICAgICAg
bV9jb250ZXh0LT5FeGl0KCk7Ci0gICAgICAgIG1fY29udGV4dC5EaXNwb3NlKCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIHY4OjpIYW5kbGVTY29wZSBtX3Njb3BlOwotICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7Ci19OwotCiBQYXNzUmVmUHRyPElEQktleT4gY2hl
Y2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIFZlY3RvcjxJREJLZXlQYXRoRWxl
bWVudD4gaWRiS2V5UGF0aDsKQEAgLTExMyw3ICs5NSw3IEBAIHZvaWQgY2hlY2tLZXlQYXRoTnVt
YmVyVmFsdWUoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoCiAKIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVy
dHlTdHJpbmdWYWx1ZSkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9j
YWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0g
djg6Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28i
KSwgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKQEAgLTEyNiw3ICsxMDgsNyBAQCBURVNUKElE
QktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5nVmFsdWUp
CiAKIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVydHlO
dW1iZXJWYWx1ZSkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxD
b250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6
Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwg
djg6Ok51bWJlcjo6TmV3KDQ1NikpOwogCkBAIC0xMzksNyArMTIxLDcgQEAgVEVTVChJREJLZXlG
cm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eU51bWJlclZhbHVlKQogCiBU
RVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbEFycmF5RWxlbWVudCkK
IHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29u
dGV4dDsKICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KCk7
CiAgICAgYXJyYXktPlNldCgzLCB2ODo6U3RyaW5nOjpOZXcoInpvbyIpKTsKIApAQCAtMTUyLDcg
KzEzNCw3IEBAIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsQXJy
YXlFbGVtZW50KQogCiBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9w
ZXJ0eSkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0
IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVj
dDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHN1YlByb3BlcnR5ID0gdjg6Ok9i
amVjdDo6TmV3KCk7CiAgICAgc3ViUHJvcGVydHktPlNldCh2ODo6U3RyaW5nOjpOZXcoImJhciIp
LCB2ODo6U3RyaW5nOjpOZXcoInplZSIpKTsKQEAgLTE2Nyw3ICsxNDksNyBAQCBURVNUKElEQktl
eUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9wZXJ0eSkKIAogVEVTVChJREJLZXlGcm9t
VmFsdWVBbmRLZXlQYXRoVGVzdCwgQXJyYXkyRCkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250
ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJh
eT4gYXJyYXkgPSB2ODo6QXJyYXk6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHN1
YkFycmF5ID0gdjg6OkFycmF5OjpOZXcoKTsKQEAgLTE4NCw3ICsxNjYsNyBAQCBURVNUKElEQktl
eUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBBcnJheTJEKQogCiBURVNUKEluamVjdElEQktleVRl
c3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhj
b250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQodjg6
OlN0cmluZzo6TmV3KCJmb28iKSwgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKQEAgLTE5Nyw3
ICsxNzksNyBAQCBURVNUKEluamVjdElEQktleVRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdW
YWx1ZSkKIAogVEVTVChJbmplY3RJREJLZXlUZXN0LCBUb3BMZXZlbEFycmF5RWxlbWVudCkKIHsK
LSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4
dDsKICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KCk7CiAg
ICAgYXJyYXktPlNldCgzLCB2ODo6U3RyaW5nOjpOZXcoInpvbyIpKTsKIApAQCAtMjEwLDcgKzE5
Miw3IEBAIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgVG9wTGV2ZWxBcnJheUVsZW1lbnQpCiAKIFRF
U1QoSW5qZWN0SURCS2V5VGVzdCwgU3ViUHJvcGVydHkpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4
Y29udGV4dDsKKyAgICBWOExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBzdWJQcm9wZXJ0eSA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIHN1YlByb3BlcnR5
LT5TZXQodjg6OlN0cmluZzo6TmV3KCJiYXIiKSwgdjg6OlN0cmluZzo6TmV3KCJ6ZWUiKSk7CkBA
IC0yMjcsNyArMjA5LDcgQEAgVEVTVChJbmplY3RJREJLZXlUZXN0LCBTdWJQcm9wZXJ0eSkKIAog
VEVTVChJbmplY3RJREJLZXlUZXN0LCBBcnJheTJEKQogewotICAgIExvY2FsQ29udGV4dCB2OGNv
bnRleHQ7CisgICAgVjhMb2NhbENvbnRleHQgdjhjb250ZXh0OwogICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICB2ODo6TG9jYWw8djg6OkFy
cmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
c3ViQXJyYXkgPSB2ODo6QXJyYXk6Ok5ldygpOwo=
</data>
<flag name="review"
          id="90588"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="90589"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97008</attachid>
            <date>2011-06-13 14:11:40 -0700</date>
            <delta_ts>2011-06-13 14:21:09 -0700</delta_ts>
            <desc>CR feedback fixed</desc>
            <filename>62345.patch</filename>
            <type>text/plain</type>
            <size>8511</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NjM5OGMxLi5jMzZjMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDYtMDggIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM0NQorICAgICAgICBVc2UgcGVy
LWlzb2xhdGUgZW1iZWRkZXIgZGF0YSBpbnN0ZWFkIG9mIHN0YXRpY3MgZm9yIGNhY2hlcyBpbiBi
aW5kaW5ncy4KKyAgICAgICAgVGhpcyBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgbW9yZSB0aGFuIG9u
ZSB2OCBpc29sYXRlIHBlciBwcm9jZXNzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
flY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNv
bGF0ZURhdGE6OmRpc3Bvc2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VG9TdHJpbmdOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFRvU3RyaW5nVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0
ZURhdGE6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
Y3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmF3
VGVtcGxhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6
OnRlbXBsYXRlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRh
Ojp0b1N0cmluZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OnRvU3RyaW5nVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRl
eHRJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eTo6aW5pdFY4SWZOZWVkZWQpOgorCiAyMDExLTA2LTA4ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9u
amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IEdlbnRpbGNvcmUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCmluZGV4IDNhNWQ4NjYuLmFiOTcxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yMjAxLDE0ICsyMjAxLDMwIEBA
IEVORAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9
OjpHZXRSYXdUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX1SYXdDYWNoZSA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7
Ci0gICAgcmV0dXJuICR7Y2xhc3NOYW1lfVJhd0NhY2hlOworICAgIFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IAor
ICAgICAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkgeworICAgICAgICByZXR1cm4gcmVz
dWx0LT5zZWNvbmQ7CisgICAgfQorICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVfc2NvcGU7Cisg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3
VGVtcGxhdGUoKTsKKyAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwp
OworICAgIHJldHVybiB0ZW1wbDsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ICR7Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUoKVwKK3Y4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfUNhY2hl
ID0gQ29uZmlndXJlJHtjbGFzc05hbWV9VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7Ci0gICAg
cmV0dXJuICR7Y2xhc3NOYW1lfUNhY2hlOworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IAorICAgICAgICBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5lbmQoKSkgeworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7Cisg
ICAgfQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IAor
ICAgICAgICBDb25maWd1cmUke2NsYXNzTmFtZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsK
KyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0
ZW1wbDsKIH0KIAogYm9vbCAke2NsYXNzTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmlu
ZGV4IDJhY2QyOWEuLjY2ODU4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcApAQCAtNDcsNiArNDcsMzMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisKK1Y4
QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK3sKK30KKworVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6On5WOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YSgpCit7Cit9CisKK1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFT
U0VSVChpc29sYXRlKTsKKyAgICBBU1NFUlQoIWlzb2xhdGUtPkdldERhdGEoKSk7CisgICAgVjhC
aW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBuZXcgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEo
aXNvbGF0ZSk7CisgICAgaXNvbGF0ZS0+U2V0RGF0YShkYXRhKTsKKyAgICByZXR1cm4gZGF0YTsK
K30KKwordm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGlzcG9zZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKK3sKKyAgICB2b2lkKiBkYXRhID0gaXNvbGF0ZS0+R2V0RGF0YSgpOworICAgIGlm
IChkYXRhKQorICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGEqPihkYXRhKTsKK30KKworCisKIC8vIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSBpcyBhIGhlbHBl
ciBjbGFzcyBmb3IgdjhFeHRlcm5hbFN0cmluZy4gSXQgaXMgdXNlZAogLy8gdG8gbWFuYWdlIHRo
ZSBsaWZlLWN5Y2xlIG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBvZiB0aGUgZXh0ZXJuYWwgc3Ry
aW5nLgogY2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlIDogcHVibGljIHY4OjpTdHJpbmc6OkV4
dGVybmFsU3RyaW5nUmVzb3VyY2UgewpAQCAtNTQwLDEwICs1NjcsMTEgQEAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPgogCiB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBnZXRUb1N0cmluZ05hbWUo
KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwodjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4s
IHZhbHVlLCAoKSk7Ci0gICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKLSAgICAgICAgdmFsdWUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPjo6TmV3KHY4OjpTdHJpbmc6Ok5ldygidG9TdHJpbmci
KSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+JiB0
b1N0cmluZ05hbWUgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0cmlu
Z05hbWUoKTsKKyAgICBpZiAodG9TdHJpbmdOYW1lLklzRW1wdHkoKSkKKyAgICAgICAgdG9TdHJp
bmdOYW1lID0gdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz46Ok5ldyh2ODo6U3RyaW5nOjpOZXco
InRvU3RyaW5nIikpOworICAgIHJldHVybiAqdG9TdHJpbmdOYW1lOworCiB9CiAKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JUb1N0cmluZyhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQpAQCAtNTY0LDcgKzU5Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY29uc3RydWN0b3JUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpCiB7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4sIHRvU3RyaW5nVGVtcGxhdGUsICgpKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4mIHRvU3RyaW5nVGVtcGxhdGUgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YTo6Y3VycmVudCgpLT50b1N0cmluZ1RlbXBsYXRlKCk7CiAgICAgaWYgKHRvU3RyaW5nVGVtcGxh
dGUuSXNFbXB0eSgpKQogICAgICAgICB0b1N0cmluZ1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25z
dHJ1Y3RvclRvU3RyaW5nKSk7CiAgICAgcmV0dXJuIHRvU3RyaW5nVGVtcGxhdGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDc4NzNiNTQuLjM3MWNjOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC01MCw2ICs1MCwzOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICAgICB0eXBlZGVmIEJpbmRpbmdTZWN1cml0eTxWOEJp
bmRpbmc+IFY4QmluZGluZ1NlY3VyaXR5OwogCisgICAgY2xhc3MgVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFY4QmluZGluZ1Blcklzb2xhdGVE
YXRhKiBjcmVhdGUodjg6Oklzb2xhdGUqKTsKKyAgICAgICAgc3RhdGljIFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhKiBnZXQodjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChpc29sYXRlLT5HZXREYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKj4oaXNvbGF0ZS0+R2V0RGF0YSgpKTsgCisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGN1cnJl
bnQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2V0KHY4OjpJc29sYXRlOjpHZXRD
dXJyZW50KCkpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lkIGRpc3Bvc2Uodjg6Oklz
b2xhdGUqKTsKKworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ID4gVGVtcGxhdGVNYXA7CisKKyAgICAg
ICAgVGVtcGxhdGVNYXAmIHJhd1RlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV9yYXdUZW1wbGF0ZXM7
IH0KKyAgICAgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV90ZW1wbGF0
ZXM7IH0KKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4mIHRvU3RyaW5nTmFtZSgp
IHsgcmV0dXJuIG1fdG9TdHJpbmdOYW1lOyB9CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdU
ZW1wbGF0ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGEodjg6Oklzb2xhdGUqKTsKKyAgICAgICAgflY4QmluZGluZ1Blcklzb2xhdGVEYXRhKCk7CisK
KyAgICAgICAgVGVtcGxhdGVNYXAgbV9yYXdUZW1wbGF0ZXM7CisgICAgICAgIFRlbXBsYXRlTWFw
IG1fdGVtcGxhdGVzOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBtX3RvU3Ry
aW5nTmFtZTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1f
dG9TdHJpbmdUZW1wbGF0ZTsKKyAgICB9OworCisKICAgICBlbnVtIEV4dGVybmFsTW9kZSB7CiAg
ICAgICAgIEV4dGVybmFsaXplLAogICAgICAgICBEb05vdEV4dGVybmFsaXplCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDU4MzE2NDEu
Ljk1MDE3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwCkBAIC0yOTksMTEgKzI5OSwxMiBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6Omlu
aXRDb250ZXh0SWZOZWVkZWQoKQogICAgICAgICB2ODo6Vjg6OlNldEZhaWxlZEFjY2Vzc0NoZWNr
Q2FsbGJhY2tGdW5jdGlvbihyZXBvcnRVbnNhZmVKYXZhU2NyaXB0QWNjZXNzKTsKIAogICAgICAg
ICBTY3JpcHRQcm9maWxlcjo6aW5pdGlhbGl6ZSgpOwotICAgICAgICAKKworICAgICAgICBWOEJp
bmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpOwor
CiAgICAgICAgIGlzVjhJbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogCi0KICAgICBtX2NvbnRl
eHQgPSBjcmVhdGVOZXdDb250ZXh0KG1fZ2xvYmFsLCAwKTsKICAgICBpZiAobV9jb250ZXh0Lklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXgg
NDIyNTlkNS4uOTc1MmI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0xMjQsNiArMTI0LDgg
QEAgdm9pZCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRWOElmTmVlZGVkKCkKICAg
ICByZXNvdXJjZV9jb25zdHJhaW50cy5zZXRfc3RhY2tfbGltaXQoJmhlcmUgLSBrV29ya2VyTWF4
U3RhY2tTaXplIC8gc2l6ZW9mKHVpbnQzMl90KikpOwogICAgIHY4OjpTZXRSZXNvdXJjZUNvbnN0
cmFpbnRzKCZyZXNvdXJjZV9jb25zdHJhaW50cyk7CiAKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRl
RGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpOworCiAgICAgdjhJbml0aWFs
aXplZCA9IHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97010</attachid>
            <date>2011-06-13 14:21:09 -0700</date>
            <delta_ts>2011-06-13 16:07:07 -0700</delta_ts>
            <desc>Oops wrong patch uploaded</desc>
            <filename>62345.patch</filename>
            <type>text/plain</type>
            <size>17282</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZDljNDFhLi5lOTBjNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTEtMDYtMTAgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM0NQorICAgICAgICBVc2UgcGVyLWlzb2xhdGUgZW1i
ZWRkZXIgZGF0YSBpbnN0ZWFkIG9mIHN0YXRpY3MgZm9yIGNhY2hlcyBpbiBiaW5kaW5ncy4KKyAg
ICAgICAgVGhpcyBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgbW9yZSB0aGFuIG9uZSB2OCBpc29sYXRl
IHBlciBwcm9jZXNzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp+VjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5p
dGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRp
c3Bvc2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VG9TdHJpbmdOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldFRvU3RyaW5nVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGVNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnRlbXBsYXRlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0b1N0cmluZ05h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnRvU3RyaW5n
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhMb2NhbENvbnRleHQ6OlY4TG9jYWxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TG9jYWxDb250ZXh0Ojp+VjhMb2NhbENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
VXRpbGl0aWVzLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eTo6aW5pdFY4SWZOZWVkZWQpOgorCiAyMDExLTA2LTEzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDNhNWQ4NjYuLjg2MWVhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yMjAxLDE0ICsyMjAxLDI5IEBAIEVORAogCiB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9OjpHZXRSYXdU
ZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiAke2NsYXNzTmFtZX1SYXdDYWNoZSA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7Ci0gICAgcmV0
dXJuICR7Y2xhc3NOYW1lfVJhd0NhY2hlOworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1Rl
bXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1w
bGF0ZU1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CisKKyAgICB2
ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKKyAgICBkYXRhLT5yYXdU
ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0ZW1wbDsKIH0KIAot
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfTo6R2V0VGVt
cGxhdGUoKVwKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFt
ZX06OkdldFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfUNhY2hlID0gQ29uZmlndXJlJHtjbGFzc05hbWV9VGVt
cGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7Ci0gICAgcmV0dXJuICR7Y2xhc3NOYW1lfUNhY2hlOwor
ICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OmN1cnJlbnQoKTsKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4g
cmVzdWx0LT5zZWNvbmQ7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KKyAgICAgICAgQ29u
ZmlndXJlJHtjbGFzc05hbWV9VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7CisgICAgZGF0YS0+
dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICByZXR1cm4gdGVtcGw7CiB9CiAK
IGJvb2wgJHtjbGFzc05hbWV9OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwCmluZGV4IGRjYmRkODEuLjc0YjY3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC05OCwyNSArOTgsNiBAQCBi
b29sIHNldCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIG9iamVjdCwgY29uc3QgSURCS2V5UGF0aEVs
ZW1lbnQmIGtleVBhdGhFbGVtZW50LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotY2xhc3MgTG9j
YWxDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBMb2NhbENvbnRleHQoKQotICAgICAgICA6IG1fY29u
dGV4dCh2ODo6Q29udGV4dDo6TmV3KCkpCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPkVudGVy
KCk7Ci0gICAgfQotCi0gICAgfkxvY2FsQ29udGV4dCgpCi0gICAgewotICAgICAgICBtX2NvbnRl
eHQtPkV4aXQoKTsKLSAgICAgICAgbV9jb250ZXh0LkRpc3Bvc2UoKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgdjg6OkhhbmRsZVNjb3BlIG1fc2NvcGU7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkNvbnRleHQ+IG1fY29udGV4dDsKLX07Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROdGhW
YWx1ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwgY29uc3QgVmVj
dG9yPElEQktleVBhdGhFbGVtZW50PiYga2V5UGF0aEVsZW1lbnRzLCBzaXplX3QgaW5kZXgpCiB7
CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1cnJlbnRWYWx1ZShyb290VmFsdWUpOwpAQCAt
MTM0LDcgKzExNSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROdGhWYWx1ZU9uS2V5UGF0
aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwgY29uCiAKIFBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFZlY3RvcjxJREJLZXlQYXRoRWxl
bWVudD4mIGtleVBhdGgpCiB7Ci0gICAgTG9jYWxDb250ZXh0IGxvY2FsQ29udGV4dDsKKyAgICBW
OExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4
VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
OEtleShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoLnNpemUo
KSkpOwogICAgIGlmICh2OEtleS5Jc0VtcHR5KCkpCkBAIC0xNDQsNyArMTI1LDcgQEAgUGFzc1Jl
ZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBh
c3NSZWZQdHI8U2VyaWFsaXoKIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0b3I8SURCS2V5
UGF0aEVsZW1lbnQ+JiBrZXlQYXRoKQogewotICAgIExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7
CisgICAgVjhMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0OwogICAgIGlmICgha2V5UGF0aC5zaXpl
KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcAppbmRleCAyYWNkMjlhLi40YzZlMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHAKQEAgLTQ3LDYgKzQ3LDQwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorCitWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEo
djg6Oklzb2xhdGUqIGlzb2xhdGUpCit7Cit9CisKK1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp+
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEoKQoreworfQorCitWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YSogVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmNyZWF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3sKKyAgICBBU1NFUlQoaXNvbGF0ZSk7CisgICAgQVNTRVJUKCFpc29sYXRlLT5HZXREYXRhKCkp
OworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0gbmV3IFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhKGlzb2xhdGUpOworICAgIGlzb2xhdGUtPlNldERhdGEoZGF0YSk7CisgICAgcmV0
dXJuIGRhdGE7Cit9CisKK3ZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3VyZUluaXRp
YWxpemVkKHY4OjpJc29sYXRlKiBpc29sYXRlKSAKK3sKKyAgICBBU1NFUlQoaXNvbGF0ZSk7Cisg
ICAgaWYgKCFpc29sYXRlLT5HZXREYXRhKCkpIAorICAgICAgICBjcmVhdGUoaXNvbGF0ZSk7Cit9
CisKK3ZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRpc3Bvc2Uodjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit7CisgICAgdm9pZCogZGF0YSA9IGlzb2xhdGUtPkdldERhdGEoKTsKKyAgICBkZWxl
dGUgc3RhdGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqPihkYXRhKTsKKyAgICBpc29s
YXRlLT5TZXREYXRhKDApOworfQorCisKKwogLy8gV2ViQ29yZVN0cmluZ1Jlc291cmNlIGlzIGEg
aGVscGVyIGNsYXNzIGZvciB2OEV4dGVybmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAvLyB0byBtYW5h
Z2UgdGhlIGxpZmUtY3ljbGUgb2YgdGhlIHVuZGVybHlpbmcgYnVmZmVyIG9mIHRoZSBleHRlcm5h
bCBzdHJpbmcuCiBjbGFzcyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMgdjg6OlN0cmlu
Zzo6RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSB7CkBAIC01NDAsMTAgKzU3NCwxMSBAQCB2ODo6TG9j
YWw8djg6OlNpZ25hdHVyZT4gY29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IGdldFRvU3RyaW5n
TmFtZSgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6U3Ry
aW5nPiwgdmFsdWUsICgpKTsKLSAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQotICAgICAgICB2YWx1
ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+OjpOZXcodjg6OlN0cmluZzo6TmV3KCJ0b1N0
cmluZyIpKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmlu
Zz4mIHRvU3RyaW5nTmFtZSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRv
U3RyaW5nTmFtZSgpOworICAgIGlmICh0b1N0cmluZ05hbWUuSXNFbXB0eSgpKQorICAgICAgICB0
b1N0cmluZ05hbWUgPSB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPjo6TmV3KHY4OjpTdHJpbmc6
Ok5ldygidG9TdHJpbmciKSk7CisgICAgcmV0dXJuICp0b1N0cmluZ05hbWU7CisKIH0KIAogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvclRvU3RyaW5nKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCkBAIC01NjQsNyArNTk5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25zdHJ1Y3RvclRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAK
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUb1N0cmluZ1RlbXBsYXRl
KCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiwgdG9TdHJpbmdUZW1wbGF0ZSwgKCkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSA9IFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKTsKICAgICBpZiAodG9TdHJpbmdU
ZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHRvU3RyaW5nVGVtcGxhdGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KGNvbnN0cnVjdG9yVG9TdHJpbmcpKTsKICAgICByZXR1cm4gdG9TdHJpbmdUZW1wbGF0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNzg3M2I1NC4uYjNhOTM1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTUwLDYgKzUwLDQwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogICAgIHR5cGVkZWYgQmluZGluZ1NlY3VyaXR5
PFY4QmluZGluZz4gVjhCaW5kaW5nU2VjdXJpdHk7CiAKKyAgICBjbGFzcyBWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNv
bGF0ZURhdGEqIGNyZWF0ZSh2ODo6SXNvbGF0ZSopOworICAgICAgICBzdGF0aWMgdm9pZCBlbnN1
cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0ZSopOworICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGEqIGdldCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGlzb2xhdGUtPkdldERhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqPihpc29sYXRlLT5HZXREYXRhKCkpOyAK
KyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogY3Vy
cmVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnZXQodjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIHZvaWQgZGlzcG9zZSh2ODo6
SXNvbGF0ZSopOworCisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxXcmFwcGVyVHlwZUluZm8qLCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gPiBUZW1wbGF0ZU1hcDsKKworICAg
ICAgICBUZW1wbGF0ZU1hcCYgcmF3VGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3Jhd1RlbXBsYXRl
czsgfQorICAgICAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3RlbXBs
YXRlczsgfQorICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiYgdG9TdHJpbmdOYW1l
KCkgeyByZXR1cm4gbV90b1N0cmluZ05hbWU7IH0KKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+JiB0b1N0cmluZ1RlbXBsYXRlKCkgeyByZXR1cm4gbV90b1N0cmlu
Z1RlbXBsYXRlOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0ZSopOworICAgICAgICB+VjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEoKTsKKworICAgICAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlczsKKyAgICAgICAg
VGVtcGxhdGVNYXAgbV90ZW1wbGF0ZXM7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJp
bmc+IG1fdG9TdHJpbmdOYW1lOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gbV90b1N0cmluZ1RlbXBsYXRlOworICAgIH07CisKKwogICAgIGVudW0gRXh0ZXJu
YWxNb2RlIHsKICAgICAgICAgRXh0ZXJuYWxpemUsCiAgICAgICAgIERvTm90RXh0ZXJuYWxpemUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5k
ZXggNTgzMTY0MS4uNzhhNDg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTI5OSwxMSArMjk5LDEyIEBAIGJvb2wgVjhET01XaW5k
b3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCgpCiAgICAgICAgIHY4OjpWODo6U2V0RmFpbGVk
QWNjZXNzQ2hlY2tDYWxsYmFja0Z1bmN0aW9uKHJlcG9ydFVuc2FmZUphdmFTY3JpcHRBY2Nlc3Mp
OwogCiAgICAgICAgIFNjcmlwdFByb2ZpbGVyOjppbml0aWFsaXplKCk7Ci0gICAgICAgIAorCisg
ICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6SXNv
bGF0ZTo6R2V0Q3VycmVudCgpKTsKKwogICAgICAgICBpc1Y4SW5pdGlhbGl6ZWQgPSB0cnVlOwog
ICAgIH0KIAotCiAgICAgbV9jb250ZXh0ID0gY3JlYXRlTmV3Q29udGV4dChtX2dsb2JhbCwgMCk7
CiAgICAgaWYgKG1fY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCBiNjMxMzU5Li5m
ZGVhNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBA
IC00OCw2ICs0OCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Y4TG9jYWxDb250ZXh0
OjpWOExvY2FsQ29udGV4dCgpCit7CisgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3Vy
ZUluaXRpYWxpemVkKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpOworICAgIG1fY29udGV4dC5z
ZXQodjg6OkNvbnRleHQ6Ok5ldygpKTsKKyAgICBtX2NvbnRleHQuZ2V0KCktPkVudGVyKCk7Cit9
CisKKworVjhMb2NhbENvbnRleHQ6On5WOExvY2FsQ29udGV4dCgpIAoreworICAgIG1fY29udGV4
dC5nZXQoKS0+RXhpdCgpOworfQorCiAvLyBVc2UgYW4gYXJyYXkgdG8gaG9sZCBkZXBlbmRlbnRz
LiBJdCB3b3JrcyBsaWtlIGEgcmVmLWNvdW50ZWQgc2NoZW1lLgogLy8gQSB2YWx1ZSBjYW4gYmUg
YWRkZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2b2lkIGNyZWF0ZUhpZGRl
bkRlcGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFV0aWxpdGllcy5oCmluZGV4IDRhNDRmM2MuLjVjMTMwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhVdGlsaXRpZXMuaApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8djguaD4KIAorI2luY2x1ZGUgIk93bkhhbmRsZS5oIgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBFdmVudExpc3RlbmVyOwpAQCAtNjQsNiAr
NjYsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDYWxs
YmFja0FsbG93ZWRWYWx1ZUZsYWdzOwogCisgICAgY2xhc3MgVjhMb2NhbENvbnRleHQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgVjhMb2NhbENvbnRleHQoKTsKKyAgICAgICAgdmlydHVhbCB+VjhM
b2NhbENvbnRleHQoKTsKKyAgICBwcml2YXRlOgorICAgICAgICB2ODo6SGFuZGxlU2NvcGUgbV9o
YW5kbGVTY29wZTsKKyAgICAgICAgT3duSGFuZGxlPHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7Cisg
ICAgfTsKKwogICAgIC8vICdGdW5jdGlvbk9ubHknIGlzIGFzc3VtZWQgZm9yIHRoZSBjcmVhdGVk
IGNhbGxiYWNrLgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWOENhbGxiYWNrVHlwZT4KICAgICBQ
YXNzUmVmUHRyPFY4Q2FsbGJhY2tUeXBlPiBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgc3VjY2VlZGVkLCBDYWxsYmFja0FsbG93ZWRW
YWx1ZUZsYWdzIGFjY2VwdGVkVmFsdWVzID0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDQy
MjU5ZDUuLjk3NTJiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMTI0LDYgKzEyNCw4IEBA
IHZvaWQgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0VjhJZk5lZWRlZCgpCiAgICAg
cmVzb3VyY2VfY29uc3RyYWludHMuc2V0X3N0YWNrX2xpbWl0KCZoZXJlIC0ga1dvcmtlck1heFN0
YWNrU2l6ZSAvIHNpemVvZih1aW50MzJfdCopKTsKICAgICB2ODo6U2V0UmVzb3VyY2VDb25zdHJh
aW50cygmcmVzb3VyY2VfY29uc3RyYWludHMpOwogCisgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OmNyZWF0ZSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKKwogICAgIHY4SW5pdGlhbGl6
ZWQgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCm9sZCBtb2RlIDEwMDc1NQpu
ZXcgbW9kZSAxMDA2NDQKaW5kZXggYjhhZTYxZi4uNTg3YmQ1OAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA2LTEwICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIzNDUKKyAgICAgICAgVXNl
IHBlci1pc29sYXRlIGVtYmVkZGVyIGRhdGEgaW5zdGVhZCBvZiBzdGF0aWNzIGZvciBjYWNoZXMg
aW4gYmluZGluZ3MuCisgICAgICAgIFRoaXMgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIG1vcmUgdGhh
biBvbmUgdjggaXNvbGF0ZSBwZXIgcHJvY2Vzcy4KKworICAgICAgICAqIHRlc3RzL0lEQkJpbmRp
bmdVdGlsaXRpZXNUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDExLTA2
LTEzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTmF0ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGFjNDI4MmIuLjM2NDdjZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGll
c1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0
aWxpdGllc1Rlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSURCS2V5LmgiCiAj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM4LDI1ICszOSw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBMb2NhbENvbnRleHQgewotcHVibGlj
OgotICAgIExvY2FsQ29udGV4dCgpCi0gICAgICAgIDogbV9jb250ZXh0KHY4OjpDb250ZXh0OjpO
ZXcoKSkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+RW50ZXIoKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIH5Mb2NhbENvbnRleHQoKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5FeGl0KCk7
Ci0gICAgICAgIG1fY29udGV4dC5EaXNwb3NlKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHY4
OjpIYW5kbGVTY29wZSBtX3Njb3BlOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBt
X2NvbnRleHQ7Ci19OwotCiBQYXNzUmVmUHRyPElEQktleT4gY2hlY2tLZXlGcm9tVmFsdWVBbmRL
ZXlQYXRoSW50ZXJuYWwoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQogewogICAgIFZlY3RvcjxJREJLZXlQYXRoRWxlbWVudD4gaWRiS2V5UGF0aDsK
QEAgLTExMyw3ICs5NSw3IEBAIHZvaWQgY2hlY2tLZXlQYXRoTnVtYmVyVmFsdWUoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoCiAKIFRFU1QoSURCS2V5
RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKIHsK
LSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4
dDsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7
CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwgdjg6OlN0cmluZzo6TmV3
KCJ6b28iKSk7CiAKQEAgLTEyNiw3ICsxMDgsNyBAQCBURVNUKElEQktleUZyb21WYWx1ZUFuZEtl
eVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5nVmFsdWUpCiAKIFRFU1QoSURCS2V5RnJv
bVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVydHlOdW1iZXJWYWx1ZSkKIHsKLSAg
ICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4dDsK
ICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAg
ICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwgdjg6Ok51bWJlcjo6TmV3KDQ1
NikpOwogCkBAIC0xMzksNyArMTIxLDcgQEAgVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRo
VGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eU51bWJlclZhbHVlKQogCiBURVNUKElEQktleUZyb21WYWx1
ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbEFycmF5RWxlbWVudCkKIHsKLSAgICBMb2NhbENvbnRl
eHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9j
YWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KCk7CiAgICAgYXJyYXktPlNldCgz
LCB2ODo6U3RyaW5nOjpOZXcoInpvbyIpKTsKIApAQCAtMTUyLDcgKzEzNCw3IEBAIFRFU1QoSURC
S2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsQXJyYXlFbGVtZW50KQogCiBURVNU
KElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9wZXJ0eSkKIHsKLSAgICBMb2Nh
bENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IHN1YlByb3BlcnR5ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAg
c3ViUHJvcGVydHktPlNldCh2ODo6U3RyaW5nOjpOZXcoImJhciIpLCB2ODo6U3RyaW5nOjpOZXco
InplZSIpKTsKQEAgLTE2Nyw3ICsxNDksNyBAQCBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBh
dGhUZXN0LCBTdWJQcm9wZXJ0eSkKIAogVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVz
dCwgQXJyYXkyRCkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9jYWxD
b250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6
Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJy
YXk6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHN1YkFycmF5ID0gdjg6OkFycmF5
OjpOZXcoKTsKQEAgLTE4NCw3ICsxNjYsNyBAQCBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBh
dGhUZXN0LCBBcnJheTJEKQogCiBURVNUKEluamVjdElEQktleVRlc3QsIFRvcExldmVsUHJvcGVy
dHlTdHJpbmdWYWx1ZSkKIHsKLSAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIFY4TG9j
YWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0g
djg6Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28i
KSwgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKQEAgLTE5Nyw3ICsxNzksNyBAQCBURVNUKElu
amVjdElEQktleVRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKIAogVEVTVChJbmpl
Y3RJREJLZXlUZXN0LCBUb3BMZXZlbEFycmF5RWxlbWVudCkKIHsKLSAgICBMb2NhbENvbnRleHQg
djhjb250ZXh0OworICAgIFY4TG9jYWxDb250ZXh0IHY4Y29udGV4dDsKICAgICB2ODo6TG9jYWw8
djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KCk7CiAgICAgYXJyYXktPlNldCgzLCB2
ODo6U3RyaW5nOjpOZXcoInpvbyIpKTsKIApAQCAtMjEwLDcgKzE5Miw3IEBAIFRFU1QoSW5qZWN0
SURCS2V5VGVzdCwgVG9wTGV2ZWxBcnJheUVsZW1lbnQpCiAKIFRFU1QoSW5qZWN0SURCS2V5VGVz
dCwgU3ViUHJvcGVydHkpCiB7Ci0gICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICBWOExv
Y2FsQ29udGV4dCB2OGNvbnRleHQ7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9
IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzdWJQcm9wZXJ0
eSA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIHN1YlByb3BlcnR5LT5TZXQodjg6OlN0cmluZzo6
TmV3KCJiYXIiKSwgdjg6OlN0cmluZzo6TmV3KCJ6ZWUiKSk7CkBAIC0yMjcsNyArMjA5LDcgQEAg
VEVTVChJbmplY3RJREJLZXlUZXN0LCBTdWJQcm9wZXJ0eSkKIAogVEVTVChJbmplY3RJREJLZXlU
ZXN0LCBBcnJheTJEKQogewotICAgIExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CisgICAgVjhMb2Nh
bENvbnRleHQgdjhjb250ZXh0OwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2
ODo6T2JqZWN0OjpOZXcoKTsKICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpB
cnJheTo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gc3ViQXJyYXkgPSB2ODo6QXJy
YXk6Ok5ldygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>