<?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>51116</bug_id>
          
          <creation_ts>2010-12-15 09:55:17 -0800</creation_ts>
          <short_desc>Building webkit with Visual Studio 2010 fails due to ambiguous &apos;operator =&apos; methods in RefPtr.</short_desc>
          <delta_ts>2011-01-03 06:32:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</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>30718</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jake">jake</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>jake</cc>
    
    <cc>jeanluc</cc>
    
    <cc>sroussey</cc>
    
    <cc>thomas</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>322647</commentid>
    <comment_count>0</comment_count>
      <attachid>76658</attachid>
    <who name="Jake">jake</who>
    <bug_when>2010-12-15 09:55:17 -0800</bug_when>
    <thetext>Created attachment 76658
Patch for potential fix

Building webkit with Visual Studio 2010 fails due to ambiguous &apos;operator =&apos; methods in RefPtr.

Approximately 450 instances of this error are encountered during build:


error C2593: &apos;operator =&apos; is ambiguous
2&gt;          D:\Qt\WebKit\JavaScriptCore\wtf/RefPtr.h(77): could be &apos;WTF::RefPtr&lt;T&gt; &amp;WTF::RefPtr&lt;T&gt;::operator =(std::nullptr_t)&apos;
2&gt;          with
2&gt;          [
2&gt;              T=WebCore::ResourceHandle
2&gt;          ]
2&gt;          D:\Qt\WebKit\JavaScriptCore\wtf/RefPtr.h(74): or       &apos;WTF::RefPtr&lt;T&gt; &amp;WTF::RefPtr&lt;T&gt;::operator =(T *)&apos;
2&gt;          with
2&gt;          [
2&gt;              T=WebCore::ResourceHandle
2&gt;          ]
2&gt;          while trying to match the argument list &apos;(WTF::RefPtr&lt;T&gt;, int)&apos;
2&gt;          with
2&gt;          [
2&gt;              T=WebCore::ResourceHandle
2&gt;          ]

To work around this issue, I created a patch (attached) that configures NullPtr.h appropriately for vs2010 (vs2010 has support for nullptr) and replaced occurrences of = 0 with = nullptr.

I believe there are two options for resolving this issue:
1) Use nullptr instead of 0
2) Cast (T*) 0 instead of 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322651</commentid>
    <comment_count>1</comment_count>
    <who name="Jake">jake</who>
    <bug_when>2010-12-15 10:02:06 -0800</bug_when>
    <thetext>While my patch only addresses building with vs2010, I propose these changes to NullPtr.h to support backward compatibility with older versions of msvc.


#ifndef NullPtr_h
#define NullPtr_h

// For compilers and standard libraries that do not yet include it, this adds the
// nullptr_t type and nullptr object. They are defined in the same namespaces they
// would be in compiler and library that had the support.

#if !defined(_MSC_VER)
#ifndef __has_feature
    #define __has_feature(feature) 0
#endif

#if !__has_feature(cxx_nullptr)

namespace std {
    class nullptr_t { };
}

extern std::nullptr_t nullptr;

#endif

#elseif  _MSC_VER &lt; 1600

//to maintain compatibility with previous versions of msvc
#ifndef nullptr
#define nullptr 0
#endif

#endif //_MSC_VER

#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322703</commentid>
    <comment_count>2</comment_count>
      <attachid>76658</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-15 11:16:05 -0800</bug_when>
    <thetext>Comment on attachment 76658
Patch for potential fix

I’m not sure we should apply this patch, because this leaves us in a state where anyone not using Visual Studio 2010 will introduce breakage any time they use a bare 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322705</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-15 11:19:25 -0800</bug_when>
    <thetext>We can control what overloading does for 0 if we add an operator= that takes an int.

This has the downside that it will allow us to compile if there’s a type mismatch, so it’s probably something we want to do only for Visual Studio 2010 for now.

Another option is to overload for int and make the overload private. That will give us an error on non-Visual-Studio-2010 platforms.

So I suggest something like this:

    public:
    #if HAS_REAL_NULLPTR
        RefPtr&amp; operator=(int value) { ASSERT_UNUSED(value, !value); clear(); return *this; }
    #endif

Then we can add uses of nullptr. Then:

    private:
    #if !HAS_REAL_NULLPTR
        void operator=(int); // never define this
    #endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322710</commentid>
    <comment_count>4</comment_count>
    <who name="Jake">jake</who>
    <bug_when>2010-12-15 11:24:21 -0800</bug_when>
    <thetext>Looks simple enough. Have you tried this approach? If not I&apos;ll make the change locally and build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322835</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-15 15:10:48 -0800</bug_when>
    <thetext>Can we just remove RefPtr::operator=(std::nullptr_t)? I don&apos;t see a rationale in bug 47756.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323008</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-15 18:53:05 -0800</bug_when>
    <thetext>*** Bug 51122 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323009</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-15 18:53:26 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can we just remove RefPtr::operator=(std::nullptr_t)? I don&apos;t see a rationale in bug 47756.

Yes, we could.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323835</commentid>
    <comment_count>8</comment_count>
    <who name="Jake">jake</who>
    <bug_when>2010-12-17 09:36:21 -0800</bug_when>
    <thetext>As an experiment I tried Alexey&apos;s suggestion and made the following changes, and webkit built fine with vs2010.

NullPtr.h:

#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
#ifndef __has_feature
    #define __has_feature(feature) 0
#endif

#if !__has_feature(cxx_nullptr)

namespace std {
    class nullptr_t { };
}

extern std::nullptr_t nullptr;

#endif
#endif

RefPtr.h:


#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
        RefPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
#endif

Much easier than my 450 changes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323840</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-12-17 09:43:28 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; As an experiment I tried Alexey&apos;s suggestion and made the following changes, and webkit built fine with vs2010.
&gt; 
&gt; NullPtr.h:
&gt; 
&gt; #if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt; #ifndef __has_feature
&gt;     #define __has_feature(feature) 0
&gt; #endif
&gt; 
&gt; #if !__has_feature(cxx_nullptr)
&gt; 
&gt; namespace std {
&gt;     class nullptr_t { };
&gt; }
&gt; 
&gt; extern std::nullptr_t nullptr;
&gt; 
&gt; #endif
&gt; #endif
&gt; 
&gt; RefPtr.h:
&gt; 
&gt; 
&gt; #if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt;         RefPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
&gt; #endif
&gt; 
&gt; Much easier than my 450 changes!

Removing the nullptr_t version just for new versions of MSVC seems very fragile. People will add uses of that assignment operator in cross-platform code without realizing they&apos;re breaking MSVC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323847</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-17 10:17:33 -0800</bug_when>
    <thetext>Alexey’s suggestion was to remove the null_ptr overload from RefPtr entirely, not to remove it just for certain compilers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326357</commentid>
    <comment_count>11</comment_count>
      <attachid>77383</attachid>
    <who name="Jake">jake</who>
    <bug_when>2010-12-23 16:33:57 -0800</bug_when>
    <thetext>Created attachment 77383
Fixes nullptr_t related build issues on vs2010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326358</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-23 16:35:23 -0800</bug_when>
    <thetext>Attachment 77383 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;JavaScriptCore/wtf/NullPtr.h&apos;, u&apos;JavaScriptCore/wtf/RefPtr.h&apos;, u&apos;WebCore/dom/Document.cpp&apos;, u&apos;WebCore/dom/ViewportArguments.h&apos;, u&apos;WebCore/page/Geolocation.h&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/NullPtr.h:51:  Should have a space between // and comment  [whitespace/comments] [4]
JavaScriptCore/wtf/RefPtr.h:77:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 2 in 5 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>326361</commentid>
    <comment_count>13</comment_count>
      <attachid>77383</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-23 16:39:36 -0800</bug_when>
    <thetext>Comment on attachment 77383
Fixes nullptr_t related build issues on vs2010

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

Thanks for the patch. Patches need to include change logs. Please submit a new version with a change log.

&gt; JavaScriptCore/wtf/NullPtr.h:36
&gt; +// Don&apos;t declare this when building with visual studio 2010+
&gt; +
&gt; +#if !defined(_MSC_VER) || _MSC_VER &lt; 1600

This should go a few lines down:

    #if !__has_feature(cxx_nullptr) &amp;&amp; (!defined(_MSC_VER) || _MSC_VER &lt; 1600)

No need to add an extra level of #if.

&gt; JavaScriptCore/wtf/RefPtr.h:77
&gt; +		template&lt;typename U&gt; RefPtr&amp; operator=(const RefPtr&lt;U&gt;&amp;);

Can&apos;t land a patch with tabs in it.

&gt; WebCore/dom/ViewportArguments.h:77
&gt; +        , userScalable((bool) ValueAuto)

This fix is incorrect. Bug 50982 has a reviewed patch already in the commit queue to fix this.

&gt; WebCore/page/Geolocation.h:159
&gt; +    class PositionCacheWrapper {
&gt; +    public:
&gt; +        PositionCacheWrapper()
&gt; +        {
&gt; +        }
&gt; +        ~PositionCacheWrapper()
&gt; +        {
&gt; +        }
&gt; +        void setCachedPosition(Geoposition* cachedPosition) {}
&gt; +        Geoposition* cachedPosition() {return 0;}
&gt; +    };

Adding an entire new copy of the class is not the optimal way to fix this. I believe platforms that are not implementing Geolocation should not be compiling this file at all.

This seems unrelated to the compiler and should not be lumped in with the compiler-specific fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326362</commentid>
    <comment_count>14</comment_count>
      <attachid>77384</attachid>
    <who name="Jake">jake</who>
    <bug_when>2010-12-23 16:41:29 -0800</bug_when>
    <thetext>Created attachment 77384
Second attempt at patch to fix nullptr_t related build issues on vs2010

Yikes. I was kicked by the review bot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326364</commentid>
    <comment_count>15</comment_count>
      <attachid>77384</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-23 16:43:51 -0800</bug_when>
    <thetext>Comment on attachment 77384
Second attempt at patch to fix nullptr_t related build issues on vs2010

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

The rest of my comments from the first patch still apply, except for the one about the tab.

&gt; WebCore/dom/Document.cpp:3175
&gt; -            newFocusedNode = 0;
&gt; +            newFocusedNode = (Node*) 0;

This change looks wrong. Could you tell me more about the warning?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326367</commentid>
    <comment_count>16</comment_count>
    <who name="Jake">jake</who>
    <bug_when>2010-12-23 16:50:11 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 77384 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77384&amp;action=review
&gt; 
&gt; The rest of my comments from the first patch still apply, except for the one about the tab.
&gt; 
&gt; &gt; WebCore/dom/Document.cpp:3175
&gt; &gt; -            newFocusedNode = 0;
&gt; &gt; +            newFocusedNode = (Node*) 0;
&gt; 
&gt; This change looks wrong. Could you tell me more about the warning?

Darin you&apos;re too fast! I posted the second patch while you were reviewing my first one :)

Regarding the (Node*) 0 issue, for some reason those two lines in Document.cpp failed to compile without the cast.

And sorry about the geolocation thing. It wasn&apos;t meant to be included. I&apos;ll post a new patch in a couple of minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326370</commentid>
    <comment_count>17</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-23 16:58:08 -0800</bug_when>
    <thetext>Attachment 77383 did not build on qt:
Build output: http://queues.webkit.org/results/7238128</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326384</commentid>
    <comment_count>18</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-23 17:20:26 -0800</bug_when>
    <thetext>Attachment 77384 did not build on qt:
Build output: http://queues.webkit.org/results/7277147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326396</commentid>
    <comment_count>19</comment_count>
      <attachid>77388</attachid>
    <who name="Jake">jake</who>
    <bug_when>2010-12-23 17:49:32 -0800</bug_when>
    <thetext>Created attachment 77388
Latest patch for vs2010 build

Note I put back in to RefPtr the nullptr_t override because without it I got a notice that a build broke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326630</commentid>
    <comment_count>20</comment_count>
      <attachid>77388</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 08:58:57 -0800</bug_when>
    <thetext>Comment on attachment 77388
Latest patch for vs2010 build

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

Thanks for the patch!

&gt; WebCore/dom/Document.cpp:3175
&gt; +            newFocusedNode = (Node*) 0;

We don&apos;t use c-style casts.  Why is this code modifying the PassRefPTr anyway?  We can call .clear() instead, I think?

&gt; WebCore/dom/ViewportArguments.h:77
&gt; +        , userScalable((bool) ValueAuto)

Again, we don&apos;t use c-style casts.  We should either disable the failing warning for the file, or we should use static_cast or find some better way to avoid the error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326749</commentid>
    <comment_count>21</comment_count>
    <who name="Jake">jake</who>
    <bug_when>2010-12-24 14:21:18 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 77388 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77388&amp;action=review
&gt; 
&gt; Thanks for the patch!
&gt; 
&gt; &gt; WebCore/dom/Document.cpp:3175
&gt; &gt; +            newFocusedNode = (Node*) 0;
&gt; 
&gt; We don&apos;t use c-style casts.  Why is this code modifying the PassRefPTr anyway?  We can call .clear() instead, I think?
&gt; 
&gt; &gt; WebCore/dom/ViewportArguments.h:77
&gt; &gt; +        , userScalable((bool) ValueAuto)
&gt; 
&gt; Again, we don&apos;t use c-style casts.  We should either disable the failing warning for the file, or we should use static_cast or find some better way to avoid the error.

I have no idea whether .clear() can be called - I didn&apos;t write the code. All I know is newFocusedNode = 0; doesn&apos;t compile.

And secondly, userScalable(ValueAuto) is far worse than the cast - at least with the cast its clear what is going on - userScalable is a bool and ValueAuto isn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326755</commentid>
    <comment_count>22</comment_count>
      <attachid>77429</attachid>
    <who name="Jake">jake</who>
    <bug_when>2010-12-24 14:39:44 -0800</bug_when>
    <thetext>Created attachment 77429
Latest patch for vs2010 build

This patch uses static_cast instead of c style casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326783</commentid>
    <comment_count>23</comment_count>
      <attachid>77433</attachid>
    <who name="Jake">jake</who>
    <bug_when>2010-12-24 17:45:18 -0800</bug_when>
    <thetext>Created attachment 77433
Fixes nullptr_t related build issues on vs2010

Removed from all of the WTF smart pointer classes the operator =(nullptr_t) override so they&apos;ll build with visual studio 2010.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326793</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 19:01:19 -0800</bug_when>
    <thetext>nullptr_t was all added in:
http://trac.webkit.org/changeset/69970</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326794</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 19:01:52 -0800</bug_when>
    <thetext>This seems sane to me, but I think it would be best for Darin or Anders to comment here.  Thanks again for your work on this patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326908</commentid>
    <comment_count>26</comment_count>
      <attachid>77433</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-26 13:19:27 -0800</bug_when>
    <thetext>Comment on attachment 77433
Fixes nullptr_t related build issues on vs2010

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

Thanks for persisting on this. I really appreciate you taking the time to do this.

&gt; JavaScriptCore/wtf/NullPtr.h:38
&gt; -#if !__has_feature(cxx_nullptr)
&gt; +#if !__has_feature(cxx_nullptr) &amp;&amp; (!defined(_MSC_VER) || _MSC_VER &lt; 1600)

This change is fine.

&gt; JavaScriptCore/wtf/OwnArrayPtr.h:79
&gt; +#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt;      OwnArrayPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
&gt; +#endif

This change is wrong in two ways:

    1) The #if in these files should not be specifically _MSC_VER, but rather an #if about having a real nullptr and nullptr_t rather a fake one. That define for that should be set up in NullPtr.h. We want this to be true for newer versions of MSVC newer versions of the clang compiler. One way to do this that fits in well with how we do ifdef&apos;s in WebKit would be to define HAVE_NULLPTR in NullPtr.h only if a real nullptr is present. Then we could use #if !HAVE(NULLPTR) at these call sites.

    2) We need the nullptr overload even for real nullptr compilers when LOOSE_OWN_ARRAY_PTR is not defined, so the expression has to be written taking that into account.

&gt; JavaScriptCore/wtf/OwnPtr.h:78
&gt; +#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt;          OwnPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
&gt; +#endif

Same two issues as OwnArrayPtr.h.

&gt; JavaScriptCore/wtf/PassOwnArrayPtr.h:78
&gt; +#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt;      PassOwnArrayPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
&gt; +#endif

Same two issues as OwnArrayPtr.h.

&gt; JavaScriptCore/wtf/PassOwnPtr.h:77
&gt; +#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt;          PassOwnPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
&gt; +#endif

Same two issues as OwnArrayPtr.h.

&gt; JavaScriptCore/wtf/PassRefPtr.h:96
&gt; +#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt;          PassRefPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
&gt; +#endif

Issue (1) above applies here too. Or we could remove the overload for nullptr_t entirely.

&gt; JavaScriptCore/wtf/RefPtr.h:79
&gt; +#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt;          RefPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
&gt; +#endif

Same as PassRefPtr.h.

&gt; JavaScriptCore/wtf/RetainPtr.h:92
&gt; +#if !defined(_MSC_VER) || _MSC_VER &lt; 1600
&gt;          RetainPtr&amp; operator=(std::nullptr_t) { clear(); return *this; }
&gt; -
&gt; +#endif

Same as PassRefPtr.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327092</commentid>
    <comment_count>27</comment_count>
    <who name="Jake">jake</who>
    <bug_when>2010-12-27 11:55:12 -0800</bug_when>
    <thetext>Ah yes HAVE_NULLPTR makes more sense.

How about this?

In NullPtr.h:


#if defined(LOOSE_OWN_ARRAY_PTR) || (!__has_feature(cxx_nullptr) &amp;&amp; (!defined(_MSC_VER) || _MSC_VER &lt; 1600))

namespace std {
    class nullptr_t { };
}

extern std::nullptr_t nullptr;
#else
#define HAVE_NULLPTR 1
#endif


and then surrounding the operator overrides:

#if !HAVE(NULLPTR)
oper...
#endif

I&apos;m assuming HAVE() is defined somewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327107</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-27 13:42:14 -0800</bug_when>
    <thetext>Committed r74695: &lt;http://trac.webkit.org/changeset/74695&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327108</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-27 13:44:16 -0800</bug_when>
    <thetext>Jake, I took the liberty of reworking your patch and landing it.

Since I didn&apos;t actually compile with Visual Studio 2010, there may still be some ambiguous operator= problems, or other problems. I suggest new separate bug reports for individual remaining problems. Please feel free to cc me on any of those bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327113</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-27 14:10:11 -0800</bug_when>
    <thetext>It&apos;s a little odd to have a HAVE definition outside of Platform.h no?

I guess any code which wants to actually use nullptr_t will have to include NullPtr.h anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327128</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-27 15:02:46 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74695 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
media/adopt-node-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327141</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-27 16:14:20 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; It&apos;s a little odd to have a HAVE definition outside of Platform.h no?

Sure, it would be OK to move that logic to Platform.h.

On the one hand, I am not sure that it&apos;s good to continue making that an everything file, but it would be good to put language and compiler things all in one place, although I don’t think there’s a good clear purpose to that file at the moment. It doesn&apos;t make sense to me that the platform independence macros are in the same file as their definitions for all platforms. I think Maciej designed a new way to do it.

Anyway, moving would be fine with me.

Other files defining HAVE outside Platform.h include Assertions.h, RenderObject.h and GraphicsContextCG.cpp.

&gt; I guess any code which wants to actually use nullptr_t will have to include NullPtr.h anyway.

Yes, that&apos;s what I was thinking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327143</commentid>
    <comment_count>33</comment_count>
    <who name="Jake">jake</who>
    <bug_when>2010-12-27 16:16:57 -0800</bug_when>
    <thetext>Thanks Darin! I&apos;ll get latest and do a new build.

-Jake

(In reply to comment #32)
&gt; (In reply to comment #30)
&gt; &gt; It&apos;s a little odd to have a HAVE definition outside of Platform.h no?
&gt; 
&gt; Sure, it would be OK to move that logic to Platform.h.
&gt; 
&gt; On the one hand, I am not sure that it&apos;s good to continue making that an everything file, but it would be good to put language and compiler things all in one place, although I don’t think there’s a good clear purpose to that file at the moment. It doesn&apos;t make sense to me that the platform independence macros are in the same file as their definitions for all platforms. I think Maciej designed a new way to do it.
&gt; 
&gt; Anyway, moving would be fine with me.
&gt; 
&gt; Other files defining HAVE outside Platform.h include Assertions.h, RenderObject.h and GraphicsContextCG.cpp.
&gt; 
&gt; &gt; I guess any code which wants to actually use nullptr_t will have to include NullPtr.h anyway.
&gt; 
&gt; Yes, that&apos;s what I was thinking.

(In reply to comment #29)
&gt; Jake, I took the liberty of reworking your patch and landing it.
&gt; 
&gt; Since I didn&apos;t actually compile with Visual Studio 2010, there may still be some ambiguous operator= problems, or other problems. I suggest new separate bug reports for individual remaining problems. Please feel free to cc me on any of those bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327161</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-27 17:35:05 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #30)
&gt; &gt; It&apos;s a little odd to have a HAVE definition outside of Platform.h no?
&gt; 
&gt; Sure, it would be OK to move that logic to Platform.h.
&gt; 
&gt; On the one hand, I am not sure that it&apos;s good to continue making that an everything file, but it would be good to put language and compiler things all in one place, although I don’t think there’s a good clear purpose to that file at the moment. It doesn&apos;t make sense to me that the platform independence macros are in the same file as their definitions for all platforms.

Yeah.  It&apos;s unfortunate that Platform.h has all of these, however the way the current HAVE() macro works, if a HAVE_ is not defined then it&apos;s assumed false:
#define HAVE(WTF_FEATURE) (defined HAVE_##WTF_FEATURE  &amp;&amp; HAVE_##WTF_FEATURE)

Which could lead to folks compiling things in ways they didn&apos;t intend if all the HAVE_ definitions aren&apos;t in one place.

&gt; I think Maciej designed a new way to do it.

Unfortunately he&apos;s been saying that for years. :)  I&apos;m looking forward to it though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327162</commentid>
    <comment_count>35</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-27 17:39:15 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; &gt; I think Maciej designed a new way to do it.
&gt; 
&gt; Unfortunately he&apos;s been saying that for years. :)  I&apos;m looking forward to it though!

Perhaps too sharp a jab.  I do look forward to his re-write and I hope we see it in a patch soon.

Just as I&apos;m sure you look forward to the numerous blog-posts and LayoutTest re-orgs I&apos;ve promised you over the years... :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76658</attachid>
            <date>2010-12-15 09:55:17 -0800</date>
            <delta_ts>2010-12-23 16:33:57 -0800</delta_ts>
            <desc>Patch for potential fix</desc>
            <filename>0001-Changes-to-support-building-with-Visual-Studio-2010.patch</filename>
            <type>text/plain</type>
            <size>99155</size>
            <attacher name="Jake">jake</attacher>
            
              <data encoding="base64">RnJvbSBmN2YyM2E2NGRjMWRkYzQyM2RjZWVlOWFhMWM2MjBhNGU0NDZmYmI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtlCkRhdGU6IFdlZCwgMTUgRGVjIDIwMTAgMDg6MjY6NDUg
LTA3MDAKU3ViamVjdDogW1BBVENIXSBDaGFuZ2VzIHRvIHN1cHBvcnQgYnVpbGRpbmcgd2l0aCBW
aXN1YWwgU3R1ZGlvIDIwMTAKCi0tLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5jcHAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5o
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuY3BwICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgICAgICAgICAgIHwgICAgNCArLQogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgICAgICAgICAgfCAgICAyICst
CiBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgICAgICAgICAgICAgICAgICB8ICAg
IDIgKy0KIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMiArLQogV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwICAg
ICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMzIgKysrKysrLS0tLS0tCiBXZWJDb3JlL2Nzcy9DU1NSdWxlTGlzdC5j
cHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzQgKysrKysrLS0tLS0t
CiBXZWJDb3JlL2RvbS9Ob2RlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDIgKy0KIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgICAgICAgICAgICAg
IHwgICAgMiArLQogV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgICAgICAg
ICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMu
aCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBh
cnNlci5jcHAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvZG9tL1hNTERvY3Vt
ZW50UGFyc2VyUXQuY3BwICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9kb20vZGVm
YXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgfCAgICA0ICstCiBXZWJDb3JlL2Vk
aXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcCAgICAgICB8ICAgIDIgKy0KIFdlYkNv
cmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCAgICAgICAgIHwgICAgNCArLQog
V2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwICAgICAgICAgfCAgIDEy
ICsrLS0KIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMCArKy0tCiBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICAg
ICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAgICAgICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcCAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5jcHAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZFBhZ2UuY3BwICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uY3BwICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgfCAgICAyICstCiBX
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgIDQg
Ky0KIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwg
ICAgMiArLQogV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCAg
ICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
ICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmNwcCAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUv
bG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcCAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2Vi
Q29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCAgICAgICAgICAgICAgICAgfCAgICAyICst
CiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgICAgICAgICAgICAgICAgICB8ICAg
MTIgKystLQogV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwICAgICAgICAgICAg
ICAgfCAgICA0ICstCiBXZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCAg
ICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAgIHwgICAyNiArKysrKy0tLS0tCiBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkxvYWRlci5jcHAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNv
cmUvcGFnZS9Db25zb2xlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQog
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgICAgICAgICAgICAgfCAgICAy
ICstCiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMzggKysrKysrKy0tLS0tLS0KIFdlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgICAg
ICAgICAgICAgICAgICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCAgICAgICAgICAgICAgICAgICAgICB8ICAgNTggKysrKysrKysrKy0tLS0tLS0tLS0KIFdlYkNv
cmUvcGFnZS9GcmFtZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQog
V2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAy
ICstCiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDggKystLQogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5j
cHAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvcGx1Z2lucy9QbHVn
aW5TdHJlYW0uY3BwICAgICAgICAgICAgICAgICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgICAgICAgICAgICAgICAgfCAgICAyICst
CiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgICAgICAgICAgICAgICB8ICAg
IDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAg
IHwgICAgNiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgICAgICAg
ICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
ICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAg
ICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudC5j
cHAgICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwICAgICAgICAgICAgICAgICB8ICAgMTggKysrLS0tCiBXZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBX
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAg
KystLQogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCAgICAgICAgICAg
fCAgICA4ICsrLS0KIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRl
ci5jcHAgIHwgICAgMiArLQogV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJP
ZmYuaCAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCAg
ICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcCAgICAgICAgICAgIHwgICAgMiArLQogLi4uL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcCAgICAgICAgICAgfCAgICA4ICsrLS0KIFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrLS0t
CiAuLi4veG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcCAgICB8ICAg
IDIgKy0KIFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAgICAgICAgICAgICAgICAgICAg
IHwgICAgMiArLQogV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcCAgICAgICAgICAgICAg
ICAgICAgfCAgICAyICstCiA5NSBmaWxlcyBjaGFuZ2VkLCAyNzEgaW5zZXJ0aW9ucygrKSwgMjcw
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAK
aW5kZXggMDg1ODc2Yy4uODM4OGI1NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVDaGFpbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgU3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNo
YWluKFN0cnVjdHVyZSogaGVhZCkKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChTdHJ1Y3R1
cmUqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJv
dG90eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3VycmVudC0+c3RvcmVkUHJvdG90eXBl
KCkpLT5zdHJ1Y3R1cmUoKSkKICAgICAgICAgbV92ZWN0b3JbaSsrXSA9IGN1cnJlbnQ7Ci0gICAg
bV92ZWN0b3JbaV0gPSAwOworICAgIG1fdmVjdG9yW2ldID0gbnVsbHB0cjsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oIGIv
SmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuaAppbmRleCAxMGE1ODE0Li5jMTliODBlIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi9OdWxsUHRyLmgKQEAgLTMxLDYgKzMxLDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLyBudWxscHRyX3QgdHlwZSBh
bmQgbnVsbHB0ciBvYmplY3QuIFRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIHNhbWUgbmFtZXNwYWNl
cyB0aGV5CiAvLyB3b3VsZCBiZSBpbiBjb21waWxlciBhbmQgbGlicmFyeSB0aGF0IGhhZCB0aGUg
c3VwcG9ydC4KIAorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBfTVNDX1ZFUiA8IDE2MDAKICNp
Zm5kZWYgX19oYXNfZmVhdHVyZQogICAgICNkZWZpbmUgX19oYXNfZmVhdHVyZShmZWF0dXJlKSAw
CiAjZW5kaWYKQEAgLTQ0LDUgKzQ1LDUgQEAgbmFtZXNwYWNlIHN0ZCB7CiBleHRlcm4gc3RkOjpu
dWxscHRyX3QgbnVsbHB0cjsKIAogI2VuZGlmCi0KKyNlbmRpZiAvL19NU0NfVkVSCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIGIv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKaW5kZXggZGZjOWZmMy4u
NDIwMTA1MCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKQEAg
LTE2NSw3ICsxNjUsNyBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OnNocmlua1RvRml0KCkKICAgICAg
ICAgVUNoYXIqIHJlc3VsdDsKICAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVV
bmluaXRpYWxpemVkKG1fbGVuZ3RoLCByZXN1bHQpOwogICAgICAgICBtZW1jcHkocmVzdWx0LCBt
X2J1ZmZlci0+Y2hhcmFjdGVycygpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbGVuZ3RoKSAqIDIp
OyAvLyBUaGlzIGNhbid0IG92ZXJmbG93LgotICAgICAgICBtX2J1ZmZlciA9IDA7CisgICAgICAg
IG1fYnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaAppbmRleCBmMTBhZjY0Li5kY2FmZTRhIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgbV9sZW5ndGggPSAwOwogICAgICAgICBtX3N0cmluZyA9IFN0cmluZygpOwotICAg
ICAgICBtX2J1ZmZlciA9IDA7CisgICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNWY5
NjljZC4uZWY2NjcwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApA
QCAtMjc5LDcgKzI3OSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIG9iaiA9IEFjY2Vzc2li
aWxpdHlTY3JvbGxiYXI6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogot
ICAgICAgICBvYmogPSAwOworICAgICAgICBvYmogPSBudWxscHRyOwogICAgIH0KICAgICAKICAg
ICBpZiAob2JqKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
Y2Y1NTA4MC4uMGU5NTI0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRDb250cm9sbGVy
KCkKIAogICAgIGlmIChtX2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0KSB7CiAgICAgICAgIG1f
Y2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QtPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9jYWNo
ZWFibGVCaW5kaW5nUm9vdE9iamVjdCA9IDA7CisgICAgICAgIG1fY2FjaGVhYmxlQmluZGluZ1Jv
b3RPYmplY3QgPSBudWxscHRyOwogICAgIH0KIAogICAgIC8vIEl0J3MgbGlrZWx5IHRoYXQgZGVz
dHJveWluZyBtX3dpbmRvd1NoZWxscyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBnYXJiYWdlLgpAQCAt
NDgzLDcgKzQ4Myw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3Rz
KCkKIAogICAgIGlmIChtX2JpbmRpbmdSb290T2JqZWN0KSB7CiAgICAgICAgIG1fYmluZGluZ1Jv
b3RPYmplY3QtPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9iaW5kaW5nUm9vdE9iamVjdCA9IDA7
CisgICAgICAgIG1fYmluZGluZ1Jvb3RPYmplY3QgPSBudWxscHRyOwogICAgIH0KIAogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcAppbmRleCBhNDQwYjgxLi40NGNkMTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmRldGFjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIC8vIHN0
YWNrLCBzaW5jZSB3ZSB3b24ndCBnZXQgZnVydGhlciBkZWJ1Z2dlciBjYWxsYmFja3MgdG8gZG8g
c28uIEFsc28sIHJlc3VtZSBleGVjdXRpb24sCiAgICAgLy8gc2luY2UgdGhlcmUncyBubyBwb2lu
dCBpbiBzdGF5aW5nIHBhdXNlZCBvbmNlIGEgd2luZG93IGNsb3Nlcy4KICAgICBpZiAobV9jdXJy
ZW50Q2FsbEZyYW1lICYmIG1fY3VycmVudENhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
ID09IGdsb2JhbE9iamVjdCkgewotICAgICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSAwOworICAg
ICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBudWxscHRyOwogICAgICAgICBtX3BhdXNlT25DYWxs
RnJhbWUgPSAwOwogICAgICAgICBjb250aW51ZVByb2dyYW0oKTsKICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5jcHAKaW5kZXggMzY4ZjdiMC4uYTRkNWMxNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRh
dGUoKQogICAgIEFTU0VSVChtX2luc3RhbmNlKTsKICAgICBpZiAobV9pbnN0YW5jZSkKICAgICAg
ICAgbV9pbnN0YW5jZS0+d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KHRoaXMpOwotICAgIG1f
aW5zdGFuY2UgPSAwOworICAgIG1faW5zdGFuY2UgPSBudWxscHRyOwogfQogCiBKU1ZhbHVlIFJ1
bnRpbWVPYmplY3Q6OmZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmNwcAppbmRleCAyMTU1ZWVhLi44NDUxNzBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZVZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIENTU0ltYWdlVmFsdWU6OmNsZWFyQ2FjaGVkSW1hZ2UoKQogewogICAg
IGlmIChtX2ltYWdlICYmIG1faW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKICAgICAgICAgc3RhdGlj
X2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KG1faW1hZ2UuZ2V0KCkpLT5jYWNoZWRJbWFnZSgpLT5y
ZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9pbWFnZSA9IDA7CisgICAgbV9pbWFnZSA9IG51bGxw
dHI7CiAgICAgbV9hY2Nlc3NlZEltYWdlID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1dlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA5MTA1Y2Q3Li43YzllZDk3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zMTksOSArMzE5LDkg
QEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWUKICAgICAgICAgICAgICAgICAgICAgLy8gQ29sb3Ig
b25seSBiZWxvbmdzIGluIHRoZSBsYXN0IGxheWVyLgogICAgICAgICAgICAgICAgICAgICBpZiAo
cHJvcGVydGllc1tqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgIT0gbnVtTGF5ZXJzIC0gMSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgIT0gMCkgLy8gT3Ro
ZXIgc2luZ2xldG9ucyBvbmx5IGJlbG9uZyBpbiB0aGUgZmlyc3QgbGF5ZXIuCi0gICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9
IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApp
bmRleCAxMmI4ZWVhLi4zNWQwODY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTIzMiw4ICsyMzIsOCBAQCB2
b2lkIENTU1BhcnNlcjo6cGFyc2VTaGVldChDU1NTdHlsZVNoZWV0KiBzaGVldCwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGludCBzdGFydAogICAgIHNldHVwUGFyc2VyKCIiLCBzdHJpbmcsICIiKTsK
ICAgICBjc3N5eXBhcnNlKHRoaXMpOwogICAgIG1fcnVsZVJhbmdlTWFwID0gMDsKLSAgICBtX2N1
cnJlbnRSdWxlRGF0YSA9IDA7Ci0gICAgbV9ydWxlID0gMDsKKyAgICBtX2N1cnJlbnRSdWxlRGF0
YSA9IG51bGxwdHI7CisgICAgbV9ydWxlID0gbnVsbHB0cjsKIH0KIAogUGFzc1JlZlB0cjxDU1NS
dWxlPiBDU1NQYXJzZXI6OnBhcnNlUnVsZShDU1NTdHlsZVNoZWV0KiBzaGVldCwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCkBAIC0yNjUsNyArMjY1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBpbnQgaWQsIGNvbnMK
IAogICAgIGNzc3l5cGFyc2UodGhpcyk7CiAKLSAgICBtX3J1bGUgPSAwOworICAgIG1fcnVsZSA9
IG51bGxwdHI7CiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgaWYgKG1faGFzRm9udEZhY2VP
bmx5VmFsdWVzKQpAQCAtMzEwLDcgKzMxMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nCiAK
ICAgICBzZXR1cFBhcnNlcigiQC13ZWJraXQtZGVjbHN7Y29sb3I6Iiwgc3RyaW5nLCAifSAiKTsK
ICAgICBjc3N5eXBhcnNlKHRoaXMpOwotICAgIG1fcnVsZSA9IDA7CisgICAgbV9ydWxlID0gbnVs
bHB0cjsKIAogICAgIHJldHVybiAobV9udW1QYXJzZWRQcm9wZXJ0aWVzICYmIG1fcGFyc2VkUHJv
cGVydGllc1swXS0+bV9pZCA9PSBDU1NQcm9wZXJ0eUNvbG9yKTsKIH0KQEAgLTM0Nyw3ICszNDcs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogZGVjbGFyYXRpb24sIGNvbnN0CiAKICAgICBzZXR1cFBhcnNlcigiQC13ZWJraXQt
ZGVjbHN7Iiwgc3RyaW5nLCAifSAiKTsKICAgICBjc3N5eXBhcnNlKHRoaXMpOwotICAgIG1fcnVs
ZSA9IDA7CisgICAgbV9ydWxlID0gbnVsbHB0cjsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAg
ICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCkBAIC0zNjksNyArMzY5LDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRl
Y2xhcmF0aW9uLCBjb25zdAogCiAgICAgaWYgKHN0eWxlU291cmNlRGF0YSkgewogICAgICAgICAq
c3R5bGVTb3VyY2VEYXRhID0gbV9jdXJyZW50UnVsZURhdGEtPnN0eWxlU291cmNlRGF0YS5yZWxl
YXNlKCk7Ci0gICAgICAgIG1fY3VycmVudFJ1bGVEYXRhID0gMDsKKyAgICAgICAgbV9jdXJyZW50
UnVsZURhdGEgPSBudWxscHRyOwogICAgICAgICBtX2luU3R5bGVSdWxlT3JEZWNsYXJhdGlvbiA9
IGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gb2s7CkBAIC0yNTUwLDcgKzI1NTAsNyBAQCB2b2lk
IENTU1BhcnNlcjo6cGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVm
UHRyPENTU1ZhbHVlPiYgdmFsdQogICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdCB8fCBpZCA9
PSBDU1NWYWx1ZU5vUmVwZWF0IHx8IGlkID09IENTU1ZhbHVlUm91bmQgfHwgaWQgPT0gQ1NTVmFs
dWVTcGFjZSkKICAgICAgICAgdmFsdWUxID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoaWQpOwogICAgIGVsc2UgewotICAgICAgICB2YWx1ZTEgPSAwOworICAgICAgICB2YWx1
ZTEgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjI1LDcgKzI2MjUs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsUHJvcGVydHkoaW50IHByb3BJZCwgaW50JiBw
cm9wSWQxLCBpbnQmIHByb3BJZDIsCiAKICAgICBib29sIGFsbG93Q29tbWEgPSBmYWxzZTsKIAot
ICAgIHJldFZhbHVlMSA9IHJldFZhbHVlMiA9IDA7CisgICAgcmV0VmFsdWUxID0gcmV0VmFsdWUy
ID0gbnVsbHB0cjsKICAgICBwcm9wSWQxID0gcHJvcElkOwogICAgIHByb3BJZDIgPSBwcm9wSWQ7
CiAgICAgaWYgKHByb3BJZCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbikgewpAQCAt
Mjk2OCw3ICsyOTY4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHko
aW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYgcmVzdWx0KQogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWU7CiAgICAgYm9vbCBhbGxvd0NvbW1hID0gZmFsc2U7CiAKLSAgICByZXN1bHQgPSAw
OworICAgIHJlc3VsdCA9IG51bGxwdHI7CiAKICAgICB3aGlsZSAoKHZhbCA9IG1fdmFsdWVMaXN0
LT5jdXJyZW50KCkpKSB7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3VyclZhbHVlOwpAQCAt
MzQ3NCw3ICszNDc0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFy
c2VGb250RmFtaWx5KCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoIWxpc3Qt
Pmxlbmd0aCgpKQotICAgICAgICBsaXN0ID0gMDsKKyAgICAgICAgbGlzdCA9IG51bGxwdHI7CiAg
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCkBAIC00MTQxLDEyICs0MTQxLDEyIEBAIHN0
cnVjdCBTaGFkb3dQYXJzZUNvbnRleHQgewogICAgICAgICB9CiAKICAgICAgICAgLy8gTm93IHJl
c2V0IGZvciB0aGUgbmV4dCBzaGFkb3cgdmFsdWUuCi0gICAgICAgIHggPSAwOwotICAgICAgICB5
ID0gMDsKLSAgICAgICAgYmx1ciA9IDA7Ci0gICAgICAgIHNwcmVhZCA9IDA7Ci0gICAgICAgIHN0
eWxlID0gMDsKLSAgICAgICAgY29sb3IgPSAwOworICAgICAgICB4ID0gbnVsbHB0cjsKKyAgICAg
ICAgeSA9IG51bGxwdHI7CisgICAgICAgIGJsdXIgPSBudWxscHRyOworICAgICAgICBzcHJlYWQg
PSBudWxscHRyOworICAgICAgICBzdHlsZSA9IG51bGxwdHI7CisgICAgICAgIGNvbG9yID0gbnVs
bHB0cjsKIAogICAgICAgICBhbGxvd1ggPSB0cnVlOwogICAgICAgICBhbGxvd0NvbG9yID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmNwcCBiL1dlYkNvcmUvY3Nz
L0NTU1J1bGVMaXN0LmNwcAppbmRleCA3MzY3YWIyLi5iZjY3NzQ1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NSdWxlTGlzdC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuY3Bw
CkBAIC0zNSw3ICszNSw3IEBAIENTU1J1bGVMaXN0OjpDU1NSdWxlTGlzdChTdHlsZUxpc3QqIGxp
c3QsIGJvb2wgb21pdENoYXJzZXRSdWxlcykKIHsKICAgICBtX2xpc3QgPSBsaXN0OwogICAgIGlm
IChsaXN0ICYmIG9taXRDaGFyc2V0UnVsZXMpIHsKLSAgICAgICAgbV9saXN0ID0gMDsKKyAgICAg
ICAgbV9saXN0ID0gbnVsbHB0cjsKICAgICAgICAgdW5zaWduZWQgbGVuID0gbGlzdC0+bGVuZ3Ro
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAg
ICAgICAgU3R5bGVCYXNlKiBzdHlsZSA9IGxpc3QtPml0ZW0oaSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCmluZGV4IGYwODQ4ZjQuLjBiOGNhMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CkBAIC03NzQsMTMgKzc3NCwxMyBAQCBpbmxpbmUgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0
Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbgogICAgIFJlbmRl
clN0eWxlKiBkb2NTdHlsZSA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5yZW5kZXJTdHlsZSgpOwog
ICAgIG1fcm9vdEVsZW1lbnRTdHlsZSA9IGRvY0VsZW1lbnQgJiYgZSAhPSBkb2NFbGVtZW50ID8g
ZG9jRWxlbWVudC0+cmVuZGVyU3R5bGUoKSA6IGRvY1N0eWxlOwogCi0gICAgbV9zdHlsZSA9IDA7
CisgICAgbV9zdHlsZSA9IG51bGxwdHI7CiAKICAgICBtX21hdGNoZWREZWNscy5jbGVhcigpOwog
CiAgICAgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzLmNsZWFyKCk7CiAKLSAgICBtX3J1bGVMaXN0
ID0gMDsKKyAgICBtX3J1bGVMaXN0ID0gbnVsbHB0cjsKIAogICAgIG1fZm9udERpcnR5ID0gZmFs
c2U7CiB9CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NT
dHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bAogICAg
ICAgICB2aXNpdGVkU3R5bGUgPSBzdHlsZUZvckVsZW1lbnQoZSwgcGFyZW50U3R5bGUsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgIGlmICh2aXNpdGVkU3R5bGUpIHsKICAgICAgICAgICAg
IGlmIChtX2VsZW1lbnRMaW5rU3RhdGUgPT0gSW5zaWRlVW52aXNpdGVkTGluaykKLSAgICAgICAg
ICAgICAgICB2aXNpdGVkU3R5bGUgPSAwOyAgLy8gV2UgbWFkZSB0aGUgc3R5bGUgdG8gYXZvaWQg
dGltaW5nIGF0dGFja3MuIEp1c3QgdGhyb3cgaXQgYXdheSBub3cgdGhhdCB3ZSBkaWQgdGhhdCwg
c2luY2Ugd2UgZG9uJ3QgbmVlZCBpdC4KKyAgICAgICAgICAgICAgICB2aXNpdGVkU3R5bGUgPSBu
dWxscHRyOyAgLy8gV2UgbWFkZSB0aGUgc3R5bGUgdG8gYXZvaWQgdGltaW5nIGF0dGFja3MuIEp1
c3QgdGhyb3cgaXQgYXdheSBub3cgdGhhdCB3ZSBkaWQgdGhhdCwgc2luY2Ugd2UgZG9uJ3QgbmVl
ZCBpdC4KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2aXNpdGVkU3R5bGUtPnNl
dFN0eWxlVHlwZShWSVNJVEVEX0xJTkspOwogICAgICAgICB9CkBAIC0xNDYwLDcgKzE0NjAsNyBA
QCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZv
ckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLAogICAgICAgICB2aXNpdGVkU3R5bGUgPSBwc2V1ZG9T
dHlsZUZvckVsZW1lbnQocHNldWRvLCBlLCBwYXJlbnRWaXNpdGVkU3R5bGUgPyBwYXJlbnRWaXNp
dGVkU3R5bGUgOiBwYXJlbnRTdHlsZSwgdHJ1ZSk7CiAgICAgICAgIGlmICh2aXNpdGVkU3R5bGUp
IHsKICAgICAgICAgICAgIGlmIChtX2VsZW1lbnRMaW5rU3RhdGUgPT0gSW5zaWRlVW52aXNpdGVk
TGluaykKLSAgICAgICAgICAgICAgICB2aXNpdGVkU3R5bGUgPSAwOyAgLy8gV2UgbWFkZSB0aGUg
c3R5bGUgdG8gYXZvaWQgdGltaW5nIGF0dGFja3MuIEp1c3QgdGhyb3cgaXQgYXdheSBub3cgdGhh
dCB3ZSBkaWQgdGhhdC4KKyAgICAgICAgICAgICAgICB2aXNpdGVkU3R5bGUgPSBudWxscHRyOyAg
Ly8gV2UgbWFkZSB0aGUgc3R5bGUgdG8gYXZvaWQgdGltaW5nIGF0dGFja3MuIEp1c3QgdGhyb3cg
aXQgYXdheSBub3cgdGhhdCB3ZSBkaWQgdGhhdC4KICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICB2aXNpdGVkU3R5bGUtPnNldFN0eWxlVHlwZShWSVNJVEVEX0xJTkspOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggNzc1YTJhZC4uYmI5ODM5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTA1LDEy
ICs1MDUsMTIgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogCiAgICAgICAgIC8v
IFdlIG11c3QgbWFrZSBzdXJlIG5vdCB0byBiZSByZXRhaW5pbmcgYW55IG9mIG91ciBjaGlsZHJl
biB0aHJvdWdoCiAgICAgICAgIC8vIHRoZXNlIGV4dHJhIHBvaW50ZXJzIG9yIHdlIHdpbGwgY3Jl
YXRlIGEgcmVmZXJlbmNlIGN5Y2xlLgotICAgICAgICBtX2RvY1R5cGUgPSAwOwotICAgICAgICBt
X2ZvY3VzZWROb2RlID0gMDsKLSAgICAgICAgbV9ob3Zlck5vZGUgPSAwOwotICAgICAgICBtX2Fj
dGl2ZU5vZGUgPSAwOwotICAgICAgICBtX3RpdGxlRWxlbWVudCA9IDA7Ci0gICAgICAgIG1fZG9j
dW1lbnRFbGVtZW50ID0gMDsKKyAgICAgICAgbV9kb2NUeXBlID0gbnVsbHB0cjsKKyAgICAgICAg
bV9mb2N1c2VkTm9kZSA9IG51bGxwdHI7CisgICAgICAgIG1faG92ZXJOb2RlID0gbnVsbHB0cjsK
KyAgICAgICAgbV9hY3RpdmVOb2RlID0gbnVsbHB0cjsKKyAgICAgICAgbV90aXRsZUVsZW1lbnQg
PSBudWxscHRyOworICAgICAgICBtX2RvY3VtZW50RWxlbWVudCA9IG51bGxwdHI7CiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKICNl
bmRpZgpAQCAtNTcwLDcgKzU3MCw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiAgICAgY2xl
YXJBWE9iamVjdENhY2hlKCk7CiAKLSAgICBtX2RlY29kZXIgPSAwOworICAgIG1fZGVjb2RlciA9
IG51bGxwdHI7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbmFtZUNvbGxlY3Rpb25J
bmZvLnNpemUoKTsgKytpKQogICAgICAgICBkZWxldGVBbGxWYWx1ZXMobV9uYW1lQ29sbGVjdGlv
bkluZm9baV0pOwpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhCiAg
ICAgQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3Jl
Q2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKICAgICAKICAgICAvLyBJbnZh
bGlkYXRlIHRoZSBkb2N1bWVudCBlbGVtZW50IHdlIGhhdmUgY2FjaGVkIGluIGNhc2UgaXQgd2Fz
IHJlcGxhY2VkLgotICAgIG1fZG9jdW1lbnRFbGVtZW50ID0gMDsKKyAgICBtX2RvY3VtZW50RWxl
bWVudCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmNhY2hlRG9jdW1lbnRFbGVtZW50
KCkgY29uc3QKQEAgLTEzODIsNyArMTM4Miw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCkKICAgICAgICAgLy8gVGl0
bGUgc2V0IGJ5IEphdmFTY3JpcHQgLS0gb3ZlcnJpZGVzIGFueSB0aXRsZSBlbGVtZW50cy4KICAg
ICAgICAgbV90aXRsZVNldEV4cGxpY2l0bHkgPSB0cnVlOwogICAgICAgICBpZiAoIWlzSFRNTERv
Y3VtZW50KCkpCi0gICAgICAgICAgICBtX3RpdGxlRWxlbWVudCA9IDA7CisgICAgICAgICAgICBt
X3RpdGxlRWxlbWVudCA9IG51bGxwdHI7CiAgICAgICAgIGVsc2UgaWYgKCFtX3RpdGxlRWxlbWVu
dCkgewogICAgICAgICAgICAgaWYgKEhUTUxFbGVtZW50KiBoZWFkRWxlbWVudCA9IGhlYWQoKSkg
ewogICAgICAgICAgICAgICAgIG1fdGl0bGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudCh0aXRsZVRh
ZywgZmFsc2UpOwpAQCAtMTQxMyw3ICsxNDEzLDcgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlVGl0
bGUoRWxlbWVudCogdGl0bGVFbGVtZW50KQogICAgIGlmIChtX3RpdGxlRWxlbWVudCAhPSB0aXRs
ZUVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGl0bGVFbGVtZW50ID0gMDsKKyAg
ICBtX3RpdGxlRWxlbWVudCA9IG51bGxwdHI7CiAgICAgbV90aXRsZVNldEV4cGxpY2l0bHkgPSBm
YWxzZTsKIAogICAgIC8vIFVwZGF0ZSB0aXRsZSBiYXNlZCBvbiBmaXJzdCB0aXRsZSBlbGVtZW50
IGluIHRoZSBoZWFkLCBpZiBvbmUgZXhpc3RzLgpAQCAtMTgxNSw5ICsxODE1LDkgQEAgdm9pZCBE
b2N1bWVudDo6ZGV0YWNoKCkKICAgICAvLyBpbmRpY2F0ZSBkZXN0cnVjdGlvbiBtb2RlLCAgaS5l
LiBhdHRhY2hlZCgpIGJ1dCByZW5kZXJlciA9PSAwCiAgICAgc2V0UmVuZGVyZXIoMCk7CiAKLSAg
ICBtX2hvdmVyTm9kZSA9IDA7Ci0gICAgbV9mb2N1c2VkTm9kZSA9IDA7Ci0gICAgbV9hY3RpdmVO
b2RlID0gMDsKKyAgICBtX2hvdmVyTm9kZSA9IG51bGxwdHI7CisgICAgbV9mb2N1c2VkTm9kZSA9
IG51bGxwdHI7CisgICAgbV9hY3RpdmVOb2RlID0gbnVsbHB0cjsKIAogICAgIENvbnRhaW5lck5v
ZGU6OmRldGFjaCgpOwogCkBAIC0yMzY1LDcgKzIzNjUsNyBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1
bWVudDo6cGFnZVVzZXJTaGVldCgpCiB2b2lkIERvY3VtZW50OjpjbGVhclBhZ2VVc2VyU2hlZXQo
KQogewogICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpIHsKLSAgICAgICAgbV9wYWdlVXNlclNoZWV0
ID0gMDsKKyAgICAgICAgbV9wYWdlVXNlclNoZWV0ID0gbnVsbHB0cjsKICAgICAgICAgc3R5bGVT
ZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgfQogfQpAQCAtMzE0Nyw3ICsz
MTQ3LDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBu
ZXdGb2N1c2VkTm9kZSkKIAogICAgIGJvb2wgZm9jdXNDaGFuZ2VCbG9ja2VkID0gZmFsc2U7CiAg
ICAgUmVmUHRyPE5vZGU+IG9sZEZvY3VzZWROb2RlID0gbV9mb2N1c2VkTm9kZTsKLSAgICBtX2Zv
Y3VzZWROb2RlID0gMDsKKyAgICBtX2ZvY3VzZWROb2RlID0gbnVsbHB0cjsKIAogICAgIC8vIFJl
bW92ZSBmb2N1cyBmcm9tIHRoZSBleGlzdGluZyBmb2N1cyBub2RlIChpZiBhbnkpCiAgICAgaWYg
KG9sZEZvY3VzZWROb2RlICYmICFvbGRGb2N1c2VkTm9kZS0+aW5EZXRhY2goKSkgeyAKQEAgLTMx
NzEsNyArMzE3MSw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWROb2RlKFBhc3NSZWZQdHI8
Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCiAgICAgICAgIGlmIChtX2ZvY3VzZWROb2RlKSB7CiAgICAg
ICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMKICAgICAgICAgICAgIGZvY3VzQ2hhbmdl
QmxvY2tlZCA9IHRydWU7Ci0gICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IDA7CisgICAgICAg
ICAgICBuZXdGb2N1c2VkTm9kZSA9IG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIG9sZEZvY3VzZWROb2RlLT5kaXNwYXRjaFVJRXZlbnQoZXZlbnROYW1lcygpLmZvY3Vzb3V0
RXZlbnQsIDAsIDApOyAvLyBET00gbGV2ZWwgMyBuYW1lIGZvciB0aGUgYnViYmxpbmcgYmx1ciBl
dmVudC4KQEAgLTMxODIsNyArMzE4Miw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWROb2Rl
KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCiAgICAgICAgIGlmIChtX2ZvY3VzZWRO
b2RlKSB7CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMKICAgICAgICAgICAg
IGZvY3VzQ2hhbmdlQmxvY2tlZCA9IHRydWU7Ci0gICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9
IDA7CisgICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKG9sZEZvY3VzZWROb2RlID09IHRoaXMgJiYgb2xkRm9jdXNlZE5vZGUtPmhhc09u
ZVJlZigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDgxYTY0MmIuLjc2MGVmN2Mg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC05ODcsNyArOTg3LDcgQEAgdm9pZCBOb2RlOjpyZW1vdmVDYWNoZWRMYWJlbHNOb2Rl
TGlzdChEeW5hbWljTm9kZUxpc3QqIGxpc3QpCiAgICAgQVNTRVJUX1VOVVNFRChsaXN0LCBsaXN0
LT5oYXNPd25DYWNoZXMoKSk7CiAgICAgCiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIGRhdGEgPSBy
YXJlRGF0YSgpLT5ub2RlTGlzdHMoKTsKLSAgICBkYXRhLT5tX2xhYmVsc05vZGVMaXN0Q2FjaGUg
PSAwOworICAgIGRhdGEtPm1fbGFiZWxzTm9kZUxpc3RDYWNoZSA9IG51bGxwdHI7CiB9CiAKIE5v
ZGUgKk5vZGU6OnRyYXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSAqc3RheVdpdGhpbikgY29uc3QK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9XZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDU0NGQ3ODkuLmIzN2IyNzcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBA
IHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAgICBp
ZiAobV9zaGVldCkgewogICAgICAgICBBU1NFUlQobV9zaGVldC0+b3duZXJOb2RlKCkgPT0gdGhp
cyk7CiAgICAgICAgIG1fc2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7Ci0gICAgICAgIG1fc2hlZXQg
PSAwOworICAgICAgICBtX3NoZWV0ID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9jYWNo
ZWRTaGVldCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYmZkYTE3
Yi4uNTY3ZTliMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKQogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkgewog
ICAgICAgICBBU1NFUlQobV9kYXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQoKSk7
Ci0gICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOworICAgICAgICBtX2RhdGFiYXNlVGhyZWFk
ID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJ
TEVfU1lTVEVNKQpAQCAtMTEwLDcgKzExMCw3IEBAIERhdGFiYXNlVGhyZWFkKiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCiAgICAgICAgIC8vIGJlY2F1c2UgaW4gdGhh
dCBjYXNlIHdlIGFscmVhZHkgaGFkIGEgZGF0YWJhc2UgdGhyZWFkIGFuZCB0ZXJtaW5hdGVkIGl0
IGFuZCBzaG91bGQgbm90IGNyZWF0ZSBhbm90aGVyLgogICAgICAgICBtX2RhdGFiYXNlVGhyZWFk
ID0gRGF0YWJhc2VUaHJlYWQ6OmNyZWF0ZSgpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2VUaHJl
YWQtPnN0YXJ0KCkpCi0gICAgICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gMDsKKyAgICAgICAg
ICAgIG1fZGF0YWJhc2VUaHJlYWQgPSBudWxscHRyOwogICAgIH0KIAogICAgIHJldHVybiBtX2Rh
dGFiYXNlVGhyZWFkLmdldCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50
LmNwcCBiL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKaW5kZXggMTU3ZThmOS4uYTVkZDFh
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9TdHlsZUVsZW1lbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgU3R5bGVFbGVtZW50
OjpyZW1vdmVkRnJvbURvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxlbWVu
dCkKICAgICBpZiAobV9zaGVldCkgewogICAgICAgICBBU1NFUlQobV9zaGVldC0+b3duZXJOb2Rl
KCkgPT0gZWxlbWVudCk7CiAgICAgICAgIG1fc2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7Ci0gICAg
ICAgIG1fc2hlZXQgPSAwOworICAgICAgICBtX3NoZWV0ID0gbnVsbHB0cjsKICAgICB9CiAKICAg
ICAvLyBJZiB3ZSdyZSBpbiBkb2N1bWVudCB0ZWFyZG93biwgdGhlbiB3ZSBkb24ndCBuZWVkIHRv
IGRvIGFueSBub3RpZmljYXRpb24gb2Ygb3VyIHNoZWV0J3MgcmVtb3ZhbC4KQEAgLTEyNCw3ICsx
MjQsNyBAQCB2b2lkIFN0eWxlRWxlbWVudDo6Y3JlYXRlU2hlZXQoRWxlbWVudCogZSwgaW50IHN0
YXJ0TGluZU51bWJlciwgY29uc3QgU3RyaW5nJiB0ZQogICAgIGlmIChtX3NoZWV0KSB7CiAgICAg
ICAgIGlmIChtX3NoZWV0LT5pc0xvYWRpbmcoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5yZW1v
dmVQZW5kaW5nU2hlZXQoKTsKLSAgICAgICAgbV9zaGVldCA9IDA7CisgICAgICAgIG1fc2hlZXQg
PSBudWxscHRyOwogICAgIH0KIAogICAgIC8vIElmIHR5cGUgaXMgZW1wdHkgb3IgQ1NTLCB0aGlz
IGlzIGEgQ1NTIHN0eWxlIHNoZWV0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCA5YTdjOWM4Li5l
Njg5NDg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgU3R5
bGVkRWxlbWVudDo6ZGVzdHJveUlubGluZVN0eWxlRGVjbCgpCiAgICAgaWYgKG1faW5saW5lU3R5
bGVEZWNsKSB7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXROb2RlKDApOwogICAgICAg
ICBtX2lubGluZVN0eWxlRGVjbC0+c2V0UGFyZW50KDApOwotICAgICAgICBtX2lubGluZVN0eWxl
RGVjbCA9IDA7CisgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gbnVsbHB0cjsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9XZWJDb3Jl
L2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCmluZGV4IGEzMWUwMDlkLi45OWY2OTM3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCisrKyBiL1dlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmgKQEAgLTc0LDcgKzc0LDcgQEAgc3RydWN0IFZpZXdwb3J0QXJndW1l
bnRzIHsKICAgICAgICAgLCB3aWR0aChWYWx1ZUF1dG8pCiAgICAgICAgICwgaGVpZ2h0KFZhbHVl
QXV0bykKICAgICAgICAgLCB0YXJnZXREZW5zaXR5RHBpKFZhbHVlQXV0bykKLSAgICAgICAgLCB1
c2VyU2NhbGFibGUoVmFsdWVBdXRvKQorICAgICAgICAsIHVzZXJTY2FsYWJsZSgoYm9vbCkgVmFs
dWVBdXRvKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAy
N2IwZmQ0Li42NzMxZWJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zNDgsNyAr
MzQ4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIHVudXNlZFJlc291cmNlKQogICAgIG1fcGVuZGluZ1NjcmlwdCA9IDA7CiAKICAgICBS
ZWZQdHI8RWxlbWVudD4gZSA9IG1fc2NyaXB0RWxlbWVudDsKLSAgICBtX3NjcmlwdEVsZW1lbnQg
PSAwOworICAgIG1fc2NyaXB0RWxlbWVudCA9IG51bGxwdHI7CiAKICAgICBTY3JpcHRFbGVtZW50
KiBzY3JpcHRFbGVtZW50ID0gdG9TY3JpcHRFbGVtZW50KGUuZ2V0KCkpOwogICAgIEFTU0VSVChz
Y3JpcHRFbGVtZW50KTsKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2Vy
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2UpCiAgICAgICAg
IHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoTG9hZEV2ZW50KCk7CiAgICAgfQogCi0gICAgbV9zY3Jp
cHRFbGVtZW50ID0gMDsKKyAgICBtX3NjcmlwdEVsZW1lbnQgPSBudWxscHRyOwogCiAgICAgaWYg
KCFpc0RldGFjaGVkKCkgJiYgIW1fcmVxdWVzdGluZ1NjcmlwdCkKICAgICAgICAgcmVzdW1lUGFy
c2luZygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAg
Yi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAppbmRleCBlOTA1ZTMxLi4xMmRj
MjljIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcApAQCAtNjA5LDcgKzYwOSw3IEBA
IHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRW5kRWxlbWVudCgpCiAgICAgICAgICAgICAg
ICAgaWYgKG1fcGVuZGluZ1NjcmlwdCkKICAgICAgICAgICAgICAgICAgICAgcGF1c2VQYXJzaW5n
KCk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEVsZW1lbnQg
PSAwOworICAgICAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVudCA9IG51bGxwdHI7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgc2NyaXB0RWxlbWVudC0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRT
b3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQtPnNjcmlwdENvbnRlbnQoKSwgZG9jdW1lbnQoKS0+dXJs
KCksIG1fc2NyaXB0U3RhcnRQb3NpdGlvbikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGIvV2ViQ29yZS9kb20v
ZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggOWUwZTdkYy4uOTI3
NDgzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbC5jcHAKKysrIGIvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbC5jcHAKQEAgLTIxOCw4ICsyMTgsOCBAQCB2b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpjbG9zZUludGVybmFsKCkKICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwog
ICAgIC8vIERpc2VudGFuZ2xlIG91cnNlbHZlcyBmcm9tIHRoZSBvdGhlciBlbmQuIFdlIHN0aWxs
IG1haW50YWluIGEgcmVmZXJlbmNlIHRvIG91ciBpbmNvbWluZyBxdWV1ZSwgc2luY2UgcHJldmlv
dXNseS1leGlzdGluZyBtZXNzYWdlcyBzaG91bGQgc3RpbGwgYmUgZGVsaXZlcmVkLgogICAgIG1f
cmVtb3RlUG9ydCA9IDA7Ci0gICAgbV9lbnRhbmdsZWRDaGFubmVsID0gMDsKLSAgICBtX291dGdv
aW5nUXVldWUgPSAwOworICAgIG1fZW50YW5nbGVkQ2hhbm5lbCA9IG51bGxwdHI7CisgICAgbV9v
dXRnb2luZ1F1ZXVlID0gbnVsbHB0cjsKIH0KIAogYm9vbCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9B
cHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tF
bGVtZW50Q29tbWFuZC5jcHAKaW5kZXggMjg1NjUwZC4uYTc0ZThlMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2
b2lkIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6Zm9ybWF0U2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgc3RhcnRPZlNlbAogICAgICAgICAvLyBEb24ndCBwdXQgdGhlIG5leHQgcGFy
YWdyYXBoIGluIHRoZSBibG9ja3F1b3RlIHdlIGp1c3QgY3JlYXRlZCBmb3IgdGhpcyBwYXJhZ3Jh
cGggdW5sZXNzIAogICAgICAgICAvLyB0aGUgbmV4dCBwYXJhZ3JhcGggaXMgaW4gdGhlIHNhbWUg
Y2VsbC4KICAgICAgICAgaWYgKGVuY2xvc2luZ0NlbGwgJiYgZW5jbG9zaW5nQ2VsbCAhPSBlbmNs
b3NpbmdOb2RlT2ZUeXBlKGVuZE9mTmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLCAmaXNU
YWJsZUNlbGwpKQotICAgICAgICAgICAgYmxvY2txdW90ZUZvck5leHRJbmRlbnQgPSAwOworICAg
ICAgICAgICAgYmxvY2txdW90ZUZvck5leHRJbmRlbnQgPSBudWxscHRyOwogCiAgICAgICAgIC8v
IGluZGVudEludG9CbG9ja3F1b3RlIGNvdWxkIG1vdmUgbW9yZSB0aGFuIG9uZSBwYXJhZ3JhcGgg
aWYgdGhlIHBhcmFncmFwaAogICAgICAgICAvLyBpcyBpbiBhIGxpc3QgaXRlbSBvciBhIHRhYmxl
LiBBcyBhIHJlc3VsdCwgZW5kQWZ0ZXJTZWxlY3Rpb24gY291bGQgcmVmZXIgdG8gYSBwb3NpdGlv
bgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDAyOGVk
YzguLmVhMzQ1MWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250
cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5j
cHAKQEAgLTMwMCw4ICszMDAsOCBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OnNob3co
SFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAKIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6aGlk
ZSgpCiB7Ci0gICAgbV9vdXRsaW5lRWxlbWVudCA9IDA7Ci0gICAgbV9idXR0b25FbGVtZW50ID0g
MDsKKyAgICBtX291dGxpbmVFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2J1dHRvbkVsZW1lbnQg
PSBudWxscHRyOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKG1fY29udGFp
bmVyRWxlbWVudCAmJiBtX2NvbnRhaW5lckVsZW1lbnQtPnBhcmVudE5vZGUoKSkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAyNGMxOTY4Li4xMjM3MGM5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVT
dGF0ZSgpCiAgICAgaWYgKG5lYXJlc3RNYWlsQmxvY2txdW90ZShtX3NlbGVjdGlvblRvRGVsZXRl
LnN0YXJ0KCkubm9kZSgpKSkKICAgICAgICAgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUobV9zZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSk7CiAgICAgZWxz
ZQotICAgICAgICBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGUgPSAwOworICAgICAgICBtX2Rl
bGV0ZUludG9CbG9ja3F1b3RlU3R5bGUgPSBudWxscHRyOwogfQogCiBib29sIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQ6OmhhbmRsZVNwZWNpYWxDYXNlQlJEZWxldGUoKQpAQCAtNDY1LDcgKzQ2NSw3
IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAg
ICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUgIT0gbV9kb3duc3RyZWFtRW5kLm5vZGUoKSkgewog
ICAgICAgICAgICAgaWYgKGNvbXBhcmVQb3NpdGlvbnMoUG9zaXRpb24obm9kZS5nZXQoKSwgMCks
IG1fZG93bnN0cmVhbUVuZCkgPj0gMCkgewogICAgICAgICAgICAgICAgIC8vIHRyYXZlcnNlTmV4
dFNpYmxpbmcganVzdCBibGV3IHBhc3QgdGhlIGVuZCBwb3NpdGlvbiwgc28gc3RvcCBkZWxldGlu
ZwotICAgICAgICAgICAgICAgIG5vZGUgPSAwOworICAgICAgICAgICAgICAgIG5vZGUgPSBudWxs
cHRyOwogICAgICAgICAgICAgfSBlbHNlIGlmICghbV9kb3duc3RyZWFtRW5kLm5vZGUoKS0+aXNE
ZXNjZW5kYW50T2Yobm9kZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4g
bmV4dE5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICAgICAg
Ly8gaWYgd2UganVzdCByZW1vdmVkIGEgbm9kZSBmcm9tIHRoZSBlbmQgY29udGFpbmVyLCB1cGRh
dGUgZW5kIHBvc2l0aW9uIHNvIHRoZQpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgRGVsZXRlU2Vs
ZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgICAgICAgICAgICAgTm9k
ZSogbiA9IG5vZGUtPmxhc3REZXNjZW5kYW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZG93
bnN0cmVhbUVuZC5ub2RlKCkgPT0gbiAmJiBtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChuKSkgewogICAgICAgICAgICAgICAgICAgICBy
ZW1vdmVOb2RlKG5vZGUuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBub2RlID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCk7CiAg
ICAgICAgICAgICB9CkBAIC02NzUsMTEgKzY3NSwxMSBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQ6OmNhbGN1bGF0ZVR5cGluZ1N0eWxlQWZ0ZXJEZWxldGUoKQogICAgIC8vIElmIHdlIGRl
bGV0ZWQgaW50byBhIGJsb2NrcXVvdGUsIGJ1dCBhcmUgbm93IG5vIGxvbmdlciBpbiBhIGJsb2Nr
cXVvdGUsIHVzZSB0aGUgYWx0ZXJuYXRlIHR5cGluZyBzdHlsZQogICAgIGlmIChtX2RlbGV0ZUlu
dG9CbG9ja3F1b3RlU3R5bGUgJiYgIW5lYXJlc3RNYWlsQmxvY2txdW90ZShtX2VuZGluZ1Bvc2l0
aW9uLm5vZGUoKSkpCiAgICAgICAgIG1fdHlwaW5nU3R5bGUgPSBtX2RlbGV0ZUludG9CbG9ja3F1
b3RlU3R5bGU7Ci0gICAgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlID0gMDsKKyAgICBtX2Rl
bGV0ZUludG9CbG9ja3F1b3RlU3R5bGUgPSBudWxscHRyOwogCiAgICAgbV90eXBpbmdTdHlsZS0+
cHJlcGFyZVRvQXBwbHlBdChtX2VuZGluZ1Bvc2l0aW9uKTsKICAgICBpZiAobV90eXBpbmdTdHls
ZS0+aXNFbXB0eSgpKQotICAgICAgICBtX3R5cGluZ1N0eWxlID0gMDsKKyAgICAgICAgbV90eXBp
bmdTdHlsZSA9IG51bGxwdHI7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQobV9lbmRp
bmdQb3NpdGlvbik7CiAgICAgaWYgKG1fdHlwaW5nU3R5bGUgJiYgCiAgICAgICAgIGlzU3RhcnRP
ZlBhcmFncmFwaCh2aXNpYmxlRW5kKSAmJgpAQCAtNjk1LDcgKzY5NSw3IEBAIHZvaWQgRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZDo6Y2FsY3VsYXRlVHlwaW5nU3R5bGVBZnRlckRlbGV0ZSgpCiAgICAg
ICAgIC8vIGFwcGx5U3R5bGUgY2FuIGRlc3Ryb3kgdGhlIHBsYWNlaG9sZGVyIHRoYXQgd2FzIGF0
IG1fZW5kaW5nUG9zaXRpb24gaWYgaXQgbmVlZHMgdG8gCiAgICAgICAgIC8vIG1vdmUgaXQsIGJ1
dCBpdCB3aWxsIHNldCBhbiBlbmRpbmdTZWxlY3Rpb24oKSBhdCBbbW92ZWRQbGFjZWhvbGRlciwg
MF0gaWYgaXQgZG9lcyBzby4KICAgICAgICAgbV9lbmRpbmdQb3NpdGlvbiA9IGVuZGluZ1NlbGVj
dGlvbigpLnN0YXJ0KCk7Ci0gICAgICAgIG1fdHlwaW5nU3R5bGUgPSAwOworICAgICAgICBtX3R5
cGluZ1N0eWxlID0gbnVsbHB0cjsKICAgICB9CiAgICAgLy8gVGhpcyBpcyB3aGVyZSB3ZSd2ZSBk
ZWxldGVkIGFsbCB0cmFjZXMgb2YgYSBzdHlsZSBidXQgbm90IGEgd2hvbGUgcGFyYWdyYXBoICh0
aGF0J3MgaGFuZGxlZCBhYm92ZSkuCiAgICAgLy8gSW4gdGhpcyBjYXNlIGlmIHdlIHN0YXJ0IHR5
cGluZywgdGhlIG5ldyBjaGFyYWN0ZXJzIHNob3VsZCBoYXZlIHRoZSBzYW1lIHN0eWxlIGFzIHRo
ZSBqdXN0IGRlbGV0ZWQgb25lcywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNWI2MWYxYy4uZTAxYTIwMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTExMTcsNyArMTExNyw3IEBAIHZvaWQgRWRpdG9yOjp1bmFwcGxp
ZWRFZGl0aW5nKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNtZCkKICAgICBWaXNpYmxlU2VsZWN0
aW9uIG5ld1NlbGVjdGlvbihjbWQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkpOwogICAgIGNoYW5nZVNl
bGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIHRydWUsIHRydWUpOwogICAgIAotICAg
IG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IG51bGxwdHI7
CiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJDb21tYW5kRm9y
UmVkbyhjbWQpOwogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOyAg
ICAKQEAgLTExMzIsNyArMTEzMiw3IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKFBh
c3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNtZCkKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVj
dGlvbihjbWQtPmVuZGluZ1NlbGVjdGlvbigpKTsKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNv
bW1hbmQobmV3U2VsZWN0aW9uLCB0cnVlLCB0cnVlKTsKICAgICAKLSAgICBtX2xhc3RFZGl0Q29t
bWFuZCA9IDA7CisgICAgbV9sYXN0RWRpdENvbW1hbmQgPSBudWxscHRyOwogICAgIGlmIChjbGll
bnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oY21kKTsKICAg
ICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsgICAgCkBAIC0xMTYxLDcg
KzExNjEsNyBAQCBFZGl0b3I6On5FZGl0b3IoKQogCiB2b2lkIEVkaXRvcjo6Y2xlYXIoKQogewot
ICAgIG1fY29tcG9zaXRpb25Ob2RlID0gMDsKKyAgICBtX2NvbXBvc2l0aW9uTm9kZSA9IG51bGxw
dHI7CiAgICAgbV9jdXN0b21Db21wb3NpdGlvblVuZGVybGluZXMuY2xlYXIoKTsKICAgICBtX3No
b3VsZFN0eWxlV2l0aENTUyA9IGZhbHNlOwogfQpAQCAtMTYxMyw3ICsxNjEzLDcgQEAgdm9pZCBF
ZGl0b3I6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgcHJlc2Vy
dmVTZWxlY3Rpb24pCiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICBUeXBpbmdDb21t
YW5kOjpkZWxldGVTZWxlY3Rpb24obV9mcmFtZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOwogCi0gICAg
bV9jb21wb3NpdGlvbk5vZGUgPSAwOworICAgIG1fY29tcG9zaXRpb25Ob2RlID0gbnVsbHB0cjsK
ICAgICBtX2N1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcy5jbGVhcigpOwogCiAgICAgaW5zZXJ0
VGV4dCh0ZXh0LCAwKTsKQEAgLTE2ODEsNyArMTY4MSw3IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21w
b3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVy
bGluCiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxl
dGVTZWxlY3Rpb24obV9mcmFtZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOwogCi0gICAgbV9jb21wb3Np
dGlvbk5vZGUgPSAwOworICAgIG1fY29tcG9zaXRpb25Ob2RlID0gbnVsbHB0cjsKICAgICBtX2N1
c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcy5jbGVhcigpOwogCiAgICAgaWYgKCF0ZXh0LmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5k
LmNwcCBiL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKaW5kZXggMTMw
NTZkMy4uMjQwOTA0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRD
b21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3Bw
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6Zm9ybWF0U2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlNlbGVjdGkKIHZvaWQgSW5kZW50
T3V0ZGVudENvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3Qg
UG9zaXRpb24mIGVuZCwgY29uc3QgUG9zaXRpb24mLCBSZWZQdHI8RWxlbWVudD4mIGJsb2NrcXVv
dGVGb3JOZXh0SW5kZW50KQogewogICAgIGlmICh0cnlJbmRlbnRpbmdBc0xpc3RJdGVtKHN0YXJ0
LCBlbmQpKQotICAgICAgICBibG9ja3F1b3RlRm9yTmV4dEluZGVudCA9IDA7CisgICAgICAgIGJs
b2NrcXVvdGVGb3JOZXh0SW5kZW50ID0gbnVsbHB0cjsKICAgICBlbHNlCiAgICAgICAgIGluZGVu
dEludG9CbG9ja3F1b3RlKHN0YXJ0LCBlbmQsIGJsb2NrcXVvdGVGb3JOZXh0SW5kZW50KTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAg
Yi9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDA0NGNl
NjMuLmUxZTE1NjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtNTAxLDggKzUwMSw4IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJl
bW92ZVVucmVuZGVyZWRUZXh0Tm9kZXNBdEVuZHMoKQogICAgICAgICAhZW5jbG9zaW5nTm9kZVdp
dGhUYWcoUG9zaXRpb24obV9sYXN0TGVhZkluc2VydGVkLmdldCgpLCAwKSwgc2NyaXB0VGFnKSkg
ewogICAgICAgICBpZiAobV9maXJzdE5vZGVJbnNlcnRlZCA9PSBtX2xhc3RMZWFmSW5zZXJ0ZWQp
IHsKICAgICAgICAgICAgIHJlbW92ZU5vZGUobV9sYXN0TGVhZkluc2VydGVkLmdldCgpKTsKLSAg
ICAgICAgICAgIG1fbGFzdExlYWZJbnNlcnRlZCA9IDA7Ci0gICAgICAgICAgICBtX2ZpcnN0Tm9k
ZUluc2VydGVkID0gMDsKKyAgICAgICAgICAgIG1fbGFzdExlYWZJbnNlcnRlZCA9IG51bGxwdHI7
CisgICAgICAgICAgICBtX2ZpcnN0Tm9kZUluc2VydGVkID0gbnVsbHB0cjsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlvdXMgPSBtX2xh
c3RMZWFmSW5zZXJ0ZWQtPnRyYXZlcnNlUHJldmlvdXNOb2RlKCk7CkBAIC01MTYsOCArNTE2LDgg
QEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlVW5yZW5kZXJlZFRleHROb2Rl
c0F0RW5kcygpCiAgICAgICAgIG1fZmlyc3ROb2RlSW5zZXJ0ZWQtPmlzVGV4dE5vZGUoKSkgewog
ICAgICAgICBpZiAobV9maXJzdE5vZGVJbnNlcnRlZCA9PSBtX2xhc3RMZWFmSW5zZXJ0ZWQpIHsK
ICAgICAgICAgICAgIHJlbW92ZU5vZGUobV9maXJzdE5vZGVJbnNlcnRlZC5nZXQoKSk7Ci0gICAg
ICAgICAgICBtX2ZpcnN0Tm9kZUluc2VydGVkID0gMDsKLSAgICAgICAgICAgIG1fbGFzdExlYWZJ
bnNlcnRlZCA9IDA7CisgICAgICAgICAgICBtX2ZpcnN0Tm9kZUluc2VydGVkID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fbGFzdExlYWZJbnNlcnRlZCA9IG51bGxwdHI7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgUmVmUHRyPE5vZGU+IG5leHQgPSBtX2ZpcnN0Tm9k
ZUluc2VydGVkLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCmluZGV4IDIyNDFiODUuLmIwYTExNWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpleHBhbmRSYW5nZVRvTmV4dEVuZCgpCiB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFw
aDo6aW52YWxpZGF0ZVBhcmFncmFwaFJhbmdlVmFsdWVzKCkKIHsKICAgICBtX2NoZWNraW5nU3Rh
cnQgPSBtX2NoZWNraW5nRW5kID0gLTE7Ci0gICAgbV9vZmZzZXRBc1JhbmdlID0gMDsKKyAgICBt
X29mZnNldEFzUmFuZ2UgPSBudWxscHRyOwogICAgIG1fdGV4dCA9IFN0cmluZygpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvV2ViQ29yZS9oaXN0
b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCBmMmNlMjdkLi4zMDJiMzg0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAKQEAgLTE5NSw5ICsxOTUsOSBAQCB2b2lkIENhY2hlZEZyYW1lOjpjbGVhcigp
CiAgICAgZm9yIChpbnQgaSA9IG1fY2hpbGRGcmFtZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkp
CiAgICAgICAgIG1fY2hpbGRGcmFtZXNbaV0tPmNsZWFyKCk7CiAKLSAgICBtX2RvY3VtZW50ID0g
MDsKLSAgICBtX3ZpZXcgPSAwOwotICAgIG1fbW91c2VQcmVzc05vZGUgPSAwOworICAgIG1fZG9j
dW1lbnQgPSBudWxscHRyOworICAgIG1fdmlldyA9IG51bGxwdHI7CisgICAgbV9tb3VzZVByZXNz
Tm9kZSA9IG51bGxwdHI7CiAgICAgbV91cmwgPSBLVVJMKCk7CiAKICAgICBtX2NhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVk
UGFnZS5jcHAgYi9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggYWNiZmQzMS4u
MTA3MWRjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBi
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIENh
Y2hlZFBhZ2U6OmNsZWFyKCkKIHsKICAgICBBU1NFUlQobV9jYWNoZWRNYWluRnJhbWUpOwogICAg
IG1fY2FjaGVkTWFpbkZyYW1lLT5jbGVhcigpOwotICAgIG1fY2FjaGVkTWFpbkZyYW1lID0gMDsK
KyAgICBtX2NhY2hlZE1haW5GcmFtZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQ2FjaGVkUGFnZTo6
ZGVzdHJveSgpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUGFnZTo6ZGVzdHJveSgpCiAg
ICAgaWYgKG1fY2FjaGVkTWFpbkZyYW1lKQogICAgICAgICBtX2NhY2hlZE1haW5GcmFtZS0+ZGVz
dHJveSgpOwogCi0gICAgbV9jYWNoZWRNYWluRnJhbWUgPSAwOworICAgIG1fY2FjaGVkTWFpbkZy
YW1lID0gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5jcHAKaW5kZXggMzRiNTRhMS4uZDE3Mzg5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3Bw
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0Rm9ybUluZm9Gcm9tUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIG1fZm9ybURhdGEg
PSByZXF1ZXN0Lmh0dHBCb2R5KCk7CiAgICAgICAgIG1fZm9ybUNvbnRlbnRUeXBlID0gcmVxdWVz
dC5odHRwQ29udGVudFR5cGUoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2Zvcm1EYXRhID0g
MDsKKyAgICAgICAgbV9mb3JtRGF0YSA9IG51bGxwdHI7CiAgICAgICAgIG1fZm9ybUNvbnRlbnRU
eXBlID0gU3RyaW5nKCk7CiAgICAgfQogI2lmIFBMQVRGT1JNKEFORFJPSUQpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCAyYTA4Njk2Li5hMGQzNWM2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTQyOCw3ICs0MjgsNyBAQCB2b2lkIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgICAgICBtX2NhcnJ5T3ZlciA9IFN0
cmluZygpOwogICAgIH0KIAotICAgIG1fdGFibGVFbGVtZW50ID0gMDsKKyAgICBtX3RhYmxlRWxl
bWVudCA9IG51bGxwdHI7CiAgICAgZmFzdEZyZWUobV9idWZmZXIpOwogCiAgICAgSFRNTERvY3Vt
ZW50UGFyc2VyOjpmaW5pc2goKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IGRj
ZGRlMjguLjAwNzc1NjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgewogICAgICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBj
bGVhcmVkIG9uIG1vdXNlb3ZlciBhbmQgbm90IG1vdXNlb3V0IGJlY2F1c2UgdGhlaXIgdmFsdWVz
IGFyZSBuZWVkZWQgZm9yIGRyYWcgZXZlbnRzLAogICAgICAgICAgICAgICAgIC8vIGJ1dCBkcmFn
IGV2ZW50cyBoYXBwZW4gYWZ0ZXIgbW91c2Ugb3V0IGV2ZW50cy4KLSAgICAgICAgICAgICAgICBt
X3Jvb3RFZGl0YWJsZUVsZW1lbnRGb3JTZWxlY3Rpb25Pbk1vdXNlRG93biA9IDA7CisgICAgICAg
ICAgICAgICAgbV9yb290RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24gPSBu
dWxscHRyOwogICAgICAgICAgICAgICAgIG1fd2FzU2hpZnRLZXlEb3duT25Nb3VzZURvd24gPSBm
YWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApp
bmRleCBhNmU1YjU3Li4wNjZkMWNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMjY5
LDcgKzI2OSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobV9zaGVldCkgewogICAgICAgICAvLyB3ZSBubyBsb25nZXIgY29udGFp
biBhIHN0eWxlc2hlZXQsIGUuZy4gcGVyaGFwcyByZWwgb3IgdHlwZSB3YXMgY2hhbmdlZAotICAg
ICAgICBtX3NoZWV0ID0gMDsKKyAgICAgICAgbV9zaGVldCA9IG51bGxwdHI7CiAgICAgICAgIGRv
Y3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogICAgIH0K
IH0KQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlZEZyb21E
b2N1bWVudCgpCiAgICAgaWYgKG1fc2hlZXQpIHsKICAgICAgICAgQVNTRVJUKG1fc2hlZXQtPm93
bmVyTm9kZSgpID09IHRoaXMpOwogICAgICAgICBtX3NoZWV0LT5jbGVhck93bmVyTm9kZSgpOwot
ICAgICAgICBtX3NoZWV0ID0gMDsKKyAgICAgICAgbV9zaGVldCA9IG51bGxwdHI7CiAgICAgfQog
CiAgICAgaWYgKGRvY3VtZW50KCktPnJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHAKaW5kZXggZTU1NDYyMC4uOTE0MmJmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApA
QCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiAgICAgaWYgKGJvcmRlcnNCZWZvcmUgIT0gY2VsbEJv
cmRlcnMoKSB8fCBvbGRQYWRkaW5nICE9IG1fcGFkZGluZykgewogICAgICAgICBpZiAob2xkUGFk
ZGluZyAhPSBtX3BhZGRpbmcpCi0gICAgICAgICAgICBtX3BhZGRpbmdEZWNsID0gMDsKKyAgICAg
ICAgICAgIG1fcGFkZGluZ0RlY2wgPSBudWxscHRyOwogICAgICAgICBib29sIGNlbGxDaGFuZ2Vk
ID0gZmFsc2U7CiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICAgICAgY2VsbENoYW5nZWQg
fD0gc2V0VGFibGVDZWxsc0NoYW5nZWQoY2hpbGQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5k
ZXggY2ViYjk0OS4uMGY0NDJhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC0xNTgsNyAr
MTU4LDcgQEAgTm9kZSogUGx1Z2luRG9jdW1lbnQ6OnBsdWdpbk5vZGUoKQogdm9pZCBQbHVnaW5E
b2N1bWVudDo6ZGV0YWNoKCkKIHsKICAgICAvLyBSZWxlYXNlIHRoZSBwbHVnaW4gbm9kZSBzbyB0
aGF0IHdlIGRvbid0IGhhdmUgYSBjaXJjdWxhciByZWZlcmVuY2UuCi0gICAgbV9wbHVnaW5Ob2Rl
ID0gMDsKKyAgICBtX3BsdWdpbk5vZGUgPSBudWxscHRyOwogICAgIEhUTUxEb2N1bWVudDo6ZGV0
YWNoKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggZTA0NTM4Mi4uMTUxMGYzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZv
Y3VzTm9kZSgpCiAKICAgICBsb25nIGlkID0gbV9kb21BZ2VudC0+cHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZChtX25vZGVUb0ZvY3VzLmdldCgpKTsKICAgICBtX2Zyb250ZW5kLT51cGRhdGVGb2N1c2Vk
Tm9kZShpZCk7Ci0gICAgbV9ub2RlVG9Gb2N1cyA9IDA7CisgICAgbV9ub2RlVG9Gb2N1cyA9IG51
bGxwdHI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlnaGxpZ2h0KE5vZGUqIG5v
ZGUpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpoaWRlSGln
aGxpZ2h0KCkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
aGlnaGxpZ2h0ZWROb2RlID0gMDsKKyAgICBtX2hpZ2hsaWdodGVkTm9kZSA9IG51bGxwdHI7CiAg
ICAgbV9jbGllbnQtPmhpZGVIaWdobGlnaHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAwYjE4YjBjLi45YzI1NDVkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMTU3LDcgKzE1
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VPbk5leHRTdGF0
ZW1lbnQoKQogewogICAgIGlmIChtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscyA9IDA7CisgICAgbV9icmVha1Byb2dy
YW1EZXRhaWxzID0gbnVsbHB0cjsKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0
UGF1c2VPbk5leHRTdGF0ZW1lbnQoZmFsc2UpOwogfQogCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUpCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKCkKIHsKICAgICBt
X3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKLSAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSAwOwor
ICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscyA9IG51bGxwdHI7CiAgICAgbV9mcm9udGVuZC0+cmVz
dW1lZFNjcmlwdCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMmYyMTA2
Ni4uMzBhNDZjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDA5LDcgKzQwOSw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCBmbGFn
KQogICAgIGlmIChmbGFnKSB7CiAgICAgICAgIGlmIChtX21haW5SZXNvdXJjZUxvYWRlcikgewog
ICAgICAgICAgICAgbV9tYWluUmVzb3VyY2VEYXRhID0gbV9tYWluUmVzb3VyY2VMb2FkZXItPnJl
c291cmNlRGF0YSgpOwotICAgICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSAwOworICAg
ICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSBudWxscHRyOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHRoaXMgPT0gZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkK
QEAgLTc3NSw3ICs3NzUsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWlu
UmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgICAgICAvLyBGSVhNRTogSWYg
dGhpcyBzaG91bGQgcmVhbGx5IGJlIGNhdWdodCwgd2Ugc2hvdWxkIGp1c3QgQVNTRVJUIHRoaXMg
ZG9lc24ndCBoYXBwZW47CiAgICAgICAgIC8vIHNob3VsZCBpdCBiZSBjYXVnaHQgYnkgb3RoZXIg
cGFydHMgb2YgV2ViS2l0IG9yIG90aGVyIHBhcnRzIG9mIHRoZSBhcHA/CiAgICAgICAgIExPR19F
UlJPUigiY291bGQgbm90IGNyZWF0ZSBXZWJSZXNvdXJjZUhhbmRsZSBmb3IgVVJMICVzIC0tIHNo
b3VsZCBiZSBjYXVnaHQgYnkgcG9saWN5IGhhbmRsZXIgbGV2ZWwiLCBtX3JlcXVlc3QudXJsKCku
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlciA9
IDA7CisgICAgICAgIG1fbWFpblJlc291cmNlTG9hZGVyID0gbnVsbHB0cjsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKaW5kZXggZGVlNTAwMS4uYmYzNjdjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFBhc3NSZWZQdHI8RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShE
b2N1bWVudCoKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIg
PSBhZG9wdFJlZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKGRvY3VtZW50LCBjbGllbnQs
IExvYWRBc3luY2hyb25vdXNseSwgcmVxdWVzdCwgb3B0aW9ucykpOwogICAgIGlmICghbG9hZGVy
LT5tX2xvYWRlcikKLSAgICAgICAgbG9hZGVyID0gMDsKKyAgICAgICAgbG9hZGVyID0gbnVsbHB0
cjsKICAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIApAQCAtMTYwLDcgKzE2MCw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogCiAgICAgbV9sb2FkZXIt
PmNhbmNlbCgpOwogICAgIG1fbG9hZGVyLT5jbGVhckNsaWVudCgpOwotICAgIG1fbG9hZGVyID0g
MDsKKyAgICBtX2xvYWRlciA9IG51bGxwdHI7CiAgICAgbV9jbGllbnQgPSAwOwogfQogCkBAIC0z
MTksNyArMzE5LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICAgICAgYm9vbCBzbmlm
ZkNvbnRlbnQgPSBtX29wdGlvbnMuc25pZmZDb250ZW50ICYmICFtX2FjdHVhbFJlcXVlc3Q7CiAK
ICAgICAgICAgLy8gQ2xlYXIgdGhlIGxvYWRlciBzbyB0aGF0IGFueSBjYWxsYmFja3MgZnJvbSBT
dWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUgdGhlIG9sZCBsb2FkZXIuCi0g
ICAgICAgIG1fbG9hZGVyID0gMDsKKyAgICAgICAgbV9sb2FkZXIgPSBudWxscHRyOwogICAgICAg
ICBtX2xvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNl
TG9hZChtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlv
cml0eU1lZGl1bSwgc2VjdXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsIHNuaWZmQ29udGVu
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5k
ZXggNWIwM2NkNy4uOTg5NGE4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtODYs
NyArODYsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBzb3VyY2UpCiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmNsZWFyKCkKIHsKLSAgICBtX2Rl
Y29kZXIgPSAwOworICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgbV9yZWNlaXZlZERhdGEg
PSBmYWxzZTsKICAgICBpZiAoIW1fZW5jb2RpbmdXYXNDaG9zZW5CeVVzZXIpCiAgICAgICAgIG1f
ZW5jb2RpbmcgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA5ZDVlN2QwLi4x
ZjFmNDY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzZXR1cEZvclJlcGxhY2UoKQogewogICAgIHNldFN0YXRlKEZyYW1lU3Rh
dGVQcm92aXNpb25hbCk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyID0gbV9kb2N1
bWVudExvYWRlcjsKLSAgICBtX2RvY3VtZW50TG9hZGVyID0gMDsKKyAgICBtX2RvY3VtZW50TG9h
ZGVyID0gbnVsbHB0cjsKICAgICBkZXRhY2hDaGlsZHJlbigpOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5jcHAKaW5kZXggZmY3MzNhOS4uYWU2MmYzOCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcApAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCiAgICAgICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJy
ZW50SXRlbTsKICAgICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKICAgICAgICAgbV9j
dXJyZW50SXRlbSA9IG1fcHJvdmlzaW9uYWxJdGVtOwotICAgICAgICBtX3Byb3Zpc2lvbmFsSXRl
bSA9IDA7CisgICAgICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcAppbmRleCA0ZWMyYzg0Li5kNWIyNmEzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2FsbGJhY2suY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgUG9saWN5Q2FsbGJh
Y2s6OnNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiBmCiB2b2lkIFBvbGljeUNhbGxiYWNrOjpzZXQoQ29udGVudFBvbGljeURlY2lzaW9uRnVu
Y3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQogewogICAgIG1fcmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCgpOwotICAgIG1fZm9ybVN0YXRlID0gMDsKKyAgICBtX2Zvcm1TdGF0ZSA9IG51
bGxwdHI7CiAgICAgbV9mcmFtZU5hbWUgPSBTdHJpbmcoKTsKIAogICAgIG1fbmF2aWdhdGlvbkZ1
bmN0aW9uID0gMDsKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFBvbGljeUNhbGxiYWNrOjpjYWxs
KFBvbGljeUFjdGlvbiBhY3Rpb24pCiB2b2lkIFBvbGljeUNhbGxiYWNrOjpjbGVhclJlcXVlc3Qo
KQogewogICAgIG1fcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwotICAgIG1fZm9ybVN0YXRl
ID0gMDsKKyAgICBtX2Zvcm1TdGF0ZSA9IG51bGxwdHI7CiAgICAgbV9mcmFtZU5hbWUgPSBTdHJp
bmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggY2QxNTQzMy4uMDZl
NDNjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorKysg
Yi9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgUHJvZ3Jlc3NUcmFja2VyOjpyZXNldCgpCiAgICAgbV9sYXN0Tm90aWZpZWRQcm9ncmVzc1Rp
bWUgPSAwOwogICAgIG1fZmluYWxQcm9ncmVzc0NoYW5nZWRTZW50ID0gZmFsc2U7CiAgICAgbV9u
dW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMgPSAwOwotICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0Zy
YW1lID0gMDsKKyAgICBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVzc1N0YXJ0ZWQoRnJhbWUqIGZyYW1lKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM5Mjg4YmQuLjY5YzZmNjEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDggKzg3LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
cmVsZWFzZVJlc291cmNlcygpCiAgICAgLy8gaGFzIGJlZW4gZGVhbGxvY2F0ZWQgYW5kIGFsc28g
dG8gYXZvaWQgcmVlbnRlcmluZyB0aGlzIG1ldGhvZC4KICAgICBSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3Rvcih0aGlzKTsKIAotICAgIG1fZnJhbWUgPSAwOwotICAgIG1fZG9jdW1lbnRM
b2FkZXIgPSAwOworICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIG1fZG9jdW1lbnRMb2FkZXIg
PSBudWxscHRyOwogICAgIAogICAgIC8vIFdlIG5lZWQgdG8gc2V0IHJlYWNoZWRUZXJtaW5hbFN0
YXRlIHRvIHRydWUgYmVmb3JlIHdlIHJlbGVhc2UKICAgICAvLyB0aGUgcmVzb3VyY2VzIHRvIHBy
ZXZlbnQgYSBkb3VibGUgZGVhbGxvYyBvZiBXZWJWaWV3IDxyZGFyOi8vcHJvYmxlbS80MzcyNjI4
PgpAQCAtMTAzLDEwICsxMDMsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291
cmNlcygpCiAgICAgICAgIC8vIHVzIGJhY2sgYWZ0ZXIgd2UgcmVsZWFzZSBpdCwgdW5sZXNzIGl0
IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHNvbWVvbmUgZWxzZS4KICAgICAgICAgaWYgKG1faGFuZGxl
LT5jbGllbnQoKSA9PSB0aGlzKQogICAgICAgICAgICAgbV9oYW5kbGUtPnNldENsaWVudCgwKTsK
LSAgICAgICAgbV9oYW5kbGUgPSAwOworICAgICAgICBtX2hhbmRsZSA9IG51bGxwdHI7CiAgICAg
fQogCi0gICAgbV9yZXNvdXJjZURhdGEgPSAwOworICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0
cjsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0x
ODYsNyArMTg2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0U2hvdWxkQnVmZmVyRGF0YShi
b29sIHNob3VsZEJ1ZmZlckRhdGEpCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJl
ZCBkYXRhCiAgICAgaWYgKCFtX3Nob3VsZEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhID0gMDsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOwogfQogICAgIAogCkBA
IC0zNTUsNyArMzU1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogICAgIG1fZG9jdW1lbnRMb2FkZXItPmNhbmNlbFBlbmRpbmdT
dWJzdGl0dXRlTG9hZCh0aGlzKTsKICAgICBpZiAobV9oYW5kbGUpIHsKICAgICAgICAgbV9oYW5k
bGUtPmNhbmNlbCgpOwotICAgICAgICBtX2hhbmRsZSA9IDA7CisgICAgICAgIG1faGFuZGxlID0g
bnVsbHB0cjsKICAgICB9CiAgICAgaWYgKG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyAmJiBt
X2lkZW50aWZpZXIgJiYgIW1fY2FsbGVkRGlkRmluaXNoTG9hZCkKICAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS0+ZGlkRmFpbFRvTG9hZCh0aGlzLCBlcnJvcik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTk5ZTBlNi4uOGE5YThjOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyh0aGlzKTsKICAgICAK
LSAgICBtX2hhbmRsZSA9IDA7CisgICAgbV9oYW5kbGUgPSBudWxscHRyOwogCiAgICAgaWYgKGNh
bmNlbGxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBTdWJy
ZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBp
ZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsKHRoaXMsIGVycm9yKTsKICAg
ICAKLSAgICBtX2hhbmRsZSA9IDA7CisgICAgbV9oYW5kbGUgPSBudWxscHRyOwogICAgIAogICAg
IGlmIChjYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA0ZDE4YzI4Li43ZjEzZTQ1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNl
bChTY3JpcHRFeGVjdXRpb25DCiAgICAgaWYgKCF0aGlzUHRyLT5tX21haW5UaHJlYWRMb2FkZXIp
CiAgICAgICAgIHJldHVybjsKICAgICB0aGlzUHRyLT5tX21haW5UaHJlYWRMb2FkZXItPmNhbmNl
bCgpOwotICAgIHRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlciA9IDA7CisgICAgdGhpc1B0ci0+
bV9tYWluVGhyZWFkTG9hZGVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNjQ1NGI5MC4uNmI3ZDFh
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0
b3BMb2FkaW5nKCkKIAogICAgICAgICBtX21hbmlmZXN0SGFuZGxlLT5zZXRDbGllbnQoMCk7CiAg
ICAgICAgIG1fbWFuaWZlc3RIYW5kbGUtPmNhbmNlbCgpOwotICAgICAgICBtX21hbmlmZXN0SGFu
ZGxlID0gMDsKKyAgICAgICAgbV9tYW5pZmVzdEhhbmRsZSA9IG51bGxwdHI7CiAgICAgfQogICAg
IAogICAgIGlmIChtX2N1cnJlbnRIYW5kbGUpIHsKQEAgLTMzOCwxMCArMzM4LDEwIEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGluZygpCiAKICAgICAgICAgbV9jdXJyZW50
SGFuZGxlLT5zZXRDbGllbnQoMCk7CiAgICAgICAgIG1fY3VycmVudEhhbmRsZS0+Y2FuY2VsKCk7
Ci0gICAgICAgIG1fY3VycmVudEhhbmRsZSA9IDA7CisgICAgICAgIG1fY3VycmVudEhhbmRsZSA9
IG51bGxwdHI7CiAgICAgfSAgICAKICAgICAKLSAgICBtX2NhY2hlQmVpbmdVcGRhdGVkID0gMDsK
KyAgICBtX2NhY2hlQmVpbmdVcGRhdGVkID0gbnVsbHB0cjsKICAgICBtX3BlbmRpbmdFbnRyaWVz
LmNsZWFyKCk7CiB9ICAgIAogCkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBSZXMKICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmFkZFJlc291cmNlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgbmV3ZXN0Q2FjaGVkUmVzb3VyY2UtPnJl
c3BvbnNlKCksIHR5cGUsIG5ld2VzdENhY2hlZFJlc291cmNlLT5kYXRhKCkpKTsKICAgICAgICAg
ICAgIG1fcGVuZGluZ0VudHJpZXMucmVtb3ZlKG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkudXJsKCkpOwogICAgICAgICAgICAgbV9jdXJyZW50SGFuZGxlLT5jYW5jZWwoKTsKLSAgICAg
ICAgICAgIG1fY3VycmVudEhhbmRsZSA9IDA7CisgICAgICAgICAgICBtX2N1cnJlbnRIYW5kbGUg
PSBudWxscHRyOwogICAgICAgICAgICAgLy8gTG9hZCB0aGUgbmV4dCByZXNvdXJjZSwgaWYgYW55
LgogICAgICAgICAgICAgc3RhcnRMb2FkaW5nRW50cnkoKTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlcwogICAgICAgICB9IGVs
c2UgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDA0IHx8IHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgPT0gNDEwKSB7CiAgICAgICAgICAgICAvLyBTa2lwIHRoaXMgcmVzb3VyY2Uu
IEl0IGlzIGRyb3BwZWQgZnJvbSB0aGUgY2FjaGUuCiAgICAgICAgICAgICBtX2N1cnJlbnRIYW5k
bGUtPmNhbmNlbCgpOwotICAgICAgICAgICAgbV9jdXJyZW50SGFuZGxlID0gMDsKKyAgICAgICAg
ICAgIG1fY3VycmVudEhhbmRsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX3BlbmRpbmdFbnRy
aWVzLnJlbW92ZSh1cmwpOwogICAgICAgICAgICAgLy8gTG9hZCB0aGUgbmV4dCByZXNvdXJjZSwg
aWYgYW55LgogICAgICAgICAgICAgc3RhcnRMb2FkaW5nRW50cnkoKTsKQEAgLTU4MSw3ICs1ODEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlcwogICAgICAgICAgICAgbV9jYWNoZUJlaW5nVXBk
YXRlZC0+YWRkUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUodXJsLCBu
ZXdlc3RDYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSwgdHlwZSwgbmV3ZXN0Q2FjaGVkUmVzb3Vy
Y2UtPmRhdGEoKSkpOwogICAgICAgICAgICAgbV9wZW5kaW5nRW50cmllcy5yZW1vdmUobV9jdXJy
ZW50SGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRI
YW5kbGUtPmNhbmNlbCgpOwotICAgICAgICAgICAgbV9jdXJyZW50SGFuZGxlID0gMDsKKyAgICAg
ICAgICAgIG1fY3VycmVudEhhbmRsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAvLyBMb2FkIHRo
ZSBuZXh0IHJlc291cmNlLCBpZiBhbnkuCiAgICAgICAgICAgICBzdGFydExvYWRpbmdFbnRyeSgp
OwogICAgICAgICB9CkBAIC02MzYsNyArNjM2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZpbmkK
ICAgICAvLyBDaGVjayBlYWNoIHJlc291cmNlLCBhcyBpdCBsb2FkcywgdG8gc2VlIGlmIGl0IHdv
dWxkIGZpdCBpbiBvdXIKICAgICAvLyBpZGVhIG9mIHRoZSBhdmFpbGFibGUgcXVvdGEgc3BhY2Uu
CiAgICAgaWYgKG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhIDwgbV9sb2FkZWRTaXplKSB7Ci0gICAg
ICAgIG1fY3VycmVudFJlc291cmNlID0gMDsKKyAgICAgICAgbV9jdXJyZW50UmVzb3VyY2UgPSBu
dWxscHRyOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3Vi
bGUgZmluaQogICAgIEFTU0VSVChtX2NhY2hlQmVpbmdVcGRhdGVkKTsKIAogICAgIG1fY2FjaGVC
ZWluZ1VwZGF0ZWQtPmFkZFJlc291cmNlKG1fY3VycmVudFJlc291cmNlLnJlbGVhc2UoKSk7Ci0g
ICAgbV9jdXJyZW50SGFuZGxlID0gMDsKKyAgICBtX2N1cnJlbnRIYW5kbGUgPSBudWxscHRyOwog
ICAgIAogICAgIC8vIExvYWQgdGhlIG5leHQgcmVzb3VyY2UsIGlmIGFueS4KICAgICBzdGFydExv
YWRpbmdFbnRyeSgpOwpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlRXJyb3Im
CiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIEFTU0VSVCgh
bV9jdXJyZW50UmVzb3VyY2UgfHwgIW1fcGVuZGluZ0VudHJpZXMuY29udGFpbnModXJsKSk7Ci0g
ICAgbV9jdXJyZW50UmVzb3VyY2UgPSAwOworICAgIG1fY3VycmVudFJlc291cmNlID0gbnVsbHB0
cjsKICAgICBtX3BlbmRpbmdFbnRyaWVzLnJlbW92ZSh1cmwpOwogCiAgICAgaWYgKCh0eXBlICYg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNpdCkgfHwgKHR5cGUgJiBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKSkgewpAQCAtNzMwLDcgKzczMCw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9tYW5pZmVzdEhhbmRsZSA9IDA7CisgICAgbV9tYW5pZmVz
dEhhbmRsZSA9IG51bGxwdHI7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgbWFuaWZlc3Qgd2FzIG5v
dCBtb2RpZmllZC4KICAgICBpZiAoaXNVcGdyYWRlQXR0ZW1wdCkgewpAQCAtNzQxLDcgKzc0MSw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3Qo
KQogICAgICAgICAgICAgKG5ld2VzdE1hbmlmZXN0LT5kYXRhKCktPnNpemUoKSA9PSBtX21hbmlm
ZXN0UmVzb3VyY2UtPmRhdGEoKS0+c2l6ZSgpICYmICFtZW1jbXAobmV3ZXN0TWFuaWZlc3QtPmRh
dGEoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpLCBuZXdlc3RN
YW5pZmVzdC0+ZGF0YSgpLT5zaXplKCkpKSkgewogCiAgICAgICAgICAgICBtX2NvbXBsZXRpb25U
eXBlID0gTm9VcGRhdGU7Ci0gICAgICAgICAgICBtX21hbmlmZXN0UmVzb3VyY2UgPSAwOworICAg
ICAgICAgICAgbV9tYW5pZmVzdFJlc291cmNlID0gbnVsbHB0cjsKICAgICAgICAgICAgIGRlbGl2
ZXJEZWxheWVkTWFpblJlc291cmNlcygpOwogCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MTUs
NyArODE1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNoT3JpZ2luUXVv
dGEoUGFzc1JlZlB0cjxGcmFtZT4gZnJhbWUpCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
Y2FjaGVVcGRhdGVGYWlsZWQoKQogewogICAgIHN0b3BMb2FkaW5nKCk7Ci0gICAgbV9tYW5pZmVz
dFJlc291cmNlID0gMDsKKyAgICBtX21hbmlmZXN0UmVzb3VyY2UgPSBudWxscHRyOwogCiAgICAg
Ly8gV2FpdCBmb3IgbWFzdGVyIHJlc291cmNlIGxvYWRzIHRvIGZpbmlzaC4KICAgICBtX2NvbXBs
ZXRpb25UeXBlID0gRmFpbHVyZTsKQEAgLTg0Miw3ICs4NDIsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6bWFuaWZlc3ROb3RGb3VuZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIAogICAg
IEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7Ci0gICAgbV9tYW5pZmVzdFJlc291
cmNlID0gMDsKKyAgICBtX21hbmlmZXN0UmVzb3VyY2UgPSBudWxscHRyOwogCiAgICAgd2hpbGUg
KCFtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEhh
c2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdNYXN0ZXJSZXNv
dXJjZUxvYWRlcnMuYmVnaW4oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRl
eCBlNTQzYTE0Li5hZGY4Y2JkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBA
IC0yMjUsNyArMjI1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0
IEludFJlY3QqIGNoYW5nZVJlY3QpCiB2b2lkIENhY2hlZEltYWdlOjpjbGVhcigpCiB7CiAgICAg
ZGVzdHJveURlY29kZWREYXRhKCk7Ci0gICAgbV9pbWFnZSA9IDA7CisgICAgbV9pbWFnZSA9IG51
bGxwdHI7CiAgICAgc2V0RW5jb2RlZFNpemUoMCk7CiB9CiAKQEAgLTMyNyw3ICszMjcsNyBAQCB2
b2lkIENhY2hlZEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoKQogICAgIGlmIChpc1NhZmVUb01h
a2VQdXJnZWFibGUoKSAmJiBjYW5EZWxldGVJbWFnZSAmJiAhaXNMb2FkaW5nKCkpIHsKICAgICAg
ICAgLy8gSW1hZ2UgcmVmcyB0aGUgZGF0YSBidWZmZXIgc28gd2Ugc2hvdWxkIG5vdCBtYWtlIGl0
IHB1cmdlYWJsZSB3aGlsZSB0aGUgaW1hZ2UgaXMgYWxpdmUuIAogICAgICAgICAvLyBJbnZva2lu
ZyBhZGRDbGllbnQoKSB3aWxsIHJlY29uc3RydWN0IHRoZSBpbWFnZSBvYmplY3QuCi0gICAgICAg
IG1faW1hZ2UgPSAwOworICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgc2V0RGVj
b2RlZFNpemUoMCk7CiAgICAgICAgIGlmICghTWVtb3J5Q2FjaGU6OnNob3VsZE1ha2VSZXNvdXJj
ZVB1cmdlYWJsZU9uRXZpY3Rpb24oKSkKICAgICAgICAgICAgIG1ha2VQdXJnZWFibGUodHJ1ZSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIGIvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCAyNDU2MmQwLi4zYWM5MDdiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEljb25M
b2FkZXI6OmZpbmlzaExvYWRpbmcoY29uc3QgS1VSTCYgaWNvblVSTCwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdAogCiB2b2lkIEljb25Mb2FkZXI6OmNsZWFyTG9hZGluZ1N0YXRlKCkKIHsK
LSAgICBtX3Jlc291cmNlTG9hZGVyID0gMDsKKyAgICBtX3Jlc291cmNlTG9hZGVyID0gbnVsbHB0
cjsKICAgICBtX2xvYWRJc0luUHJvZ3Jlc3MgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA0Y2IyZjg1Li42MDk0NDFmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTm90aWZp
Y2F0aW9uOjpzdGFydExvYWRpbmcoKQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6c3RvcExvYWRpbmco
KQogewotICAgIG1faWNvbkRhdGEgPSAwOworICAgIG1faWNvbkRhdGEgPSBudWxscHRyOwogICAg
IFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0KG1fbG9hZGVyKTsKICAgICBtX2xvYWRl
ci0+Y2FuY2VsKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmggYi9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggZjE0
YTMwMi4uYTgwNGIzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5oCisrKyBiL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtOTgs
NyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3RvcExvYWRpbmco
KTsKIAogICAgICAgICBTaGFyZWRCdWZmZXIqIGljb25EYXRhKCkgeyByZXR1cm4gbV9pY29uRGF0
YS5nZXQoKTsgfQotICAgICAgICB2b2lkIHJlbGVhc2VJY29uRGF0YSgpIHsgbV9pY29uRGF0YSA9
IDA7IH0KKyAgICAgICAgdm9pZCByZWxlYXNlSWNvbkRhdGEoKSB7IG1faWNvbkRhdGEgPSBudWxs
cHRyOyB9CiAKICAgICAgICAgLy8gRGVwcmVjYXRlZC4gVXNlIGZ1bmN0aW9ucyBmcm9tIE5vdGlm
aWNhdGlvbkNlbnRlci4KICAgICAgICAgdm9pZCBkZXRhY2hQcmVzZW50ZXIoKSB7IH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNw
cAppbmRleCAyMTk2NDdkLi5mMWJhY2E5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEZy
YW1lKiBDb25zb2xlOjpmcmFtZSgpIGNvbnN0CiB2b2lkIENvbnNvbGU6OmRpc2Nvbm5lY3RGcmFt
ZSgpCiB7CiAgICAgaWYgKG1fbWVtb3J5KQotICAgICAgICBtX21lbW9yeSA9IDA7CisgICAgICAg
IG1fbWVtb3J5ID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA2NTM5OWRlLi5iMGVlNjM2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y2xlYXJDb250ZXh0TWVudSgpCiAgICAgbV9jb250ZXh0TWVudS5z
ZXQoMCk7CiAgICAgaWYgKG1fbWVudVByb3ZpZGVyKQogICAgICAgICBtX21lbnVQcm92aWRlci0+
Y29udGV4dE1lbnVDbGVhcmVkKCk7Ci0gICAgbV9tZW51UHJvdmlkZXIgPSAwOworICAgIG1fbWVu
dVByb3ZpZGVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6Omhh
bmRsZUNvbnRleHRNZW51RXZlbnQoRXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBlNjI5
NjBmLi5kZDRmMzliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDE5LDgyICs0MTksODIgQEAgdm9pZCBE
T01XaW5kb3c6OmNsZWFyKCkKIHsKICAgICBpZiAobV9zY3JlZW4pCiAgICAgICAgIG1fc2NyZWVu
LT5kaXNjb25uZWN0RnJhbWUoKTsKLSAgICBtX3NjcmVlbiA9IDA7CisgICAgbV9zY3JlZW4gPSBu
dWxscHRyOwogCiAgICAgaWYgKG1fc2VsZWN0aW9uKQogICAgICAgICBtX3NlbGVjdGlvbi0+ZGlz
Y29ubmVjdEZyYW1lKCk7Ci0gICAgbV9zZWxlY3Rpb24gPSAwOworICAgIG1fc2VsZWN0aW9uID0g
bnVsbHB0cjsKIAogICAgIGlmIChtX2hpc3RvcnkpCiAgICAgICAgIG1faGlzdG9yeS0+ZGlzY29u
bmVjdEZyYW1lKCk7Ci0gICAgbV9oaXN0b3J5ID0gMDsKKyAgICBtX2hpc3RvcnkgPSBudWxscHRy
OwogCiAgICAgaWYgKG1fbG9jYXRpb25iYXIpCiAgICAgICAgIG1fbG9jYXRpb25iYXItPmRpc2Nv
bm5lY3RGcmFtZSgpOwotICAgIG1fbG9jYXRpb25iYXIgPSAwOworICAgIG1fbG9jYXRpb25iYXIg
PSBudWxscHRyOwogCiAgICAgaWYgKG1fbWVudWJhcikKICAgICAgICAgbV9tZW51YmFyLT5kaXNj
b25uZWN0RnJhbWUoKTsKLSAgICBtX21lbnViYXIgPSAwOworICAgIG1fbWVudWJhciA9IG51bGxw
dHI7CiAKICAgICBpZiAobV9wZXJzb25hbGJhcikKICAgICAgICAgbV9wZXJzb25hbGJhci0+ZGlz
Y29ubmVjdEZyYW1lKCk7Ci0gICAgbV9wZXJzb25hbGJhciA9IDA7CisgICAgbV9wZXJzb25hbGJh
ciA9IG51bGxwdHI7CiAKICAgICBpZiAobV9zY3JvbGxiYXJzKQogICAgICAgICBtX3Njcm9sbGJh
cnMtPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIG1fc2Nyb2xsYmFycyA9IDA7CisgICAgbV9zY3Jv
bGxiYXJzID0gbnVsbHB0cjsKIAogICAgIGlmIChtX3N0YXR1c2JhcikKICAgICAgICAgbV9zdGF0
dXNiYXItPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIG1fc3RhdHVzYmFyID0gMDsKKyAgICBtX3N0
YXR1c2JhciA9IG51bGxwdHI7CiAKICAgICBpZiAobV90b29sYmFyKQogICAgICAgICBtX3Rvb2xi
YXItPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIG1fdG9vbGJhciA9IDA7CisgICAgbV90b29sYmFy
ID0gbnVsbHB0cjsKIAogICAgIGlmIChtX2NvbnNvbGUpCiAgICAgICAgIG1fY29uc29sZS0+ZGlz
Y29ubmVjdEZyYW1lKCk7Ci0gICAgbV9jb25zb2xlID0gMDsKKyAgICBtX2NvbnNvbGUgPSBudWxs
cHRyOwogCiAgICAgaWYgKG1fbmF2aWdhdG9yKQogICAgICAgICBtX25hdmlnYXRvci0+ZGlzY29u
bmVjdEZyYW1lKCk7Ci0gICAgbV9uYXZpZ2F0b3IgPSAwOworICAgIG1fbmF2aWdhdG9yID0gbnVs
bHB0cjsKIAogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIGlmIChtX3BlcmZvcm1hbmNlKQog
ICAgICAgICBtX3BlcmZvcm1hbmNlLT5kaXNjb25uZWN0RnJhbWUoKTsKLSAgICBtX3BlcmZvcm1h
bmNlID0gMDsKKyAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICNlbmRpZgogCiAgICAgaWYg
KG1fbG9jYXRpb24pCiAgICAgICAgIG1fbG9jYXRpb24tPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAg
IG1fbG9jYXRpb24gPSAwOworICAgIG1fbG9jYXRpb24gPSBudWxscHRyOwogCiAgICAgaWYgKG1f
bWVkaWEpCiAgICAgICAgIG1fbWVkaWEtPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIG1fbWVkaWEg
PSAwOworICAgIG1fbWVkaWEgPSBudWxscHRyOwogICAgIAogI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKICAgICBpZiAobV9zZXNzaW9uU3RvcmFnZSkKICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZS0+
ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgbV9zZXNzaW9uU3RvcmFnZSA9IDA7CisgICAgbV9zZXNz
aW9uU3RvcmFnZSA9IG51bGxwdHI7CiAKICAgICBpZiAobV9sb2NhbFN0b3JhZ2UpCiAgICAgICAg
IG1fbG9jYWxTdG9yYWdlLT5kaXNjb25uZWN0RnJhbWUoKTsKLSAgICBtX2xvY2FsU3RvcmFnZSA9
IDA7CisgICAgbV9sb2NhbFN0b3JhZ2UgPSBudWxscHRyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIGlmIChtX2FwcGxpY2F0aW9uQ2FjaGUpCiAg
ICAgICAgIG1fYXBwbGljYXRpb25DYWNoZS0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgbV9hcHBs
aWNhdGlvbkNhY2hlID0gMDsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGUgPSBudWxscHRyOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBpZiAobV9ub3RpZmljYXRpb25z
KQogICAgICAgICBtX25vdGlmaWNhdGlvbnMtPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgIG1fbm90
aWZpY2F0aW9ucyA9IDA7CisgICAgbV9ub3RpZmljYXRpb25zID0gbnVsbHB0cjsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC02OTUsNyArNjk1LDcgQEAgdm9pZCBE
T01XaW5kb3c6OnBhZ2VEZXN0cm95ZWQoKQogICAgIC8vIGJlZm9yZSB0aGUgZnJhbWUgaXMgZGV0
YWNoZWQuCiAgICAgaWYgKG1fbm90aWZpY2F0aW9ucykKICAgICAgICAgbV9ub3RpZmljYXRpb25z
LT5kaXNjb25uZWN0RnJhbWUoKTsKLSAgICBtX25vdGlmaWNhdGlvbnMgPSAwOworICAgIG1fbm90
aWZpY2F0aW9ucyA9IG51bGxwdHI7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
aW5kZXggM2IwZGQzMS4uMjk2NWMzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xNTQs
NyArMTU0LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6Y2FuY2VsRHJhZygpCiAKIHZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmRyYWdFbmRlZCgpCiB7Ci0gICAgbV9kcmFnSW5pdGlhdG9yID0gMDsKKyAg
ICBtX2RyYWdJbml0aWF0b3IgPSBudWxscHRyOwogICAgIG1fZGlkSW5pdGlhdGVEcmFnID0gZmFs
c2U7CiAgICAgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPmNsZWFyKCk7CiB9CkBAIC0x
OTksMTYgKzE5OSwxNiBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZyhEcmFnRGF0
YSogZHJhZ0RhdGEpCiAgICAgICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wZXJm
b3JtRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIGNsaXBib2FyZC5nZXQo
KSk7CiAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmROdW1i
KTsgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKICAgICAgICAg
fQotICAgICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IDA7CisgICAgICAgIG1fZG9jdW1lbnRV
bmRlck1vdXNlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAg
aWYgKChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiAmIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQp
ICYmIGNvbmNsdWRlRWRpdERyYWcoZHJhZ0RhdGEpKSB7Ci0gICAgICAgIG1fZG9jdW1lbnRVbmRl
ck1vdXNlID0gMDsKKyAgICAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IDA7
CisgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBudWxscHRyOwogCiAgICAgaWYgKG9wZXJhdGlv
bkZvckxvYWQoZHJhZ0RhdGEpID09IERyYWdPcGVyYXRpb25Ob25lKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDI4MTQ5OGEuLjdkZGI5M2UgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC0yMTYsMjggKzIxNiwyOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xl
YXIoKQogICAgIG1faG92ZXJUaW1lci5zdG9wKCk7CiAgICAgbV9mYWtlTW91c2VNb3ZlRXZlbnRU
aW1lci5zdG9wKCk7CiAgICAgbV9yZXNpemVMYXllciA9IDA7Ci0gICAgbV9ub2RlVW5kZXJNb3Vz
ZSA9IDA7Ci0gICAgbV9sYXN0Tm9kZVVuZGVyTW91c2UgPSAwOworICAgIG1fbm9kZVVuZGVyTW91
c2UgPSBudWxscHRyOworICAgIG1fbGFzdE5vZGVVbmRlck1vdXNlID0gbnVsbHB0cjsKICNpZiBF
TkFCTEUoU1ZHKQotICAgIG1faW5zdGFuY2VVbmRlck1vdXNlID0gMDsKLSAgICBtX2xhc3RJbnN0
YW5jZVVuZGVyTW91c2UgPSAwOworICAgIG1faW5zdGFuY2VVbmRlck1vdXNlID0gbnVsbHB0cjsK
KyAgICBtX2xhc3RJbnN0YW5jZVVuZGVyTW91c2UgPSBudWxscHRyOwogI2VuZGlmCi0gICAgbV9s
YXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZSA9IDA7Ci0gICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJN
b3VzZSA9IDA7CisgICAgbV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZSA9IG51bGxwdHI7Cisg
ICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgbV9jbGlja0NvdW50
ID0gMDsKLSAgICBtX2NsaWNrTm9kZSA9IDA7Ci0gICAgbV9mcmFtZVNldEJlaW5nUmVzaXplZCA9
IDA7CisgICAgbV9jbGlja05vZGUgPSBudWxscHRyOworICAgIG1fZnJhbWVTZXRCZWluZ1Jlc2l6
ZWQgPSBudWxscHRyOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgbV9kcmFnVGFyZ2V0
ID0gMDsKKyAgICBtX2RyYWdUYXJnZXQgPSBudWxscHRyOwogICAgIG1fc2hvdWxkT25seUZpcmVE
cmFnT3ZlckV2ZW50ID0gZmFsc2U7CiAjZW5kaWYKICAgICBtX2N1cnJlbnRNb3VzZVBvc2l0aW9u
ID0gSW50UG9pbnQoKTsKLSAgICBtX21vdXNlUHJlc3NOb2RlID0gMDsKKyAgICBtX21vdXNlUHJl
c3NOb2RlID0gbnVsbHB0cjsKICAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNlOwogICAgIG1fY2Fw
dHVyZXNEcmFnZ2luZyA9IGZhbHNlOwotICAgIG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlID0g
MDsKLSAgICBtX2xhdGNoZWRXaGVlbEV2ZW50Tm9kZSA9IDA7Ci0gICAgbV9wcmV2aW91c1doZWVs
U2Nyb2xsZWROb2RlID0gMDsKKyAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSA9IG51bGxw
dHI7CisgICAgbV9sYXRjaGVkV2hlZWxFdmVudE5vZGUgPSBudWxscHRyOworICAgIG1fcHJldmlv
dXNXaGVlbFNjcm9sbGVkTm9kZSA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHMuY2xlYXIoKTsKICNlbmRpZgpAQCAt
NDEwLDcgKzQxMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQo
Y29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiB7CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICAvLyBSZXNldCBkcmFnIHN0YXRlLgotICAgIGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYyA9IDA7CisgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbnVsbHB0cjsKICNlbmRp
ZgogCiAgICAgY2FuY2VsRmFrZU1vdXNlTW92ZUV2ZW50KCk7CkBAIC0xMzY3LDcgKzEzNjcsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICAg
ICAgbWV2ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwg
ZG9jdW1lbnRQb2ludCwgbW91c2VFdmVudCk7CiAgICAgICAgIGlmICh3YXNMYXN0U2Nyb2xsQmFy
ICYmIG1ldi5zY3JvbGxiYXIoKSAhPSBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdldCgpKQot
ICAgICAgICAgICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IDA7CisgICAgICAgICAgICBt
X2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoc3dh
bGxvd0V2ZW50KSB7CkBAIC0xNDE5LDcgKzE0MTksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VEb3VibGVDbGlja0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VF
dgogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZl
bnQocmVxdWVzdCwgbW91c2VFdmVudCk7CiAgICAgRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVG
b3JIaXRUZXN0UmVzdWx0KG1ldik7CiAgICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2Fw
dHVyaW5nTW91c2VFdmVudHNOb2RlKQotICAgICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9k
ZSA9IDA7CisgICAgICAgIG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlID0gbnVsbHB0cjsKICAg
ICBpZiAoc3ViZnJhbWUgJiYgcGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJm
cmFtZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xNTcyLDcgKzE1NzIsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBtb3VzZUV2ZW50LCBIaQogdm9pZCBFdmVudEhhbmRsZXI6OmludmFsaWRhdGVDbGljaygp
CiB7CiAgICAgbV9jbGlja0NvdW50ID0gMDsKLSAgICBtX2NsaWNrTm9kZSA9IDA7CisgICAgbV9j
bGlja05vZGUgPSBudWxscHRyOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQpAQCAtMTYx
MSw3ICsxNjExLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZl
bnQpOwogICAgIEZyYW1lKiBzdWJmcmFtZSA9IG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlLmdl
dCgpID8gc3ViZnJhbWVGb3JUYXJnZXROb2RlKG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlLmdl
dCgpKSA6IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtZXYpOwogICAgIGlmIChtX2V2ZW50SGFu
ZGxlcldpbGxSZXNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSkKLSAgICAgICAgbV9jYXB0dXJp
bmdNb3VzZUV2ZW50c05vZGUgPSAwOworICAgICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9k
ZSA9IG51bGxwdHI7CiAgICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVJlbGVhc2VFdmVudFRv
U3ViZnJhbWUobWV2LCBzdWJmcmFtZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xNzYy
LDggKzE3NjIsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZAogCiB2b2lkIEV2ZW50SGFuZGxl
cjo6Y2xlYXJEcmFnU3RhdGUoKQogewotICAgIG1fZHJhZ1RhcmdldCA9IDA7Ci0gICAgbV9jYXB0
dXJpbmdNb3VzZUV2ZW50c05vZGUgPSAwOworICAgIG1fZHJhZ1RhcmdldCA9IG51bGxwdHI7Cisg
ICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUgPSBudWxscHRyOwogICAgIG1fc2hvdWxkT25s
eUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIG1fc2Vu
ZGluZ0V2ZW50VG9TdWJ2aWV3ID0gZmFsc2U7CkBAIC0xODU1LDEwICsxODU1LDEwIEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXROb2Rl
LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgLy8gRmlyZSBtb3VzZW91dC9tb3VzZW92ZXIgaWYgdGhl
IG1vdXNlIGhhcyBzaGlmdGVkIHRvIGEgZGlmZmVyZW50IG5vZGUuCiAgICAgaWYgKGZpcmVNb3Vz
ZU92ZXJPdXQpIHsKICAgICAgICAgaWYgKG1fbGFzdE5vZGVVbmRlck1vdXNlICYmIG1fbGFzdE5v
ZGVVbmRlck1vdXNlLT5kb2N1bWVudCgpICE9IG1fZnJhbWUtPmRvY3VtZW50KCkpIHsKLSAgICAg
ICAgICAgIG1fbGFzdE5vZGVVbmRlck1vdXNlID0gMDsKLSAgICAgICAgICAgIG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UgPSAwOworICAgICAgICAgICAgbV9sYXN0Tm9kZVVuZGVyTW91c2UgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IG51bGxwdHI7
CiAjaWYgRU5BQkxFKFNWRykKLSAgICAgICAgICAgIG1fbGFzdEluc3RhbmNlVW5kZXJNb3VzZSA9
IDA7CisgICAgICAgICAgICBtX2xhc3RJbnN0YW5jZVVuZGVyTW91c2UgPSBudWxscHRyOwogI2Vu
ZGlmCiAgICAgICAgIH0KIApAQCAtMTk4MCw5ICsxOTgwLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgICAgICBpc092ZXJX
aWRnZXQgPSBtX3dpZGdldElzTGF0Y2hlZDsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV9s
YXRjaGVkV2hlZWxFdmVudE5vZGUpCi0gICAgICAgICAgICBtX2xhdGNoZWRXaGVlbEV2ZW50Tm9k
ZSA9IDA7CisgICAgICAgICAgICBtX2xhdGNoZWRXaGVlbEV2ZW50Tm9kZSA9IG51bGxwdHI7CiAg
ICAgICAgIGlmIChtX3ByZXZpb3VzV2hlZWxTY3JvbGxlZE5vZGUpCi0gICAgICAgICAgICBtX3By
ZXZpb3VzV2hlZWxTY3JvbGxlZE5vZGUgPSAwOworICAgICAgICAgICAgbV9wcmV2aW91c1doZWVs
U2Nyb2xsZWROb2RlID0gbnVsbHB0cjsKIAogICAgICAgICBub2RlID0gcmVzdWx0LmlubmVyTm9k
ZSgpOwogICAgICAgICBpc092ZXJXaWRnZXQgPSByZXN1bHQuaXNPdmVyV2lkZ2V0KCk7CkBAIC0y
NTAxLDcgKzI1MDEsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdAogICAgICAgICBkaXNwYXRj
aERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVudCk7CiAgICAgfQog
ICAgIGZyZWVDbGlwYm9hcmQoKTsKLSAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSAwOworICAg
IGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IG51bGxwdHI7CiAgICAgLy8gSW4gY2FzZSB0aGUgZHJh
ZyB3YXMgZW5kZWQgZHVlIHRvIGFuIGVzY2FwZSBrZXkgcHJlc3Mgd2UgbmVlZCB0byBlbnN1cmUK
ICAgICAvLyB0aGF0IGNvbnNlY3V0aXZlIG1vdXNlbW92ZSBldmVudHMgZG9uJ3QgcmVpbml0aWF0
ZSB0aGUgZHJhZyBhbmQgZHJvcC4KICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNl
OwpAQCAtMjU0NSw3ICsyNTQ1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgICAgICAgICBkcmFn
U3RhdGUoKS5tX2RyYWdTcmMgPSBub2RlLT5yZW5kZXJlcigpLT5kcmFnZ2FibGVOb2RlKGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbW91c2VEb3duUG9zLngoKSwgbV9tb3VzZURvd25Qb3MueSgpLCBkcmFn
U3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjID0gMDsKKyAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
YyA9IG51bGxwdHI7CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
YykKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7IC8vIG5vIGVs
ZW1lbnQgaXMgZHJhZ2dhYmxlCkBAIC0yNTY1LDcgKzI1NjUsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkK
ICAgICAvLyBvciBlbHNlIHdlIGJhaWwgb24gdGhlIGRyYWdnaW5nIHN0dWZmIGFuZCBhbGxvdyBz
ZWxlY3Rpb24gdG8gb2NjdXIKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRy
YWdTdGF0ZSgpLm1fZHJhZ1NyY0lzSW1hZ2UgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSW5TZWxl
Y3Rpb24gJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3duVGltZXN0YW1w
IDwgVGV4dERyYWdEZWxheSkgewogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZh
bHNlOwotICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSAwOworICAgICAgICBkcmFnU3Rh
dGUoKS5tX2RyYWdTcmMgPSBudWxscHRyOwogICAgICAgICAvLyAuLi5idXQgaWYgdGhpcyB3YXMg
dGhlIGZpcnN0IGNsaWNrIGluIHRoZSB3aW5kb3csIHdlIGRvbid0IGV2ZW4gd2FudCB0byBzdGFy
dCBzZWxlY3Rpb24KICAgICAgICAgaWYgKGV2ZW50QWN0aXZhdGVkVmlldyhldmVudC5ldmVudCgp
KSkKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3QgPSBmYWxzZTsKQEAgLTI2
NDMsNyArMjY0Myw3IEBAIGNsZWFudXBEcmFnOgogICAgIGlmICghbV9tb3VzZURvd25NYXlTdGFy
dERyYWcpIHsKICAgICAgICAgLy8gc29tZXRoaW5nIGZhaWxlZCB0byBzdGFydCB0aGUgZHJhZywg
Y2xlYW51cAogICAgICAgICBmcmVlQ2xpcGJvYXJkKCk7Ci0gICAgICAgIGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYyA9IDA7CisgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IG51bGxwdHI7CiAg
ICAgfQogICAgIAogICAgIC8vIE5vIG1vcmUgZGVmYXVsdCBoYW5kbGluZyAobGlrZSBzZWxlY3Rp
b24pLCB3aGV0aGVyIHdlJ3JlIHBhc3QgdGhlIGh5c3RlcmVzaXMgYm91bmRzIG9yIG5vdApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
aW5kZXggODU1MjNjNi4uMTg1MzIxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC01OTAsNyArNTkwLDcgQEAgdm9pZCBG
cmFtZTo6Y2xlYXJET01XaW5kb3coKQogICAgICAgICBtX2xpdmVGb3JtZXJXaW5kb3dzLmFkZCht
X2RvbVdpbmRvdy5nZXQoKSk7CiAgICAgICAgIG1fZG9tV2luZG93LT5jbGVhcigpOwogICAgIH0K
LSAgICBtX2RvbVdpbmRvdyA9IDA7CisgICAgbV9kb21XaW5kb3cgPSBudWxscHRyOwogfQogCiBS
ZW5kZXJWaWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKaW5k
ZXggZjNmMzJlYy4uZjUzZDZmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2
b2lkIEZyYW1lVHJlZTo6cmVtb3ZlQ2hpbGQoRnJhbWUqIGNoaWxkKQogICAgIHN0ZDo6c3dhcChu
ZXdMb2NhdGlvbkZvclByZXZpb3VzLCBjaGlsZC0+dHJlZSgpLT5tX3ByZXZpb3VzU2libGluZyk7
CiAKICAgICBjaGlsZC0+dHJlZSgpLT5tX3ByZXZpb3VzU2libGluZyA9IDA7Ci0gICAgY2hpbGQt
PnRyZWUoKS0+bV9uZXh0U2libGluZyA9IDA7CisgICAgY2hpbGQtPnRyZWUoKS0+bV9uZXh0U2li
bGluZyA9IG51bGxwdHI7CiAKICAgICBtX2NoaWxkQ291bnQtLTsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggMjQ4NDg2MC4uYWMzOTkyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2
b2lkIEZyYW1lVmlldzo6cmVzZXQoKQogICAgIG1faXNQYWludGluZyA9IGZhbHNlOwogICAgIG1f
aXNWaXN1YWxseU5vbkVtcHR5ID0gZmFsc2U7CiAgICAgbV9maXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRDYWxsYmFja1BlbmRpbmcgPSB0cnVlOwotICAgIG1fbWFpbnRhaW5TY3JvbGxQb3NpdGlv
bkFuY2hvciA9IDA7CisgICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9uQW5jaG9yID0gbnVsbHB0
cjsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OmlzRnJhbWVWaWV3KCkgY29uc3QgCkBAIC0yMjUsNyAr
MjI1LDcgQEAgYm9vbCBGcmFtZVZpZXc6OmlzRnJhbWVWaWV3KCkgY29uc3QKIAogdm9pZCBGcmFt
ZVZpZXc6OmNsZWFyRnJhbWUoKQogewotICAgIG1fZnJhbWUgPSAwOworICAgIG1fZnJhbWUgPSBu
dWxscHRyOwogfQogCiB2b2lkIEZyYW1lVmlldzo6cmVzZXRTY3JvbGxiYXJzKCkKQEAgLTEyNTks
NyArMTI1OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgYm9vbCB3YXNJblByb2dyYW1tYXRpY1Njcm9sbCA9
IG1faW5Qcm9ncmFtbWF0aWNTY3JvbGw7CiAgICAgbV9pblByb2dyYW1tYXRpY1Njcm9sbCA9IHRy
dWU7Ci0gICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9uQW5jaG9yID0gMDsKKyAgICBtX21haW50
YWluU2Nyb2xsUG9zaXRpb25BbmNob3IgPSBudWxscHRyOwogICAgIFNjcm9sbFZpZXc6OnNldFNj
cm9sbFBvc2l0aW9uKHNjcm9sbFBvaW50KTsKICAgICBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsID0g
d2FzSW5Qcm9ncmFtbWF0aWNTY3JvbGw7CiB9CkBAIC0yMDc1LDcgKzIwNzUsNyBAQCB2b2lkIEZy
YW1lVmlldzo6c2V0V2FzU2Nyb2xsZWRCeVVzZXIoYm9vbCB3YXNTY3JvbGxlZEJ5VXNlcikKIHsK
ICAgICBpZiAobV9pblByb2dyYW1tYXRpY1Njcm9sbCkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
bWFpbnRhaW5TY3JvbGxQb3NpdGlvbkFuY2hvciA9IDA7CisgICAgbV9tYWludGFpblNjcm9sbFBv
c2l0aW9uQW5jaG9yID0gbnVsbHB0cjsKICAgICBtX3dhc1Njcm9sbGVkQnlVc2VyID0gd2FzU2Ny
b2xsZWRCeVVzZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
IGIvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggNmMyMmZiMS4uMDc3ODBjMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5jcHAKQEAgLTU2LDE1ICs1NiwxNSBAQCB2b2lkIE5hdmlnYXRvcjo6ZGlzY29ubmVj
dEZyYW1lKCkKIHsKICAgICBpZiAobV9wbHVnaW5zKSB7CiAgICAgICAgIG1fcGx1Z2lucy0+ZGlz
Y29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fcGx1Z2lucyA9IDA7CisgICAgICAgIG1fcGx1Z2lu
cyA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmIChtX21pbWVUeXBlcykgewogICAgICAgICBtX21p
bWVUeXBlcy0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgICAgIG1fbWltZVR5cGVzID0gMDsKKyAg
ICAgICAgbV9taW1lVHlwZXMgPSBudWxscHRyOwogICAgIH0KICAgICBpZiAobV9nZW9sb2NhdGlv
bikgewogICAgICAgICBtX2dlb2xvY2F0aW9uLT5kaXNjb25uZWN0RnJhbWUoKTsKLSAgICAgICAg
bV9nZW9sb2NhdGlvbiA9IDA7CisgICAgICAgIG1fZ2VvbG9jYXRpb24gPSBudWxscHRyOwogICAg
IH0KICAgICBtX2ZyYW1lID0gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA1NTJhMTA5Li5mN2YyZGZmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC00NDksNyArNDQ5LDcgQEAgdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhib29sIHJlbG9hZCkK
ICAgICAgICAgLy8gQ2xlYXIgb3V0IHRoZSBwYWdlJ3MgcGx1Zy1pbiBkYXRhLgogICAgICAgICBp
ZiAocGFnZS0+bV9wbHVnaW5EYXRhKSB7CiAgICAgICAgICAgICBwYWdlLT5tX3BsdWdpbkRhdGEt
PmRpc2Nvbm5lY3RQYWdlKCk7Ci0gICAgICAgICAgICBwYWdlLT5tX3BsdWdpbkRhdGEgPSAwOwor
ICAgICAgICAgICAgcGFnZS0+bV9wbHVnaW5EYXRhID0gbnVsbHB0cjsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghcmVsb2FkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
LmNwcCBiL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKaW5kZXggNGUxMzBlYS4uMWJlZGU1
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2UuY3BwCkBAIC01NCwxNCArNTQsMTQgQEAgRnJhbWUqIFBlcmZvcm1h
bmNlOjpmcmFtZSgpIGNvbnN0CiB2b2lkIFBlcmZvcm1hbmNlOjpkaXNjb25uZWN0RnJhbWUoKQog
ewogICAgIGlmIChtX21lbW9yeSkKLSAgICAgICAgbV9tZW1vcnkgPSAwOworICAgICAgICBtX21l
bW9yeSA9IG51bGxwdHI7CiAgICAgaWYgKG1fbmF2aWdhdGlvbikgewogICAgICAgICBtX25hdmln
YXRpb24tPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgICAgICBtX25hdmlnYXRpb24gPSAwOworICAg
ICAgICBtX25hdmlnYXRpb24gPSBudWxscHRyOwogICAgIH0KICAgICBpZiAobV90aW1pbmcpIHsK
ICAgICAgICAgbV90aW1pbmctPmRpc2Nvbm5lY3RGcmFtZSgpOwotICAgICAgICBtX3RpbWluZyA9
IDA7CisgICAgICAgIG1fdGltaW5nID0gbnVsbHB0cjsKICAgICB9CiAgICAgbV9mcmFtZSA9IDA7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmluZGV4IDkwZGQ1NjcuLjJlNjI0Y2QgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUNob29zZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEZpbGVDaG9vc2VyOjp+Rmls
ZUNob29zZXIoKQogdm9pZCBGaWxlQ2hvb3Nlcjo6Y2xlYXIoKQogewogICAgIG1fZmlsZW5hbWVz
LmNsZWFyKCk7Ci0gICAgbV9pY29uID0gMDsKKyAgICBtX2ljb24gPSBudWxscHRyOwogfQogCiB2
b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAppbmRleCA3ZDllNzkyLi5hNjNiYWZlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PnN0eWxlQ2hhbmdlZCgpOwogICAgIH0gZWxzZSBpZiAoIWhhc0JhciAmJiBtX2hvcml6b250YWxT
Y3JvbGxiYXIpIHsKICAgICAgICAgcmVtb3ZlQ2hpbGQobV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdl
dCgpKTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyID0gMDsKKyAgICAgICAgbV9ob3Jp
em9udGFsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICB9CiB9CiAKQEAgLTEwOCw3ICsxMDgsNyBA
QCB2b2lkIFNjcm9sbFZpZXc6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQog
ICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zdHlsZUNoYW5nZWQoKTsKICAgICB9IGVsc2Ug
aWYgKCFoYXNCYXIgJiYgbV92ZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICByZW1vdmVDaGls
ZChtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpKTsKLSAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJh
ciA9IDA7CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBudWxscHRyOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCAzYmZjNTM2Li4yNGU3Yzg3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUGx1Z2luU3RyZWFt
OjpzdG9wKCkKIAogICAgIGlmIChtX2xvYWRlcikgewogICAgICAgICBtX2xvYWRlci0+Y2FuY2Vs
KCk7Ci0gICAgICAgIG1fbG9hZGVyID0gMDsKKyAgICAgICAgbV9sb2FkZXIgPSBudWxscHRyOwog
ICAgIH0KIAogICAgIG1fY2xpZW50ID0gMDsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIFBsdWdp
blN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0oY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29u
c3QgQ1N0cmluZyYgcgogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fbG9hZGVy
ID0gMDsKKyAgICBtX2xvYWRlciA9IG51bGxwdHI7CiAKICAgICBkZXN0cm95U3RyZWFtKHJlc3Vs
dFN0cmluZy5pc051bGwoKSA/IE5QUkVTX05FVFdPUktfRVJSIDogTlBSRVNfRE9ORSk7CiB9CkBA
IC00NDQsNyArNDQ0LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRpZEZhaWwoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnIKIAogICAgIGRlc3Ryb3lT
dHJlYW0oTlBSRVNfTkVUV09SS19FUlIpOwogCi0gICAgbV9sb2FkZXIgPSAwOworICAgIG1fbG9h
ZGVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmco
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlcikKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2
b2lkIFBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciogbG9hZGVyKQogCiAgICAgZGVzdHJveVN0cmVhbShOUFJFU19ET05FKTsKIAotICAgIG1f
bG9hZGVyID0gMDsKKyAgICBtX2xvYWRlciA9IG51bGxwdHI7CiB9CiAKIGJvb2wgUGx1Z2luU3Ry
ZWFtOjp3YW50c0FsbFN0cmVhbXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDll
MTllM2UuLjA5Y2NjNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE5NCw3ICsxOTQsNyBA
QCB2b2lkIFBsdWdpblZpZXc6OmluaXQoKQogICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6
aW5pdCgpOiBJbml0aWFsaXppbmcgcGx1Zy1pbiAnJXMnIiwgbV9wbHVnaW4tPm5hbWUoKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIGlmICghbV9wbHVnaW4tPmxvYWQoKSkgewotICAgICAgICBtX3Bs
dWdpbiA9IDA7CisgICAgICAgIG1fcGx1Z2luID0gbnVsbHB0cjsKICAgICAgICAgbV9zdGF0dXMg
PSBQbHVnaW5TdGF0dXNDYW5Ob3RMb2FkUGx1Z2luOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDM2Mjk4MWMuLjFjMTc2YzMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE4MzcsNyArMTgzNyw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OmRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAK
ICAgICAgICAgc2Nyb2xsYmFyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIHNjcm9sbGJh
ci0+c2V0Q2xpZW50KDApOwotICAgICAgICBzY3JvbGxiYXIgPSAwOworICAgICAgICBzY3JvbGxi
YXIgPSBudWxscHRyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCBlZDdmOGVlLi4xODk5Y2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApA
QCAtNzE3LDcgKzcxNyw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6ZGVzdHJveVNjcm9sbGJhcigp
CiAgICAgCiAgICAgbV92QmFyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgbV92QmFyLT5zZXRD
bGllbnQoMCk7Ci0gICAgbV92QmFyID0gMDsKKyAgICBtX3ZCYXIgPSBudWxscHRyOwogfQogCiB2
b2lkIFJlbmRlckxpc3RCb3g6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xs
YmFyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDVhZDY2MWYuLjNmY2U0
ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAg
UmVuZGVyTWVudUxpc3Q6On5SZW5kZXJNZW51TGlzdCgpCiB7CiAgICAgaWYgKG1fcG9wdXApCiAg
ICAgICAgIG1fcG9wdXAtPmRpc2Nvbm5lY3RDbGllbnQoKTsKLSAgICBtX3BvcHVwID0gMDsKKyAg
ICBtX3BvcHVwID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5kZXJNZW51TGlzdDo6Y3JlYXRlSW5u
ZXJCbG9jaygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcAppbmRleCBjODE1YmUxLi4wZDUyYTY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTU4LDE4ICs1OCwxOCBA
QCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZShOb2RlKiBub2RlLCBib29sIHBsYWNlaAogICAgICwgbV9zZWFyY2hFdmVudFRpbWVyKHRoaXMs
ICZSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNlYXJjaEV2ZW50VGltZXJGaXJlZCkKICAg
ICAsIG1fc2VhcmNoUG9wdXAoMCkKIHsKLX0KK30JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCSAKIAog
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KCkKIHsKICAgICBpZiAobV9zZWFyY2hQb3B1cCkgewogICAgICAgICBtX3NlYXJjaFBvcHVwLT5w
b3B1cE1lbnUoKS0+ZGlzY29ubmVjdENsaWVudCgpOwotICAgICAgICBtX3NlYXJjaFBvcHVwID0g
MDsKKyAgICAgICAgbV9zZWFyY2hQb3B1cCA9IG51bGxwdHI7CiAgICAgfQogIAogICAgIGlmICht
X2lubmVyQmxvY2spIHsKICAgICAgICAgbV9pbm5lckJsb2NrLT5kZXRhY2goKTsKLSAgICAgICAg
bV9pbm5lckJsb2NrID0gMDsKKyAgICAgICAgbV9pbm5lckJsb2NrID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cAppbmRleCA2ZWE2MjBmLi5kNjFiMzQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAK
QEAgLTM4MSw3ICszODEsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6c2V0U2VsZWN0aW9uU3RhdGUo
U2VsZWN0aW9uU3RhdGUgc3RhdGUpCiAKIHZvaWQgUmVuZGVyV2lkZ2V0OjpjbGVhcldpZGdldCgp
CiB7Ci0gICAgbV93aWRnZXQgPSAwOworICAgIG1fd2lkZ2V0ID0gbnVsbHB0cjsKIH0KIAogUmVu
ZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6OmZpbmQoY29uc3QgV2lkZ2V0KiB3aWRnZXQpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggZmNjYTQ2NS4uZDdjY2U0YSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNjA0LDcgKzYwNCw3
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldEN1cnNvckxpc3QoUGFzc1JlZlB0cjxDdXJzb3JMaXN0
PiBvdGhlcikKIHZvaWQgUmVuZGVyU3R5bGU6OmNsZWFyQ3Vyc29yTGlzdCgpCiB7CiAgICAgaWYg
KHJhcmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRhKQotICAgICAgICByYXJlSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IDA7CisgICAgICAgIHJhcmVJbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5jdXJzb3JEYXRhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Y2xl
YXJDb250ZW50KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5j
cHAgYi9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IDNiNzkwZWUuLjQw
NTAyOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBA
IHZvaWQqIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAgICAgRGF0YWJhc2VUYXNr
U3luY2hyb25pemVyKiBjbGVhbnVwU3luYyA9IG1fY2xlYW51cFN5bmM7CiAKICAgICAvLyBDbGVh
ciB0aGUgc2VsZiByZWZwdHIsIHBvc3NpYmx5IHJlc3VsdGluZyBpbiBkZWxldGlvbgotICAgIG1f
c2VsZlJlZiA9IDA7CisgICAgbV9zZWxmUmVmID0gbnVsbHB0cjsKIAogICAgIGlmIChjbGVhbnVw
U3luYykgLy8gU29tZW9uZSB3YW50ZWQgdG8ga25vdyB3aGVuIHdlIHdlcmUgZG9uZSBjbGVhbmlu
ZyB1cC4KICAgICAgICAgY2xlYW51cFN5bmMtPnRhc2tDb21wbGV0ZWQoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3RvcmFnZS9TUUxTdGF0ZW1lbnQuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL1NRTFN0
YXRlbWVudC5jcHAKaW5kZXggMTllOWUzOC4uYWY0MTRmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVu
dC5jcHAKQEAgLTE3Niw4ICsxNzYsOCBAQCBib29sIFNRTFN0YXRlbWVudDo6cGVyZm9ybUNhbGxi
YWNrKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICAgICAgY2FsbGJhY2tFcnJvciA9
ICFtX3N0YXRlbWVudENhbGxiYWNrLT5oYW5kbGVFdmVudCh0cmFuc2FjdGlvbiwgbV9yZXN1bHRT
ZXQuZ2V0KCkpOwogCiAgICAgLy8gTm93IHJlbGVhc2Ugb3VyIGNhbGxiYWNrcywgdG8gYnJlYWsg
cmVmZXJlbmNlIGN5Y2xlcy4KLSAgICBtX3N0YXRlbWVudENhbGxiYWNrID0gMDsKLSAgICBtX3N0
YXRlbWVudEVycm9yQ2FsbGJhY2sgPSAwOworICAgIG1fc3RhdGVtZW50Q2FsbGJhY2sgPSBudWxs
cHRyOworICAgIG1fc3RhdGVtZW50RXJyb3JDYWxsYmFjayA9IG51bGxwdHI7CiAKICAgICByZXR1
cm4gY2FsbGJhY2tFcnJvcjsKIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFNRTFN0YXRlbWVu
dDo6c2V0RmFpbHVyZUR1ZVRvUXVvdGEoKQogdm9pZCBTUUxTdGF0ZW1lbnQ6OmNsZWFyRmFpbHVy
ZUR1ZVRvUXVvdGEoKQogewogICAgIGlmIChsYXN0RXhlY3V0aW9uRmFpbGVkRHVlVG9RdW90YSgp
KQotICAgICAgICBtX2Vycm9yID0gMDsKKyAgICAgICAgbV9lcnJvciA9IG51bGxwdHI7CiB9CiAK
IGJvb2wgU1FMU3RhdGVtZW50OjpsYXN0RXhlY3V0aW9uRmFpbGVkRHVlVG9RdW90YSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCBmZWFhNDZlLi5mMTdkYzYxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTE1OCw5ICsxNTgsOSBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZE9ySW50ZXJydXB0ZWREYXRhYmFzZSgpCiAg
ICAgbV9uZXh0U3RlcCA9IDA7CiAKICAgICAvLyBSZWxlYXNlIHRoZSB1bm5lZWRlZCBjYWxsYmFj
a3MsIHRvIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMuCi0gICAgbV9jYWxsYmFjayA9IDA7Ci0gICAg
bV9zdWNjZXNzQ2FsbGJhY2sgPSAwOwotICAgIG1fZXJyb3JDYWxsYmFjayA9IDA7CisgICAgbV9j
YWxsYmFjayA9IG51bGxwdHI7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSBudWxscHRyOworICAg
IG1fZXJyb3JDYWxsYmFjayA9IG51bGxwdHI7CiAKICAgICAvLyBUaGUgbmV4dCBzdGVwcyBzaG91
bGQgYmUgZXhlY3V0ZWQgb25seSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgogICAgIGlmIChj
dXJyZW50VGhyZWFkKCkgIT0gZGF0YWJhc2UoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5k
YXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQg
U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2FjdGlvbkNhbGxiYWNrKCkKICAgICAgICAgbV9l
eGVjdXRlU3FsQWxsb3dlZCA9IHRydWU7CiAgICAgICAgIHNob3VsZERlbGl2ZXJFcnJvckNhbGxi
YWNrID0gIW1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KHRoaXMpOwogICAgICAgICBtX2V4ZWN1dGVT
cWxBbGxvd2VkID0gZmFsc2U7Ci0gICAgICAgIG1fY2FsbGJhY2sgPSAwOworICAgICAgICBtX2Nh
bGxiYWNrID0gbnVsbHB0cjsKICAgICB9CiAKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwIDUgLSBJ
ZiB0aGUgdHJhbnNhY3Rpb24gY2FsbGJhY2sgd2FzIG51bGwgb3IgcmFpc2VkIGFuIGV4Y2VwdGlv
biwganVtcCB0byB0aGUgZXJyb3IgY2FsbGJhY2sKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uOjpydW5TdGF0ZW1lbnRzKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbjo6Z2V0
TmV4dFN0YXRlbWVudCgpCiB7Ci0gICAgbV9jdXJyZW50U3RhdGVtZW50ID0gMDsKKyAgICBtX2N1
cnJlbnRTdGF0ZW1lbnQgPSBudWxscHRyOwogCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3Rh
dGVtZW50TXV0ZXgpOwogICAgIGlmICghbV9zdGF0ZW1lbnRRdWV1ZS5pc0VtcHR5KCkpIHsKQEAg
LTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0
KCkKIAogICAgIC8vIElmIHRoZSBjb21taXQgZmFpbGVkLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBz
dGlsbCBiZSBtYXJrZWQgYXMgImluIHByb2dyZXNzIgogICAgIGlmIChtX3NxbGl0ZVRyYW5zYWN0
aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSAwOworICAg
ICAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IG51bGxwdHI7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25F
cnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgImZhaWxlZCB0
byBjb21taXQgdGhlIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJy
b3IoZmFsc2UpOwogICAgICAgICByZXR1cm47CkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbjo6cG9zdGZsaWdodEFuZENvbW1pdCgpCiAgICAgICAgIG1fZGF0YWJhc2UtPnRy
YW5zYWN0aW9uQ2xpZW50KCktPmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oZGF0YWJhc2UoKSk7
CiAKICAgICAvLyBOb3cgcmVsZWFzZSBvdXIgdW5uZWVkZWQgY2FsbGJhY2tzLCB0byBicmVhayBy
ZWZlcmVuY2UgY3ljbGVzLgotICAgIG1fZXJyb3JDYWxsYmFjayA9IDA7CisgICAgbV9lcnJvckNh
bGxiYWNrID0gbnVsbHB0cjsKIAogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgMTAgLSBEZWxpdmVy
IHN1Y2Nlc3MgY2FsbGJhY2ssIGlmIHRoZXJlIGlzIG9uZQogICAgIGlmIChtX3N1Y2Nlc3NDYWxs
YmFjaykgewpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJT
dWNjZXNzQ2FsbGJhY2soKQogICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOwog
CiAgICAgLy8gUmVsZWFzZSB0aGUgbGFzdCBjYWxsYmFjayB0byBicmVhayByZWZlcmVuY2UgY3lj
bGUKLSAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IDA7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSBu
dWxscHRyOwogCiAgICAgLy8gU2NoZWR1bGUgYSAicG9zdC1zdWNjZXNzIGNhbGxiYWNrIiBzdGVw
IHRvIHJldHVybiBjb250cm9sIHRvIHRoZSBkYXRhYmFzZSB0aHJlYWQgaW4gY2FzZSB0aGVyZQog
ICAgIC8vIGFyZSBmdXJ0aGVyIHRyYW5zYWN0aW9ucyBxdWV1ZWQgdXAgZm9yIHRoaXMgRGF0YWJh
c2UKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrKCkKICAgICAvLyBlcnJvciB0byBoYXZlIG9jY3VycmVkIGluIHRo
aXMgdHJhbnNhY3Rpb24uCiAgICAgaWYgKG1fZXJyb3JDYWxsYmFjaykgewogICAgICAgICBtX2Vy
cm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fdHJhbnNhY3Rpb25FcnJvci5nZXQoKSk7Ci0gICAg
ICAgIG1fZXJyb3JDYWxsYmFjayA9IDA7CisgICAgICAgIG1fZXJyb3JDYWxsYmFjayA9IG51bGxw
dHI7CiAgICAgfQogCiAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6Y2xlYW51cEFm
dGVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDEwNGVhMTAuLmQxYzU2MjIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpyZWxlYXNlTG9jayhTUUxUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCiAgICAgICAgIGluZm8uYWN0aXZlUmVhZFRyYW5zYWN0aW9ucy5y
ZW1vdmUodHJhbnNhY3Rpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChpbmZvLmFj
dGl2ZVdyaXRlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwotICAgICAgICBpbmZvLmFjdGl2
ZVdyaXRlVHJhbnNhY3Rpb24gPSAwOworICAgICAgICBpbmZvLmFjdGl2ZVdyaXRlVHJhbnNhY3Rp
b24gPSBudWxscHRyOwogICAgIH0KIAogICAgIHByb2Nlc3NQZW5kaW5nVHJhbnNhY3Rpb25zKGlu
Zm8pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAg
Yi9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAppbmRleCA4N2YxZWZmLi5l
YzA0ZmFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNw
cAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcApAQCAtMTUxLDEx
ICsxNTEsMTEgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGUoKQog
ewogICAgIEFTU0VSVChtX2RhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29u
dGV4dFRocmVhZCgpKTsKICAgICBpZiAoIW1fZGF0YWJhc2UtPm9wZW5lZCgpIHx8IChtX2NhbGxi
YWNrICYmICFtX2NhbGxiYWNrLT5oYW5kbGVFdmVudCh0aGlzKSkpIHsKLSAgICAgICAgbV9jYWxs
YmFjayA9IDA7CisgICAgICAgIG1fY2FsbGJhY2sgPSBudWxscHRyOwogICAgICAgICByZXR1cm4g
U1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUjsKICAgICB9CiAKLSAgICBtX2NhbGxiYWNrID0gMDsK
KyAgICBtX2NhbGxiYWNrID0gbnVsbHB0cjsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBmMjAwOGFiLi41NmFlNjk3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3lu
Yzo6c2NoZWR1bGVGaW5hbFN5bmMoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
Ly8gRklYTUU6IFdlIGRvIHRoaXMgdG8gYXZvaWQgcmFjZXMsIGJ1dCBpdCdkIGJlIGJldHRlciB0
byBtYWtlIHRoaW5ncyBzYWZlIHdpdGhvdXQgYmxvY2tpbmcuCiAgICAgYmxvY2tVbnRpbEltcG9y
dENvbXBsZXRlKCk7Ci0gICAgbV9zdG9yYWdlQXJlYSA9IDA7ICAvLyBUaGlzIGlzIGRvbmUgaW4g
YmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCkgYnV0IHRoaXMgaXMgaGVyZSBhcyBhIGZvcm0gb2Yg
ZG9jdW1lbnRhdGlvbiB0aGF0IHdlIG11c3QgYmUgYWJzb2x1dGVseSBzdXJlIHRoZSByZWYgY291
bnQgY3ljbGUgaXMgYnJva2VuLgorICAgIG1fc3RvcmFnZUFyZWEgPSBudWxscHRyOyAgLy8gVGhp
cyBpcyBkb25lIGluIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpIGJ1dCB0aGlzIGlzIGhlcmUg
YXMgYSBmb3JtIG9mIGRvY3VtZW50YXRpb24gdGhhdCB3ZSBtdXN0IGJlIGFic29sdXRlbHkgc3Vy
ZSB0aGUgcmVmIGNvdW50IGN5Y2xlIGlzIGJyb2tlbi4KIAogICAgIGlmIChtX3N5bmNUaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICBtX3N5bmNUaW1lci5zdG9wKCk7CkBAIC0zMDMsNyArMzAzLDcg
QEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpCiAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1faW1wb3J0TG9jayk7CiAgICAgd2hpbGUgKCFtX2ltcG9ydENv
bXBsZXRlKQogICAgICAgICBtX2ltcG9ydENvbmRpdGlvbi53YWl0KG1faW1wb3J0TG9jayk7Ci0g
ICAgbV9zdG9yYWdlQXJlYSA9IDA7CisgICAgbV9zdG9yYWdlQXJlYSA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jKGJvb2wgY2xlYXJJdGVtcywgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCBlYzNkNTQy
Li43YzQyMjRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
U1ZHVXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogdm9pZCBTVkdVc2VFbGVtZW50
OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotICAgIG1fdGFyZ2V0RWxlbWVudEluc3RhbmNl
ID0gMDsKKyAgICBtX3RhcmdldEVsZW1lbnRJbnN0YW5jZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQg
U1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hh
ZG93QW5kSW5zdGFuY2VUcmVlKFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCogc2hhZG93UgogICAg
ICAgICB0YXJnZXQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCk7CiAK
ICAgICBpZiAobV90YXJnZXRFbGVtZW50SW5zdGFuY2UpCi0gICAgICAgIG1fdGFyZ2V0RWxlbWVu
dEluc3RhbmNlID0gMDsKKyAgICAgICAgbV90YXJnZXRFbGVtZW50SW5zdGFuY2UgPSBudWxscHRy
OwogCiAgICAgLy8gRG8gbm90IGFsbG93IHNlbGYtcmVmZXJlbmNpbmcuCiAgICAgLy8gJ3Rhcmdl
dCcgbWF5IGJlIG51bGwsIGlmIGl0J3MgYSBub24gU1ZHIG5hbWVzcGFjZWQgZWxlbWVudC4KQEAg
LTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFu
Y2VUcmVlKFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCogc2hhZG93UgogICAgIC8vIFNWRyBzcGVj
aWZpY2F0aW9uIGRvZXMgbm90IHNheSBhIHdvcmQgYWJvdXQgPHVzZT4gJiBjeWNsZXMuIE15IHZp
ZXcgb24gdGhpcyBpczoganVzdCBpZ25vcmUgaXQhCiAgICAgLy8gTm9uLWFwcGVhcmluZyA8dXNl
PiBjb250ZW50IGlzIGVhc2llciB0byBkZWJ1ZywgdGhlbiBoYWxmLWFwcGVhcmluZyBjb250ZW50
LgogICAgIGlmIChmb3VuZFByb2JsZW0pIHsKLSAgICAgICAgbV90YXJnZXRFbGVtZW50SW5zdGFu
Y2UgPSAwOworICAgICAgICBtX3RhcmdldEVsZW1lbnRJbnN0YW5jZSA9IG51bGxwdHI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFNWR1VzZUVsZW1l
bnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVlKFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCog
c2hhZG93UgogICAgIC8vIERvIE5PVCBsZWF2ZSBhbiBpbmNvbnNpc3RlbnQgaW5zdGFuY2UgdHJl
ZSBhcm91bmQsIGluc3RlYWQgZGVzdHJ1Y3QgaXQuCiAgICAgaWYgKCFtX3RhcmdldEVsZW1lbnRJ
bnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKSkgewogICAgICAgICBzaGFkb3dSb290LT5yZW1v
dmVBbGxDaGlsZHJlbigpOwotICAgICAgICBtX3RhcmdldEVsZW1lbnRJbnN0YW5jZSA9IDA7Cisg
ICAgICAgIG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YXR0YWNo
KCkKIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6ZGV0YWNoKCk7Ci0gICAgbV90YXJnZXRFbGVtZW50SW5zdGFuY2UgPSAw
OworICAgIG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlID0gbnVsbHB0cjsKIH0KIAogc3RhdGljIGJv
b2wgaXNEaXJlY3RSZWZlcmVuY2UoTm9kZSogbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwCmluZGV4IDQ0MWNmYzMuLjM1YjZiNWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewogICAgIGlmIChtX3RpbWVDb250YWluZXIp
IHsKICAgICAgICAgbV90aW1lQ29udGFpbmVyLT51bnNjaGVkdWxlKHRoaXMpOwotICAgICAgICBt
X3RpbWVDb250YWluZXIgPSAwOworICAgICAgICBtX3RpbWVDb250YWluZXIgPSBudWxscHRyOwog
ICAgIH0KICAgICAvLyBDYWxsaW5nIGRpc2Nvbm5lY3RDb25kaXRpb25zKCkgbWF5IGtpbGwgdXMg
aWYgdGhlcmUgYXJlIHN5bmNiYXNlIGNvbmRpdGlvbnMuCiAgICAgLy8gT0ssIGJ1dCB3ZSBkb24n
dCB3YW50IHRvIGRpZSBpbnNpZGUgdGhlIGNhbGwuCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBT
VkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMoKQogICAgICAgICAgICAgQVNTRVJUKCFj
b25kaXRpb24ubV9iYXNlSUQuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIGNvbmRpdGlvbi5tX3N5
bmNiYXNlID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoY29uZGl0aW9uLm1fYmFzZUlEKTsK
ICAgICAgICAgICAgIGlmICghaXNTTUlMRWxlbWVudChjb25kaXRpb24ubV9zeW5jYmFzZS5nZXQo
KSkpIHsKLSAgICAgICAgICAgICAgICBjb25kaXRpb24ubV9zeW5jYmFzZSA9IDA7CisgICAgICAg
ICAgICAgICAgY29uZGl0aW9uLm1fc3luY2Jhc2UgPSBudWxscHRyOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgU1ZHU01JTEVsZW1lbnQqIHN5
bmNiYXNlID0gc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb25kaXRpb24ubV9zeW5jYmFz
ZS5nZXQoKSk7CkBAIC00NDMsMTQgKzQ0MywxNCBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpkaXNj
b25uZWN0Q29uZGl0aW9ucygpCiAgICAgICAgICAgICBpZiAoZXZlbnRCYXNlKQogICAgICAgICAg
ICAgICAgIGV2ZW50QmFzZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCBj
b25kaXRpb24ubV9ldmVudExpc3RlbmVyLmdldCgpLCBmYWxzZSk7CiAgICAgICAgICAgICBjb25k
aXRpb24ubV9ldmVudExpc3RlbmVyLT5kaXNjb25uZWN0QW5pbWF0aW9uKCk7Ci0gICAgICAgICAg
ICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyID0gMDsKKyAgICAgICAgICAgIGNvbmRpdGlvbi5t
X2V2ZW50TGlzdGVuZXIgPSBudWxscHRyOwogICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbi5t
X3R5cGUgPT0gQ29uZGl0aW9uOjpTeW5jYmFzZSkgewogICAgICAgICAgICAgaWYgKGNvbmRpdGlv
bi5tX3N5bmNiYXNlKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzU01JTEVsZW1lbnQoY29u
ZGl0aW9uLm1fc3luY2Jhc2UuZ2V0KCkpKTsKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxT
VkdTTUlMRWxlbWVudCo+KGNvbmRpdGlvbi5tX3N5bmNiYXNlLmdldCgpKS0+cmVtb3ZlVGltZURl
cGVuZGVudCh0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBjb25kaXRp
b24ubV9zeW5jYmFzZSA9IDA7CisgICAgICAgIGNvbmRpdGlvbi5tX3N5bmNiYXNlID0gbnVsbHB0
cjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuY3BwCmluZGV4IGIzMWI5OTQuLjI4NTA5ZGEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtODQsNyArODQs
NyBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNl
cyhSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlYwogCiB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmNs
ZWFyRWZmZWN0cygpCiB7Ci0gICAgbV9sYXN0RWZmZWN0ID0gMDsKKyAgICBtX2xhc3RFZmZlY3Qg
PSBudWxscHRyOwogICAgIG1fbmFtZWRFZmZlY3RzLmNsZWFyKCk7CiAgICAgbV9lZmZlY3RSZWZl
cmVuY2VzLmNsZWFyKCk7CiAgICAgYWRkQnVpbHRpbkVmZmVjdHMoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmggYi9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCmluZGV4IGQwZWFjM2IuLjZmNjRhZGYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKKysr
IGIvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaApAQCAtODEsNyAr
ODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFdoZW5ldmVyIHRoZSBYTUwgRE9NIG1vZGlmaWVz
IHRoZSAieCIgYXR0cmlidXRlLCBhbGwgZXhpc3Rpbmcgd3JhcHBlcnMgYXJlIGRldGFjaGVkLCB1
c2luZyB0aGlzIGZ1bmN0aW9uLgogICAgICAgICBtX3ZhbHVlID0gbmV3IFByb3BlcnR5VHlwZSgq
bV92YWx1ZSk7CiAgICAgICAgIG1fdmFsdWVJc0NvcHkgPSB0cnVlOwotICAgICAgICBtX2FuaW1h
dGVkUHJvcGVydHkgPSAwOworICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHkgPSBudWxscHRyOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAppbmRleCAzNThhNzQyLi42YjI0NGMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgV2ViU29ja2V0OjpzdG9wKCkKICAgICBib29sIHBl
bmRpbmcgPSBoYXNQZW5kaW5nQWN0aXZpdHkoKTsKICAgICBpZiAobV9jaGFubmVsKQogICAgICAg
ICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKLSAgICBtX2NoYW5uZWwgPSAwOworICAgIG1fY2hh
bm5lbCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICBBY3RpdmVET01PYmpl
Y3Q6OnN0b3AoKTsKICAgICBpZiAocGVuZGluZykKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFdl
YlNvY2tldDo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCkK
ICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSArPSB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dDsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkp
OwotICAgIG1fY2hhbm5lbCA9IDA7CisgICAgbV9jaGFubmVsID0gbnVsbHB0cjsKICAgICBpZiAo
aGFzUGVuZGluZ0FjdGl2aXR5KCkpCiAgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6dW5zZXRQZW5k
aW5nQWN0aXZpdHkodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggMDFjMmJlZi4uMmJiM2EzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
Q2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAgICAgICAgIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQqIGNsaWVudCA9IG1fY2xpZW50OwogICAgICAgICBtX2NsaWVudCA9IDA7CiAgICAg
ICAgIG1fY29udGV4dCA9IDA7Ci0gICAgICAgIG1faGFuZGxlID0gMDsKKyAgICAgICAgbV9oYW5k
bGUgPSBudWxscHRyOwogICAgICAgICBpZiAoY2xpZW50KQogICAgICAgICAgICAgY2xpZW50LT5k
aWRDbG9zZShtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApp
bmRleCBmZDgyNTkxLi5lN2FhNDczIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSgpCiAg
ICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICByZXR1cm47CiAgICAgbV9t
YWluV2ViU29ja2V0Q2hhbm5lbC0+Y2xvc2UoKTsKLSAgICBtX21haW5XZWJTb2NrZXRDaGFubmVs
ID0gMDsKKyAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsID0gbnVsbHB0cjsKIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlzY29ubmVjdCgpCkBAIC0x
NzcsNyArMTc3LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6ZGlzY29ubmVjdCgpCiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZGlzY29ubmVjdCgpOwotICAg
IG1fbWFpbldlYlNvY2tldENoYW5uZWwgPSAwOworICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwg
PSBudWxscHRyOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpzdXNwZW5kKCkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgdm9pZCB3b3JrZXJDb250
ZXh0RGlkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVh
ZAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2Uo
dW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwgPSAwOworICAgIG1fbWFp
bldlYlNvY2tldENoYW5uZWwgPSBudWxscHRyOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERp
ZENsb3NlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KSwg
bV90YXNrTW9kZSk7CiB9CiAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QoKQogICAgICAgICBtX3BlZXIg
PSAwOwogICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZtYWluVGhyZWFkRGVzdHJveSwgcGVlcikpOwogICAgIH0KLSAgICBtX3dvcmtlckNv
bnRleHQgPSAwOworICAgIG1fd29ya2VyQ29udGV4dCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCAxMDcwMGM2Li5jYjdhZWI4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJDb250ZXh0RGVzdHJveWVkSW50ZXJuYWwoKQogICAg
IC8vIFdvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrIGlzIGFsd2F5cyB0aGUgbGFzdCB0byBiZSBw
ZXJmb3JtZWQsIHNvIHRoZSBwcm94eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCiAg
ICAgLy8gaW4gZWl0aGVyIHNpZGUgYW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0
IG1heSBzdGlsbCBleGlzdCwgYW5kIGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0
b28uCiAgICAgbV9hc2tlZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9
IDA7CisgICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwogICAgIGlmICghbV93b3JrZXJPYmpl
Y3QpCiAgICAgICAgIGRlbGV0ZSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRl
eCBmNjExMjBlLi43YWZiYmYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTQ1LDcg
KzE0NSw3IEBAIHZvaWQqIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKIAogICAgIC8vIFRo
ZSBiZWxvdyBhc3NpZ25tZW50IHdpbGwgZGVzdHJveSB0aGUgY29udGV4dCwgd2hpY2ggd2lsbCBp
biB0dXJuIG5vdGlmeSBtZXNzYWdpbmcgcHJveHkuCiAgICAgLy8gV2UgY2Fubm90IGxldCBhbnkg
b2JqZWN0cyBzdXJ2aXZlIHBhc3QgdGhyZWFkIGV4aXQsIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFk
IHdpbGwgcnVuIEdDIG9yIG90aGVyd2lzZSBkZXN0cm95IHRoZW0uCi0gICAgbV93b3JrZXJDb250
ZXh0ID0gMDsKKyAgICBtX3dvcmtlckNvbnRleHQgPSBudWxscHRyOwogCiAgICAgLy8gQ2xlYW4g
dXAgV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUgV1RGOjpXVEZUaHJlYWREYXRhIGdv
ZXMgYXdheSEKICAgICB0aHJlYWRHbG9iYWxEYXRhKCkuZGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCmluZGV4IGZjN2ViOWUuLmJmMjQ1NmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAg
LTI0Miw3ICsyNDIsNyBAQCBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIGlmICghbV9jcmVhdGVkRG9jdW1lbnQpIHsKICAgICAgICAg
aWYgKChtX3Jlc3BvbnNlLmlzSFRUUCgpICYmICFyZXNwb25zZUlzWE1MKCkpIHx8IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJDb250ZXh0KCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBXM0Mgc3BlYyByZXF1aXJlcyB0aGlzLgotICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IDA7
CisgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MID0gbnVsbHB0cjsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIG1fdXJsKTsK
ICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPm9wZW4oKTsKQEAgLTI1Miw3ICsyNTIsNyBAQCBE
b2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+Y2xvc2UoKTsKIAogICAgICAgICAgICAgaWYgKCFt
X3Jlc3BvbnNlWE1MLT53ZWxsRm9ybWVkKCkpCi0gICAgICAgICAgICAgICAgbV9yZXNwb25zZVhN
TCA9IDA7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IG51bGxwdHI7CiAgICAgICAg
IH0KICAgICAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSB0cnVlOwogICAgIH0KQEAgLTY4Niw3ICs2
ODYsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjphYm9ydCgpCiAKICAgICBtX3Jlc3BvbnNlQnVp
bGRlci5jbGVhcigpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7Ci0gICAgbV9yZXNw
b25zZVhNTCA9IDA7CisgICAgbV9yZXNwb25zZVhNTCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKFhI
Ul9SRVNQT05TRV9CTE9CKQogICAgIG1fcmVzcG9uc2VCbG9iID0gMDsKICNlbmRpZgpAQCAtNzIx
LDEwICs3MjEsMTAgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCgpCiAKICAg
ICBpZiAoaGFkTG9hZGVyKSB7CiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKLSAgICAgICAg
bV9sb2FkZXIgPSAwOworICAgICAgICBtX2xvYWRlciA9IG51bGxwdHI7CiAgICAgfQogCi0gICAg
bV9kZWNvZGVyID0gMDsKKyAgICBtX2RlY29kZXIgPSBudWxscHRyOwogCiAgICAgaWYgKGhhZExv
YWRlcikKICAgICAgICAgZHJvcFByb3RlY3Rpb24oKTsKQEAgLTczNSw3ICs3MzUsNyBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlKCkKICAgICBtX3Jlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZSgpOwogICAgIG1fcmVzcG9uc2VCdWlsZGVyLmNsZWFyKCk7CiAgICAgbV9jcmVh
dGVkRG9jdW1lbnQgPSBmYWxzZTsKLSAgICBtX3Jlc3BvbnNlWE1MID0gMDsKKyAgICBtX3Jlc3Bv
bnNlWE1MID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCiAgICAgbV9y
ZXNwb25zZUJsb2IgPSAwOwogI2VuZGlmCkBAIC03NDgsNyArNzQ4LDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y2xlYXJSZXNwb25zZSgpCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlcXVl
c3QoKQogewogICAgIG1fcmVxdWVzdEhlYWRlcnMuY2xlYXIoKTsKLSAgICBtX3JlcXVlc3RFbnRp
dHlCb2R5ID0gMDsKKyAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6Z2VuZXJpY0Vycm9yKCkKQEAgLTEwMDgsMTAgKzEwMDgsMTAgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpCiAjZW5kaWYKIAogICAgIGJvb2wgaGFkTG9hZGVyID0gbV9sb2FkZXI7Ci0gICAgbV9s
b2FkZXIgPSAwOworICAgIG1fbG9hZGVyID0gbnVsbHB0cjsKIAogICAgIGNoYW5nZVN0YXRlKERP
TkUpOwotICAgIG1fZGVjb2RlciA9IDA7CisgICAgbV9kZWNvZGVyID0gbnVsbHB0cjsKIAogICAg
IGlmIChoYWRMb2FkZXIpCiAgICAgICAgIGRyb3BQcm90ZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAgYi9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAKaW5kZXggNWQ0
YWZhMy4uN2E1MDZiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50VGhyb3R0bGUuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudFRocm90dGxlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGU6OmRpc3BhdGNoUGF1c2VkRXZlbnQoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3RhcmdldC0+ZGlzcGF0Y2hFdmVudChtX3BhdXNlZEV2ZW50KTsK
LSAgICBtX3BhdXNlZEV2ZW50ID0gMDsKKyAgICBtX3BhdXNlZEV2ZW50ID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZTo6ZmlyZWQoKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmNwcCBiL1dlYkNvcmUveG1sL1hQ
YXRoRXhwcmVzc2lvbi5jcHAKaW5kZXggNjE4ODQyNi4uZGU2NmVlMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmNwcAorKysgYi9XZWJDb3JlL3htbC9YUGF0aEV4cHJl
c3Npb24uY3BwCkBAIC03Miw3ICs3Miw3IEBAIFBhc3NSZWZQdHI8WFBhdGhSZXN1bHQ+IFhQYXRo
RXhwcmVzc2lvbjo6ZXZhbHVhdGUoTm9kZSogY29udGV4dE5vZGUsIHVuc2lnbmVkIHNoCiAgICAg
ZXZhbHVhdGlvbkNvbnRleHQucG9zaXRpb24gPSAxOwogICAgIGV2YWx1YXRpb25Db250ZXh0Lmhh
ZFR5cGVDb252ZXJzaW9uRXJyb3IgPSBmYWxzZTsKICAgICBSZWZQdHI8WFBhdGhSZXN1bHQ+IHJl
c3VsdCA9IFhQYXRoUmVzdWx0OjpjcmVhdGUoY29udGV4dE5vZGUtPmRvY3VtZW50KCksIG1fdG9w
RXhwcmVzc2lvbi0+ZXZhbHVhdGUoKSk7Ci0gICAgZXZhbHVhdGlvbkNvbnRleHQubm9kZSA9IDA7
IC8vIERvIG5vdCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0IG5vZGUsIGFzIHRoaXMg
bWF5IHByZXZlbnQgdGhlIHdob2xlIGRvY3VtZW50IGZyb20gYmVpbmcgZGVzdHJveWVkIGluIHRp
bWUuCisgICAgZXZhbHVhdGlvbkNvbnRleHQubm9kZSA9IG51bGxwdHI7IC8vIERvIG5vdCBob2xk
IGEgcmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0IG5vZGUsIGFzIHRoaXMgbWF5IHByZXZlbnQgdGhl
IHdob2xlIGRvY3VtZW50IGZyb20gYmVpbmcgZGVzdHJveWVkIGluIHRpbWUuCiAKICAgICBpZiAo
ZXZhbHVhdGlvbkNvbnRleHQuaGFkVHlwZUNvbnZlcnNpb25FcnJvcikgewogICAgICAgICAvLyBJ
dCBpcyBub3Qgc3BlY2lmaWVkIHdoYXQgdG8gZG8gaWYgdHlwZSBjb252ZXJzaW9uIGZhaWxzIHdo
aWxlIGV2YWx1YXRpbmcgYW4gZXhwcmVzc2lvbiwgYW5kIElOVkFMSURfRVhQUkVTU0lPTl9FUlIg
aXMgbm90IGV4YWN0bHkgcmlnaHQKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JRdC5jcHAgYi9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yUXQuY3BwCmluZGV4IDNhNWRmMjIu
LjRlZGJiM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAKKysr
IGIvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIGJv
b2wgWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcoTm9kZSogc291cmNlTm9kZSwgU3Ry
aW5nJiwgU3RyaW5nJiByZXN1bHRTCiAKICAgICBpZiAobV9zdHlsZXNoZWV0KSB7CiAgICAgICAg
IG1fc3R5bGVzaGVldC0+Y2xlYXJEb2N1bWVudHMoKTsKLSAgICAgICAgbV9zdHlsZXNoZWV0ID0g
MDsKKyAgICAgICAgbV9zdHlsZXNoZWV0ID0gbnVsbHB0cjsKICAgICB9CiAKICAgICByZXR1cm4g
c3VjY2VzczsKLS0gCjEuNy4zLjEubXN5c2dpdC4wCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77383</attachid>
            <date>2010-12-23 16:33:57 -0800</date>
            <delta_ts>2010-12-23 16:41:29 -0800</delta_ts>
            <desc>Fixes nullptr_t related build issues on vs2010</desc>
            <filename>vs2010buildfix.patch</filename>
            <type>text/plain</type>
            <size>3506</size>
            <attacher name="Jake">jake</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCShyZXZpc2lvbiA3NDU4OCkNCisrKyBKYXZhU2NyaXB0
Q29yZS93dGYvTnVsbFB0ci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNiArMzEsOSBAQA0KIC8v
IG51bGxwdHJfdCB0eXBlIGFuZCBudWxscHRyIG9iamVjdC4gVGhleSBhcmUgZGVmaW5lZCBpbiB0
aGUgc2FtZSBuYW1lc3BhY2VzIHRoZXkKIC8vIHdvdWxkIGJlIGluIGNvbXBpbGVyIGFuZCBsaWJy
YXJ5IHRoYXQgaGFkIHRoZSBzdXBwb3J0LgogCisvLyBEb24ndCBkZWNsYXJlIHRoaXMgd2hlbiBi
dWlsZGluZyB3aXRoIHZpc3VhbCBzdHVkaW8gMjAxMCsKKworI2lmICFkZWZpbmVkKF9NU0NfVkVS
KSB8fCBfTVNDX1ZFUiA8IDE2MDAKICNpZm5kZWYgX19oYXNfZmVhdHVyZQogICAgICNkZWZpbmUg
X19oYXNfZmVhdHVyZShmZWF0dXJlKSAwCiAjZW5kaWYKQEAgLTQ1LDQgKzQ4LDYgQEANCiAKICNl
bmRpZgogCisjZW5kaWYgLy9fTVNDX1ZFUgorCiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi9SZWZQdHIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHIu
aAkocmV2aXNpb24gNzQ1ODgpDQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtNzQsOCArNzQsNyBAQA0KICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0o
VCopOwogICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFQ+Jik7CiAg
ICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPFQ+Jik7Ci0g
ICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IHJldHVy
biAqdGhpczsgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9y
PShjb25zdCBSZWZQdHI8VT4mKTsKKwkJdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVy
YXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJl
ZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgTm9uTnVsbFBhc3NSZWZQdHI8VT4m
KTsKIApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA3NDU4OCkNCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMTcyLDcgKzMxNzIsNyBAQA0KICAgICAg
ICAgaWYgKG1fZm9jdXNlZE5vZGUpIHsKICAgICAgICAgICAgIC8vIGhhbmRsZXIgc2hpZnRlZCBm
b2N1cwogICAgICAgICAgICAgZm9jdXNDaGFuZ2VCbG9ja2VkID0gdHJ1ZTsKLSAgICAgICAgICAg
IG5ld0ZvY3VzZWROb2RlID0gMDsKKyAgICAgICAgICAgIG5ld0ZvY3VzZWROb2RlID0gKE5vZGUq
KSAwOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBvbGRGb2N1c2VkTm9kZS0+ZGlzcGF0
Y2hVSUV2ZW50KGV2ZW50TmFtZXMoKS5mb2N1c291dEV2ZW50LCAwLCAwKTsgLy8gRE9NIGxldmVs
IDMgbmFtZSBmb3IgdGhlIGJ1YmJsaW5nIGJsdXIgZXZlbnQuCkBAIC0zMTgzLDcgKzMxODMsNyBA
QA0KICAgICAgICAgaWYgKG1fZm9jdXNlZE5vZGUpIHsKICAgICAgICAgICAgIC8vIGhhbmRsZXIg
c2hpZnRlZCBmb2N1cwogICAgICAgICAgICAgZm9jdXNDaGFuZ2VCbG9ja2VkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIG5ld0ZvY3VzZWROb2RlID0gMDsKKyAgICAgICAgICAgIG5ld0ZvY3VzZWROb2Rl
ID0gKE5vZGUqKSAwOwogICAgICAgICB9CiAgICAgICAgIGlmIChvbGRGb2N1c2VkTm9kZSA9PSB0
aGlzICYmIG9sZEZvY3VzZWROb2RlLT5oYXNPbmVSZWYoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpJbmRleDogV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgJKHJldmlzaW9uIDc0NTg4KQ0KKysr
IFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkNCkBAIC03NCw3
ICs3NCw3IEBADQogICAgICAgICAsIHdpZHRoKFZhbHVlQXV0bykKICAgICAgICAgLCBoZWlnaHQo
VmFsdWVBdXRvKQogICAgICAgICAsIHRhcmdldERlbnNpdHlEcGkoVmFsdWVBdXRvKQotICAgICAg
ICAsIHVzZXJTY2FsYWJsZShWYWx1ZUF1dG8pCisgICAgICAgICwgdXNlclNjYWxhYmxlKChib29s
KSBWYWx1ZUF1dG8pCiAgICAgewogICAgIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAkocmV2aXNp
b24gNzQ1ODgpDQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0xMjgsNiArMTI4LDcgQEANCiAgICAgICAgIE5vdGlmaWVyVG9JZE1hcCBtX25vdGlmaWVy
VG9JZE1hcDsKICAgICB9OwogCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIGNsYXNzIFBv
c2l0aW9uQ2FjaGVXcmFwcGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBvc2l0aW9uQ2FjaGVX
cmFwcGVyKCkKQEAgLTE0NCw3ICsxNDUsMTkgQEANCiAgICAgcHJpdmF0ZToKICAgICAgICAgR2Vv
bG9jYXRpb25Qb3NpdGlvbkNhY2hlKiBtX2NhY2hlOwogICAgIH07Ci0KKyNlbHNlCisgICAgY2xh
c3MgUG9zaXRpb25DYWNoZVdyYXBwZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUG9zaXRpb25D
YWNoZVdyYXBwZXIoKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgflBvc2l0aW9uQ2Fj
aGVXcmFwcGVyKCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIHZvaWQgc2V0Q2FjaGVk
UG9zaXRpb24oR2VvcG9zaXRpb24qIGNhY2hlZFBvc2l0aW9uKSB7fQorICAgICAgICBHZW9wb3Np
dGlvbiogY2FjaGVkUG9zaXRpb24oKSB7cmV0dXJuIDA7fQorICAgIH07CisjZW5kaWYKICAgICBi
b29sIGhhc0xpc3RlbmVycygpIGNvbnN0IHsgcmV0dXJuICFtX29uZVNob3RzLmlzRW1wdHkoKSB8
fCAhbV93YXRjaGVycy5pc0VtcHR5KCk7IH0KIAogICAgIHZvaWQgc2VuZEVycm9yKEdlb05vdGlm
aWVyVmVjdG9yJiwgUG9zaXRpb25FcnJvciopOwo=
</data>
<flag name="review"
          id="68495"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="68496"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77384</attachid>
            <date>2010-12-23 16:41:29 -0800</date>
            <delta_ts>2010-12-23 17:49:32 -0800</delta_ts>
            <desc>Second attempt at patch to fix nullptr_t related build issues on vs2010</desc>
            <filename>vs2010buildfix.patch</filename>
            <type>text/plain</type>
            <size>3444</size>
            <attacher name="Jake">jake</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCShyZXZpc2lvbiA3NDU4OCkNCisrKyBKYXZhU2NyaXB0
Q29yZS93dGYvTnVsbFB0ci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNiArMzEsOSBAQA0KIC8v
IG51bGxwdHJfdCB0eXBlIGFuZCBudWxscHRyIG9iamVjdC4gVGhleSBhcmUgZGVmaW5lZCBpbiB0
aGUgc2FtZSBuYW1lc3BhY2VzIHRoZXkKIC8vIHdvdWxkIGJlIGluIGNvbXBpbGVyIGFuZCBsaWJy
YXJ5IHRoYXQgaGFkIHRoZSBzdXBwb3J0LgogCisvLyBEb24ndCBkZWNsYXJlIHRoaXMgd2hlbiBi
dWlsZGluZyB3aXRoIHZpc3VhbCBzdHVkaW8gMjAxMCsKKworI2lmICFkZWZpbmVkKF9NU0NfVkVS
KSB8fCBfTVNDX1ZFUiA8IDE2MDAKICNpZm5kZWYgX19oYXNfZmVhdHVyZQogICAgICNkZWZpbmUg
X19oYXNfZmVhdHVyZShmZWF0dXJlKSAwCiAjZW5kaWYKQEAgLTQ1LDQgKzQ4LDYgQEANCiAKICNl
bmRpZgogCisjZW5kaWYgLy8gX01TQ19WRVIKKwogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvUmVmUHRyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRy
LmgJKHJldmlzaW9uIDc0NTg4KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHIuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTc0LDcgKzc0LDYgQEANCiAgICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9
KFQqKTsKICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxUPiYpOwog
ICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxUPiYpOwot
ICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkgeyBjbGVhcigpOyByZXR1
cm4gKnRoaXM7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRv
cj0oY29uc3QgUmVmUHRyPFU+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0
ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgTm9uTnVsbFBhc3NSZWZQdHI8VT4mKTsK
SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNzQ1ODgpDQorKysgV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzE3Miw3ICszMTcyLDcgQEANCiAgICAgICAgIGlm
IChtX2ZvY3VzZWROb2RlKSB7CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMK
ICAgICAgICAgICAgIGZvY3VzQ2hhbmdlQmxvY2tlZCA9IHRydWU7Ci0gICAgICAgICAgICBuZXdG
b2N1c2VkTm9kZSA9IDA7CisgICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IChOb2RlKikgMDsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgb2xkRm9jdXNlZE5vZGUtPmRpc3BhdGNoVUlF
dmVudChldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgMCwgMCk7IC8vIERPTSBsZXZlbCAzIG5h
bWUgZm9yIHRoZSBidWJibGluZyBibHVyIGV2ZW50LgpAQCAtMzE4Myw3ICszMTgzLDcgQEANCiAg
ICAgICAgIGlmIChtX2ZvY3VzZWROb2RlKSB7CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0
ZWQgZm9jdXMKICAgICAgICAgICAgIGZvY3VzQ2hhbmdlQmxvY2tlZCA9IHRydWU7Ci0gICAgICAg
ICAgICBuZXdGb2N1c2VkTm9kZSA9IDA7CisgICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IChO
b2RlKikgMDsKICAgICAgICAgfQogICAgICAgICBpZiAob2xkRm9jdXNlZE5vZGUgPT0gdGhpcyAm
JiBvbGRGb2N1c2VkTm9kZS0+aGFzT25lUmVmKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
SW5kZXg6IFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCShyZXZpc2lvbiA3NDU4OCkNCisrKyBXZWJD
b3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzQsNyArNzQs
NyBAQA0KICAgICAgICAgLCB3aWR0aChWYWx1ZUF1dG8pCiAgICAgICAgICwgaGVpZ2h0KFZhbHVl
QXV0bykKICAgICAgICAgLCB0YXJnZXREZW5zaXR5RHBpKFZhbHVlQXV0bykKLSAgICAgICAgLCB1
c2VyU2NhbGFibGUoVmFsdWVBdXRvKQorICAgICAgICAsIHVzZXJTY2FsYWJsZSgoYm9vbCkgVmFs
dWVBdXRvKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDc0
NTg4KQ0KKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MTI4LDYgKzEyOCw3IEBADQogICAgICAgICBOb3RpZmllclRvSWRNYXAgbV9ub3RpZmllclRvSWRN
YXA7CiAgICAgfTsKIAorI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBjbGFzcyBQb3NpdGlv
bkNhY2hlV3JhcHBlciB7CiAgICAgcHVibGljOgogICAgICAgICBQb3NpdGlvbkNhY2hlV3JhcHBl
cigpCkBAIC0xNDQsNyArMTQ1LDE5IEBADQogICAgIHByaXZhdGU6CiAgICAgICAgIEdlb2xvY2F0
aW9uUG9zaXRpb25DYWNoZSogbV9jYWNoZTsKICAgICB9OwotCisjZWxzZQorICAgIGNsYXNzIFBv
c2l0aW9uQ2FjaGVXcmFwcGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBvc2l0aW9uQ2FjaGVX
cmFwcGVyKCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIH5Qb3NpdGlvbkNhY2hlV3Jh
cHBlcigpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB2b2lkIHNldENhY2hlZFBvc2l0
aW9uKEdlb3Bvc2l0aW9uKiBjYWNoZWRQb3NpdGlvbikge30KKyAgICAgICAgR2VvcG9zaXRpb24q
IGNhY2hlZFBvc2l0aW9uKCkge3JldHVybiAwO30KKyAgICB9OworI2VuZGlmCiAgICAgYm9vbCBo
YXNMaXN0ZW5lcnMoKSBjb25zdCB7IHJldHVybiAhbV9vbmVTaG90cy5pc0VtcHR5KCkgfHwgIW1f
d2F0Y2hlcnMuaXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIHNlbmRFcnJvcihHZW9Ob3RpZmllclZl
Y3RvciYsIFBvc2l0aW9uRXJyb3IqKTsK
</data>
<flag name="review"
          id="68497"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="68498"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77388</attachid>
            <date>2010-12-23 17:49:32 -0800</date>
            <delta_ts>2010-12-24 14:39:44 -0800</delta_ts>
            <desc>Latest patch for vs2010 build</desc>
            <filename>vs2010buildfix.patch</filename>
            <type>text/plain</type>
            <size>3462</size>
            <attacher name="Jake">jake</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gNzQ1
ODgpDQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDI2IEBADQorMjAx
MC0xMi0yMyAgSmFrZSBIZWxmZXJ0ICA8amFrZUBqYWtlb250aGVuZXQuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWQorCisgICAgICAgIEJ1ZyA1MTExNjogQnVpbGRpbmcgd2Via2l0
IHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwIGZhaWxzIGR1ZQorICAgICAgICB0byBhbWJpZ3VvdXMg
J29wZXJhdG9yID0nIG1ldGhvZHMgaW4gUmVmUHRyLgorCisgICAgICAgIFRoZXNlIGZpeGVzIGFs
bG93IHdlYmtpdCB0byBidWlsZCB1bmRlciBWaXN1YWwgU3R1ZGlvIDIwMTAKKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlXHd0ZlxOdWxsUHRyLmg6CisgICAgICAgIEFkZGVkIGd1YXJkIGZvciBW
aXN1YWwgU3R1ZGlvIDIwMTAgc2luY2UgaXQgaW5jbHVkZXMgc3VwcG9ydAorICAgICAgICBmb3Ig
bnVsbHB0cl90LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmVcd3RmXFJlZlB0ci5oOgorICAg
ICAgICBSZW1vdmVkIG9wZXJhdG9yPShudWxscHRyX3QpIG92ZXJyaWRlLgorCisgICAgICAgICog
V2ViQ29yZVxkb21cVmlld3BvcnRBcmd1bWVudHMuaDoKKyAgICAgICAgQWRkZWQgYW4gZXhwbGlj
aXQgY2FzdCB0byBib29sIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHdhcm5pbmcKKworICAgICAgICAq
IFdlYkNvcmVcZG9tXERvY3VtZW50LmNwcDoKKyAgICAgICAgQWRkZWQgdHdvIGV4cGxpY2l0IChO
b2RlKikgY2FzdHMuIEZvciBzb21lIHJlYXNvbgorICAgICAgICBtc3ZjIHdhcyBlcnJvcmluZyBv
biB0aG9zZSBsaW5lcyB3aXRob3V0IHRoZSBjYXN0LgorCiAyMDEwLTEyLTIzICBMdWNhcyBEZSBN
YXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0
Zi9OdWxsUHRyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5o
CShyZXZpc2lvbiA3NDU4OCkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMzUsNyArMzUsNyBAQA0KICAgICAjZGVmaW5lIF9faGFzX2ZlYXR1cmUo
ZmVhdHVyZSkgMAogI2VuZGlmCiAKLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfbnVsbHB0cikKKyNp
ZiAhX19oYXNfZmVhdHVyZShjeHhfbnVsbHB0cikgJiYgKCFkZWZpbmVkKF9NU0NfVkVSKSB8fCBf
TVNDX1ZFUiA8IDE2MDApCiAKIG5hbWVzcGFjZSBzdGQgewogICAgIGNsYXNzIG51bGxwdHJfdCB7
IH07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgJKHJldmlzaW9uIDc0NTg4KQ0KKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi9SZWZQdHIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTc0LDcgKzc0LDkgQEANCiAg
ICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KFQqKTsKICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0o
Y29uc3QgUGFzc1JlZlB0cjxUPiYpOwogICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBO
b25OdWxsUGFzc1JlZlB0cjxUPiYpOworI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBfTVNDX1ZF
UiA8IDE2MDAKICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpIHsgY2xl
YXIoKTsgcmV0dXJuICp0aGlzOyB9CisjZW5kaWYKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7CiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgTm9uTnVs
bFBhc3NSZWZQdHI8VT4mKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNzQ1ODgpDQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzE3Miw3ICszMTcy
LDcgQEANCiAgICAgICAgIGlmIChtX2ZvY3VzZWROb2RlKSB7CiAgICAgICAgICAgICAvLyBoYW5k
bGVyIHNoaWZ0ZWQgZm9jdXMKICAgICAgICAgICAgIGZvY3VzQ2hhbmdlQmxvY2tlZCA9IHRydWU7
Ci0gICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IDA7CisgICAgICAgICAgICBuZXdGb2N1c2Vk
Tm9kZSA9IChOb2RlKikgMDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgb2xkRm9jdXNl
ZE5vZGUtPmRpc3BhdGNoVUlFdmVudChldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgMCwgMCk7
IC8vIERPTSBsZXZlbCAzIG5hbWUgZm9yIHRoZSBidWJibGluZyBibHVyIGV2ZW50LgpAQCAtMzE4
Myw3ICszMTgzLDcgQEANCiAgICAgICAgIGlmIChtX2ZvY3VzZWROb2RlKSB7CiAgICAgICAgICAg
ICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMKICAgICAgICAgICAgIGZvY3VzQ2hhbmdlQmxvY2tl
ZCA9IHRydWU7Ci0gICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IDA7CisgICAgICAgICAgICBu
ZXdGb2N1c2VkTm9kZSA9IChOb2RlKikgMDsKICAgICAgICAgfQogICAgICAgICBpZiAob2xkRm9j
dXNlZE5vZGUgPT0gdGhpcyAmJiBvbGRGb2N1c2VkTm9kZS0+aGFzT25lUmVmKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCShyZXZpc2lv
biA3NDU4OCkNCisrKyBXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtNzQsNyArNzQsNyBAQA0KICAgICAgICAgLCB3aWR0aChWYWx1ZUF1dG8pCiAgICAg
ICAgICwgaGVpZ2h0KFZhbHVlQXV0bykKICAgICAgICAgLCB0YXJnZXREZW5zaXR5RHBpKFZhbHVl
QXV0bykKLSAgICAgICAgLCB1c2VyU2NhbGFibGUoVmFsdWVBdXRvKQorICAgICAgICAsIHVzZXJT
Y2FsYWJsZSgoYm9vbCkgVmFsdWVBdXRvKQogICAgIHsKICAgICB9CiAK
</data>
<flag name="review"
          id="68504"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77429</attachid>
            <date>2010-12-24 14:39:44 -0800</date>
            <delta_ts>2010-12-24 17:45:18 -0800</delta_ts>
            <desc>Latest patch for vs2010 build</desc>
            <filename>vs2010buildfix.patch</filename>
            <type>text/plain</type>
            <size>2997</size>
            <attacher name="Jake">jake</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gNzQ2
NTUpDQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDIzIEBADQorMjAx
MC0xMi0yNCAgSmFrZSBIZWxmZXJ0ICA8amFrZUBqYWtlb250aGVuZXQuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWQorCisgICAgICAgIEJ1ZyA1MTExNjogQnVpbGRpbmcgd2Via2l0
IHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwIGZhaWxzIGR1ZQorICAgICAgICB0byBhbWJpZ3VvdXMg
J29wZXJhdG9yID0nIG1ldGhvZHMgaW4gUmVmUHRyLgorICAgICAgICAKKyAgICAgICAgVGhlc2Ug
Zml4ZXMgYWxsb3cgd2Via2l0IHRvIGJ1aWxkIHVuZGVyIFZpc3VhbCBTdHVkaW8gMjAxMAorICAg
ICAgICAKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZVx3dGZcTnVsbFB0ci5oOgorICAgICAgICBB
ZGRlZCBndWFyZCBmb3IgVmlzdWFsIFN0dWRpbyAyMDEwIHNpbmNlIGl0IGluY2x1ZGVzIHN1cHBv
cnQKKyAgICAgICAgZm9yIG51bGxwdHJfdC4KKyAgICAgICAgCisgICAgICAgICogSmF2YVNjcmlw
dENvcmVcd3RmXFJlZlB0ci5oOgorICAgICAgICBSZW1vdmVkIG9wZXJhdG9yPShudWxscHRyX3Qp
IG92ZXJyaWRlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlXGRvbVxEb2N1bWVudC5jcHA6
CisgICAgICAgIEFkZGVkIHR3byBleHBsaWNpdCBzdGF0aWNfY2FzdDxOb2RlKj4gY2FzdHMuIEZv
ciBzb21lIHJlYXNvbgorICAgICAgICBtc3ZjIHdhcyBlcnJvcmluZyBvbiB0aG9zZSBsaW5lcyB3
aXRob3V0IHRoZSBjYXN0LgorCiAyMDEwLTEyLTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGVkIG1ha2VmaWxlcyB1c2VkIGJ5IEFwcGxlIGVuZ2luZWVy
cyB0byBmaXggYnVpbGQgd2l0aCB0aGUKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRy
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCShyZXZpc2lv
biA3NDY1NSkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMzUsNyArMzUsNyBAQA0KICAgICAjZGVmaW5lIF9faGFzX2ZlYXR1cmUoZmVhdHVyZSkg
MAogI2VuZGlmCiAKLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfbnVsbHB0cikKKyNpZiAhX19oYXNf
ZmVhdHVyZShjeHhfbnVsbHB0cikgJiYgKCFkZWZpbmVkKF9NU0NfVkVSKSB8fCBfTVNDX1ZFUiA8
IDE2MDApCiAKIG5hbWVzcGFjZSBzdGQgewogICAgIGNsYXNzIG51bGxwdHJfdCB7IH07CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvUmVmUHRyLmgJKHJldmlzaW9uIDc0NjU1KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi9SZWZQdHIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTc0LDcgKzc0LDkgQEANCiAgICAgICAgIFJl
ZlB0ciYgb3BlcmF0b3I9KFQqKTsKICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFz
c1JlZlB0cjxUPiYpOwogICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBOb25OdWxsUGFz
c1JlZlB0cjxUPiYpOworI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBfTVNDX1ZFUiA8IDE2MDAK
ICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgcmV0
dXJuICp0aGlzOyB9CisjZW5kaWYKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRy
JiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgTm9uTnVsbFBhc3NSZWZQ
dHI8VT4mKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNzQ2NTUpDQorKysgV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzE3Miw3ICszMTcyLDcgQEANCiAg
ICAgICAgIGlmIChtX2ZvY3VzZWROb2RlKSB7CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0
ZWQgZm9jdXMKICAgICAgICAgICAgIGZvY3VzQ2hhbmdlQmxvY2tlZCA9IHRydWU7Ci0gICAgICAg
ICAgICBuZXdGb2N1c2VkTm9kZSA9IDA7CisgICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IHN0
YXRpY19jYXN0PE5vZGUqPigwKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgb2xkRm9j
dXNlZE5vZGUtPmRpc3BhdGNoVUlFdmVudChldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgMCwg
MCk7IC8vIERPTSBsZXZlbCAzIG5hbWUgZm9yIHRoZSBidWJibGluZyBibHVyIGV2ZW50LgpAQCAt
MzE4Myw3ICszMTgzLDcgQEANCiAgICAgICAgIGlmIChtX2ZvY3VzZWROb2RlKSB7CiAgICAgICAg
ICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMKICAgICAgICAgICAgIGZvY3VzQ2hhbmdlQmxv
Y2tlZCA9IHRydWU7Ci0gICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IDA7CisgICAgICAgICAg
ICBuZXdGb2N1c2VkTm9kZSA9IHN0YXRpY19jYXN0PE5vZGUqPigwKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAob2xkRm9jdXNlZE5vZGUgPT0gdGhpcyAmJiBvbGRGb2N1c2VkTm9kZS0+aGFzT25l
UmVmKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77433</attachid>
            <date>2010-12-24 17:45:18 -0800</date>
            <delta_ts>2010-12-26 13:19:27 -0800</delta_ts>
            <desc>Fixes nullptr_t related build issues on vs2010</desc>
            <filename>vs2010buildfix.patch</filename>
            <type>text/plain</type>
            <size>7084</size>
            <attacher name="Jake">jake</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzQ2NTYpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDYwIEBADQorMjAxMC0xMi0yNCAgSmFr
ZSBIZWxmZXJ0ICA8amFrZUBqYWtlb250aGVuZXQuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWQorCisgICAgICAgIEJ1ZyA1MTExNjogQnVpbGRpbmcgd2Via2l0IHdpdGggVmlzdWFs
IFN0dWRpbyAyMDEwIGZhaWxzIGR1ZQorICAgICAgICB0byBhbWJpZ3VvdXMgJ29wZXJhdG9yID0n
IG1ldGhvZHMgaW4gUmVmUHRyLCBQYXNzUmVmUHRyLAorICAgICAgICBPd25BcnJheVB0ciwgUGFz
c093bkFycmF5UHRyLCBPd25QdHIsIFBhc3NPd25QdHIgYW5kIFJldGFpblB0ci4KKworICAgICAg
ICBUaGVzZSBmaXhlcyBhbGxvdyB3ZWJraXQgdG8gYnVpbGQgdW5kZXIgVmlzdWFsIFN0dWRpbyAy
MDEwCisKKyAgICAgICAgQWxsIG9mIHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggcmVzb2x2ZSB0
aGUgZm9sbG93aW5nIGVycm9yCisgICAgICAgIHdoZW4gY29tcGlsaW5nIHdpdGggTVNWQyAyMDEw
OgorCisgICAgICAgIC4uXC4uXC4uXFdlYkNvcmVcZG9tXERvY3VtZW50LmNwcCgzMTc1KTogZXJy
b3IgQzI1OTM6ICdvcGVyYXRvciA9JyBpcyBhbWJpZ3VvdXMKKyAgICAgICAgRzpcUmlhbGl0eVx3
ZWJraXRcSmF2YVNjcmlwdENvcmVcd3RmL1Bhc3NSZWZQdHIuaCg5NCk6IGNvdWxkIGJlCisgICAg
ICAgICdXVEY6OlBhc3NSZWZQdHI8VD4gJldURjo6UGFzc1JlZlB0cjxUPjo6b3BlcmF0b3IgPShz
dGQ6Om51bGxwdHJfdCknCisgICAgICAgIHdpdGgKKyAgICAgICAgWworICAgICAgICAgICAgVD1X
ZWJDb3JlOjpOb2RlCisgICAgICAgIF0KKyAgICAgICAgRzpcUmlhbGl0eVx3ZWJraXRcSmF2YVNj
cmlwdENvcmVcd3RmL1Bhc3NSZWZQdHIuaCg5Mik6IG9yCisgICAgICAgICdXVEY6OlBhc3NSZWZQ
dHI8VD4gJldURjo6UGFzc1JlZlB0cjxUPjo6b3BlcmF0b3IgPShUICopJworICAgICAgICB3aXRo
CisgICAgICAgIFsKKyAgICAgICAgICAgIFQ9V2ViQ29yZTo6Tm9kZQorICAgICAgICBdCisgICAg
ICAgIHdoaWxlIHRyeWluZyB0byBtYXRjaCB0aGUgYXJndW1lbnQgbGlzdCAnKFdURjo6UGFzc1Jl
ZlB0cjxUPiwgaW50KScKKyAgICAgICAgd2l0aAorICAgICAgICBbCisgICAgICAgICAgICBUPVdl
YkNvcmU6Ok5vZGUKKyAgICAgICAgXQorICAgICAgICAKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZVx3dGZcTnVsbFB0ci5oOgorICAgICAgICBBZGRlZCBndWFyZCBmb3IgVmlzdWFsIFN0dWRpbyAy
MDEwIHNpbmNlIGl0IGluY2x1ZGVzIHN1cHBvcnQKKyAgICAgICAgZm9yIG51bGxwdHJfdC4KKyAg
ICAgICAgCisgICAgICAgICogSmF2YVNjcmlwdENvcmVcd3RmXFJlZlB0ci5oOgorICAgICAgICBS
ZW1vdmVkIG9wZXJhdG9yPShudWxscHRyX3QpIG92ZXJyaWRlIGZvciBNU1ZDIDIwMTAuCisgICAg
ICAgIAorICAgICAgICAqIEphdmFTY3JpcHRDb3JlXHd0ZlxQYXNzUmVmUHRyLmg6CisgICAgICAg
IFJlbW92ZWQgb3BlcmF0b3I9KG51bGxwdHJfdCkgb3ZlcnJpZGUgZm9yIE1TVkMgMjAxMC4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlXHd0ZlxPd25BcnJheVB0ci5oOgorICAgICAgICBSZW1v
dmVkIG9wZXJhdG9yPShudWxscHRyX3QpIG92ZXJyaWRlIGZvciBNU1ZDIDIwMTAuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZVx3dGZcUGFzc093bkFycmF5UHRyLmg6CisgICAgICAgIFJlbW92
ZWQgb3BlcmF0b3I9KG51bGxwdHJfdCkgb3ZlcnJpZGUgZm9yIE1TVkMgMjAxMC4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlXHd0ZlxPd25QdHIuaDoKKyAgICAgICAgUmVtb3ZlZCBvcGVyYXRv
cj0obnVsbHB0cl90KSBvdmVycmlkZSBmb3IgTVNWQyAyMDEwLgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmVcd3RmXFBhc3NPd25QdHIuaDoKKyAgICAgICAgUmVtb3ZlZCBvcGVyYXRvcj0obnVs
bHB0cl90KSBvdmVycmlkZSBmb3IgTVNWQyAyMDEwLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmVcd3RmXFJldGFpblB0ci5oOgorICAgICAgICBSZW1vdmVkIG9wZXJhdG9yPShudWxscHRyX3Qp
IG92ZXJyaWRlIGZvciBNU1ZDIDIwMTAuCisKIDIwMTAtMTItMjQgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL051bGxQdHIuaAkocmV2aXNpb24gNzQ2NTYpDQorKysgSmF2YVNjcmlw
dENvcmUvd3RmL051bGxQdHIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM1LDcgKzM1LDcgQEANCiAg
ICAgI2RlZmluZSBfX2hhc19mZWF0dXJlKGZlYXR1cmUpIDAKICNlbmRpZgogCi0jaWYgIV9faGFz
X2ZlYXR1cmUoY3h4X251bGxwdHIpCisjaWYgIV9faGFzX2ZlYXR1cmUoY3h4X251bGxwdHIpICYm
ICghZGVmaW5lZChfTVNDX1ZFUikgfHwgX01TQ19WRVIgPCAxNjAwKQogCiBuYW1lc3BhY2Ugc3Rk
IHsKICAgICBjbGFzcyBudWxscHRyX3QgeyB9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL093
bkFycmF5UHRyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS93dGYvT3duQXJyYXlQ
dHIuaAkocmV2aXNpb24gNzQ2NTYpDQorKysgSmF2YVNjcmlwdENvcmUvd3RmL093bkFycmF5UHRy
LmgJKHdvcmtpbmcgY29weSkNCkBAIC03NCw3ICs3NCw5IEBADQogI2VuZGlmCiAKICAgICBPd25B
cnJheVB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYpOworI2lmICFkZWZp
bmVkKF9NU0NfVkVSKSB8fCBfTVNDX1ZFUiA8IDE2MDAKICAgICBPd25BcnJheVB0ciYgb3BlcmF0
b3I9KHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IHJldHVybiAqdGhpczsgfQorI2VuZGlmCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duQXJyYXlQdHImIG9wZXJhdG9yPShjb25zdCBQYXNz
T3duQXJyYXlQdHI8VT4mKTsKIAogICAgIHZvaWQgc3dhcChPd25BcnJheVB0ciYgbykgeyBzdGQ6
OnN3YXAobV9wdHIsIG8ubV9wdHIpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvT3duUHRy
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS93dGYvT3duUHRyLmgJKHJldmlzaW9u
IDc0NjU2KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTczLDcgKzczLDkgQEANCiAgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZPd25QdHI6Om1fcHRyIDogMDsgfQogCiAgICAgICAg
IE93blB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NPd25QdHI8VD4mKTsKKyNpZiAhZGVmaW5lZChf
TVNDX1ZFUikgfHwgX01TQ19WRVIgPCAxNjAwCiAgICAgICAgIE93blB0ciYgb3BlcmF0b3I9KHN0
ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IHJldHVybiAqdGhpczsgfQorI2VuZGlmCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NPd25QdHI8
VT4mKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwg
by5tX3B0cik7IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QYXNzT3duQXJyYXlQdHIuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QYXNzT3duQXJyYXlQdHIuaAkocmV2
aXNpb24gNzQ2NTYpDQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NPd25BcnJheVB0ci5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtNzMsNyArNzMsOSBAQA0KICNlbmRpZgogCiAgICAgUGFzc093bkFy
cmF5UHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc093bkFycmF5UHRyPFQ+Jik7CisjaWYgIWRlZmlu
ZWQoX01TQ19WRVIpIHx8IF9NU0NfVkVSIDwgMTYwMAogICAgIFBhc3NPd25BcnJheVB0ciYgb3Bl
cmF0b3I9KHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IHJldHVybiAqdGhpczsgfQorI2VuZGlm
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc093bkFycmF5UHRyJiBvcGVyYXRvcj0oY29u
c3QgUGFzc093bkFycmF5UHRyPFU+Jik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmll
bmQgUGFzc093bkFycmF5UHRyPFU+IGFkb3B0QXJyYXlQdHIoVSopOwpJbmRleDogSmF2YVNjcmlw
dENvcmUvd3RmL1Bhc3NPd25QdHIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9QYXNzT3duUHRyLmgJKHJldmlzaW9uIDc0NjU2KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9Q
YXNzT3duUHRyLmgJKHdvcmtpbmcgY29weSkNCkBAIC03Miw3ICs3Miw5IEBADQogICAgICAgICBv
cGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUGFz
c093blB0cjo6bV9wdHIgOiAwOyB9CiAKICAgICAgICAgUGFzc093blB0ciYgb3BlcmF0b3I9KGNv
bnN0IFBhc3NPd25QdHI8VD4mKTsKKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgX01TQ19WRVIg
PCAxNjAwCiAgICAgICAgIFBhc3NPd25QdHImIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkgeyBj
bGVhcigpOyByZXR1cm4gKnRoaXM7IH0KKyNlbmRpZgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBQYXNzT3duUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc093blB0cjxVPiYpOwogCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBQYXNzT3duUHRyPFU+IGFkb3B0UHRyKFUq
KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVmUHRyLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oCShyZXZpc2lvbiA3NDY1NikNCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtOTEsNyAr
OTEsOSBAQA0KIAogICAgICAgICBQYXNzUmVmUHRyJiBvcGVyYXRvcj0oVCopOwogICAgICAgICBQ
YXNzUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0ciYpOworI2lmICFkZWZpbmVkKF9N
U0NfVkVSKSB8fCBfTVNDX1ZFUiA8IDE2MDAKICAgICAgICAgUGFzc1JlZlB0ciYgb3BlcmF0b3I9
KHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IHJldHVybiAqdGhpczsgfQorI2VuZGlmCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNz
UmVmUHRyPFU+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9w
ZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mKTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1Jl
ZlB0ci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oCShyZXZp
c2lvbiA3NDY1NikNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC03NCw3ICs3NCw5IEBADQogICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShUKik7CiAg
ICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mKTsKICAgICAgICAg
UmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgTm9uTnVsbFBhc3NSZWZQdHI8VD4mKTsKKyNpZiAhZGVm
aW5lZChfTVNDX1ZFUikgfHwgX01TQ19WRVIgPCAxNjAwCiAgICAgICAgIFJlZlB0ciYgb3BlcmF0
b3I9KHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IHJldHVybiAqdGhpczsgfQorI2VuZGlmCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0
cjxVPiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShj
b25zdCBQYXNzUmVmUHRyPFU+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0
ciYgb3BlcmF0b3I9KGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPFU+Jik7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvUmV0YWluUHRyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS93
dGYvUmV0YWluUHRyLmgJKHJldmlzaW9uIDc0NjU2KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9S
ZXRhaW5QdHIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTg3LDggKzg3LDkgQEANCiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IFJldGFpblB0ciYgb3BlcmF0b3I9KGNvbnN0IFJldGFpblB0cjxV
PiYpOwogICAgICAgICBSZXRhaW5QdHImIG9wZXJhdG9yPShQdHJUeXBlKTsKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gUmV0YWluUHRyJiBvcGVyYXRvcj0oVSopOworI2lmICFkZWZpbmVk
KF9NU0NfVkVSKSB8fCBfTVNDX1ZFUiA8IDE2MDAKICAgICAgICAgUmV0YWluUHRyJiBvcGVyYXRv
cj0oc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgcmV0dXJuICp0aGlzOyB9Ci0KKyNlbmRpZgog
ICAgICAgICB2b2lkIGFkb3B0Q0YoUHRyVHlwZSk7CiAgICAgICAgIHZvaWQgYWRvcHROUyhQdHJU
eXBlKTsKICAgICAgICAgCg==
</data>
<flag name="review"
          id="68567"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="68568"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>