<?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>56826</bug_id>
          
          <creation_ts>2011-03-22 06:34:53 -0700</creation_ts>
          <short_desc>[Qt] Implement fullscreen playback for the GStreamer backend.</short_desc>
          <delta_ts>2011-04-06 11:44:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>371356</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-22 06:34:53 -0700</bug_when>
    <thetext>Today when building the Qt port with the GStreamer backend (DEFINES+=USE_GSTREAMER=1) there is no fullscreen playback support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371359</commentid>
    <comment_count>1</comment_count>
      <attachid>86457</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-22 06:39:09 -0700</bug_when>
    <thetext>Created attachment 86457
Proposed patch.

This patch implement the support in FullScreenVideoQt alongside with the Qt Multimedia support. I though about reusing the base class QWebFullScreenVideoHandler of the platform plugin but it required to change the interface of the plugin and the show(QMediaPlayer*) was also an issue (and I found very ugly to have a plugin interface with some ifdef inside). The #if defined(WTF_USE_GSTREAMER) &amp;&amp; WTF_USE_GSTREAMER is for moc to compile the class definition (moc does not expand the USE macro). Any feedback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371361</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-22 06:40:56 -0700</bug_when>
    <thetext>Attachment 86457 did not pass style-queue:

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

Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp:21:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 7 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>371364</commentid>
    <comment_count>3</comment_count>
      <attachid>86458</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-22 06:45:16 -0700</bug_when>
    <thetext>Created attachment 86458
V2 with changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371365</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-22 06:47:40 -0700</bug_when>
    <thetext>Attachment 86458 did not pass style-queue:

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

Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp:21:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 9 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>371491</commentid>
    <comment_count>5</comment_count>
      <attachid>86481</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-22 11:07:38 -0700</bug_when>
    <thetext>Created attachment 86481
V3 with style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377118</commentid>
    <comment_count>6</comment_count>
      <attachid>86481</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-31 06:54:55 -0700</bug_when>
    <thetext>Comment on attachment 86481
V3 with style fixes

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

r- because of a massive style problem ;)
And maybe a little because this is not tested and you don&apos;t say why :)

&gt; Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowPrivate.h:50
&gt; +    HTMLVideoElement *m_mediaElement;

Andreas: Style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377131</commentid>
    <comment_count>7</comment_count>
      <attachid>87719</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-31 07:11:30 -0700</bug_when>
    <thetext>Created attachment 87719
V4 with comments taken into accounts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377133</commentid>
    <comment_count>8</comment_count>
      <attachid>87721</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-31 07:12:56 -0700</bug_when>
    <thetext>Created attachment 87721
V5 with Changelog fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377134</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-31 07:13:43 -0700</bug_when>
    <thetext>How is this related to Simon&apos;s work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377136</commentid>
    <comment_count>10</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-31 07:16:02 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; How is this related to Simon&apos;s work?

It&apos;s not. Nothing to do with it. WebKit2 stuff is completely different. It won&apos;t conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377926</commentid>
    <comment_count>11</comment_count>
      <attachid>87721</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-04-01 11:14:18 -0700</bug_when>
    <thetext>Comment on attachment 87721
V5 with Changelog fixed.

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        No new tests because layout tests cover it. They are not yet activated
&gt; +        but will be any time soon.

Which tests? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377931</commentid>
    <comment_count>12</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-04-01 11:19:57 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 87721 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87721&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        No new tests because layout tests cover it. They are not yet activated
&gt; &gt; +        but will be any time soon.
&gt; 
&gt; Which tests? :)

media/media-fullscreen-inline.html
media/media-fullscreen-not-in-document.html

But I need to investigate why they don&apos;t pass yet despite the code is here. (They also fail for the QtMM implementation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380297</commentid>
    <comment_count>13</comment_count>
      <attachid>87721</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-04-06 06:01:37 -0700</bug_when>
    <thetext>Comment on attachment 87721
V5 with Changelog fixed.

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

Looks mostly good, but let&apos;s do one more iteration. :)

&gt; Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp:25
&gt;  #include &quot;PlatformVideoWindow.h&quot;
&gt;  
&gt; +#include &quot;HTMLVideoElement.h&quot;
&gt;  #include &quot;PlatformVideoWindowPrivate.h&quot;

Includes should be in alphabetic order.

&gt; Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp:53
&gt; +void FullScreenVideoWindow::closeEvent(QCloseEvent* event)

No need for the &apos;event&apos; name on the parameter.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp:47
&gt; +

Unnecessary empty line.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp:69
&gt; +    m_fullScreenWidget = reinterpret_cast&lt;FullScreenVideoWindow* &gt;(gstreamerGWorld-&gt;platformVideoWindow()-&gt;window());

Extra space after *.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp:75
&gt; +    m_fullScreenWidget-&gt;setVideoElement(m_videoElement);
&gt; +
&gt; +    connect(m_fullScreenWidget, SIGNAL(closed()), this, SLOT(windowClosed()));
&gt; +
&gt; +    m_fullScreenWidget-&gt;showFullScreen();

No need for the blank lines.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp:90
&gt; +    m_fullScreenWidget-&gt;setVideoElement(0);
&gt; +
&gt; +    m_fullScreenWidget-&gt;close();

Ditto.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp:103
&gt; +

Ditto.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp:175
&gt; +

Ditto.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp:202
&gt; +

Ditto.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:23
&gt; +#include &quot;Platform.h&quot;

#include &lt;wtf/Platform.h&gt;

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:42
&gt; +#if defined(WTF_USE_GSTREAMER) &amp;&amp; WTF_USE_GSTREAMER

#if USE(GSTREAMER)

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:49
&gt; +    ~GStreamerFullScreenVideoHandler() {};

Coding style, need a space between { and }. And remove the semicolon at end of line.

&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:64
&gt; +#if defined(ENABLE_QT_MULTIMEDIA) &amp;&amp; ENABLE_QT_MULTIMEDIA

#if ENABLE(QT_MULTIMEDIA)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380301</commentid>
    <comment_count>14</comment_count>
      <attachid>87721</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-04-06 06:09:35 -0700</bug_when>
    <thetext>Comment on attachment 87721
V5 with Changelog fixed.

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

&gt;&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:42
&gt;&gt; +#if defined(WTF_USE_GSTREAMER) &amp;&amp; WTF_USE_GSTREAMER
&gt; 
&gt; #if USE(GSTREAMER)

moc will barf on the USE() macro, that&apos;s why we need to do it like this :(

&gt;&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:64
&gt;&gt; +#if defined(ENABLE_QT_MULTIMEDIA) &amp;&amp; ENABLE_QT_MULTIMEDIA
&gt; 
&gt; #if ENABLE(QT_MULTIMEDIA)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380302</commentid>
    <comment_count>15</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-04-06 06:12:10 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 87721 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87721&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:42
&gt; &gt;&gt; +#if defined(WTF_USE_GSTREAMER) &amp;&amp; WTF_USE_GSTREAMER
&gt; &gt; 
&gt; &gt; #if USE(GSTREAMER)
&gt; 
&gt; moc will barf on the USE() macro, that&apos;s why we need to do it like this :(
&gt; 
&gt; &gt;&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:64
&gt; &gt;&gt; +#if defined(ENABLE_QT_MULTIMEDIA) &amp;&amp; ENABLE_QT_MULTIMEDIA
&gt; &gt; 
&gt; &gt; #if ENABLE(QT_MULTIMEDIA)
&gt; 
&gt; ditto

Right, so the ENABLE(QT_MULTIMEDIA) earlier in that file should be removed instead. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380399</commentid>
    <comment_count>16</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-04-06 08:33:10 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 87721 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87721&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:42
&gt; &gt; &gt;&gt; +#if defined(WTF_USE_GSTREAMER) &amp;&amp; WTF_USE_GSTREAMER
&gt; &gt; &gt; 
&gt; &gt; &gt; #if USE(GSTREAMER)
&gt; &gt; 
&gt; &gt; moc will barf on the USE() macro, that&apos;s why we need to do it like this :(
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.h:64
&gt; &gt; &gt;&gt; +#if defined(ENABLE_QT_MULTIMEDIA) &amp;&amp; ENABLE_QT_MULTIMEDIA
&gt; &gt; &gt; 
&gt; &gt; &gt; #if ENABLE(QT_MULTIMEDIA)
&gt; &gt; 
&gt; &gt; ditto
&gt; 
&gt; Right, so the ENABLE(QT_MULTIMEDIA) earlier in that file should be removed instead. :)

Well I did it on purpose. Where I used ENABLE(QT_MULTIMEDIA) it&apos;s because it&apos;s not related to moc (includes for example). So I picked readability vs consistency. But I can change :D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380409</commentid>
    <comment_count>17</comment_count>
      <attachid>87721</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-04-06 08:41:54 -0700</bug_when>
    <thetext>Comment on attachment 87721
V5 with Changelog fixed.

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowQt.cpp:25

&gt; 
&gt; Includes should be in alphabetic order.

Well PlatformVideoWindow.h is the primary header it should be on the first position. Though I will remove the extra space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380496</commentid>
    <comment_count>18</comment_count>
      <attachid>88448</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-04-06 09:41:12 -0700</bug_when>
    <thetext>Created attachment 88448
V6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380507</commentid>
    <comment_count>19</comment_count>
      <attachid>88454</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-04-06 09:48:50 -0700</bug_when>
    <thetext>Created attachment 88454
V7 with the changelog.

Sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380563</commentid>
    <comment_count>20</comment_count>
      <attachid>88454</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-04-06 10:26:38 -0700</bug_when>
    <thetext>Comment on attachment 88454
V7 with the changelog.

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380672</commentid>
    <comment_count>21</comment_count>
      <attachid>88454</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 11:43:54 -0700</bug_when>
    <thetext>Comment on attachment 88454
V7 with the changelog.

Clearing flags on attachment: 88454

Committed r83078: &lt;http://trac.webkit.org/changeset/83078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380673</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 11:44:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86457</attachid>
            <date>2011-03-22 06:39:09 -0700</date>
            <delta_ts>2011-03-22 06:45:16 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17153</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Q
bGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgKaW5kZXggMGFlNDU4
Ny4uOTdhYjY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRl
LmgKQEAgLTIwLDIxICsyMCwzNCBAQAogI2lmbmRlZiBQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0
ZV9oCiAjZGVmaW5lIFBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlX2gKIAorI2luY2x1ZGUgPFFU
aW1lcj4KICNpbmNsdWRlIDxRV2lkZ2V0PgogCiBjbGFzcyBRS2V5RXZlbnQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKKwogY2xhc3MgRnVsbFNjcmVl
blZpZGVvV2luZG93OiBwdWJsaWMgUVdpZGdldCB7CiBRX09CSkVDVAogcHVibGljOgogICAgIEZ1
bGxTY3JlZW5WaWRlb1dpbmRvdygpOworICAgIHZvaWQgc2V0VmlkZW9FbGVtZW50KEhUTUxWaWRl
b0VsZW1lbnQqKTsKIHNpZ25hbHM6CiAgICAgdm9pZCBjbG9zZWQoKTsKIHByb3RlY3RlZDoKLSAg
ICB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldik7Ci0gICAgYm9vbCBldmVudChRRXZl
bnQqIGV2KTsKKyAgICB2b2lkIGNsb3NlRXZlbnQoUUNsb3NlRXZlbnQqKTsKKyAgICB2b2lkIGtl
eVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CisgICAgYm9vbCBldmVudChRRXZlbnQqKTsKKworcHJp
dmF0ZSBzbG90czoKKyAgICB2b2lkIGhpZGVDdXJzb3IoKTsKKworcHJpdmF0ZToKKyAgICB2b2lk
IHNob3dDdXJzb3IoKTsKKyAgICBRVGltZXIgbV9jdXJzb3JUaW1lcjsKKyAgICBIVE1MVmlkZW9F
bGVtZW50ICptX21lZGlhRWxlbWVudDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRl
b1dpbmRvd1F0LmNwcAppbmRleCA4NzJkMDU1Li4zNjY3NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1F0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxh
dGZvcm1WaWRlb1dpbmRvd1F0LmNwcApAQCAtMTgsNiArMTgsNyBAQAogKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVZpZGVvV2luZG93LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0
ZS5oIgpAQCAtMjgsMjkgKzI5LDU1IEBACiAjaW5jbHVkZSA8UVBhbGV0dGU+CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0IGludCBnSGlkZU1vdXNlQ3Vyc29yRGVsYXkg
PSAzMDAwOworCiBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OkZ1bGxTY3JlZW5WaWRlb1dpbmRvdygp
CiAgICAgOiBRV2lkZ2V0KDAsIFF0OjpXaW5kb3cpCisgICAgLCBtX21lZGlhRWxlbWVudCgwKQog
ewogICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfTmF0aXZlV2luZG93KTsKLSAgICAvLyBTZXR0aW5n
IHRoZXNlIHZhbHVlcyBlbnN1cmVzIHNtb290aCByZXNpemluZyBzaW5jZSBpdAotICAgIC8vIHdp
bGwgcHJldmVudCB0aGUgc3lzdGVtIGZyb20gY2xlYXJpbmcgdGhlIGJhY2tncm91bmQuCisgICAg
c2V0V2luZG93TW9kYWxpdHkoUXQ6OkFwcGxpY2F0aW9uTW9kYWwpOwogICAgIHNldEF0dHJpYnV0
ZShRdDo6V0FfTm9TeXN0ZW1CYWNrZ3JvdW5kLCB0cnVlKTsKICAgICBzZXRBdHRyaWJ1dGUoUXQ6
OldBX1BhaW50T25TY3JlZW4sIHRydWUpOworCisgICAgbV9jdXJzb3JUaW1lci5zZXRTaW5nbGVT
aG90KHRydWUpOworICAgIGNvbm5lY3QoJm1fY3Vyc29yVGltZXIsIFNJR05BTCh0aW1lb3V0KCkp
LCB0aGlzLCBTTE9UKGhpZGVDdXJzb3IoKSkpOworfQorCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dp
bmRvdzo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIGVsZW1lbnQpCit7CisgICAg
bV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50OworfQorCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRv
dzo6Y2xvc2VFdmVudChRQ2xvc2VFdmVudCogZXZlbnQpCit7CisgICAgbV9jdXJzb3JUaW1lci5z
dG9wKCk7CisgICAgc2V0TW91c2VUcmFja2luZyhmYWxzZSk7CisgICAgcmVsZWFzZU1vdXNlKCk7
CisgICAgUUFwcGxpY2F0aW9uOjpyZXN0b3JlT3ZlcnJpZGVDdXJzb3IoKTsKIH0KIAogdm9pZCBG
dWxsU2NyZWVuVmlkZW9XaW5kb3c6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldikKIHsKLSAg
ICBpZiAoZXYtPmtleSgpID09IFF0OjpLZXlfRXNjYXBlKSB7Ci0gICAgICAgIGNsb3NlKCk7Cisg
ICAgaWYgKG1fbWVkaWFFbGVtZW50ICYmIGV2LT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSB7Cisg
ICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPnBhdXNlZCgpKQorICAgICAgICAgICAgbV9tZWRp
YUVsZW1lbnQtPnBhdXNlKHRydWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX21lZGlh
RWxlbWVudC0+cGxheSh0cnVlKTsKKyAgICB9IGVsc2UgaWYgKGV2LT5rZXkoKSA9PSBRdDo6S2V5
X0VzY2FwZSkKICAgICAgICAgZW1pdCBjbG9zZWQoKTsKLSAgICB9CisgICAgUVdpZGdldDo6a2V5
UHJlc3NFdmVudChldik7CiB9CiAKIGJvb2wgRnVsbFNjcmVlblZpZGVvV2luZG93OjpldmVudChR
RXZlbnQqIGV2KQogewogICAgIHN3aXRjaCAoZXYtPnR5cGUoKSkgeworICAgIGNhc2UgUUV2ZW50
OjpNb3VzZU1vdmU6CisgICAgICAgIHNob3dDdXJzb3IoKTsKKyAgICAgICAgZXYtPmFjY2VwdCgp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25EYmxD
bGljazoKLSAgICAgICAgY2xvc2UoKTsKKyAgICAgICAgZW1pdCBjbG9zZWQoKTsKICAgICAgICAg
ZXYtPmFjY2VwdCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpAQCAtNTgs
NiArODUsMTcgQEAgYm9vbCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OmV2ZW50KFFFdmVudCogZXYp
CiAgICAgfQogfQogCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6aGlkZUN1cnNvcigpCit7
CisgICAgUUFwcGxpY2F0aW9uOjpzZXRPdmVycmlkZUN1cnNvcihRQ3Vyc29yKFF0OjpCbGFua0N1
cnNvcikpOworfQorCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2hvd0N1cnNvcigpCit7
CisgICAgUUFwcGxpY2F0aW9uOjpyZXN0b3JlT3ZlcnJpZGVDdXJzb3IoKTsKKyAgICBtX2N1cnNv
clRpbWVyLnN0YXJ0KGdIaWRlTW91c2VDdXJzb3JEZWxheSk7Cit9CisKIAogUGxhdGZvcm1WaWRl
b1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1F0V2ViS2l0LnBybyBiL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQucHJvCmluZGV4
IDRiN2JiMDUuLjllZTVhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQu
cHJvCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQucHJvCkBAIC0yMDUsMTMgKzIwNSwx
MyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xKSB7CiAK
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAgICAgIWNvbnRhaW5zKERFRklO
RVMsIFVTRV9HU1RSRUFNRVI9MSk6Y29udGFpbnMoTU9CSUxJVFlfQ09ORklHLCBtdWx0aW1lZGlh
KSB7Ci0gICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgJCRQV0QvV2ViQ29yZVN1cHBv
cnQvRnVsbFNjcmVlblZpZGVvUXQuaCBcCi0gICAgICAgICAgICAkJFBXRC9XZWJDb3JlU3VwcG9y
dC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuaAorICAgICAgICBIRUFERVJTICs9ICQkUFdEL1dlYkNv
cmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdldC5oCisgICAgICAgIFNPVVJDRVMgKz0gJCRQ
V0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvV2lkZ2V0LmNwcAorICAgIH0KIAotICAg
ICAgICBTT1VSQ0VTICs9IFwKLSAgICAgICAgICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxT
Y3JlZW5WaWRlb1F0LmNwcCBcCi0gICAgICAgICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxs
U2NyZWVuVmlkZW9XaWRnZXQuY3BwCisgICAgY29udGFpbnMoREVGSU5FUywgVVNFX0dTVFJFQU1F
Uj0xKSB8IGNvbnRhaW5zKE1PQklMSVRZX0NPTkZJRywgbXVsdGltZWRpYSkgeworICAgICAgICBI
RUFERVJTICs9ICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKKyAgICAg
ICAgU09VUkNFUyArPSAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAKaW5kZXggYWNmYTY2NC4uZWM1ZWQ3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTc1LDEzICs3
NSwxNSBAQAogI2luY2x1ZGUgPHF0b29sdGlwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUo
VklERU8pCiAjaW5jbHVkZSAiRnVsbFNjcmVlblZpZGVvUXQuaCIKICNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVv
RWxlbWVudC5oIgorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZVF0LmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTkwLDcgKzkyLDcgQEAgYm9vbCBDaHJvbWVDbGllbnRRdDo6ZHVtcFZpc2l0ZWRMaW5rc0Nh
bGxiYWNrcyA9IGZhbHNlOwogQ2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KFFXZWJQYWdl
KiB3ZWJQYWdlKQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCiAgICAgLCBtX2V2ZW50TG9vcCgw
KQotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxF
KFZJREVPKQogICAgICwgbV9mdWxsU2NyZWVuVmlkZW8oMCkKICNlbmRpZgogewpAQCAtMTAyLDcg
KzEwNCw3IEBAIENocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50UXQoKQogICAgIGlmIChtX2V2
ZW50TG9vcCkKICAgICAgICAgbV9ldmVudExvb3AtPmV4aXQoKTsKIAotI2lmIEVOQUJMRShWSURF
TykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogICAgIGRlbGV0
ZSBtX2Z1bGxTY3JlZW5WaWRlbzsKICNlbmRpZgogfQpAQCAtNjUwLDcgKzY1Miw3IEBAIEludFJl
Y3QgQ2hyb21lQ2xpZW50UXQ6OnZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25z
dAogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1FRElB
KQorI2lmIEVOQUJMRShWSURFTykKIEZ1bGxTY3JlZW5WaWRlb1F0KiBDaHJvbWVDbGllbnRRdDo6
ZnVsbFNjcmVlblZpZGVvKCkKIHsKICAgICBpZiAoIW1fZnVsbFNjcmVlblZpZGVvKQpAQCAtNjcz
LDEzICs2NzUsNiBAQCB2b2lkIENocm9tZUNsaWVudFF0OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2Rl
KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OnZpZGVvVGFnKSk7CiAKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQg
PSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7Ci0gICAgUGxhdGZvcm1NZWRp
YSBwbGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCk7Ci0KLSAgICBB
U1NFUlQocGxhdGZvcm1NZWRpYS50eXBlID09IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJU
eXBlKTsKLSAgICBpZiAocGxhdGZvcm1NZWRpYS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlF0TWVk
aWFQbGF5ZXJUeXBlKQotICAgICAgICByZXR1cm47Ci0KICAgICBmdWxsU2NyZWVuVmlkZW8oKS0+
ZW50ZXJGdWxsU2NyZWVuRm9yTm9kZShub2RlKTsKIH0KIApAQCAtNjg3LDEzICs2ODIsNiBAQCB2
b2lkIENocm9tZUNsaWVudFF0OjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcp
KTsKIAotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhU
TUxWaWRlb0VsZW1lbnQqPihub2RlKTsKLSAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEg
PSB2aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKLQotICAgIEFTU0VSVChwbGF0Zm9ybU1l
ZGlhLnR5cGUgPT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpOwotICAgIGlmIChw
bGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIGZ1bGxTY3JlZW5WaWRlbygpLT5leGl0RnVsbFNjcmVlbkZv
ck5vZGUobm9kZSk7CiB9IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggYTEyYzJlYy4uMTUwMDVlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtNTAs
NyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RydWN0IEZyYW1lTG9hZFJlcXVl
c3Q7CiAgICAgY2xhc3MgUXRBYnN0cmFjdFdlYlBvcHVwOwogICAgIHN0cnVjdCBWaWV3cG9ydEFy
Z3VtZW50czsKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorI2lm
IEVOQUJMRShWSURFTykKICAgICBjbGFzcyBGdWxsU2NyZWVuVmlkZW9RdDsKICNlbmRpZgogCkBA
IC0xNjYsNyArMTY2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIHsgfQogI2VuZGlmCiAgCi0jaWYgRU5BQkxFKFZJREVP
KSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSopOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKTsKQEAgLTIwNiw3ICsyMDYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbWVudUJhclZpc2libGU7CiAg
ICAgICAgIFFFdmVudExvb3AqIG1fZXZlbnRMb29wOwogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBF
TkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgICAgIEZ1bGxTY3Jl
ZW5WaWRlb1F0KiBtX2Z1bGxTY3JlZW5WaWRlbzsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCmluZGV4IGNj
Y2E0M2MuLjQ5ZmVhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCkBAIC0yMiwxOCArMjIsNzYgQEAKICNpbmNsdWRl
ICJGdWxsU2NyZWVuVmlkZW9RdC5oIgogCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKKyNp
ZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICNpbmNsdWRlICJGdWxsU2NyZWVuVmlkZW9XaWRnZXQu
aCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVRdC5oIgorI2VuZGlmCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgotI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZVF0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogCisjaWYgVVNFKEdTVFJF
QU1FUikKKyNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVZp
ZGVvV2luZG93UHJpdmF0ZS5oIgorI2VuZGlmCiAKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkK
ICNpbmNsdWRlIDxRR3JhcGhpY3NWaWRlb0l0ZW0+CiAjaW5jbHVkZSA8UU1lZGlhUGxheWVyPgor
I2VuZGlmCisjaW5jbHVkZSA8UVdpZGdldD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYg
VVNFKEdTVFJFQU1FUikKKworR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6R1N0cmVh
bWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCisgICAgOiBtX3ZpZGVvRWxlbWVudCgwKQorICAg
ICwgbV9mdWxsU2NyZWVuV2lkZ2V0KDApCit7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVl
blZpZGVvSGFuZGxlcjo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgbV92aWRlb0VsZW1lbnQgPSBlbGVtZW50OworfQorCit2b2lkIEdTdHJlYW1lckZ1
bGxTY3JlZW5WaWRlb0hhbmRsZXI6OmVudGVyRnVsbFNjcmVlbigpCit7CisgICAgaWYgKG1fdmlk
ZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSAhPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
OjpHU3RyZWFtZXJHV29ybGRUeXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBHU3RyZWFtZXJH
V29ybGQqIGdzdHJlYW1lckdXb3JsZCA9IG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCku
bWVkaWEuZ3N0cmVhbWVyR1dvcmxkOworCisgICAgaWYgKCFnc3RyZWFtZXJHV29ybGQtPmVudGVy
RnVsbHNjcmVlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQg
PSByZWludGVycHJldF9jYXN0PEZ1bGxTY3JlZW5WaWRlb1dpbmRvdyogPihnc3RyZWFtZXJHV29y
bGQtPnBsYXRmb3JtVmlkZW9XaW5kb3coKS0+d2luZG93KCkpOworCisgICAgbV9mdWxsU2NyZWVu
V2lkZ2V0LT5zZXRWaWRlb0VsZW1lbnQobV92aWRlb0VsZW1lbnQpOworCisgICAgY29ubmVjdCht
X2Z1bGxTY3JlZW5XaWRnZXQsIFNJR05BTChjbG9zZWQoKSksIHRoaXMsIFNMT1Qod2luZG93Q2xv
c2VkKCkpKTsKKworICAgIG1fZnVsbFNjcmVlbldpZGdldC0+c2hvd0Z1bGxTY3JlZW4oKTsKK30K
Kwordm9pZCBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjp3aW5kb3dDbG9zZWQoKQor
eworICAgIG1fdmlkZW9FbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIEdTdHJl
YW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OmV4aXRGdWxsU2NyZWVuKCkKK3sKKyAgICBpZiAo
bV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWE6OkdTdHJlYW1lckdXb3JsZFR5cGUpCisgICAgICAgIG1fdmlkZW9FbGVtZW50LT5wbGF0
Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5leGl0RnVsbHNjcmVlbigpOworCisg
ICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5zZXRWaWRlb0VsZW1lbnQoMCk7CisKKyAgICBtX2Z1bGxT
Y3JlZW5XaWRnZXQtPmNsb3NlKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShRVF9NVUxUSU1F
RElBKQogYm9vbCBEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6c19zaG91bGRGb3JjZUZ1
bGxTY3JlZW5WaWRlb1BsYXliYWNrID0gZmFsc2U7CiAKIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCkBAIC00Miw2ICsxMDAsOCBA
QCBEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXIoKQogewogICAgIGNvbm5lY3QobV9mdWxsU2NyZWVuV2lkZ2V0LCBTSUdOQUwoZGlkRXhp
dEZ1bGxTY3JlZW4oKSksIHRoaXMsIFNJR05BTChmdWxsU2NyZWVuQ2xvc2VkKCkpKTsKICAgICBt
X2Z1bGxTY3JlZW5XaWRnZXQtPmhpZGUoKTsKKworICAgIG1fZnVsbFNjcmVlbldpZGdldC0+Y2xv
c2UoKTsKIH0KIAogRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6On5EZWZhdWx0RnVsbFNj
cmVlblZpZGVvSGFuZGxlcigpCkBAIC03MiwyNCArMTMyLDM2IEBAIHZvaWQgRGVmYXVsdEZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXI6OmV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX2Z1bGxTY3JlZW5X
aWRnZXQtPmNsb3NlKCk7CiB9CisjZW5kaWYKIAogRnVsbFNjcmVlblZpZGVvUXQ6OkZ1bGxTY3Jl
ZW5WaWRlb1F0KENocm9tZUNsaWVudFF0KiBjaHJvbWVDbGllbnQpCiAgICAgOiBtX2Nocm9tZUNs
aWVudChjaHJvbWVDbGllbnQpCiAgICAgLCBtX3ZpZGVvRWxlbWVudCgwKQogewogICAgIFFfQVNT
RVJUKG1fY2hyb21lQ2xpZW50KTsKLSAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIgPSBtX2No
cm9tZUNsaWVudC0+bV9wbGF0Zm9ybVBsdWdpbi5jcmVhdGVGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
KCk7CiAKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyAgICBtX0Z1bGxTY3JlZW5WaWRlb0hh
bmRsZXIgPSBtX2Nocm9tZUNsaWVudC0+bV9wbGF0Zm9ybVBsdWdpbi5jcmVhdGVGdWxsU2NyZWVu
VmlkZW9IYW5kbGVyKCk7CiAgICAgaWYgKCFtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpCiAgICAg
ICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciA9IG5ldyBEZWZhdWx0RnVsbFNjcmVlblZpZGVv
SGFuZGxlcjsKIAogICAgIGlmIChtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpCiAgICAgICAgIGNv
bm5lY3QobV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyLCBTSUdOQUwoZnVsbFNjcmVlbkNsb3NlZCgp
KSwgdGhpcywgU0xPVChhYm91dFRvQ2xvc2UoKSkpOworI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVB
TUVSKQorICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1lciA9IG5ldyBHU3RyZWFt
ZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOworI2VuZGlmCiB9CiAKIEZ1bGxTY3JlZW5WaWRlb1F0
Ojp+RnVsbFNjcmVlblZpZGVvUXQoKQogeworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogICAg
IGRlbGV0ZSBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVB
TUVSKQorICAgIGRlbGV0ZSBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5k
aWYKIH0KIAogdm9pZCBGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9yTm9kZShO
b2RlKiBub2RlKQpAQCAtOTcsMjUgKzE2OSw1NiBAQCB2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0Ojpl
bnRlckZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgUV9BU1NFUlQobm9kZSk7CiAg
ICAgUV9BU1NFUlQobV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKTsKIAorICAgIG1fdmlkZW9FbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOworCisjaWYgRU5BQkxF
KFFUX01VTFRJTUVESUEpCisKKyAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBz
dGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7CisgICAgUGxhdGZvcm1NZWRpYSBw
bGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCk7CisKKyAgICBBU1NF
UlQocGxhdGZvcm1NZWRpYS50eXBlID09IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBl
KTsKKyAgICBpZiAocGxhdGZvcm1NZWRpYS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQ
bGF5ZXJUeXBlKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1fRnVsbFNjcmVlblZpZGVv
SGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1l
ZGlhUGxheWVyUXQgPSBtZWRpYVBsYXllckZvck5vZGUobm9kZSk7CisgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRpYVBsYXllcigpOwogICAgIG1lZGlhUGxheWVy
UXQtPnJlbW92ZVZpZGVvSXRlbSgpOwogICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlci0+ZW50
ZXJGdWxsU2NyZWVuKG1lZGlhUGxheWVyUXQtPm1lZGlhUGxheWVyKCkpOworI2VuZGlmCisKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1lci0+
c2V0VmlkZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50KTsKKyAgICBtX0Z1bGxTY3JlZW5WaWRlb0hh
bmRsZXJHU3RyZWFtZXItPmVudGVyRnVsbFNjcmVlbigpOworI2VuZGlmCiB9CiAKIHZvaWQgRnVs
bFNjcmVlblZpZGVvUXQ6OmV4aXRGdWxsU2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogewogICAg
IFFfQVNTRVJUKG5vZGUpOworCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisKKyAgICBIVE1M
VmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50
Kj4obm9kZSk7CisgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVtZW50
LT5wbGF0Zm9ybU1lZGlhKCk7CisKKyAgICBBU1NFUlQocGxhdGZvcm1NZWRpYS50eXBlID09IFBs
YXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKTsKKyAgICBpZiAocGxhdGZvcm1NZWRpYS50
eXBlICE9IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKQorICAgICAgICByZXR1cm47
CisKICAgICBRX0FTU0VSVChtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOwogCiAgICAgaWYgKCFt
X0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fRnVsbFNj
cmVlblZpZGVvSGFuZGxlci0+ZXhpdEZ1bGxTY3JlZW4oKTsKLSAgICBNZWRpYVBsYXllclByaXZh
dGVRdCogbWVkaWFQbGF5ZXJRdCA9IG1lZGlhUGxheWVyRm9yTm9kZShub2RlKTsKKyAgICBNZWRp
YVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5ZXJRdCA9IG1lZGlhUGxheWVyKCk7CiAgICAgbWVk
aWFQbGF5ZXJRdC0+cmVzdG9yZVZpZGVvSXRlbSgpOworI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1F
UikKKyAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXItPmV4aXRGdWxsU2NyZWVu
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBGdWxsU2NyZWVuVmlkZW9RdDo6YWJvdXRUb0Nsb3NlKCkK
QEAgLTEyNCwyNCArMjI3LDMzIEBAIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmFib3V0VG9DbG9z
ZSgpCiAgICAgbV92aWRlb0VsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7CiB9CiAKKyNpZiBFTkFC
TEUoUVRfTVVMVElNRURJQSkKIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBGdWxsU2NyZWVuVmlkZW9R
dDo6bWVkaWFQbGF5ZXIoKQogewogICAgIFFfQVNTRVJUKG1fdmlkZW9FbGVtZW50KTsKICAgICBQ
bGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEgPSBtX3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRp
YSgpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVRdCo+KHBsYXRm
b3JtTWVkaWEubWVkaWEucXRNZWRpYVBsYXllcik7CiB9CisjZW5kaWYKIAotTWVkaWFQbGF5ZXJQ
cml2YXRlUXQqIEZ1bGxTY3JlZW5WaWRlb1F0OjptZWRpYVBsYXllckZvck5vZGUoTm9kZSogbm9k
ZSkKK2Jvb2wgRnVsbFNjcmVlblZpZGVvUXQ6OnJlcXVpcmVzRnVsbFNjcmVlbkZvclZpZGVvUGxh
eWJhY2soKQogewotICAgIFFfQVNTRVJUKG5vZGUpOwotICAgIGlmIChub2RlKQotICAgICAgICBt
X3ZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihub2RlKTsKLSAg
ICByZXR1cm4gbWVkaWFQbGF5ZXIoKTsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyAgICBy
ZXR1cm4gbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyID8gbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVy
LT5yZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkgOiBmYWxzZTsKKyNlbmRpZgor
I2lmIFVTRShHU1RSRUFNRVIpCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKLWJvb2wg
RnVsbFNjcmVlblZpZGVvUXQ6OnJlcXVpcmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2soKQor
Ym9vbCBGdWxsU2NyZWVuVmlkZW9RdDo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
RnVsbFNjcmVlblZpZGVvSGFuZGxlciA/IG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlci0+cmVxdWly
ZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpIDogZmFsc2U7CisjaWYgRU5BQkxFKFFUX01V
TFRJTUVESUEpCisgICAgcmV0dXJuIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcjsKKyNlbmRpZgor
I2lmIFVTRShHU1RSRUFNRVIpCisgICAgcmV0dXJuIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdT
dHJlYW1lcjsKKyNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKaW5kZXggYTQ4YTg4Mi4uZTAxMTIzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9R
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVv
UXQuaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBGdWxsU2NyZWVuVmlkZW9RdF9oCiAjZGVm
aW5lIEZ1bGxTY3JlZW5WaWRlb1F0X2gKIAorI2luY2x1ZGUgIlBsYXRmb3JtLmgiCiAjaW5jbHVk
ZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgiCiAjaW5jbHVkZSA8UU9iamVjdD4KIApAQCAtMzQs
OCArMzUsMzMgQEAgY2xhc3MgQ2hyb21lQ2xpZW50UXQ7CiBjbGFzcyBGdWxsU2NyZWVuVmlkZW9X
aWRnZXQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgTm9kZTsKKyNpZiBFTkFCTEUo
UVRfTVVMVElNRURJQSkKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVF0OworI2VuZGlmCiAKKyNp
ZiBkZWZpbmVkKFdURl9VU0VfR1NUUkVBTUVSKSAmJiBXVEZfVVNFX0dTVFJFQU1FUgorY2xhc3Mg
RnVsbFNjcmVlblZpZGVvV2luZG93OworCitjbGFzcyBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgR1N0
cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOworICAgIH5HU3RyZWFtZXJGdWxsU2NyZWVu
VmlkZW9IYW5kbGVyKCkge307CisgICAgdm9pZCBzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxl
bWVudCopOworCisgICAgdm9pZCBlbnRlckZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxs
U2NyZWVuKCk7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgd2luZG93Q2xvc2VkKCk7CisK
K3ByaXZhdGU6CisgICAgSFRNTFZpZGVvRWxlbWVudCogbV92aWRlb0VsZW1lbnQ7CisgICAgRnVs
bFNjcmVlblZpZGVvV2luZG93KiBtX2Z1bGxTY3JlZW5XaWRnZXQ7Cit9OworI2VuZGlmCisKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9RVF9NVUxUSU1FRElBKSAmJiBFTkFCTEVfUVRfTVVMVElNRURJQQog
Y2xhc3MgRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIgOiBwdWJsaWMgUVdlYkZ1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXIgewogICAgIFFfT0JKRUNUCiBwdWJsaWM6CkBAIC01MSw2ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc19zaG91bGRGb3JjZUZ1bGxTY3JlZW5WaWRlb1Bs
YXliYWNrOwogICAgIEZ1bGxTY3JlZW5WaWRlb1dpZGdldCAqbV9mdWxsU2NyZWVuV2lkZ2V0Owog
fTsKKyNlbmRpZgogCiBjbGFzcyBGdWxsU2NyZWVuVmlkZW9RdCA6IHB1YmxpYyBRT2JqZWN0IHsK
ICAgICBRX09CSkVDVApAQCAtNjEsMTEgKzg4LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZW50ZXJGdWxsU2NyZWVuRm9yTm9kZShOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRG
dWxsU2NyZWVuRm9yTm9kZShOb2RlKik7CiAgICAgYm9vbCByZXF1aXJlc0Z1bGxTY3JlZW5Gb3JW
aWRlb1BsYXliYWNrKCk7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyAgcmV0dXJuIG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlcjsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCiBwcml2
YXRlOgorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0
KiBtZWRpYVBsYXllcigpOwotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBtZWRpYVBsYXllckZv
ck5vZGUoTm9kZSogPSAwKTsKKyNlbmRpZgogCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgYWJv
dXRUb0Nsb3NlKCk7CkBAIC03Myw3ICsxMDEsMTIgQEAgcHJpdmF0ZSBzbG90czoKIHByaXZhdGU6
CiAgICAgQ2hyb21lQ2xpZW50UXQqIG1fY2hyb21lQ2xpZW50OwogICAgIEhUTUxWaWRlb0VsZW1l
bnQqIG1fdmlkZW9FbGVtZW50OworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogICAgIFFXZWJG
dWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CisjZW5kaWYK
KyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIq
IG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1lcjsKKyNlbmRpZgogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86458</attachid>
            <date>2011-03-22 06:45:16 -0700</date>
            <delta_ts>2011-03-22 11:07:38 -0700</delta_ts>
            <desc>V2 with changelog</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20448</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMmQxMjQ0Li5iODRlMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTEtMDMtMjIgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBJbXBsZW1lbnQgZnVsbHNjcmVlbiBwbGF5YmFjayBmb3IgdGhlIEdTdHJlYW1lciBiYWNrZW5k
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MjYK
KworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZnVsbHNjcmVlbiBwbGF5YmFjayB3aGVu
IGJ1aWxkaW5nIHRoZQorICAgICAgICBRdCBwb3J0IHdpdGggdGhlIEdTdHJlYW1lciBiYWNrZW5k
IChERUZJTkVTKz1VU0VfR1NUUkVBTUVSPTEpLgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
aXMgZG9uZSBpbiBGdWxsU2NyZWVuVmlkZW9RdCBhbG9uZ3NpZGUgd2l0aAorICAgICAgICB0aGUg
UXQgTXVsdGltZWRpYSBzdXBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHA6CisgICAgICAgIChG
dWxsU2NyZWVuVmlkZW9XaW5kb3c6OkZ1bGxTY3JlZW5WaWRlb1dpbmRvdyk6CisgICAgICAgIChG
dWxsU2NyZWVuVmlkZW9XaW5kb3c6OnNldFZpZGVvRWxlbWVudCk6CisgICAgICAgIChGdWxsU2Ny
ZWVuVmlkZW9XaW5kb3c6OmNsb3NlRXZlbnQpOgorICAgICAgICAoRnVsbFNjcmVlblZpZGVvV2lu
ZG93OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6ZXZl
bnQpOgorICAgICAgICAoRnVsbFNjcmVlblZpZGVvV2luZG93OjpoaWRlQ3Vyc29yKToKKyAgICAg
ICAgKEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2hvd0N1cnNvcik6CisKIDIwMTEtMDMtMjEgIEph
ZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZh
dGUuaAppbmRleCAwYWU0NTg3Li45N2FiNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvd1ByaXZhdGUuaApAQCAtMjAsMjEgKzIwLDM0IEBACiAjaWZuZGVmIFBsYXRmb3Jt
VmlkZW9XaW5kb3dQcml2YXRlX2gKICNkZWZpbmUgUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGVf
aAogCisjaW5jbHVkZSA8UVRpbWVyPgogI2luY2x1ZGUgPFFXaWRnZXQ+CiAKIGNsYXNzIFFLZXlF
dmVudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MVmlkZW9FbGVtZW50Owor
CiBjbGFzcyBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6IHB1YmxpYyBRV2lkZ2V0IHsKIFFfT0JKRUNU
CiBwdWJsaWM6CiAgICAgRnVsbFNjcmVlblZpZGVvV2luZG93KCk7CisgICAgdm9pZCBzZXRWaWRl
b0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwogc2lnbmFsczoKICAgICB2b2lkIGNsb3NlZCgp
OwogcHJvdGVjdGVkOgotICAgIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2KTsKLSAg
ICBib29sIGV2ZW50KFFFdmVudCogZXYpOworICAgIHZvaWQgY2xvc2VFdmVudChRQ2xvc2VFdmVu
dCopOworICAgIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqKTsKKyAgICBib29sIGV2ZW50
KFFFdmVudCopOworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgaGlkZUN1cnNvcigpOworCitw
cml2YXRlOgorICAgIHZvaWQgc2hvd0N1cnNvcigpOworICAgIFFUaW1lciBtX2N1cnNvclRpbWVy
OworICAgIEhUTUxWaWRlb0VsZW1lbnQgKm1fbWVkaWFFbGVtZW50OwogfTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvd1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCmluZGV4IDg3MmQwNTUuLjM2Njc2OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0
Zm9ybVZpZGVvV2luZG93UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCkBAIC0xOCw2ICsxOCw3IEBA
CiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3cuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
VmlkZW9XaW5kb3dQcml2YXRlLmgiCkBAIC0yOCwyOSArMjksNTUgQEAKICNpbmNsdWRlIDxRUGFs
ZXR0ZT4KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3QgaW50IGdIaWRl
TW91c2VDdXJzb3JEZWxheSA9IDMwMDA7CisKIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6RnVsbFNj
cmVlblZpZGVvV2luZG93KCkKICAgICA6IFFXaWRnZXQoMCwgUXQ6OldpbmRvdykKKyAgICAsIG1f
bWVkaWFFbGVtZW50KDApCiB7CiAgICAgc2V0QXR0cmlidXRlKFF0OjpXQV9OYXRpdmVXaW5kb3cp
OwotICAgIC8vIFNldHRpbmcgdGhlc2UgdmFsdWVzIGVuc3VyZXMgc21vb3RoIHJlc2l6aW5nIHNp
bmNlIGl0Ci0gICAgLy8gd2lsbCBwcmV2ZW50IHRoZSBzeXN0ZW0gZnJvbSBjbGVhcmluZyB0aGUg
YmFja2dyb3VuZC4KKyAgICBzZXRXaW5kb3dNb2RhbGl0eShRdDo6QXBwbGljYXRpb25Nb2RhbCk7
CiAgICAgc2V0QXR0cmlidXRlKFF0OjpXQV9Ob1N5c3RlbUJhY2tncm91bmQsIHRydWUpOwogICAg
IHNldEF0dHJpYnV0ZShRdDo6V0FfUGFpbnRPblNjcmVlbiwgdHJ1ZSk7CisKKyAgICBtX2N1cnNv
clRpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7CisgICAgY29ubmVjdCgmbV9jdXJzb3JUaW1lciwg
U0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNMT1QoaGlkZUN1cnNvcigpKSk7Cit9CisKK3ZvaWQg
RnVsbFNjcmVlblZpZGVvV2luZG93OjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK3ZvaWQgRnVs
bFNjcmVlblZpZGVvV2luZG93OjpjbG9zZUV2ZW50KFFDbG9zZUV2ZW50KiBldmVudCkKK3sKKyAg
ICBtX2N1cnNvclRpbWVyLnN0b3AoKTsKKyAgICBzZXRNb3VzZVRyYWNraW5nKGZhbHNlKTsKKyAg
ICByZWxlYXNlTW91c2UoKTsKKyAgICBRQXBwbGljYXRpb246OnJlc3RvcmVPdmVycmlkZUN1cnNv
cigpOwogfQogCiB2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6a2V5UHJlc3NFdmVudChRS2V5
RXZlbnQqIGV2KQogewotICAgIGlmIChldi0+a2V5KCkgPT0gUXQ6OktleV9Fc2NhcGUpIHsKLSAg
ICAgICAgY2xvc2UoKTsKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYgZXYtPmtleSgpID09IFF0
OjpLZXlfU3BhY2UpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudC0+cGF1c2VkKCkpCisg
ICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+cGF1c2UodHJ1ZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wbGF5KHRydWUpOworICAgIH0gZWxzZSBpZiAoZXYt
PmtleSgpID09IFF0OjpLZXlfRXNjYXBlKQogICAgICAgICBlbWl0IGNsb3NlZCgpOwotICAgIH0K
KyAgICBRV2lkZ2V0OjprZXlQcmVzc0V2ZW50KGV2KTsKIH0KIAogYm9vbCBGdWxsU2NyZWVuVmlk
ZW9XaW5kb3c6OmV2ZW50KFFFdmVudCogZXYpCiB7CiAgICAgc3dpdGNoIChldi0+dHlwZSgpKSB7
CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlTW92ZToKKyAgICAgICAgc2hvd0N1cnNvcigpOworICAg
ICAgICBldi0+YWNjZXB0KCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUUV2ZW50
OjpNb3VzZUJ1dHRvbkRibENsaWNrOgotICAgICAgICBjbG9zZSgpOworICAgICAgICBlbWl0IGNs
b3NlZCgpOwogICAgICAgICBldi0+YWNjZXB0KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGRlZmF1bHQ6CkBAIC01OCw2ICs4NSwxNyBAQCBib29sIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6
ZXZlbnQoUUV2ZW50KiBldikKICAgICB9CiB9CiAKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93
OjpoaWRlQ3Vyc29yKCkKK3sKKyAgICBRQXBwbGljYXRpb246OnNldE92ZXJyaWRlQ3Vyc29yKFFD
dXJzb3IoUXQ6OkJsYW5rQ3Vyc29yKSk7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93
OjpzaG93Q3Vyc29yKCkKK3sKKyAgICBRQXBwbGljYXRpb246OnJlc3RvcmVPdmVycmlkZUN1cnNv
cigpOworICAgIG1fY3Vyc29yVGltZXIuc3RhcnQoZ0hpZGVNb3VzZUN1cnNvckRlbGF5KTsKK30K
KwogCiBQbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2luZG93KCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggZGUzZTg5OS4uMjM1MDI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAxMS0wMy0yMiAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3Nh
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIEltcGxlbWVudCBmdWxsc2NyZWVuIHBsYXliYWNrIGZvciB0aGUgR1N0cmVhbWVyIGJhY2tl
bmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Njgy
NgorCisgICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBmdWxsc2NyZWVuIHBsYXliYWNrIHdo
ZW4gYnVpbGRpbmcgdGhlCisgICAgICAgIFF0IHBvcnQgd2l0aCB0aGUgR1N0cmVhbWVyIGJhY2tl
bmQgKERFRklORVMrPVVTRV9HU1RSRUFNRVI9MSkuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlv
biBpcyBkb25lIGluIEZ1bGxTY3JlZW5WaWRlb1F0IGFsb25nc2lkZSB3aXRoCisgICAgICAgIHRo
ZSBRdCBNdWx0aW1lZGlhIHN1cHBvcnQuCisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2Ny
ZWVuVmlkZW9RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OnNldFZpZGVvRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRl
ckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVv
SGFuZGxlcjo6d2luZG93Q2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXI6OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVv
UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlk
ZW9RdCk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2Ny
ZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1
bGxTY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojpy
ZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1
bGxTY3JlZW5WaWRlb1F0Ojppc1ZhbGlkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxs
U2NyZWVuVmlkZW9RdC5oOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZp
ZGVvSGFuZGxlcjo6fkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOgorCiAyMDExLTAz
LTE5ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBCZW5qYW1pbiBQb3VsYWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9RdFdl
YktpdC5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybwppbmRleCA0YjdiYjA1Li45
ZWU1YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybworKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybwpAQCAtMjA1LDEzICsyMDUsMTMgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9MSkgewogCiBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgICFjb250YWlucyhERUZJTkVTLCBVU0VfR1NU
UkVBTUVSPTEpOmNvbnRhaW5zKE1PQklMSVRZX0NPTkZJRywgbXVsdGltZWRpYSkgewotICAgICAg
ICBIRUFERVJTICs9IFwKLSAgICAgICAgICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1F0LmggXAotICAgICAgICAgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVl
blZpZGVvV2lkZ2V0LmgKKyAgICAgICAgSEVBREVSUyArPSAkJFBXRC9XZWJDb3JlU3VwcG9ydC9G
dWxsU2NyZWVuVmlkZW9XaWRnZXQuaAorICAgICAgICBTT1VSQ0VTICs9ICQkUFdEL1dlYkNvcmVT
dXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdldC5jcHAKKyAgICB9CiAKLSAgICAgICAgU09VUkNF
UyArPSBcCi0gICAgICAgICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9R
dC5jcHAgXAotICAgICAgICAgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVv
V2lkZ2V0LmNwcAorICAgIGNvbnRhaW5zKERFRklORVMsIFVTRV9HU1RSRUFNRVI9MSkgfCBjb250
YWlucyhNT0JJTElUWV9DT05GSUcsIG11bHRpbWVkaWEpIHsKKyAgICAgICAgSEVBREVSUyArPSAk
JFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCisgICAgICAgIFNPVVJDRVMg
Kz0gJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwCmluZGV4IGFjZmE2NjQuLmVjNWVkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC03NSwxMyArNzUsMTUgQEAKICNp
bmNsdWRlIDxxdG9vbHRpcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAotI2lmIEVOQUJM
RShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogI2lu
Y2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1F0LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
KyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVR
dC5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MCw3ICs5
Miw3IEBAIGJvb2wgQ2hyb21lQ2xpZW50UXQ6OmR1bXBWaXNpdGVkTGlua3NDYWxsYmFja3MgPSBm
YWxzZTsKIENocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdChRV2ViUGFnZSogd2ViUGFnZSkK
ICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQogICAgICwgbV9ldmVudExvb3AoMCkKLSNpZiBFTkFC
TEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKICAg
ICAsIG1fZnVsbFNjcmVlblZpZGVvKDApCiAjZW5kaWYKIHsKQEAgLTEwMiw3ICsxMDQsNyBAQCBD
aHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KCkKICAgICBpZiAobV9ldmVudExvb3ApCiAg
ICAgICAgIG1fZXZlbnRMb29wLT5leGl0KCk7CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJM
RShRVF9NVUxUSU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKICAgICBkZWxldGUgbV9mdWxsU2Ny
ZWVuVmlkZW87CiAjZW5kaWYKIH0KQEAgLTY1MCw3ICs2NTIsNyBAQCBJbnRSZWN0IENocm9tZUNs
aWVudFF0Ojp2aXNpYmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkgY29uc3QKIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFC
TEUoVklERU8pCiBGdWxsU2NyZWVuVmlkZW9RdCogQ2hyb21lQ2xpZW50UXQ6OmZ1bGxTY3JlZW5W
aWRlbygpCiB7CiAgICAgaWYgKCFtX2Z1bGxTY3JlZW5WaWRlbykKQEAgLTY3MywxMyArNjc1LDYg
QEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2Rl
KQogewogICAgIEFTU0VSVChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRl
b1RhZykpOwogCi0gICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOwotICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOwotCi0gICAgQVNTRVJUKHBsYXRm
b3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSk7Ci0gICAg
aWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlw
ZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgZnVsbFNjcmVlblZpZGVvKCktPmVudGVyRnVsbFNj
cmVlbkZvck5vZGUobm9kZSk7CiB9CiAKQEAgLTY4NywxMyArNjgyLDYgQEAgdm9pZCBDaHJvbWVD
bGllbnRRdDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJU
KG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSk7CiAKLSAgICBI
VE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVt
ZW50Kj4obm9kZSk7Ci0gICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVt
ZW50LT5wbGF0Zm9ybU1lZGlhKCk7Ci0KLSAgICBBU1NFUlQocGxhdGZvcm1NZWRpYS50eXBlID09
IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKTsKLSAgICBpZiAocGxhdGZvcm1NZWRp
YS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKQotICAgICAgICByZXR1
cm47Ci0KICAgICBmdWxsU2NyZWVuVmlkZW8oKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JOb2RlKG5vZGUp
OwogfSAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5oCmluZGV4IGExMmMyZWMuLjE1MDA1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTUwLDcgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0cnVjdCBGcmFtZUxvYWRSZXF1ZXN0OwogICAgIGNs
YXNzIFF0QWJzdHJhY3RXZWJQb3B1cDsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7Ci0j
aWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklE
RU8pCiAgICAgY2xhc3MgRnVsbFNjcmVlblZpZGVvUXQ7CiAjZW5kaWYKIApAQCAtMTY2LDcgKzE2
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG5lZWRUb3Vj
aEV2ZW50cyhib29sKSB7IH0KICNlbmRpZgogIAotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxF
KFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKik7CkBAIC0yMDYsNyArMjA2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1lbnVCYXJWaXNpYmxlOwogICAgICAgICBRRXZl
bnRMb29wKiBtX2V2ZW50TG9vcDsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01V
TFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBGdWxsU2NyZWVuVmlkZW9RdCog
bV9mdWxsU2NyZWVuVmlkZW87CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcAppbmRleCBjY2NhNDNjLi40OWZl
YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxT
Y3JlZW5WaWRlb1F0LmNwcApAQCAtMjIsMTggKzIyLDc2IEBACiAjaW5jbHVkZSAiRnVsbFNjcmVl
blZpZGVvUXQuaCIKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0LmgiCisjaWYgRU5BQkxFKFFU
X01VTFRJTUVESUEpCiAjaW5jbHVkZSAiRnVsbFNjcmVlblZpZGVvV2lkZ2V0LmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGVRdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5j
bHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvd1By
aXZhdGUuaCIKKyNlbmRpZgogCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiAjaW5jbHVkZSA8
UUdyYXBoaWNzVmlkZW9JdGVtPgogI2luY2x1ZGUgPFFNZWRpYVBsYXllcj4KKyNlbmRpZgorI2lu
Y2x1ZGUgPFFXaWRnZXQ+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShHU1RSRUFN
RVIpCisKK0dTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OkdTdHJlYW1lckZ1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXIoKQorICAgIDogbV92aWRlb0VsZW1lbnQoMCkKKyAgICAsIG1fZnVsbFNj
cmVlbldpZGdldCgwKQoreworfQorCit2b2lkIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRs
ZXI6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiBlbGVtZW50KQoreworICAgIG1f
dmlkZW9FbGVtZW50ID0gZWxlbWVudDsKK30KKwordm9pZCBHU3RyZWFtZXJGdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyOjplbnRlckZ1bGxTY3JlZW4oKQoreworICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+
cGxhdGZvcm1NZWRpYSgpLnR5cGUgIT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVy
R1dvcmxkVHlwZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1N0cmVhbWVyR1dvcmxkKiBnc3Ry
ZWFtZXJHV29ybGQgPSBtX3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJl
YW1lckdXb3JsZDsKKworICAgIGlmICghZ3N0cmVhbWVyR1dvcmxkLT5lbnRlckZ1bGxzY3JlZW4o
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxGdWxsU2NyZWVuVmlkZW9XaW5kb3cqID4oZ3N0cmVhbWVyR1dvcmxkLT5wbGF0Zm9y
bVZpZGVvV2luZG93KCktPndpbmRvdygpKTsKKworICAgIG1fZnVsbFNjcmVlbldpZGdldC0+c2V0
VmlkZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50KTsKKworICAgIGNvbm5lY3QobV9mdWxsU2NyZWVu
V2lkZ2V0LCBTSUdOQUwoY2xvc2VkKCkpLCB0aGlzLCBTTE9UKHdpbmRvd0Nsb3NlZCgpKSk7CisK
KyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPnNob3dGdWxsU2NyZWVuKCk7Cit9CisKK3ZvaWQgR1N0
cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6d2luZG93Q2xvc2VkKCkKK3sKKyAgICBtX3Zp
ZGVvRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBHU3RyZWFtZXJGdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyOjpleGl0RnVsbFNjcmVlbigpCit7CisgICAgaWYgKG1fdmlkZW9FbGVt
ZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3Ry
ZWFtZXJHV29ybGRUeXBlKQorICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgp
Lm1lZGlhLmdzdHJlYW1lckdXb3JsZC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIG1fZnVsbFNj
cmVlbldpZGdldC0+c2V0VmlkZW9FbGVtZW50KDApOworCisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0
LT5jbG9zZSgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKIGJvb2wg
RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OnNfc2hvdWxkRm9yY2VGdWxsU2NyZWVuVmlk
ZW9QbGF5YmFjayA9IGZhbHNlOwogCiBEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6RGVm
YXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKQpAQCAtNDIsNiArMTAwLDggQEAgRGVmYXVsdEZ1
bGxTY3JlZW5WaWRlb0hhbmRsZXI6OkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkKIHsK
ICAgICBjb25uZWN0KG1fZnVsbFNjcmVlbldpZGdldCwgU0lHTkFMKGRpZEV4aXRGdWxsU2NyZWVu
KCkpLCB0aGlzLCBTSUdOQUwoZnVsbFNjcmVlbkNsb3NlZCgpKSk7CiAgICAgbV9mdWxsU2NyZWVu
V2lkZ2V0LT5oaWRlKCk7CisKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPmNsb3NlKCk7CiB9CiAK
IERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjp+RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXIoKQpAQCAtNzIsMjQgKzEzMiwzNiBAQCB2b2lkIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyOjpleGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5jbG9z
ZSgpOwogfQorI2VuZGlmCiAKIEZ1bGxTY3JlZW5WaWRlb1F0OjpGdWxsU2NyZWVuVmlkZW9RdChD
aHJvbWVDbGllbnRRdCogY2hyb21lQ2xpZW50KQogICAgIDogbV9jaHJvbWVDbGllbnQoY2hyb21l
Q2xpZW50KQogICAgICwgbV92aWRlb0VsZW1lbnQoMCkKIHsKICAgICBRX0FTU0VSVChtX2Nocm9t
ZUNsaWVudCk7Ci0gICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyID0gbV9jaHJvbWVDbGllbnQt
Pm1fcGxhdGZvcm1QbHVnaW4uY3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOwogCisjaWYg
RU5BQkxFKFFUX01VTFRJTUVESUEpCisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyID0gbV9j
aHJvbWVDbGllbnQtPm1fcGxhdGZvcm1QbHVnaW4uY3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxl
cigpOwogICAgIGlmICghbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKQogICAgICAgICBtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIgPSBuZXcgRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CiAK
ICAgICBpZiAobV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKQogICAgICAgICBjb25uZWN0KG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlciwgU0lHTkFMKGZ1bGxTY3JlZW5DbG9zZWQoKSksIHRoaXMsIFNM
T1QoYWJvdXRUb0Nsb3NlKCkpKTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBt
X0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXIgPSBuZXcgR1N0cmVhbWVyRnVsbFNjcmVl
blZpZGVvSGFuZGxlcjsKKyNlbmRpZgogfQogCiBGdWxsU2NyZWVuVmlkZW9RdDo6fkZ1bGxTY3Jl
ZW5WaWRlb1F0KCkKIHsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBkZWxldGUgbV9G
dWxsU2NyZWVuVmlkZW9IYW5kbGVyOworI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBk
ZWxldGUgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyOworI2VuZGlmCiB9CiAKIHZv
aWQgRnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkK
QEAgLTk3LDI1ICsxNjksNTYgQEAgdm9pZCBGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2Ny
ZWVuRm9yTm9kZShOb2RlKiBub2RlKQogICAgIFFfQVNTRVJUKG5vZGUpOwogICAgIFFfQVNTRVJU
KG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcik7CiAKKyAgICBtX3ZpZGVvRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihub2RlKTsKKworI2lmIEVOQUJMRShRVF9NVUxUSU1F
RElBKQorCisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8
SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOworICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRp
YSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOworCisgICAgQVNTRVJUKHBsYXRmb3Jt
TWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSk7CisgICAgaWYg
KHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBtZWRpYVBsYXllclF0
ID0gbWVkaWFQbGF5ZXJGb3JOb2RlKG5vZGUpOworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBt
ZWRpYVBsYXllclF0ID0gbWVkaWFQbGF5ZXIoKTsKICAgICBtZWRpYVBsYXllclF0LT5yZW1vdmVW
aWRlb0l0ZW0oKTsKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPmVudGVyRnVsbFNjcmVl
bihtZWRpYVBsYXllclF0LT5tZWRpYVBsYXllcigpKTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJF
QU1FUikKKyAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXItPnNldFZpZGVvRWxl
bWVudChtX3ZpZGVvRWxlbWVudCk7CisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVh
bWVyLT5lbnRlckZ1bGxTY3JlZW4oKTsKKyNlbmRpZgogfQogCiB2b2lkIEZ1bGxTY3JlZW5WaWRl
b1F0OjpleGl0RnVsbFNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBRX0FTU0VSVChu
b2RlKTsKKworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorCisgICAgSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOwor
ICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1N
ZWRpYSgpOworCisgICAgQVNTRVJUKHBsYXRmb3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlh
OjpRdE1lZGlhUGxheWVyVHlwZSk7CisgICAgaWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0
Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUV9B
U1NFUlQobV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKTsKIAogICAgIGlmICghbV9GdWxsU2NyZWVu
VmlkZW9IYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hh
bmRsZXItPmV4aXRGdWxsU2NyZWVuKCk7Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlh
UGxheWVyUXQgPSBtZWRpYVBsYXllckZvck5vZGUobm9kZSk7CisgICAgTWVkaWFQbGF5ZXJQcml2
YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRpYVBsYXllcigpOwogICAgIG1lZGlhUGxheWVyUXQt
PnJlc3RvcmVWaWRlb0l0ZW0oKTsKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgbV9G
dWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyLT5leGl0RnVsbFNjcmVlbigpOworI2VuZGlm
CiB9CiAKIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmFib3V0VG9DbG9zZSgpCkBAIC0xMjQsMjQg
KzIyNywzMyBAQCB2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0OjphYm91dFRvQ2xvc2UoKQogICAgIG1f
dmlkZW9FbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwogfQogCisjaWYgRU5BQkxFKFFUX01VTFRJ
TUVESUEpCiBNZWRpYVBsYXllclByaXZhdGVRdCogRnVsbFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxh
eWVyKCkKIHsKICAgICBRX0FTU0VSVChtX3ZpZGVvRWxlbWVudCk7CiAgICAgUGxhdGZvcm1NZWRp
YSBwbGF0Zm9ybU1lZGlhID0gbV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlUXQqPihwbGF0Zm9ybU1lZGlhLm1l
ZGlhLnF0TWVkaWFQbGF5ZXIpOwogfQorI2VuZGlmCiAKLU1lZGlhUGxheWVyUHJpdmF0ZVF0KiBG
dWxsU2NyZWVuVmlkZW9RdDo6bWVkaWFQbGF5ZXJGb3JOb2RlKE5vZGUqIG5vZGUpCitib29sIEZ1
bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkKIHsK
LSAgICBRX0FTU0VSVChub2RlKTsKLSAgICBpZiAobm9kZSkKLSAgICAgICAgbV92aWRlb0VsZW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7Ci0gICAgcmV0dXJuIG1l
ZGlhUGxheWVyKCk7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisgICAgcmV0dXJuIG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlciA/IG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlci0+cmVxdWlyZXNG
dWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpIDogZmFsc2U7CisjZW5kaWYKKyNpZiBVU0UoR1NU
UkVBTUVSKQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCi1ib29sIEZ1bGxTY3JlZW5W
aWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkKK2Jvb2wgRnVsbFNj
cmVlblZpZGVvUXQ6OmlzVmFsaWQoKSBjb25zdAogewotICAgIHJldHVybiBtX0Z1bGxTY3JlZW5W
aWRlb0hhbmRsZXIgPyBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPnJlcXVpcmVzRnVsbFNjcmVl
bkZvclZpZGVvUGxheWJhY2soKSA6IGZhbHNlOworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQor
ICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CisjZW5kaWYKKyNpZiBVU0UoR1NU
UkVBTUVSKQorICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7Cisj
ZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GdWxsU2NyZWVuVmlkZW9RdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
dWxsU2NyZWVuVmlkZW9RdC5oCmluZGV4IGE0OGE4ODIuLmUwMTEyMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKQEAgLTIw
LDYgKzIwLDcgQEAKICNpZm5kZWYgRnVsbFNjcmVlblZpZGVvUXRfaAogI2RlZmluZSBGdWxsU2Ny
ZWVuVmlkZW9RdF9oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybS5oIgogI2luY2x1ZGUgInF3ZWJraXRw
bGF0Zm9ybXBsdWdpbi5oIgogI2luY2x1ZGUgPFFPYmplY3Q+CiAKQEAgLTM0LDggKzM1LDMzIEBA
IGNsYXNzIENocm9tZUNsaWVudFF0OwogY2xhc3MgRnVsbFNjcmVlblZpZGVvV2lkZ2V0OwogY2xh
c3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIE5vZGU7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVE
SUEpCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVRdDsKKyNlbmRpZgogCisjaWYgZGVmaW5lZChX
VEZfVVNFX0dTVFJFQU1FUikgJiYgV1RGX1VTRV9HU1RSRUFNRVIKK2NsYXNzIEZ1bGxTY3JlZW5W
aWRlb1dpbmRvdzsKKworY2xhc3MgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlciA6IHB1
YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEdTdHJlYW1lckZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIoKTsKKyAgICB+R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxl
cigpIHt9OworICAgIHZvaWQgc2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqKTsKKwor
ICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuKCk7CisgICAgdm9pZCBleGl0RnVsbFNjcmVlbigpOwor
CitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIHdpbmRvd0Nsb3NlZCgpOworCitwcml2YXRlOgor
ICAgIEhUTUxWaWRlb0VsZW1lbnQqIG1fdmlkZW9FbGVtZW50OworICAgIEZ1bGxTY3JlZW5WaWRl
b1dpbmRvdyogbV9mdWxsU2NyZWVuV2lkZ2V0OworfTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChF
TkFCTEVfUVRfTVVMVElNRURJQSkgJiYgRU5BQkxFX1FUX01VTFRJTUVESUEKIGNsYXNzIERlZmF1
bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDogcHVibGljIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyIHsKICAgICBRX09CSkVDVAogcHVibGljOgpAQCAtNTEsNiArNzcsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIHNfc2hvdWxkRm9yY2VGdWxsU2NyZWVuVmlkZW9QbGF5YmFjazsKICAg
ICBGdWxsU2NyZWVuVmlkZW9XaWRnZXQgKm1fZnVsbFNjcmVlbldpZGdldDsKIH07CisjZW5kaWYK
IAogY2xhc3MgRnVsbFNjcmVlblZpZGVvUXQgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpF
Q1QKQEAgLTYxLDExICs4OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVs
bFNjcmVlbkZvck5vZGUoTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZv
ck5vZGUoTm9kZSopOwogICAgIGJvb2wgcmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFj
aygpOwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRl
b0hhbmRsZXI7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogcHJpdmF0ZToKKyNpZiBF
TkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5
ZXIoKTsKLSAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5ZXJGb3JOb2RlKE5vZGUq
ID0gMCk7CisjZW5kaWYKIAogcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIGFib3V0VG9DbG9zZSgp
OwpAQCAtNzMsNyArMTAxLDEyIEBAIHByaXZhdGUgc2xvdHM6CiBwcml2YXRlOgogICAgIENocm9t
ZUNsaWVudFF0KiBtX2Nocm9tZUNsaWVudDsKICAgICBIVE1MVmlkZW9FbGVtZW50KiBtX3ZpZGVv
RWxlbWVudDsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBRV2ViRnVsbFNjcmVlblZp
ZGVvSGFuZGxlciogbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyOworI2VuZGlmCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBtX0Z1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5kaWYKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86481</attachid>
            <date>2011-03-22 11:07:38 -0700</date>
            <delta_ts>2011-03-31 07:11:30 -0700</delta_ts>
            <desc>V3 with style fixes</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20478</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMmQxMjQ0Li5iODRlMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTEtMDMtMjIgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBJbXBsZW1lbnQgZnVsbHNjcmVlbiBwbGF5YmFjayBmb3IgdGhlIEdTdHJlYW1lciBiYWNrZW5k
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MjYK
KworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZnVsbHNjcmVlbiBwbGF5YmFjayB3aGVu
IGJ1aWxkaW5nIHRoZQorICAgICAgICBRdCBwb3J0IHdpdGggdGhlIEdTdHJlYW1lciBiYWNrZW5k
IChERUZJTkVTKz1VU0VfR1NUUkVBTUVSPTEpLgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
aXMgZG9uZSBpbiBGdWxsU2NyZWVuVmlkZW9RdCBhbG9uZ3NpZGUgd2l0aAorICAgICAgICB0aGUg
UXQgTXVsdGltZWRpYSBzdXBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHA6CisgICAgICAgIChG
dWxsU2NyZWVuVmlkZW9XaW5kb3c6OkZ1bGxTY3JlZW5WaWRlb1dpbmRvdyk6CisgICAgICAgIChG
dWxsU2NyZWVuVmlkZW9XaW5kb3c6OnNldFZpZGVvRWxlbWVudCk6CisgICAgICAgIChGdWxsU2Ny
ZWVuVmlkZW9XaW5kb3c6OmNsb3NlRXZlbnQpOgorICAgICAgICAoRnVsbFNjcmVlblZpZGVvV2lu
ZG93OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6ZXZl
bnQpOgorICAgICAgICAoRnVsbFNjcmVlblZpZGVvV2luZG93OjpoaWRlQ3Vyc29yKToKKyAgICAg
ICAgKEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2hvd0N1cnNvcik6CisKIDIwMTEtMDMtMjEgIEph
ZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZh
dGUuaAppbmRleCAwYWU0NTg3Li45N2FiNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvd1ByaXZhdGUuaApAQCAtMjAsMjEgKzIwLDM0IEBACiAjaWZuZGVmIFBsYXRmb3Jt
VmlkZW9XaW5kb3dQcml2YXRlX2gKICNkZWZpbmUgUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGVf
aAogCisjaW5jbHVkZSA8UVRpbWVyPgogI2luY2x1ZGUgPFFXaWRnZXQ+CiAKIGNsYXNzIFFLZXlF
dmVudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MVmlkZW9FbGVtZW50Owor
CiBjbGFzcyBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6IHB1YmxpYyBRV2lkZ2V0IHsKIFFfT0JKRUNU
CiBwdWJsaWM6CiAgICAgRnVsbFNjcmVlblZpZGVvV2luZG93KCk7CisgICAgdm9pZCBzZXRWaWRl
b0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwogc2lnbmFsczoKICAgICB2b2lkIGNsb3NlZCgp
OwogcHJvdGVjdGVkOgotICAgIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2KTsKLSAg
ICBib29sIGV2ZW50KFFFdmVudCogZXYpOworICAgIHZvaWQgY2xvc2VFdmVudChRQ2xvc2VFdmVu
dCopOworICAgIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqKTsKKyAgICBib29sIGV2ZW50
KFFFdmVudCopOworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgaGlkZUN1cnNvcigpOworCitw
cml2YXRlOgorICAgIHZvaWQgc2hvd0N1cnNvcigpOworICAgIFFUaW1lciBtX2N1cnNvclRpbWVy
OworICAgIEhUTUxWaWRlb0VsZW1lbnQgKm1fbWVkaWFFbGVtZW50OwogfTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvd1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCmluZGV4IDg3MmQwNTUuLjk0ZjZiOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0
Zm9ybVZpZGVvV2luZG93UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCkBAIC0xOCw4ICsxOCwxMCBA
QAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dp
bmRvdy5oIgogCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtVmlkZW9XaW5kb3dQcml2YXRlLmgiCiAKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CkBAIC0y
OCwyOSArMzAsNTUgQEAKICNpbmNsdWRlIDxRUGFsZXR0ZT4KIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCitzdGF0aWMgY29uc3QgaW50IGdIaWRlTW91c2VDdXJzb3JEZWxheSA9IDMwMDA7CisK
IEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6RnVsbFNjcmVlblZpZGVvV2luZG93KCkKICAgICA6IFFX
aWRnZXQoMCwgUXQ6OldpbmRvdykKKyAgICAsIG1fbWVkaWFFbGVtZW50KDApCiB7CiAgICAgc2V0
QXR0cmlidXRlKFF0OjpXQV9OYXRpdmVXaW5kb3cpOwotICAgIC8vIFNldHRpbmcgdGhlc2UgdmFs
dWVzIGVuc3VyZXMgc21vb3RoIHJlc2l6aW5nIHNpbmNlIGl0Ci0gICAgLy8gd2lsbCBwcmV2ZW50
IHRoZSBzeXN0ZW0gZnJvbSBjbGVhcmluZyB0aGUgYmFja2dyb3VuZC4KKyAgICBzZXRXaW5kb3dN
b2RhbGl0eShRdDo6QXBwbGljYXRpb25Nb2RhbCk7CiAgICAgc2V0QXR0cmlidXRlKFF0OjpXQV9O
b1N5c3RlbUJhY2tncm91bmQsIHRydWUpOwogICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfUGFpbnRP
blNjcmVlbiwgdHJ1ZSk7CisKKyAgICBtX2N1cnNvclRpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7
CisgICAgY29ubmVjdCgmbV9jdXJzb3JUaW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNM
T1QoaGlkZUN1cnNvcigpKSk7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93OjpzZXRW
aWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBtX21lZGlhRWxl
bWVudCA9IGVsZW1lbnQ7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93OjpjbG9zZUV2
ZW50KFFDbG9zZUV2ZW50KiBldmVudCkKK3sKKyAgICBtX2N1cnNvclRpbWVyLnN0b3AoKTsKKyAg
ICBzZXRNb3VzZVRyYWNraW5nKGZhbHNlKTsKKyAgICByZWxlYXNlTW91c2UoKTsKKyAgICBRQXBw
bGljYXRpb246OnJlc3RvcmVPdmVycmlkZUN1cnNvcigpOwogfQogCiB2b2lkIEZ1bGxTY3JlZW5W
aWRlb1dpbmRvdzo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2KQogewotICAgIGlmIChldi0+
a2V5KCkgPT0gUXQ6OktleV9Fc2NhcGUpIHsKLSAgICAgICAgY2xvc2UoKTsKKyAgICBpZiAobV9t
ZWRpYUVsZW1lbnQgJiYgZXYtPmtleSgpID09IFF0OjpLZXlfU3BhY2UpIHsKKyAgICAgICAgaWYg
KCFtX21lZGlhRWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+
cGF1c2UodHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5w
bGF5KHRydWUpOworICAgIH0gZWxzZSBpZiAoZXYtPmtleSgpID09IFF0OjpLZXlfRXNjYXBlKQog
ICAgICAgICBlbWl0IGNsb3NlZCgpOwotICAgIH0KKyAgICBRV2lkZ2V0OjprZXlQcmVzc0V2ZW50
KGV2KTsKIH0KIAogYm9vbCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OmV2ZW50KFFFdmVudCogZXYp
CiB7CiAgICAgc3dpdGNoIChldi0+dHlwZSgpKSB7CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlTW92
ZToKKyAgICAgICAgc2hvd0N1cnNvcigpOworICAgICAgICBldi0+YWNjZXB0KCk7CisgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvbkRibENsaWNrOgotICAg
ICAgICBjbG9zZSgpOworICAgICAgICBlbWl0IGNsb3NlZCgpOwogICAgICAgICBldi0+YWNjZXB0
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CkBAIC01OCw2ICs4NiwxNyBA
QCBib29sIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6ZXZlbnQoUUV2ZW50KiBldikKICAgICB9CiB9
CiAKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93OjpoaWRlQ3Vyc29yKCkKK3sKKyAgICBRQXBw
bGljYXRpb246OnNldE92ZXJyaWRlQ3Vyc29yKFFDdXJzb3IoUXQ6OkJsYW5rQ3Vyc29yKSk7Cit9
CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93OjpzaG93Q3Vyc29yKCkKK3sKKyAgICBRQXBw
bGljYXRpb246OnJlc3RvcmVPdmVycmlkZUN1cnNvcigpOworICAgIG1fY3Vyc29yVGltZXIuc3Rh
cnQoZ0hpZGVNb3VzZUN1cnNvckRlbGF5KTsKK30KKwogCiBQbGF0Zm9ybVZpZGVvV2luZG93OjpQ
bGF0Zm9ybVZpZGVvV2luZG93KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZGUzZTg5OS4uMjM1MDI5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wMy0yMiAgQWxleGlzIE1l
bmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEltcGxlbWVudCBmdWxsc2NyZWVuIHBs
YXliYWNrIGZvciB0aGUgR1N0cmVhbWVyIGJhY2tlbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjgyNgorCisgICAgICAgIEltcGxlbWVudCBzdXBw
b3J0IGZvciBmdWxsc2NyZWVuIHBsYXliYWNrIHdoZW4gYnVpbGRpbmcgdGhlCisgICAgICAgIFF0
IHBvcnQgd2l0aCB0aGUgR1N0cmVhbWVyIGJhY2tlbmQgKERFRklORVMrPVVTRV9HU1RSRUFNRVI9
MSkuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkb25lIGluIEZ1bGxTY3JlZW5WaWRl
b1F0IGFsb25nc2lkZSB3aXRoCisgICAgICAgIHRoZSBRdCBNdWx0aW1lZGlhIHN1cHBvcnQuCisK
KyAgICAgICAgKiBRdFdlYktpdC5wcm86CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNs
aWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50
UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmVudGVyRnVsbHNjcmVlbkZv
ck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmV4aXRGdWxsc2NyZWVu
Rm9yTm9kZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpHU3RyZWFtZXJGdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5W
aWRlb0hhbmRsZXI6OnNldFZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6d2luZG93Q2xvc2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OmV4aXRGdWxs
U2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
OjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGdWxs
U2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQpOgorICAgICAgICAoV2ViQ29yZTo6RnVs
bFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCk6CisgICAgICAgIChXZWJDb3JlOjpG
dWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxTY3JlZW5Gb3JOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1Bs
YXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojppc1ZhbGlkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6fkdTdHJlYW1lckZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIpOgorCiAyMDExLTAzLTE5ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9RdFdlYktpdC5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0
L1F0V2ViS2l0LnBybwppbmRleCA0YjdiYjA1Li45ZWU1YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L1F0V2ViS2l0LnBybworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBy
bwpAQCAtMjA1LDEzICsyMDUsMTMgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBF
X1BMVUdJTl9BUEk9MSkgewogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewog
ICAgICFjb250YWlucyhERUZJTkVTLCBVU0VfR1NUUkVBTUVSPTEpOmNvbnRhaW5zKE1PQklMSVRZ
X0NPTkZJRywgbXVsdGltZWRpYSkgewotICAgICAgICBIRUFERVJTICs9IFwKLSAgICAgICAgICAg
ICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmggXAotICAgICAgICAgICAg
JCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvV2lkZ2V0LmgKKyAgICAgICAgSEVB
REVSUyArPSAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuaAorICAg
ICAgICBTT1VSQ0VTICs9ICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdl
dC5jcHAKKyAgICB9CiAKLSAgICAgICAgU09VUkNFUyArPSBcCi0gICAgICAgICAgICAkJFBXRC9X
ZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAgXAotICAgICAgICAgICAgJCRQV0Qv
V2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvV2lkZ2V0LmNwcAorICAgIGNvbnRhaW5zKERF
RklORVMsIFVTRV9HU1RSRUFNRVI9MSkgfCBjb250YWlucyhNT0JJTElUWV9DT05GSUcsIG11bHRp
bWVkaWEpIHsKKyAgICAgICAgSEVBREVSUyArPSAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2Ny
ZWVuVmlkZW9RdC5oCisgICAgICAgIFNPVVJDRVMgKz0gJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvUXQuY3BwCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IGFjZmE2NjQuLmVjNWVkNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuY3BwCkBAIC03NSwxMyArNzUsMTUgQEAKICNpbmNsdWRlIDxxdG9vbHRpcC5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJ
TUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1F0Lmgi
CiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVRdC5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MCw3ICs5Miw3IEBAIGJvb2wgQ2hyb21lQ2xpZW50UXQ6
OmR1bXBWaXNpdGVkTGlua3NDYWxsYmFja3MgPSBmYWxzZTsKIENocm9tZUNsaWVudFF0OjpDaHJv
bWVDbGllbnRRdChRV2ViUGFnZSogd2ViUGFnZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQog
ICAgICwgbV9ldmVudExvb3AoMCkKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxU
SU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKICAgICAsIG1fZnVsbFNjcmVlblZpZGVvKDApCiAj
ZW5kaWYKIHsKQEAgLTEwMiw3ICsxMDQsNyBAQCBDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVu
dFF0KCkKICAgICBpZiAobV9ldmVudExvb3ApCiAgICAgICAgIG1fZXZlbnRMb29wLT5leGl0KCk7
CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorI2lmIEVOQUJM
RShWSURFTykKICAgICBkZWxldGUgbV9mdWxsU2NyZWVuVmlkZW87CiAjZW5kaWYKIH0KQEAgLTY1
MCw3ICs2NTIsNyBAQCBJbnRSZWN0IENocm9tZUNsaWVudFF0Ojp2aXNpYmxlUmVjdEZvclRpbGVk
QmFja2luZ1N0b3JlKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBF
TkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiBGdWxsU2NyZWVuVmlkZW9R
dCogQ2hyb21lQ2xpZW50UXQ6OmZ1bGxTY3JlZW5WaWRlbygpCiB7CiAgICAgaWYgKCFtX2Z1bGxT
Y3JlZW5WaWRlbykKQEAgLTY3MywxMyArNjc1LDYgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6ZW50
ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlICYmIG5v
ZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykpOwogCi0gICAgSFRNTFZpZGVvRWxl
bWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUp
OwotICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZv
cm1NZWRpYSgpOwotCi0gICAgQVNTRVJUKHBsYXRmb3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1l
ZGlhOjpRdE1lZGlhUGxheWVyVHlwZSk7Ci0gICAgaWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQ
bGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
ZnVsbFNjcmVlblZpZGVvKCktPmVudGVyRnVsbFNjcmVlbkZvck5vZGUobm9kZSk7CiB9CiAKQEAg
LTY4NywxMyArNjgyLDYgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6ZXhpdEZ1bGxzY3JlZW5Gb3JO
b2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OnZpZGVvVGFnKSk7CiAKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7Ci0gICAgUGxhdGZvcm1N
ZWRpYSBwbGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCk7Ci0KLSAg
ICBBU1NFUlQocGxhdGZvcm1NZWRpYS50eXBlID09IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5
ZXJUeXBlKTsKLSAgICBpZiAocGxhdGZvcm1NZWRpYS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlF0
TWVkaWFQbGF5ZXJUeXBlKQotICAgICAgICByZXR1cm47Ci0KICAgICBmdWxsU2NyZWVuVmlkZW8o
KS0+ZXhpdEZ1bGxTY3JlZW5Gb3JOb2RlKG5vZGUpOwogfSAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IGExMmMyZWMu
LjE1MDA1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0
cnVjdCBGcmFtZUxvYWRSZXF1ZXN0OwogICAgIGNsYXNzIFF0QWJzdHJhY3RXZWJQb3B1cDsKICAg
ICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUo
UVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgY2xhc3MgRnVsbFNjcmVlblZp
ZGVvUXQ7CiAjZW5kaWYKIApAQCAtMTY2LDcgKzE2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29sKSB7IH0KICNlbmRpZgog
IAotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxF
KFZJREVPKQogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShj
b25zdCBOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2Rl
KE5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2Rl
Kik7CkBAIC0yMDYsNyArMjA2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IG1lbnVCYXJWaXNpYmxlOwogICAgICAgICBRRXZlbnRMb29wKiBtX2V2ZW50TG9vcDsKIAotI2lm
IEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVP
KQogICAgICAgICBGdWxsU2NyZWVuVmlkZW9RdCogbV9mdWxsU2NyZWVuVmlkZW87CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVu
VmlkZW9RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5W
aWRlb1F0LmNwcAppbmRleCBjY2NhNDNjLi40OWZlYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcApAQCAtMjIsMTgg
KzIyLDc2IEBACiAjaW5jbHVkZSAiRnVsbFNjcmVlblZpZGVvUXQuaCIKIAogI2luY2x1ZGUgIkNo
cm9tZUNsaWVudFF0LmgiCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiAjaW5jbHVkZSAiRnVs
bFNjcmVlblZpZGVvV2lkZ2V0LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCIK
KyNlbmRpZgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1l
bnQuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVRdC5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCIKKyNlbmRpZgogCisjaWYgRU5B
QkxFKFFUX01VTFRJTUVESUEpCiAjaW5jbHVkZSA8UUdyYXBoaWNzVmlkZW9JdGVtPgogI2luY2x1
ZGUgPFFNZWRpYVBsYXllcj4KKyNlbmRpZgorI2luY2x1ZGUgPFFXaWRnZXQ+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorI2lmIFVTRShHU1RSRUFNRVIpCisKK0dTdHJlYW1lckZ1bGxTY3JlZW5W
aWRlb0hhbmRsZXI6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKQorICAgIDogbV92
aWRlb0VsZW1lbnQoMCkKKyAgICAsIG1fZnVsbFNjcmVlbldpZGdldCgwKQoreworfQorCit2b2lk
IEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OnNldFZpZGVvRWxlbWVudChIVE1MVmlk
ZW9FbGVtZW50KiBlbGVtZW50KQoreworICAgIG1fdmlkZW9FbGVtZW50ID0gZWxlbWVudDsKK30K
Kwordm9pZCBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1bGxTY3JlZW4o
KQoreworICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgIT0gV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVyR1dvcmxkVHlwZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgR1N0cmVhbWVyR1dvcmxkKiBnc3RyZWFtZXJHV29ybGQgPSBtX3ZpZGVvRWxlbWVu
dC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZDsKKworICAgIGlmICghZ3N0
cmVhbWVyR1dvcmxkLT5lbnRlckZ1bGxzY3JlZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9mdWxsU2NyZWVuV2lkZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsU2NyZWVuVmlkZW9XaW5k
b3cqID4oZ3N0cmVhbWVyR1dvcmxkLT5wbGF0Zm9ybVZpZGVvV2luZG93KCktPndpbmRvdygpKTsK
KworICAgIG1fZnVsbFNjcmVlbldpZGdldC0+c2V0VmlkZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50
KTsKKworICAgIGNvbm5lY3QobV9mdWxsU2NyZWVuV2lkZ2V0LCBTSUdOQUwoY2xvc2VkKCkpLCB0
aGlzLCBTTE9UKHdpbmRvd0Nsb3NlZCgpKSk7CisKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPnNo
b3dGdWxsU2NyZWVuKCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxl
cjo6d2luZG93Q2xvc2VkKCkKK3sKKyAgICBtX3ZpZGVvRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4o
KTsKK30KKwordm9pZCBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpleGl0RnVsbFNj
cmVlbigpCit7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSA9
PSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQorICAgICAgICBt
X3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZC0+ZXhp
dEZ1bGxzY3JlZW4oKTsKKworICAgIG1fZnVsbFNjcmVlbldpZGdldC0+c2V0VmlkZW9FbGVtZW50
KDApOworCisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5jbG9zZSgpOworfQorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKIGJvb2wgRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRs
ZXI6OnNfc2hvdWxkRm9yY2VGdWxsU2NyZWVuVmlkZW9QbGF5YmFjayA9IGZhbHNlOwogCiBEZWZh
dWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIo
KQpAQCAtNDIsNiArMTAwLDggQEAgRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OkRlZmF1
bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkKIHsKICAgICBjb25uZWN0KG1fZnVsbFNjcmVlbldp
ZGdldCwgU0lHTkFMKGRpZEV4aXRGdWxsU2NyZWVuKCkpLCB0aGlzLCBTSUdOQUwoZnVsbFNjcmVl
bkNsb3NlZCgpKSk7CiAgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5oaWRlKCk7CisKKyAgICBtX2Z1
bGxTY3JlZW5XaWRnZXQtPmNsb3NlKCk7CiB9CiAKIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyOjp+RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKQpAQCAtNzIsMjQgKzEzMiwzNiBA
QCB2b2lkIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpleGl0RnVsbFNjcmVlbigpCiB7
CiAgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5jbG9zZSgpOwogfQorI2VuZGlmCiAKIEZ1bGxTY3Jl
ZW5WaWRlb1F0OjpGdWxsU2NyZWVuVmlkZW9RdChDaHJvbWVDbGllbnRRdCogY2hyb21lQ2xpZW50
KQogICAgIDogbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQogICAgICwgbV92aWRlb0VsZW1l
bnQoMCkKIHsKICAgICBRX0FTU0VSVChtX2Nocm9tZUNsaWVudCk7Ci0gICAgbV9GdWxsU2NyZWVu
VmlkZW9IYW5kbGVyID0gbV9jaHJvbWVDbGllbnQtPm1fcGxhdGZvcm1QbHVnaW4uY3JlYXRlRnVs
bFNjcmVlblZpZGVvSGFuZGxlcigpOwogCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisgICAg
bV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyID0gbV9jaHJvbWVDbGllbnQtPm1fcGxhdGZvcm1QbHVn
aW4uY3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOwogICAgIGlmICghbV9GdWxsU2NyZWVu
VmlkZW9IYW5kbGVyKQogICAgICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIgPSBuZXcgRGVm
YXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CiAKICAgICBpZiAobV9GdWxsU2NyZWVuVmlkZW9I
YW5kbGVyKQogICAgICAgICBjb25uZWN0KG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciwgU0lHTkFM
KGZ1bGxTY3JlZW5DbG9zZWQoKSksIHRoaXMsIFNMT1QoYWJvdXRUb0Nsb3NlKCkpKTsKKyNlbmRp
ZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3Ry
ZWFtZXIgPSBuZXcgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjsKKyNlbmRpZgogfQog
CiBGdWxsU2NyZWVuVmlkZW9RdDo6fkZ1bGxTY3JlZW5WaWRlb1F0KCkKIHsKKyNpZiBFTkFCTEUo
UVRfTVVMVElNRURJQSkKICAgICBkZWxldGUgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyOworI2Vu
ZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBkZWxldGUgbV9GdWxsU2NyZWVuVmlkZW9IYW5k
bGVyR1N0cmVhbWVyOworI2VuZGlmCiB9CiAKIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmVudGVy
RnVsbFNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKQEAgLTk3LDI1ICsxNjksNTYgQEAgdm9pZCBG
dWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogICAg
IFFfQVNTRVJUKG5vZGUpOwogICAgIFFfQVNTRVJUKG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcik7
CiAKKyAgICBtX3ZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihu
b2RlKTsKKworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorCisgICAgSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOwor
ICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1N
ZWRpYSgpOworCisgICAgQVNTRVJUKHBsYXRmb3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlh
OjpRdE1lZGlhUGxheWVyVHlwZSk7CisgICAgaWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0
Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KCFtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIE1lZGlh
UGxheWVyUHJpdmF0ZVF0KiBtZWRpYVBsYXllclF0ID0gbWVkaWFQbGF5ZXJGb3JOb2RlKG5vZGUp
OworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBtZWRpYVBsYXllclF0ID0gbWVkaWFQbGF5ZXIo
KTsKICAgICBtZWRpYVBsYXllclF0LT5yZW1vdmVWaWRlb0l0ZW0oKTsKICAgICBtX0Z1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXItPmVudGVyRnVsbFNjcmVlbihtZWRpYVBsYXllclF0LT5tZWRpYVBsYXll
cigpKTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBtX0Z1bGxTY3JlZW5WaWRl
b0hhbmRsZXJHU3RyZWFtZXItPnNldFZpZGVvRWxlbWVudChtX3ZpZGVvRWxlbWVudCk7CisgICAg
bV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyLT5lbnRlckZ1bGxTY3JlZW4oKTsKKyNl
bmRpZgogfQogCiB2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0OjpleGl0RnVsbFNjcmVlbkZvck5vZGUo
Tm9kZSogbm9kZSkKIHsKICAgICBRX0FTU0VSVChub2RlKTsKKworI2lmIEVOQUJMRShRVF9NVUxU
SU1FRElBKQorCisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOworICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOworCisgICAgQVNTRVJUKHBsYXRm
b3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSk7CisgICAg
aWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlw
ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUV9BU1NFUlQobV9GdWxsU2NyZWVuVmlkZW9IYW5k
bGVyKTsKIAogICAgIGlmICghbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPmV4aXRGdWxsU2NyZWVuKCk7Ci0g
ICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRpYVBsYXllckZvck5v
ZGUobm9kZSk7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRp
YVBsYXllcigpOwogICAgIG1lZGlhUGxheWVyUXQtPnJlc3RvcmVWaWRlb0l0ZW0oKTsKKyNlbmRp
ZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVh
bWVyLT5leGl0RnVsbFNjcmVlbigpOworI2VuZGlmCiB9CiAKIHZvaWQgRnVsbFNjcmVlblZpZGVv
UXQ6OmFib3V0VG9DbG9zZSgpCkBAIC0xMjQsMjQgKzIyNywzMyBAQCB2b2lkIEZ1bGxTY3JlZW5W
aWRlb1F0OjphYm91dFRvQ2xvc2UoKQogICAgIG1fdmlkZW9FbGVtZW50LT5leGl0RnVsbHNjcmVl
bigpOwogfQogCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiBNZWRpYVBsYXllclByaXZhdGVR
dCogRnVsbFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxheWVyKCkKIHsKICAgICBRX0FTU0VSVChtX3Zp
ZGVvRWxlbWVudCk7CiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gbV92aWRlb0Vs
ZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFQbGF5
ZXJQcml2YXRlUXQqPihwbGF0Zm9ybU1lZGlhLm1lZGlhLnF0TWVkaWFQbGF5ZXIpOwogfQorI2Vu
ZGlmCiAKLU1lZGlhUGxheWVyUHJpdmF0ZVF0KiBGdWxsU2NyZWVuVmlkZW9RdDo6bWVkaWFQbGF5
ZXJGb3JOb2RlKE5vZGUqIG5vZGUpCitib29sIEZ1bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1
bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkKIHsKLSAgICBRX0FTU0VSVChub2RlKTsKLSAgICBp
ZiAobm9kZSkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9F
bGVtZW50Kj4obm9kZSk7Ci0gICAgcmV0dXJuIG1lZGlhUGxheWVyKCk7CisjaWYgRU5BQkxFKFFU
X01VTFRJTUVESUEpCisgICAgcmV0dXJuIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciA/IG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlci0+cmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygp
IDogZmFsc2U7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogfQogCi1ib29sIEZ1bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5G
b3JWaWRlb1BsYXliYWNrKCkKK2Jvb2wgRnVsbFNjcmVlblZpZGVvUXQ6OmlzVmFsaWQoKSBjb25z
dAogewotICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIgPyBtX0Z1bGxTY3JlZW5W
aWRlb0hhbmRsZXItPnJlcXVpcmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2soKSA6IGZhbHNl
OworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRl
b0hhbmRsZXI7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIHJldHVybiBtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCmluZGV4IGE0
OGE4ODIuLmUwMTEyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnVsbFNjcmVlblZpZGVvUXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKQEAgLTIwLDYgKzIwLDcgQEAKICNpZm5kZWYgRnVsbFNj
cmVlblZpZGVvUXRfaAogI2RlZmluZSBGdWxsU2NyZWVuVmlkZW9RdF9oCiAKKyNpbmNsdWRlICJQ
bGF0Zm9ybS5oIgogI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgogI2luY2x1ZGUg
PFFPYmplY3Q+CiAKQEAgLTM0LDggKzM1LDMzIEBAIGNsYXNzIENocm9tZUNsaWVudFF0OwogY2xh
c3MgRnVsbFNjcmVlblZpZGVvV2lkZ2V0OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNz
IE5vZGU7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVRdDsKKyNlbmRpZgogCisjaWYgZGVmaW5lZChXVEZfVVNFX0dTVFJFQU1FUikgJiYgV1RGX1VT
RV9HU1RSRUFNRVIKK2NsYXNzIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzsKKworY2xhc3MgR1N0cmVh
bWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVD
VAorcHVibGljOgorICAgIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKKyAgICB+
R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpIHt9OworICAgIHZvaWQgc2V0VmlkZW9F
bGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqKTsKKworICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuKCk7
CisgICAgdm9pZCBleGl0RnVsbFNjcmVlbigpOworCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lk
IHdpbmRvd0Nsb3NlZCgpOworCitwcml2YXRlOgorICAgIEhUTUxWaWRlb0VsZW1lbnQqIG1fdmlk
ZW9FbGVtZW50OworICAgIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdyogbV9mdWxsU2NyZWVuV2lkZ2V0
OworfTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChFTkFCTEVfUVRfTVVMVElNRURJQSkgJiYgRU5B
QkxFX1FUX01VTFRJTUVESUEKIGNsYXNzIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDog
cHVibGljIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIHsKICAgICBRX09CSkVDVAogcHVibGlj
OgpAQCAtNTEsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNfc2hvdWxkRm9y
Y2VGdWxsU2NyZWVuVmlkZW9QbGF5YmFjazsKICAgICBGdWxsU2NyZWVuVmlkZW9XaWRnZXQgKm1f
ZnVsbFNjcmVlbldpZGdldDsKIH07CisjZW5kaWYKIAogY2xhc3MgRnVsbFNjcmVlblZpZGVvUXQg
OiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKQEAgLTYxLDExICs4OCwxMiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbFNjcmVlbkZvck5vZGUoTm9kZSopOwogICAg
IHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvck5vZGUoTm9kZSopOwogICAgIGJvb2wgcmVx
dWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpOwotICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7IH0KKyAgICBib29sIGlzVmFs
aWQoKSBjb25zdDsKIAogcHJpdmF0ZToKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBN
ZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5ZXIoKTsKLSAgICBNZWRpYVBsYXllclByaXZh
dGVRdCogbWVkaWFQbGF5ZXJGb3JOb2RlKE5vZGUqID0gMCk7CisjZW5kaWYKIAogcHJpdmF0ZSBz
bG90czoKICAgICB2b2lkIGFib3V0VG9DbG9zZSgpOwpAQCAtNzMsNyArMTAxLDEyIEBAIHByaXZh
dGUgc2xvdHM6CiBwcml2YXRlOgogICAgIENocm9tZUNsaWVudFF0KiBtX2Nocm9tZUNsaWVudDsK
ICAgICBIVE1MVmlkZW9FbGVtZW50KiBtX3ZpZGVvRWxlbWVudDsKKyNpZiBFTkFCTEUoUVRfTVVM
VElNRURJQSkKICAgICBRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlciogbV9GdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyOworI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBHU3RyZWFtZXJGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyKiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7Cisj
ZW5kaWYKIH07CiAKIH0K
</data>
<flag name="review"
          id="78760"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87719</attachid>
            <date>2011-03-31 07:11:30 -0700</date>
            <delta_ts>2011-03-31 07:12:56 -0700</delta_ts>
            <desc>V4 with comments taken into accounts.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20733</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1M2FhOWM1Li5lYzg2ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDMtMzEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBJbXBsZW1lbnQgZnVsbHNjcmVlbiBwbGF5YmFjayBmb3IgdGhlIEdTdHJlYW1lciBiYWNrZW5k
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MjYK
KworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZnVsbHNjcmVlbiBwbGF5YmFjayB3aGVu
IGJ1aWxkaW5nIHRoZQorICAgICAgICBRdCBwb3J0IHdpdGggdGhlIEdTdHJlYW1lciBiYWNrZW5k
IChERUZJTkVTKz1VU0VfR1NUUkVBTUVSPTEpLgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
aXMgZG9uZSBpbiBGdWxsU2NyZWVuVmlkZW9RdCBhbG9uZ3NpZGUgd2l0aAorICAgICAgICB0aGUg
UXQgTXVsdGltZWRpYSBzdXBwb3J0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGxh
eW91dCB0ZXN0cyBjb3ZlciBpdC4gVGhlcmUgYXJlIG5vdCB5ZXQgYWN0aXZhdGVkCisgICAgICAg
IGJ1dCB3aWxsIGJlIGFueSB0aW1lIHNvb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1F0LmNwcDoKKyAgICAg
ICAgKEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6RnVsbFNjcmVlblZpZGVvV2luZG93KToKKyAgICAg
ICAgKEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2V0VmlkZW9FbGVtZW50KToKKyAgICAgICAgKEZ1
bGxTY3JlZW5WaWRlb1dpbmRvdzo6Y2xvc2VFdmVudCk6CisgICAgICAgIChGdWxsU2NyZWVuVmlk
ZW9XaW5kb3c6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoRnVsbFNjcmVlblZpZGVvV2luZG93
OjpldmVudCk6CisgICAgICAgIChGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OmhpZGVDdXJzb3IpOgor
ICAgICAgICAoRnVsbFNjcmVlblZpZGVvV2luZG93OjpzaG93Q3Vyc29yKToKKwogMjAxMS0wMy0z
MSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgyNTY1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvd1ByaXZhdGUuaAppbmRleCAwYWU0NTg3Li44NjU1ZWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dp
bmRvd1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaApAQCAtMjAsMjEgKzIwLDM0IEBACiAj
aWZuZGVmIFBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlX2gKICNkZWZpbmUgUGxhdGZvcm1WaWRl
b1dpbmRvd1ByaXZhdGVfaAogCisjaW5jbHVkZSA8UVRpbWVyPgogI2luY2x1ZGUgPFFXaWRnZXQ+
CiAKIGNsYXNzIFFLZXlFdmVudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1M
VmlkZW9FbGVtZW50OworCiBjbGFzcyBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6IHB1YmxpYyBRV2lk
Z2V0IHsKIFFfT0JKRUNUCiBwdWJsaWM6CiAgICAgRnVsbFNjcmVlblZpZGVvV2luZG93KCk7Cisg
ICAgdm9pZCBzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwogc2lnbmFsczoKICAg
ICB2b2lkIGNsb3NlZCgpOwogcHJvdGVjdGVkOgotICAgIHZvaWQga2V5UHJlc3NFdmVudChRS2V5
RXZlbnQqIGV2KTsKLSAgICBib29sIGV2ZW50KFFFdmVudCogZXYpOworICAgIHZvaWQgY2xvc2VF
dmVudChRQ2xvc2VFdmVudCopOworICAgIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqKTsK
KyAgICBib29sIGV2ZW50KFFFdmVudCopOworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgaGlk
ZUN1cnNvcigpOworCitwcml2YXRlOgorICAgIHZvaWQgc2hvd0N1cnNvcigpOworICAgIFFUaW1l
ciBtX2N1cnNvclRpbWVyOworICAgIEhUTUxWaWRlb0VsZW1lbnQqIG1fbWVkaWFFbGVtZW50Owog
fTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCmluZGV4IDg3MmQw
NTUuLjk0ZjZiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCkBA
IC0xOCw4ICsxOCwxMCBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAi
UGxhdGZvcm1WaWRlb1dpbmRvdy5oIgogCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgiCiAKICNpbmNsdWRlIDxRQXBw
bGljYXRpb24+CkBAIC0yOCwyOSArMzAsNTUgQEAKICNpbmNsdWRlIDxRUGFsZXR0ZT4KIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3QgaW50IGdIaWRlTW91c2VDdXJzb3JE
ZWxheSA9IDMwMDA7CisKIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6RnVsbFNjcmVlblZpZGVvV2lu
ZG93KCkKICAgICA6IFFXaWRnZXQoMCwgUXQ6OldpbmRvdykKKyAgICAsIG1fbWVkaWFFbGVtZW50
KDApCiB7CiAgICAgc2V0QXR0cmlidXRlKFF0OjpXQV9OYXRpdmVXaW5kb3cpOwotICAgIC8vIFNl
dHRpbmcgdGhlc2UgdmFsdWVzIGVuc3VyZXMgc21vb3RoIHJlc2l6aW5nIHNpbmNlIGl0Ci0gICAg
Ly8gd2lsbCBwcmV2ZW50IHRoZSBzeXN0ZW0gZnJvbSBjbGVhcmluZyB0aGUgYmFja2dyb3VuZC4K
KyAgICBzZXRXaW5kb3dNb2RhbGl0eShRdDo6QXBwbGljYXRpb25Nb2RhbCk7CiAgICAgc2V0QXR0
cmlidXRlKFF0OjpXQV9Ob1N5c3RlbUJhY2tncm91bmQsIHRydWUpOwogICAgIHNldEF0dHJpYnV0
ZShRdDo6V0FfUGFpbnRPblNjcmVlbiwgdHJ1ZSk7CisKKyAgICBtX2N1cnNvclRpbWVyLnNldFNp
bmdsZVNob3QodHJ1ZSk7CisgICAgY29ubmVjdCgmbV9jdXJzb3JUaW1lciwgU0lHTkFMKHRpbWVv
dXQoKSksIHRoaXMsIFNMT1QoaGlkZUN1cnNvcigpKSk7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZp
ZGVvV2luZG93OjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVv
V2luZG93OjpjbG9zZUV2ZW50KFFDbG9zZUV2ZW50KiBldmVudCkKK3sKKyAgICBtX2N1cnNvclRp
bWVyLnN0b3AoKTsKKyAgICBzZXRNb3VzZVRyYWNraW5nKGZhbHNlKTsKKyAgICByZWxlYXNlTW91
c2UoKTsKKyAgICBRQXBwbGljYXRpb246OnJlc3RvcmVPdmVycmlkZUN1cnNvcigpOwogfQogCiB2
b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2KQog
ewotICAgIGlmIChldi0+a2V5KCkgPT0gUXQ6OktleV9Fc2NhcGUpIHsKLSAgICAgICAgY2xvc2Uo
KTsKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYgZXYtPmtleSgpID09IFF0OjpLZXlfU3BhY2Up
IHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAgICAgICBt
X21lZGlhRWxlbWVudC0+cGF1c2UodHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1f
bWVkaWFFbGVtZW50LT5wbGF5KHRydWUpOworICAgIH0gZWxzZSBpZiAoZXYtPmtleSgpID09IFF0
OjpLZXlfRXNjYXBlKQogICAgICAgICBlbWl0IGNsb3NlZCgpOwotICAgIH0KKyAgICBRV2lkZ2V0
OjprZXlQcmVzc0V2ZW50KGV2KTsKIH0KIAogYm9vbCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OmV2
ZW50KFFFdmVudCogZXYpCiB7CiAgICAgc3dpdGNoIChldi0+dHlwZSgpKSB7CisgICAgY2FzZSBR
RXZlbnQ6Ok1vdXNlTW92ZToKKyAgICAgICAgc2hvd0N1cnNvcigpOworICAgICAgICBldi0+YWNj
ZXB0KCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRv
bkRibENsaWNrOgotICAgICAgICBjbG9zZSgpOworICAgICAgICBlbWl0IGNsb3NlZCgpOwogICAg
ICAgICBldi0+YWNjZXB0KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CkBA
IC01OCw2ICs4NiwxNyBAQCBib29sIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6ZXZlbnQoUUV2ZW50
KiBldikKICAgICB9CiB9CiAKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93OjpoaWRlQ3Vyc29y
KCkKK3sKKyAgICBRQXBwbGljYXRpb246OnNldE92ZXJyaWRlQ3Vyc29yKFFDdXJzb3IoUXQ6OkJs
YW5rQ3Vyc29yKSk7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93OjpzaG93Q3Vyc29y
KCkKK3sKKyAgICBRQXBwbGljYXRpb246OnJlc3RvcmVPdmVycmlkZUN1cnNvcigpOworICAgIG1f
Y3Vyc29yVGltZXIuc3RhcnQoZ0hpZGVNb3VzZUN1cnNvckRlbGF5KTsKK30KKwogCiBQbGF0Zm9y
bVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2luZG93KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
N2JhYjZhOS4uYWI5OGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0w
My0zMSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEltcGxlbWVu
dCBmdWxsc2NyZWVuIHBsYXliYWNrIGZvciB0aGUgR1N0cmVhbWVyIGJhY2tlbmQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjgyNgorCisgICAgICAg
IEltcGxlbWVudCBzdXBwb3J0IGZvciBmdWxsc2NyZWVuIHBsYXliYWNrIHdoZW4gYnVpbGRpbmcg
dGhlCisgICAgICAgIFF0IHBvcnQgd2l0aCB0aGUgR1N0cmVhbWVyIGJhY2tlbmQgKERFRklORVMr
PVVTRV9HU1RSRUFNRVI9MSkuCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkb25lIGlu
IEZ1bGxTY3JlZW5WaWRlb1F0IGFsb25nc2lkZSB3aXRoCisgICAgICAgIHRoZSBRdCBNdWx0aW1l
ZGlhIHN1cHBvcnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgbGF5b3V0IHRlc3Rz
IGNvdmVyIGl0LiBUaGVyZSBhcmUgbm90IHlldCBhY3RpdmF0ZWQKKyAgICAgICAgYnV0IHdpbGwg
YmUgYW55IHRpbWUgc29vbi4KKworICAgICAgICAqIFF0V2ViS2l0LnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6On5DaHJvbWVDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRl
b1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRs
ZXI6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6c2V0VmlkZW9FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OmVudGVyRnVsbFNj
cmVlbik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
Ojp3aW5kb3dDbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZp
ZGVvSGFuZGxlcjo6ZXhpdEZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEZ1
bGxTY3JlZW5WaWRlb0hhbmRsZXI6OkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpGdWxsU2NyZWVuVmlkZW9RdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6fkZ1bGxTY3JlZW5WaWRlb1F0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjplbnRlckZ1bGxTY3JlZW5Gb3JO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpleGl0RnVsbFNjcmVl
bkZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OnJlcXVpcmVz
RnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
blZpZGVvUXQ6OmlzVmFsaWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5W
aWRlb1F0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyOjp+R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisKIDIwMTEtMDMtMzAgIFlp
IFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9RdFdl
YktpdC5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybwppbmRleCA4ODM2YzRhLi5l
MzcwNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybworKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybwpAQCAtMjExLDEzICsyMTEsMTMgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9MSkgewogCiBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgICFjb250YWlucyhERUZJTkVTLCBVU0VfR1NU
UkVBTUVSPTEpOmNvbnRhaW5zKE1PQklMSVRZX0NPTkZJRywgbXVsdGltZWRpYSkgewotICAgICAg
ICBIRUFERVJTICs9IFwKLSAgICAgICAgICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1F0LmggXAotICAgICAgICAgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVl
blZpZGVvV2lkZ2V0LmgKKyAgICAgICAgSEVBREVSUyArPSAkJFBXRC9XZWJDb3JlU3VwcG9ydC9G
dWxsU2NyZWVuVmlkZW9XaWRnZXQuaAorICAgICAgICBTT1VSQ0VTICs9ICQkUFdEL1dlYkNvcmVT
dXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdldC5jcHAKKyAgICB9CiAKLSAgICAgICAgU09VUkNF
UyArPSBcCi0gICAgICAgICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9R
dC5jcHAgXAotICAgICAgICAgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVv
V2lkZ2V0LmNwcAorICAgIGNvbnRhaW5zKERFRklORVMsIFVTRV9HU1RSRUFNRVI9MSkgfCBjb250
YWlucyhNT0JJTElUWV9DT05GSUcsIG11bHRpbWVkaWEpIHsKKyAgICAgICAgSEVBREVSUyArPSAk
JFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCisgICAgICAgIFNPVVJDRVMg
Kz0gJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwCmluZGV4IGJlYzRiYzQuLmFiNTVlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC03NSwxMyArNzUsMTUgQEAKICNp
bmNsdWRlIDxxdG9vbHRpcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAotI2lmIEVOQUJM
RShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogI2lu
Y2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1F0LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
KyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVR
dC5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MCw3ICs5
Miw3IEBAIGJvb2wgQ2hyb21lQ2xpZW50UXQ6OmR1bXBWaXNpdGVkTGlua3NDYWxsYmFja3MgPSBm
YWxzZTsKIENocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdChRV2ViUGFnZSogd2ViUGFnZSkK
ICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQogICAgICwgbV9ldmVudExvb3AoMCkKLSNpZiBFTkFC
TEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKICAg
ICAsIG1fZnVsbFNjcmVlblZpZGVvKDApCiAjZW5kaWYKIHsKQEAgLTEwMiw3ICsxMDQsNyBAQCBD
aHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KCkKICAgICBpZiAobV9ldmVudExvb3ApCiAg
ICAgICAgIG1fZXZlbnRMb29wLT5leGl0KCk7CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJM
RShRVF9NVUxUSU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKICAgICBkZWxldGUgbV9mdWxsU2Ny
ZWVuVmlkZW87CiAjZW5kaWYKIH0KQEAgLTY1MCw3ICs2NTIsNyBAQCBJbnRSZWN0IENocm9tZUNs
aWVudFF0Ojp2aXNpYmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkgY29uc3QKIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFC
TEUoVklERU8pCiBGdWxsU2NyZWVuVmlkZW9RdCogQ2hyb21lQ2xpZW50UXQ6OmZ1bGxTY3JlZW5W
aWRlbygpCiB7CiAgICAgaWYgKCFtX2Z1bGxTY3JlZW5WaWRlbykKQEAgLTY3MywxMyArNjc1LDYg
QEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2Rl
KQogewogICAgIEFTU0VSVChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRl
b1RhZykpOwogCi0gICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOwotICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOwotCi0gICAgQVNTRVJUKHBsYXRm
b3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSk7Ci0gICAg
aWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlw
ZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgZnVsbFNjcmVlblZpZGVvKCktPmVudGVyRnVsbFNj
cmVlbkZvck5vZGUobm9kZSk7CiB9CiAKQEAgLTY4NywxMyArNjgyLDYgQEAgdm9pZCBDaHJvbWVD
bGllbnRRdDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJU
KG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSk7CiAKLSAgICBI
VE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVt
ZW50Kj4obm9kZSk7Ci0gICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVt
ZW50LT5wbGF0Zm9ybU1lZGlhKCk7Ci0KLSAgICBBU1NFUlQocGxhdGZvcm1NZWRpYS50eXBlID09
IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKTsKLSAgICBpZiAocGxhdGZvcm1NZWRp
YS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKQotICAgICAgICByZXR1
cm47Ci0KICAgICBmdWxsU2NyZWVuVmlkZW8oKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JOb2RlKG5vZGUp
OwogfSAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5oCmluZGV4IGExMmMyZWMuLjE1MDA1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTUwLDcgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0cnVjdCBGcmFtZUxvYWRSZXF1ZXN0OwogICAgIGNs
YXNzIFF0QWJzdHJhY3RXZWJQb3B1cDsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7Ci0j
aWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklE
RU8pCiAgICAgY2xhc3MgRnVsbFNjcmVlblZpZGVvUXQ7CiAjZW5kaWYKIApAQCAtMTY2LDcgKzE2
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG5lZWRUb3Vj
aEV2ZW50cyhib29sKSB7IH0KICNlbmRpZgogIAotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxF
KFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKik7CkBAIC0yMDYsNyArMjA2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1lbnVCYXJWaXNpYmxlOwogICAgICAgICBRRXZl
bnRMb29wKiBtX2V2ZW50TG9vcDsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01V
TFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBGdWxsU2NyZWVuVmlkZW9RdCog
bV9mdWxsU2NyZWVuVmlkZW87CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcAppbmRleCBjY2NhNDNjLi40OWZl
YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxT
Y3JlZW5WaWRlb1F0LmNwcApAQCAtMjIsMTggKzIyLDc2IEBACiAjaW5jbHVkZSAiRnVsbFNjcmVl
blZpZGVvUXQuaCIKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0LmgiCisjaWYgRU5BQkxFKFFU
X01VTFRJTUVESUEpCiAjaW5jbHVkZSAiRnVsbFNjcmVlblZpZGVvV2lkZ2V0LmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGVRdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5j
bHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvd1By
aXZhdGUuaCIKKyNlbmRpZgogCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiAjaW5jbHVkZSA8
UUdyYXBoaWNzVmlkZW9JdGVtPgogI2luY2x1ZGUgPFFNZWRpYVBsYXllcj4KKyNlbmRpZgorI2lu
Y2x1ZGUgPFFXaWRnZXQ+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShHU1RSRUFN
RVIpCisKK0dTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OkdTdHJlYW1lckZ1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXIoKQorICAgIDogbV92aWRlb0VsZW1lbnQoMCkKKyAgICAsIG1fZnVsbFNj
cmVlbldpZGdldCgwKQoreworfQorCit2b2lkIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRs
ZXI6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiBlbGVtZW50KQoreworICAgIG1f
dmlkZW9FbGVtZW50ID0gZWxlbWVudDsKK30KKwordm9pZCBHU3RyZWFtZXJGdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyOjplbnRlckZ1bGxTY3JlZW4oKQoreworICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+
cGxhdGZvcm1NZWRpYSgpLnR5cGUgIT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVy
R1dvcmxkVHlwZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1N0cmVhbWVyR1dvcmxkKiBnc3Ry
ZWFtZXJHV29ybGQgPSBtX3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJl
YW1lckdXb3JsZDsKKworICAgIGlmICghZ3N0cmVhbWVyR1dvcmxkLT5lbnRlckZ1bGxzY3JlZW4o
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxGdWxsU2NyZWVuVmlkZW9XaW5kb3cqID4oZ3N0cmVhbWVyR1dvcmxkLT5wbGF0Zm9y
bVZpZGVvV2luZG93KCktPndpbmRvdygpKTsKKworICAgIG1fZnVsbFNjcmVlbldpZGdldC0+c2V0
VmlkZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50KTsKKworICAgIGNvbm5lY3QobV9mdWxsU2NyZWVu
V2lkZ2V0LCBTSUdOQUwoY2xvc2VkKCkpLCB0aGlzLCBTTE9UKHdpbmRvd0Nsb3NlZCgpKSk7CisK
KyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPnNob3dGdWxsU2NyZWVuKCk7Cit9CisKK3ZvaWQgR1N0
cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6d2luZG93Q2xvc2VkKCkKK3sKKyAgICBtX3Zp
ZGVvRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBHU3RyZWFtZXJGdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyOjpleGl0RnVsbFNjcmVlbigpCit7CisgICAgaWYgKG1fdmlkZW9FbGVt
ZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3Ry
ZWFtZXJHV29ybGRUeXBlKQorICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgp
Lm1lZGlhLmdzdHJlYW1lckdXb3JsZC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIG1fZnVsbFNj
cmVlbldpZGdldC0+c2V0VmlkZW9FbGVtZW50KDApOworCisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0
LT5jbG9zZSgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKIGJvb2wg
RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OnNfc2hvdWxkRm9yY2VGdWxsU2NyZWVuVmlk
ZW9QbGF5YmFjayA9IGZhbHNlOwogCiBEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6RGVm
YXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKQpAQCAtNDIsNiArMTAwLDggQEAgRGVmYXVsdEZ1
bGxTY3JlZW5WaWRlb0hhbmRsZXI6OkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkKIHsK
ICAgICBjb25uZWN0KG1fZnVsbFNjcmVlbldpZGdldCwgU0lHTkFMKGRpZEV4aXRGdWxsU2NyZWVu
KCkpLCB0aGlzLCBTSUdOQUwoZnVsbFNjcmVlbkNsb3NlZCgpKSk7CiAgICAgbV9mdWxsU2NyZWVu
V2lkZ2V0LT5oaWRlKCk7CisKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPmNsb3NlKCk7CiB9CiAK
IERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjp+RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXIoKQpAQCAtNzIsMjQgKzEzMiwzNiBAQCB2b2lkIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyOjpleGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5jbG9z
ZSgpOwogfQorI2VuZGlmCiAKIEZ1bGxTY3JlZW5WaWRlb1F0OjpGdWxsU2NyZWVuVmlkZW9RdChD
aHJvbWVDbGllbnRRdCogY2hyb21lQ2xpZW50KQogICAgIDogbV9jaHJvbWVDbGllbnQoY2hyb21l
Q2xpZW50KQogICAgICwgbV92aWRlb0VsZW1lbnQoMCkKIHsKICAgICBRX0FTU0VSVChtX2Nocm9t
ZUNsaWVudCk7Ci0gICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyID0gbV9jaHJvbWVDbGllbnQt
Pm1fcGxhdGZvcm1QbHVnaW4uY3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOwogCisjaWYg
RU5BQkxFKFFUX01VTFRJTUVESUEpCisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyID0gbV9j
aHJvbWVDbGllbnQtPm1fcGxhdGZvcm1QbHVnaW4uY3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxl
cigpOwogICAgIGlmICghbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKQogICAgICAgICBtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIgPSBuZXcgRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CiAK
ICAgICBpZiAobV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKQogICAgICAgICBjb25uZWN0KG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlciwgU0lHTkFMKGZ1bGxTY3JlZW5DbG9zZWQoKSksIHRoaXMsIFNM
T1QoYWJvdXRUb0Nsb3NlKCkpKTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBt
X0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXIgPSBuZXcgR1N0cmVhbWVyRnVsbFNjcmVl
blZpZGVvSGFuZGxlcjsKKyNlbmRpZgogfQogCiBGdWxsU2NyZWVuVmlkZW9RdDo6fkZ1bGxTY3Jl
ZW5WaWRlb1F0KCkKIHsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBkZWxldGUgbV9G
dWxsU2NyZWVuVmlkZW9IYW5kbGVyOworI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBk
ZWxldGUgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyOworI2VuZGlmCiB9CiAKIHZv
aWQgRnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkK
QEAgLTk3LDI1ICsxNjksNTYgQEAgdm9pZCBGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2Ny
ZWVuRm9yTm9kZShOb2RlKiBub2RlKQogICAgIFFfQVNTRVJUKG5vZGUpOwogICAgIFFfQVNTRVJU
KG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcik7CiAKKyAgICBtX3ZpZGVvRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihub2RlKTsKKworI2lmIEVOQUJMRShRVF9NVUxUSU1F
RElBKQorCisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8
SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOworICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRp
YSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOworCisgICAgQVNTRVJUKHBsYXRmb3Jt
TWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSk7CisgICAgaWYg
KHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBtZWRpYVBsYXllclF0
ID0gbWVkaWFQbGF5ZXJGb3JOb2RlKG5vZGUpOworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBt
ZWRpYVBsYXllclF0ID0gbWVkaWFQbGF5ZXIoKTsKICAgICBtZWRpYVBsYXllclF0LT5yZW1vdmVW
aWRlb0l0ZW0oKTsKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPmVudGVyRnVsbFNjcmVl
bihtZWRpYVBsYXllclF0LT5tZWRpYVBsYXllcigpKTsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJF
QU1FUikKKyAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXItPnNldFZpZGVvRWxl
bWVudChtX3ZpZGVvRWxlbWVudCk7CisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVh
bWVyLT5lbnRlckZ1bGxTY3JlZW4oKTsKKyNlbmRpZgogfQogCiB2b2lkIEZ1bGxTY3JlZW5WaWRl
b1F0OjpleGl0RnVsbFNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBRX0FTU0VSVChu
b2RlKTsKKworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorCisgICAgSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOwor
ICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1N
ZWRpYSgpOworCisgICAgQVNTRVJUKHBsYXRmb3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlh
OjpRdE1lZGlhUGxheWVyVHlwZSk7CisgICAgaWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0
Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUV9B
U1NFUlQobV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKTsKIAogICAgIGlmICghbV9GdWxsU2NyZWVu
VmlkZW9IYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hh
bmRsZXItPmV4aXRGdWxsU2NyZWVuKCk7Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlh
UGxheWVyUXQgPSBtZWRpYVBsYXllckZvck5vZGUobm9kZSk7CisgICAgTWVkaWFQbGF5ZXJQcml2
YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRpYVBsYXllcigpOwogICAgIG1lZGlhUGxheWVyUXQt
PnJlc3RvcmVWaWRlb0l0ZW0oKTsKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgbV9G
dWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyLT5leGl0RnVsbFNjcmVlbigpOworI2VuZGlm
CiB9CiAKIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmFib3V0VG9DbG9zZSgpCkBAIC0xMjQsMjQg
KzIyNywzMyBAQCB2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0OjphYm91dFRvQ2xvc2UoKQogICAgIG1f
dmlkZW9FbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwogfQogCisjaWYgRU5BQkxFKFFUX01VTFRJ
TUVESUEpCiBNZWRpYVBsYXllclByaXZhdGVRdCogRnVsbFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxh
eWVyKCkKIHsKICAgICBRX0FTU0VSVChtX3ZpZGVvRWxlbWVudCk7CiAgICAgUGxhdGZvcm1NZWRp
YSBwbGF0Zm9ybU1lZGlhID0gbV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlUXQqPihwbGF0Zm9ybU1lZGlhLm1l
ZGlhLnF0TWVkaWFQbGF5ZXIpOwogfQorI2VuZGlmCiAKLU1lZGlhUGxheWVyUHJpdmF0ZVF0KiBG
dWxsU2NyZWVuVmlkZW9RdDo6bWVkaWFQbGF5ZXJGb3JOb2RlKE5vZGUqIG5vZGUpCitib29sIEZ1
bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkKIHsK
LSAgICBRX0FTU0VSVChub2RlKTsKLSAgICBpZiAobm9kZSkKLSAgICAgICAgbV92aWRlb0VsZW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7Ci0gICAgcmV0dXJuIG1l
ZGlhUGxheWVyKCk7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisgICAgcmV0dXJuIG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlciA/IG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlci0+cmVxdWlyZXNG
dWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpIDogZmFsc2U7CisjZW5kaWYKKyNpZiBVU0UoR1NU
UkVBTUVSKQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCi1ib29sIEZ1bGxTY3JlZW5W
aWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkKK2Jvb2wgRnVsbFNj
cmVlblZpZGVvUXQ6OmlzVmFsaWQoKSBjb25zdAogewotICAgIHJldHVybiBtX0Z1bGxTY3JlZW5W
aWRlb0hhbmRsZXIgPyBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPnJlcXVpcmVzRnVsbFNjcmVl
bkZvclZpZGVvUGxheWJhY2soKSA6IGZhbHNlOworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQor
ICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CisjZW5kaWYKKyNpZiBVU0UoR1NU
UkVBTUVSKQorICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7Cisj
ZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GdWxsU2NyZWVuVmlkZW9RdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
dWxsU2NyZWVuVmlkZW9RdC5oCmluZGV4IGE0OGE4ODIuLmUwMTEyMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKQEAgLTIw
LDYgKzIwLDcgQEAKICNpZm5kZWYgRnVsbFNjcmVlblZpZGVvUXRfaAogI2RlZmluZSBGdWxsU2Ny
ZWVuVmlkZW9RdF9oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybS5oIgogI2luY2x1ZGUgInF3ZWJraXRw
bGF0Zm9ybXBsdWdpbi5oIgogI2luY2x1ZGUgPFFPYmplY3Q+CiAKQEAgLTM0LDggKzM1LDMzIEBA
IGNsYXNzIENocm9tZUNsaWVudFF0OwogY2xhc3MgRnVsbFNjcmVlblZpZGVvV2lkZ2V0OwogY2xh
c3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIE5vZGU7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVE
SUEpCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVRdDsKKyNlbmRpZgogCisjaWYgZGVmaW5lZChX
VEZfVVNFX0dTVFJFQU1FUikgJiYgV1RGX1VTRV9HU1RSRUFNRVIKK2NsYXNzIEZ1bGxTY3JlZW5W
aWRlb1dpbmRvdzsKKworY2xhc3MgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlciA6IHB1
YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEdTdHJlYW1lckZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIoKTsKKyAgICB+R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxl
cigpIHt9OworICAgIHZvaWQgc2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqKTsKKwor
ICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuKCk7CisgICAgdm9pZCBleGl0RnVsbFNjcmVlbigpOwor
CitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIHdpbmRvd0Nsb3NlZCgpOworCitwcml2YXRlOgor
ICAgIEhUTUxWaWRlb0VsZW1lbnQqIG1fdmlkZW9FbGVtZW50OworICAgIEZ1bGxTY3JlZW5WaWRl
b1dpbmRvdyogbV9mdWxsU2NyZWVuV2lkZ2V0OworfTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChF
TkFCTEVfUVRfTVVMVElNRURJQSkgJiYgRU5BQkxFX1FUX01VTFRJTUVESUEKIGNsYXNzIERlZmF1
bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDogcHVibGljIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyIHsKICAgICBRX09CSkVDVAogcHVibGljOgpAQCAtNTEsNiArNzcsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIHNfc2hvdWxkRm9yY2VGdWxsU2NyZWVuVmlkZW9QbGF5YmFjazsKICAg
ICBGdWxsU2NyZWVuVmlkZW9XaWRnZXQgKm1fZnVsbFNjcmVlbldpZGdldDsKIH07CisjZW5kaWYK
IAogY2xhc3MgRnVsbFNjcmVlblZpZGVvUXQgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpF
Q1QKQEAgLTYxLDExICs4OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVs
bFNjcmVlbkZvck5vZGUoTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZv
ck5vZGUoTm9kZSopOwogICAgIGJvb2wgcmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFj
aygpOwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRl
b0hhbmRsZXI7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogcHJpdmF0ZToKKyNpZiBF
TkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5
ZXIoKTsKLSAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5ZXJGb3JOb2RlKE5vZGUq
ID0gMCk7CisjZW5kaWYKIAogcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIGFib3V0VG9DbG9zZSgp
OwpAQCAtNzMsNyArMTAxLDEyIEBAIHByaXZhdGUgc2xvdHM6CiBwcml2YXRlOgogICAgIENocm9t
ZUNsaWVudFF0KiBtX2Nocm9tZUNsaWVudDsKICAgICBIVE1MVmlkZW9FbGVtZW50KiBtX3ZpZGVv
RWxlbWVudDsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBRV2ViRnVsbFNjcmVlblZp
ZGVvSGFuZGxlciogbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyOworI2VuZGlmCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBtX0Z1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5kaWYKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87721</attachid>
            <date>2011-03-31 07:12:56 -0700</date>
            <delta_ts>2011-04-06 09:41:12 -0700</delta_ts>
            <desc>V5 with Changelog fixed.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20731</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1M2FhOWM1Li5kZGI5ODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDMtMzEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBJbXBsZW1lbnQgZnVsbHNjcmVlbiBwbGF5YmFjayBmb3IgdGhlIEdTdHJlYW1lciBiYWNrZW5k
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MjYK
KworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZnVsbHNjcmVlbiBwbGF5YmFjayB3aGVu
IGJ1aWxkaW5nIHRoZQorICAgICAgICBRdCBwb3J0IHdpdGggdGhlIEdTdHJlYW1lciBiYWNrZW5k
IChERUZJTkVTKz1VU0VfR1NUUkVBTUVSPTEpLgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
aXMgZG9uZSBpbiBGdWxsU2NyZWVuVmlkZW9RdCBhbG9uZ3NpZGUgd2l0aAorICAgICAgICB0aGUg
UXQgTXVsdGltZWRpYSBzdXBwb3J0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGxh
eW91dCB0ZXN0cyBjb3ZlciBpdC4gVGhleSBhcmUgbm90IHlldCBhY3RpdmF0ZWQKKyAgICAgICAg
YnV0IHdpbGwgYmUgYW55IHRpbWUgc29vbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwOgorICAgICAg
ICAoRnVsbFNjcmVlblZpZGVvV2luZG93OjpGdWxsU2NyZWVuVmlkZW9XaW5kb3cpOgorICAgICAg
ICAoRnVsbFNjcmVlblZpZGVvV2luZG93OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoRnVs
bFNjcmVlblZpZGVvV2luZG93OjpjbG9zZUV2ZW50KToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRl
b1dpbmRvdzo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChGdWxsU2NyZWVuVmlkZW9XaW5kb3c6
OmV2ZW50KToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6aGlkZUN1cnNvcik6Cisg
ICAgICAgIChGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OnNob3dDdXJzb3IpOgorCiAyMDExLTAzLTMx
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByODI1NjUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZp
ZGVvV2luZG93UHJpdmF0ZS5oCmluZGV4IDBhZTQ1ODcuLjg2NTVlZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2lu
ZG93UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oCkBAIC0yMCwyMSArMjAsMzQgQEAKICNp
Zm5kZWYgUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGVfaAogI2RlZmluZSBQbGF0Zm9ybVZpZGVv
V2luZG93UHJpdmF0ZV9oCiAKKyNpbmNsdWRlIDxRVGltZXI+CiAjaW5jbHVkZSA8UVdpZGdldD4K
IAogY2xhc3MgUUtleUV2ZW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxW
aWRlb0VsZW1lbnQ7CisKIGNsYXNzIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzogcHVibGljIFFXaWRn
ZXQgewogUV9PQkpFQ1QKIHB1YmxpYzoKICAgICBGdWxsU2NyZWVuVmlkZW9XaW5kb3coKTsKKyAg
ICB2b2lkIHNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7CiBzaWduYWxzOgogICAg
IHZvaWQgY2xvc2VkKCk7CiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlF
dmVudCogZXYpOwotICAgIGJvb2wgZXZlbnQoUUV2ZW50KiBldik7CisgICAgdm9pZCBjbG9zZUV2
ZW50KFFDbG9zZUV2ZW50Kik7CisgICAgdm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCopOwor
ICAgIGJvb2wgZXZlbnQoUUV2ZW50Kik7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBoaWRl
Q3Vyc29yKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzaG93Q3Vyc29yKCk7CisgICAgUVRpbWVy
IG1fY3Vyc29yVGltZXI7CisgICAgSFRNTFZpZGVvRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CiB9
OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKaW5kZXggODcyZDA1
NS4uOTRmNmI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKQEAg
LTE4LDggKzE4LDEwIEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJQ
bGF0Zm9ybVZpZGVvV2luZG93LmgiCiAKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCIKIAogI2luY2x1ZGUgPFFBcHBs
aWNhdGlvbj4KQEAgLTI4LDI5ICszMCw1NSBAQAogI2luY2x1ZGUgPFFQYWxldHRlPgogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdCBpbnQgZ0hpZGVNb3VzZUN1cnNvckRl
bGF5ID0gMzAwMDsKKwogRnVsbFNjcmVlblZpZGVvV2luZG93OjpGdWxsU2NyZWVuVmlkZW9XaW5k
b3coKQogICAgIDogUVdpZGdldCgwLCBRdDo6V2luZG93KQorICAgICwgbV9tZWRpYUVsZW1lbnQo
MCkKIHsKICAgICBzZXRBdHRyaWJ1dGUoUXQ6OldBX05hdGl2ZVdpbmRvdyk7Ci0gICAgLy8gU2V0
dGluZyB0aGVzZSB2YWx1ZXMgZW5zdXJlcyBzbW9vdGggcmVzaXppbmcgc2luY2UgaXQKLSAgICAv
LyB3aWxsIHByZXZlbnQgdGhlIHN5c3RlbSBmcm9tIGNsZWFyaW5nIHRoZSBiYWNrZ3JvdW5kLgor
ICAgIHNldFdpbmRvd01vZGFsaXR5KFF0OjpBcHBsaWNhdGlvbk1vZGFsKTsKICAgICBzZXRBdHRy
aWJ1dGUoUXQ6OldBX05vU3lzdGVtQmFja2dyb3VuZCwgdHJ1ZSk7CiAgICAgc2V0QXR0cmlidXRl
KFF0OjpXQV9QYWludE9uU2NyZWVuLCB0cnVlKTsKKworICAgIG1fY3Vyc29yVGltZXIuc2V0U2lu
Z2xlU2hvdCh0cnVlKTsKKyAgICBjb25uZWN0KCZtX2N1cnNvclRpbWVyLCBTSUdOQUwodGltZW91
dCgpKSwgdGhpcywgU0xPVChoaWRlQ3Vyc29yKCkpKTsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlk
ZW9XaW5kb3c6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiBlbGVtZW50KQorewor
ICAgIG1fbWVkaWFFbGVtZW50ID0gZWxlbWVudDsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9X
aW5kb3c6OmNsb3NlRXZlbnQoUUNsb3NlRXZlbnQqIGV2ZW50KQoreworICAgIG1fY3Vyc29yVGlt
ZXIuc3RvcCgpOworICAgIHNldE1vdXNlVHJhY2tpbmcoZmFsc2UpOworICAgIHJlbGVhc2VNb3Vz
ZSgpOworICAgIFFBcHBsaWNhdGlvbjo6cmVzdG9yZU92ZXJyaWRlQ3Vyc29yKCk7CiB9CiAKIHZv
aWQgRnVsbFNjcmVlblZpZGVvV2luZG93OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCogZXYpCiB7
Ci0gICAgaWYgKGV2LT5rZXkoKSA9PSBRdDo6S2V5X0VzY2FwZSkgewotICAgICAgICBjbG9zZSgp
OworICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBldi0+a2V5KCkgPT0gUXQ6OktleV9TcGFjZSkg
eworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAgICAgIG1f
bWVkaWFFbGVtZW50LT5wYXVzZSh0cnVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9t
ZWRpYUVsZW1lbnQtPnBsYXkodHJ1ZSk7CisgICAgfSBlbHNlIGlmIChldi0+a2V5KCkgPT0gUXQ6
OktleV9Fc2NhcGUpCiAgICAgICAgIGVtaXQgY2xvc2VkKCk7Ci0gICAgfQorICAgIFFXaWRnZXQ6
OmtleVByZXNzRXZlbnQoZXYpOwogfQogCiBib29sIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6ZXZl
bnQoUUV2ZW50KiBldikKIHsKICAgICBzd2l0Y2ggKGV2LT50eXBlKCkpIHsKKyAgICBjYXNlIFFF
dmVudDo6TW91c2VNb3ZlOgorICAgICAgICBzaG93Q3Vyc29yKCk7CisgICAgICAgIGV2LT5hY2Nl
cHQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9u
RGJsQ2xpY2s6Ci0gICAgICAgIGNsb3NlKCk7CisgICAgICAgIGVtaXQgY2xvc2VkKCk7CiAgICAg
ICAgIGV2LT5hY2NlcHQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAg
LTU4LDYgKzg2LDE3IEBAIGJvb2wgRnVsbFNjcmVlblZpZGVvV2luZG93OjpldmVudChRRXZlbnQq
IGV2KQogICAgIH0KIH0KIAordm9pZCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OmhpZGVDdXJzb3Io
KQoreworICAgIFFBcHBsaWNhdGlvbjo6c2V0T3ZlcnJpZGVDdXJzb3IoUUN1cnNvcihRdDo6Qmxh
bmtDdXJzb3IpKTsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OnNob3dDdXJzb3Io
KQoreworICAgIFFBcHBsaWNhdGlvbjo6cmVzdG9yZU92ZXJyaWRlQ3Vyc29yKCk7CisgICAgbV9j
dXJzb3JUaW1lci5zdGFydChnSGlkZU1vdXNlQ3Vyc29yRGVsYXkpOworfQorCiAKIFBsYXRmb3Jt
VmlkZW9XaW5kb3c6OlBsYXRmb3JtVmlkZW9XaW5kb3coKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA3
YmFiNmE5Li4zYjU5MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDExLTAz
LTMxICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50
IGZ1bGxzY3JlZW4gcGxheWJhY2sgZm9yIHRoZSBHU3RyZWFtZXIgYmFja2VuZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODI2CisKKyAgICAgICAg
SW1wbGVtZW50IHN1cHBvcnQgZm9yIGZ1bGxzY3JlZW4gcGxheWJhY2sgd2hlbiBidWlsZGluZyB0
aGUKKyAgICAgICAgUXQgcG9ydCB3aXRoIHRoZSBHU3RyZWFtZXIgYmFja2VuZCAoREVGSU5FUys9
VVNFX0dTVFJFQU1FUj0xKS4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGRvbmUgaW4g
RnVsbFNjcmVlblZpZGVvUXQgYWxvbmdzaWRlIHdpdGgKKyAgICAgICAgdGhlIFF0IE11bHRpbWVk
aWEgc3VwcG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBsYXlvdXQgdGVzdHMg
Y292ZXIgaXQuIFRoZXkgYXJlIG5vdCB5ZXQgYWN0aXZhdGVkCisgICAgICAgIGJ1dCB3aWxsIGJl
IGFueSB0aW1lIHNvb24uCisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0Ojp+Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6
OmVudGVyRnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9R
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
OjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OnNldFZpZGVvRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6
d2luZG93Q2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXI6OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9yTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxTY3JlZW5G
b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1
bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5W
aWRlb1F0Ojppc1ZhbGlkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlk
ZW9RdC5oOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxl
cjo6fkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOgorCiAyMDExLTAzLTMwICBZaSBT
aGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJL
aXQucHJvIGIvU291cmNlL1dlYktpdC9xdC9RdFdlYktpdC5wcm8KaW5kZXggODgzNmM0YS4uZTM3
MDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9RdFdlYktpdC5wcm8KKysrIGIvU291
cmNlL1dlYktpdC9xdC9RdFdlYktpdC5wcm8KQEAgLTIxMSwxMyArMjExLDEzIEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJPTEpIHsKIAogY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAgICAhY29udGFpbnMoREVGSU5FUywgVVNFX0dTVFJF
QU1FUj0xKTpjb250YWlucyhNT0JJTElUWV9DT05GSUcsIG11bHRpbWVkaWEpIHsKLSAgICAgICAg
SEVBREVSUyArPSBcCi0gICAgICAgICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVu
VmlkZW9RdC5oIFwKLSAgICAgICAgICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5W
aWRlb1dpZGdldC5oCisgICAgICAgIEhFQURFUlMgKz0gJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvV2lkZ2V0LmgKKyAgICAgICAgU09VUkNFUyArPSAkJFBXRC9XZWJDb3JlU3Vw
cG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuY3BwCisgICAgfQogCi0gICAgICAgIFNPVVJDRVMg
Kz0gXAotICAgICAgICAgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQu
Y3BwIFwKLSAgICAgICAgICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dp
ZGdldC5jcHAKKyAgICBjb250YWlucyhERUZJTkVTLCBVU0VfR1NUUkVBTUVSPTEpIHwgY29udGFp
bnMoTU9CSUxJVFlfQ09ORklHLCBtdWx0aW1lZGlhKSB7CisgICAgICAgIEhFQURFUlMgKz0gJCRQ
V0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaAorICAgICAgICBTT1VSQ0VTICs9
ICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcAogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cAppbmRleCBiZWM0YmM0Li5hYjU1ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApAQCAtNzUsMTMgKzc1LDE1IEBACiAjaW5j
bHVkZSA8cXRvb2x0aXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKLSNpZiBFTkFCTEUo
VklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKICNpbmNs
dWRlICJGdWxsU2NyZWVuVmlkZW9RdC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCisj
aWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUXQu
aCIKICNlbmRpZgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTAsNyArOTIs
NyBAQCBib29sIENocm9tZUNsaWVudFF0OjpkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2tzID0gZmFs
c2U7CiBDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQoUVdlYlBhZ2UqIHdlYlBhZ2UpCiAg
ICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKICAgICAsIG1fZXZlbnRMb29wKDApCi0jaWYgRU5BQkxF
KFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiAgICAg
LCBtX2Z1bGxTY3JlZW5WaWRlbygwKQogI2VuZGlmCiB7CkBAIC0xMDIsNyArMTA0LDcgQEAgQ2hy
b21lQ2xpZW50UXQ6On5DaHJvbWVDbGllbnRRdCgpCiAgICAgaWYgKG1fZXZlbnRMb29wKQogICAg
ICAgICBtX2V2ZW50TG9vcC0+ZXhpdCgpOwogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUo
UVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgZGVsZXRlIG1fZnVsbFNjcmVl
blZpZGVvOwogI2VuZGlmCiB9CkBAIC02NTAsNyArNjUyLDcgQEAgSW50UmVjdCBDaHJvbWVDbGll
bnRRdDo6dmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0CiB9CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxF
KFZJREVPKQogRnVsbFNjcmVlblZpZGVvUXQqIENocm9tZUNsaWVudFF0OjpmdWxsU2NyZWVuVmlk
ZW8oKQogewogICAgIGlmICghbV9mdWxsU2NyZWVuVmlkZW8pCkBAIC02NzMsMTMgKzY3NSw2IEBA
IHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkK
IHsKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9U
YWcpKTsKIAotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxWaWRlb0VsZW1lbnQqPihub2RlKTsKLSAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVk
aWEgPSB2aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKLQotICAgIEFTU0VSVChwbGF0Zm9y
bU1lZGlhLnR5cGUgPT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpOwotICAgIGlm
IChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIGZ1bGxTY3JlZW5WaWRlbygpLT5lbnRlckZ1bGxTY3Jl
ZW5Gb3JOb2RlKG5vZGUpOwogfQogCkBAIC02ODcsMTMgKzY4Miw2IEBAIHZvaWQgQ2hyb21lQ2xp
ZW50UXQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChu
b2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykpOwogCi0gICAgSFRN
TFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVu
dCo+KG5vZGUpOwotICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSA9IHZpZGVvRWxlbWVu
dC0+cGxhdGZvcm1NZWRpYSgpOwotCi0gICAgQVNTRVJUKHBsYXRmb3JtTWVkaWEudHlwZSA9PSBQ
bGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSk7Ci0gICAgaWYgKHBsYXRmb3JtTWVkaWEu
dHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSkKLSAgICAgICAgcmV0dXJu
OwotCiAgICAgZnVsbFNjcmVlblZpZGVvKCktPmV4aXRGdWxsU2NyZWVuRm9yTm9kZShub2RlKTsK
IH0gCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuaAppbmRleCBhMTJjMmVjLi4xNTAwNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC01MCw3ICs1MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKICAgICBjbGFz
cyBRdEFic3RyYWN0V2ViUG9wdXA7CiAgICAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwotI2lm
IEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVP
KQogICAgIGNsYXNzIEZ1bGxTY3JlZW5WaWRlb1F0OwogI2VuZGlmCiAKQEAgLTE2Niw3ICsxNjYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hF
dmVudHMoYm9vbCkgeyB9CiAjZW5kaWYKICAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShR
VF9NVUxUSU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKICAgICAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBl
eGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopOwpAQCAtMjA2LDcgKzIwNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtZW51QmFyVmlzaWJsZTsKICAgICAgICAgUUV2ZW50
TG9vcCogbV9ldmVudExvb3A7CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxU
SU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKICAgICAgICAgRnVsbFNjcmVlblZpZGVvUXQqIG1f
ZnVsbFNjcmVlblZpZGVvOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAKaW5kZXggY2NjYTQzYy4uNDlmZWE5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVu
VmlkZW9RdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2Ny
ZWVuVmlkZW9RdC5jcHAKQEAgLTIyLDE4ICsyMiw3NiBAQAogI2luY2x1ZGUgIkZ1bGxTY3JlZW5W
aWRlb1F0LmgiCiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnRRdC5oIgorI2lmIEVOQUJMRShRVF9N
VUxUSU1FRElBKQogI2luY2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1dpZGdldC5oIgorI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZVF0LmgiCisjZW5kaWYKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlUXQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1
ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3dQcml2
YXRlLmgiCisjZW5kaWYKIAorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogI2luY2x1ZGUgPFFH
cmFwaGljc1ZpZGVvSXRlbT4KICNpbmNsdWRlIDxRTWVkaWFQbGF5ZXI+CisjZW5kaWYKKyNpbmNs
dWRlIDxRV2lkZ2V0PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoR1NUUkVBTUVS
KQorCitHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpHU3RyZWFtZXJGdWxsU2NyZWVu
VmlkZW9IYW5kbGVyKCkKKyAgICA6IG1fdmlkZW9FbGVtZW50KDApCisgICAgLCBtX2Z1bGxTY3Jl
ZW5XaWRnZXQoMCkKK3sKK30KKwordm9pZCBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
OjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBtX3Zp
ZGVvRWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVv
SGFuZGxlcjo6ZW50ZXJGdWxsU2NyZWVuKCkKK3sKKyAgICBpZiAobV92aWRlb0VsZW1lbnQtPnBs
YXRmb3JtTWVkaWEoKS50eXBlICE9IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWE6OkdTdHJlYW1lckdX
b3JsZFR5cGUpCisgICAgICAgIHJldHVybjsKKworICAgIEdTdHJlYW1lckdXb3JsZCogZ3N0cmVh
bWVyR1dvcmxkID0gbV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFt
ZXJHV29ybGQ7CisKKyAgICBpZiAoIWdzdHJlYW1lckdXb3JsZC0+ZW50ZXJGdWxsc2NyZWVuKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZnVsbFNjcmVlbldpZGdldCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RnVsbFNjcmVlblZpZGVvV2luZG93KiA+KGdzdHJlYW1lckdXb3JsZC0+cGxhdGZvcm1W
aWRlb1dpbmRvdygpLT53aW5kb3coKSk7CisKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPnNldFZp
ZGVvRWxlbWVudChtX3ZpZGVvRWxlbWVudCk7CisKKyAgICBjb25uZWN0KG1fZnVsbFNjcmVlbldp
ZGdldCwgU0lHTkFMKGNsb3NlZCgpKSwgdGhpcywgU0xPVCh3aW5kb3dDbG9zZWQoKSkpOworCisg
ICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5zaG93RnVsbFNjcmVlbigpOworfQorCit2b2lkIEdTdHJl
YW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OndpbmRvd0Nsb3NlZCgpCit7CisgICAgbV92aWRl
b0VsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVl
blZpZGVvSGFuZGxlcjo6ZXhpdEZ1bGxTY3JlZW4oKQoreworICAgIGlmIChtX3ZpZGVvRWxlbWVu
dC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVh
bWVyR1dvcmxkVHlwZSkKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5t
ZWRpYS5nc3RyZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBtX2Z1bGxTY3Jl
ZW5XaWRnZXQtPnNldFZpZGVvRWxlbWVudCgwKTsKKworICAgIG1fZnVsbFNjcmVlbldpZGdldC0+
Y2xvc2UoKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiBib29sIERl
ZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpzX3Nob3VsZEZvcmNlRnVsbFNjcmVlblZpZGVv
UGxheWJhY2sgPSBmYWxzZTsKIAogRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OkRlZmF1
bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkKQEAgLTQyLDYgKzEwMCw4IEBAIERlZmF1bHRGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCiB7CiAg
ICAgY29ubmVjdChtX2Z1bGxTY3JlZW5XaWRnZXQsIFNJR05BTChkaWRFeGl0RnVsbFNjcmVlbigp
KSwgdGhpcywgU0lHTkFMKGZ1bGxTY3JlZW5DbG9zZWQoKSkpOwogICAgIG1fZnVsbFNjcmVlbldp
ZGdldC0+aGlkZSgpOworCisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5jbG9zZSgpOwogfQogCiBE
ZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6fkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyKCkKQEAgLTcyLDI0ICsxMzIsMzYgQEAgdm9pZCBEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFu
ZGxlcjo6ZXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fZnVsbFNjcmVlbldpZGdldC0+Y2xvc2Uo
KTsKIH0KKyNlbmRpZgogCiBGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQoQ2hy
b21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCkKICAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNs
aWVudCkKICAgICAsIG1fdmlkZW9FbGVtZW50KDApCiB7CiAgICAgUV9BU1NFUlQobV9jaHJvbWVD
bGllbnQpOwotICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciA9IG1fY2hyb21lQ2xpZW50LT5t
X3BsYXRmb3JtUGx1Z2luLmNyZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKIAorI2lmIEVO
QUJMRShRVF9NVUxUSU1FRElBKQorICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciA9IG1fY2hy
b21lQ2xpZW50LT5tX3BsYXRmb3JtUGx1Z2luLmNyZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIo
KTsKICAgICBpZiAoIW1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcikKICAgICAgICAgbV9GdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyID0gbmV3IERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOwogCiAg
ICAgaWYgKG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcikKICAgICAgICAgY29ubmVjdChtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIsIFNJR05BTChmdWxsU2NyZWVuQ2xvc2VkKCkpLCB0aGlzLCBTTE9U
KGFib3V0VG9DbG9zZSgpKSk7CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgbV9G
dWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyID0gbmV3IEdTdHJlYW1lckZ1bGxTY3JlZW5W
aWRlb0hhbmRsZXI7CisjZW5kaWYKIH0KIAogRnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVu
VmlkZW9RdCgpCiB7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiAgICAgZGVsZXRlIG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlcjsKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgZGVs
ZXRlIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1lcjsKKyNlbmRpZgogfQogCiB2b2lk
IEZ1bGxTY3JlZW5WaWRlb1F0OjplbnRlckZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCkBA
IC05NywyNSArMTY5LDU2IEBAIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVl
bkZvck5vZGUoTm9kZSogbm9kZSkKICAgICBRX0FTU0VSVChub2RlKTsKICAgICBRX0FTU0VSVCht
X0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOwogCisgICAgbV92aWRlb0VsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7CisKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJ
QSkKKworICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhU
TUxWaWRlb0VsZW1lbnQqPihub2RlKTsKKyAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEg
PSB2aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKKworICAgIEFTU0VSVChwbGF0Zm9ybU1l
ZGlhLnR5cGUgPT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpOworICAgIGlmIChw
bGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5ZXJRdCA9
IG1lZGlhUGxheWVyRm9yTm9kZShub2RlKTsKKyAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVk
aWFQbGF5ZXJRdCA9IG1lZGlhUGxheWVyKCk7CiAgICAgbWVkaWFQbGF5ZXJRdC0+cmVtb3ZlVmlk
ZW9JdGVtKCk7CiAgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyLT5lbnRlckZ1bGxTY3JlZW4o
bWVkaWFQbGF5ZXJRdC0+bWVkaWFQbGF5ZXIoKSk7CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFN
RVIpCisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyLT5zZXRWaWRlb0VsZW1l
bnQobV92aWRlb0VsZW1lbnQpOworICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1l
ci0+ZW50ZXJGdWxsU2NyZWVuKCk7CisjZW5kaWYKIH0KIAogdm9pZCBGdWxsU2NyZWVuVmlkZW9R
dDo6ZXhpdEZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgUV9BU1NFUlQobm9k
ZSk7CisKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKworICAgIEhUTUxWaWRlb0VsZW1lbnQq
IHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihub2RlKTsKKyAg
ICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEgPSB2aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVk
aWEoKTsKKworICAgIEFTU0VSVChwbGF0Zm9ybU1lZGlhLnR5cGUgPT0gUGxhdGZvcm1NZWRpYTo6
UXRNZWRpYVBsYXllclR5cGUpOworICAgIGlmIChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZv
cm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpCisgICAgICAgIHJldHVybjsKKwogICAgIFFfQVNT
RVJUKG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcik7CiAKICAgICBpZiAoIW1fRnVsbFNjcmVlblZp
ZGVvSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5k
bGVyLT5leGl0RnVsbFNjcmVlbigpOwotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBtZWRpYVBs
YXllclF0ID0gbWVkaWFQbGF5ZXJGb3JOb2RlKG5vZGUpOworICAgIE1lZGlhUGxheWVyUHJpdmF0
ZVF0KiBtZWRpYVBsYXllclF0ID0gbWVkaWFQbGF5ZXIoKTsKICAgICBtZWRpYVBsYXllclF0LT5y
ZXN0b3JlVmlkZW9JdGVtKCk7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1lci0+ZXhpdEZ1bGxTY3JlZW4oKTsKKyNlbmRpZgog
fQogCiB2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0OjphYm91dFRvQ2xvc2UoKQpAQCAtMTI0LDI0ICsy
MjcsMzMgQEAgdm9pZCBGdWxsU2NyZWVuVmlkZW9RdDo6YWJvdXRUb0Nsb3NlKCkKICAgICBtX3Zp
ZGVvRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAorI2lmIEVOQUJMRShRVF9NVUxUSU1F
RElBKQogTWVkaWFQbGF5ZXJQcml2YXRlUXQqIEZ1bGxTY3JlZW5WaWRlb1F0OjptZWRpYVBsYXll
cigpCiB7CiAgICAgUV9BU1NFUlQobV92aWRlb0VsZW1lbnQpOwogICAgIFBsYXRmb3JtTWVkaWEg
cGxhdGZvcm1NZWRpYSA9IG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZVF0Kj4ocGxhdGZvcm1NZWRpYS5tZWRp
YS5xdE1lZGlhUGxheWVyKTsKIH0KKyNlbmRpZgogCi1NZWRpYVBsYXllclByaXZhdGVRdCogRnVs
bFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxheWVyRm9yTm9kZShOb2RlKiBub2RlKQorYm9vbCBGdWxs
U2NyZWVuVmlkZW9RdDo6cmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpCiB7Ci0g
ICAgUV9BU1NFUlQobm9kZSk7Ci0gICAgaWYgKG5vZGUpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOwotICAgIHJldHVybiBtZWRp
YVBsYXllcigpOworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorICAgIHJldHVybiBtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIgPyBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPnJlcXVpcmVzRnVs
bFNjcmVlbkZvclZpZGVvUGxheWJhY2soKSA6IGZhbHNlOworI2VuZGlmCisjaWYgVVNFKEdTVFJF
QU1FUikKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAotYm9vbCBGdWxsU2NyZWVuVmlk
ZW9RdDo6cmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpCitib29sIEZ1bGxTY3Jl
ZW5WaWRlb1F0Ojppc1ZhbGlkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9GdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyID8gbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyLT5yZXF1aXJlc0Z1bGxTY3JlZW5G
b3JWaWRlb1BsYXliYWNrKCkgOiBmYWxzZTsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyAg
ICByZXR1cm4gbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyOworI2VuZGlmCisjaWYgVVNFKEdTVFJF
QU1FUikKKyAgICByZXR1cm4gbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyOworI2Vu
ZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnVsbFNjcmVlblZpZGVvUXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvUXQuaAppbmRleCBhNDhhODgyLi5lMDExMjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCkBAIC0yMCw2
ICsyMCw3IEBACiAjaWZuZGVmIEZ1bGxTY3JlZW5WaWRlb1F0X2gKICNkZWZpbmUgRnVsbFNjcmVl
blZpZGVvUXRfaAogCisjaW5jbHVkZSAiUGxhdGZvcm0uaCIKICNpbmNsdWRlICJxd2Via2l0cGxh
dGZvcm1wbHVnaW4uaCIKICNpbmNsdWRlIDxRT2JqZWN0PgogCkBAIC0zNCw4ICszNSwzMyBAQCBj
bGFzcyBDaHJvbWVDbGllbnRRdDsKIGNsYXNzIEZ1bGxTY3JlZW5WaWRlb1dpZGdldDsKIGNsYXNz
IEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBOb2RlOworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElB
KQogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUXQ7CisjZW5kaWYKIAorI2lmIGRlZmluZWQoV1RG
X1VTRV9HU1RSRUFNRVIpICYmIFdURl9VU0VfR1NUUkVBTUVSCitjbGFzcyBGdWxsU2NyZWVuVmlk
ZW9XaW5kb3c7CisKK2NsYXNzIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIgOiBwdWJs
aWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBHU3RyZWFtZXJGdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyKCk7CisgICAgfkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIo
KSB7fTsKKyAgICB2b2lkIHNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7CisKKyAg
ICB2b2lkIGVudGVyRnVsbFNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKTsKKwor
cHVibGljIFFfU0xPVFM6CisgICAgdm9pZCB3aW5kb3dDbG9zZWQoKTsKKworcHJpdmF0ZToKKyAg
ICBIVE1MVmlkZW9FbGVtZW50KiBtX3ZpZGVvRWxlbWVudDsKKyAgICBGdWxsU2NyZWVuVmlkZW9X
aW5kb3cqIG1fZnVsbFNjcmVlbldpZGdldDsKK307CisjZW5kaWYKKworI2lmIGRlZmluZWQoRU5B
QkxFX1FUX01VTFRJTUVESUEpICYmIEVOQUJMRV9RVF9NVUxUSU1FRElBCiBjbGFzcyBEZWZhdWx0
RnVsbFNjcmVlblZpZGVvSGFuZGxlciA6IHB1YmxpYyBRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxl
ciB7CiAgICAgUV9PQkpFQ1QKIHB1YmxpYzoKQEAgLTUxLDYgKzc3LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBzX3Nob3VsZEZvcmNlRnVsbFNjcmVlblZpZGVvUGxheWJhY2s7CiAgICAg
RnVsbFNjcmVlblZpZGVvV2lkZ2V0ICptX2Z1bGxTY3JlZW5XaWRnZXQ7CiB9OworI2VuZGlmCiAK
IGNsYXNzIEZ1bGxTY3JlZW5WaWRlb1F0IDogcHVibGljIFFPYmplY3QgewogICAgIFFfT0JKRUNU
CkBAIC02MSwxMSArODgsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxT
Y3JlZW5Gb3JOb2RlKE5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JO
b2RlKE5vZGUqKTsKICAgICBib29sIHJlcXVpcmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2so
KTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7ICByZXR1cm4gbV9GdWxsU2NyZWVuVmlkZW9I
YW5kbGVyOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKIHByaXZhdGU6CisjaWYgRU5B
QkxFKFFUX01VTFRJTUVESUEpCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVy
KCk7Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVyRm9yTm9kZShOb2RlKiA9
IDApOworI2VuZGlmCiAKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBhYm91dFRvQ2xvc2UoKTsK
QEAgLTczLDcgKzEwMSwxMiBAQCBwcml2YXRlIHNsb3RzOgogcHJpdmF0ZToKICAgICBDaHJvbWVD
bGllbnRRdCogbV9jaHJvbWVDbGllbnQ7CiAgICAgSFRNTFZpZGVvRWxlbWVudCogbV92aWRlb0Vs
ZW1lbnQ7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiAgICAgUVdlYkZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXIqIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcjsKKyNlbmRpZgorI2lmIFVTRShHU1RS
RUFNRVIpCisgICAgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlciogbV9GdWxsU2NyZWVu
VmlkZW9IYW5kbGVyR1N0cmVhbWVyOworI2VuZGlmCiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="80159"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88448</attachid>
            <date>2011-04-06 09:41:12 -0700</date>
            <delta_ts>2011-04-06 09:48:50 -0700</delta_ts>
            <desc>V6</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17427</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Q
bGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgKaW5kZXggMGFlNDU4
Ny4uN2I0NDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRl
LmgKQEAgLTIwLDIxICsyMCwzNyBAQAogI2lmbmRlZiBQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0
ZV9oCiAjZGVmaW5lIFBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlX2gKIAorI2luY2x1ZGUgPFFU
aW1lcj4KICNpbmNsdWRlIDxRV2lkZ2V0PgogCiBjbGFzcyBRS2V5RXZlbnQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKKwogY2xhc3MgRnVsbFNjcmVl
blZpZGVvV2luZG93OiBwdWJsaWMgUVdpZGdldCB7CiBRX09CSkVDVAogcHVibGljOgogICAgIEZ1
bGxTY3JlZW5WaWRlb1dpbmRvdygpOworICAgIHZvaWQgc2V0VmlkZW9FbGVtZW50KEhUTUxWaWRl
b0VsZW1lbnQqKTsKIHNpZ25hbHM6CiAgICAgdm9pZCBjbG9zZWQoKTsKIHByb3RlY3RlZDoKLSAg
ICB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldik7Ci0gICAgYm9vbCBldmVudChRRXZl
bnQqIGV2KTsKKyAgICB2b2lkIGNsb3NlRXZlbnQoUUNsb3NlRXZlbnQqKTsKKyAgICB2b2lkIGtl
eVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CisgICAgYm9vbCBldmVudChRRXZlbnQqKTsKKworcHVi
bGljIHNsb3RzOgorICAgIHZvaWQgc2hvd0Z1bGxTY3JlZW4oKTsKKworcHJpdmF0ZSBzbG90czoK
KyAgICB2b2lkIGhpZGVDdXJzb3IoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNob3dDdXJzb3Io
KTsKKyAgICBRVGltZXIgbV9jdXJzb3JUaW1lcjsKKyAgICBIVE1MVmlkZW9FbGVtZW50KiBtX21l
ZGlhRWxlbWVudDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1F0LmNw
cAppbmRleCA4NzJkMDU1Li43MjcwNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1F0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dp
bmRvd1F0LmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3cuaCIKIAorI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8
UUFwcGxpY2F0aW9uPgpAQCAtMjgsMjkgKzI5LDU1IEBACiAjaW5jbHVkZSA8UVBhbGV0dGU+CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0IGludCBnSGlkZU1vdXNlQ3Vy
c29yRGVsYXkgPSAzMDAwOworCiBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OkZ1bGxTY3JlZW5WaWRl
b1dpbmRvdygpCiAgICAgOiBRV2lkZ2V0KDAsIFF0OjpXaW5kb3cpCisgICAgLCBtX21lZGlhRWxl
bWVudCgwKQogewogICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfTmF0aXZlV2luZG93KTsKLSAgICAv
LyBTZXR0aW5nIHRoZXNlIHZhbHVlcyBlbnN1cmVzIHNtb290aCByZXNpemluZyBzaW5jZSBpdAot
ICAgIC8vIHdpbGwgcHJldmVudCB0aGUgc3lzdGVtIGZyb20gY2xlYXJpbmcgdGhlIGJhY2tncm91
bmQuCisgICAgc2V0V2luZG93TW9kYWxpdHkoUXQ6OkFwcGxpY2F0aW9uTW9kYWwpOwogICAgIHNl
dEF0dHJpYnV0ZShRdDo6V0FfTm9TeXN0ZW1CYWNrZ3JvdW5kLCB0cnVlKTsKICAgICBzZXRBdHRy
aWJ1dGUoUXQ6OldBX1BhaW50T25TY3JlZW4sIHRydWUpOworCisgICAgbV9jdXJzb3JUaW1lci5z
ZXRTaW5nbGVTaG90KHRydWUpOworICAgIGNvbm5lY3QoJm1fY3Vyc29yVGltZXIsIFNJR05BTCh0
aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGhpZGVDdXJzb3IoKSkpOworfQorCit2b2lkIEZ1bGxTY3Jl
ZW5WaWRlb1dpbmRvdzo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50OworfQorCit2b2lkIEZ1bGxTY3JlZW5W
aWRlb1dpbmRvdzo6Y2xvc2VFdmVudChRQ2xvc2VFdmVudCopCit7CisgICAgbV9jdXJzb3JUaW1l
ci5zdG9wKCk7CisgICAgc2V0TW91c2VUcmFja2luZyhmYWxzZSk7CisgICAgcmVsZWFzZU1vdXNl
KCk7CisgICAgUUFwcGxpY2F0aW9uOjpyZXN0b3JlT3ZlcnJpZGVDdXJzb3IoKTsKIH0KIAogdm9p
ZCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldikKIHsK
LSAgICBpZiAoZXYtPmtleSgpID09IFF0OjpLZXlfRXNjYXBlKSB7Ci0gICAgICAgIGNsb3NlKCk7
CisgICAgaWYgKG1fbWVkaWFFbGVtZW50ICYmIGV2LT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSB7
CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPnBhdXNlZCgpKQorICAgICAgICAgICAgbV9t
ZWRpYUVsZW1lbnQtPnBhdXNlKHRydWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX21l
ZGlhRWxlbWVudC0+cGxheSh0cnVlKTsKKyAgICB9IGVsc2UgaWYgKGV2LT5rZXkoKSA9PSBRdDo6
S2V5X0VzY2FwZSkKICAgICAgICAgZW1pdCBjbG9zZWQoKTsKLSAgICB9CisgICAgUVdpZGdldDo6
a2V5UHJlc3NFdmVudChldik7CiB9CiAKIGJvb2wgRnVsbFNjcmVlblZpZGVvV2luZG93OjpldmVu
dChRRXZlbnQqIGV2KQogewogICAgIHN3aXRjaCAoZXYtPnR5cGUoKSkgeworICAgIGNhc2UgUUV2
ZW50OjpNb3VzZU1vdmU6CisgICAgICAgIHNob3dDdXJzb3IoKTsKKyAgICAgICAgZXYtPmFjY2Vw
dCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25E
YmxDbGljazoKLSAgICAgICAgY2xvc2UoKTsKKyAgICAgICAgZW1pdCBjbG9zZWQoKTsKICAgICAg
ICAgZXYtPmFjY2VwdCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpAQCAt
NTgsNiArODUsMjYgQEAgYm9vbCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OmV2ZW50KFFFdmVudCog
ZXYpCiAgICAgfQogfQogCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2hvd0Z1bGxTY3Jl
ZW4oKQoreworICAgIFFXaWRnZXQ6OnNob3dGdWxsU2NyZWVuKCk7CisgICAgc2V0TW91c2VUcmFj
a2luZyh0cnVlKTsKKyAgICByYWlzZSgpOworICAgIHNldEZvY3VzKCk7CisgICAgaGlkZUN1cnNv
cigpOworfQorCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6aGlkZUN1cnNvcigpCit7Cisg
ICAgUUFwcGxpY2F0aW9uOjpzZXRPdmVycmlkZUN1cnNvcihRQ3Vyc29yKFF0OjpCbGFua0N1cnNv
cikpOworfQorCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2hvd0N1cnNvcigpCit7Cisg
ICAgUUFwcGxpY2F0aW9uOjpyZXN0b3JlT3ZlcnJpZGVDdXJzb3IoKTsKKyAgICBtX2N1cnNvclRp
bWVyLnN0YXJ0KGdIaWRlTW91c2VDdXJzb3JEZWxheSk7Cit9CisKIAogUGxhdGZvcm1WaWRlb1dp
bmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1F0V2ViS2l0LnBybyBiL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQucHJvCmluZGV4IDNj
Zjk5OGEuLmNkMWJmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQucHJv
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQucHJvCkBAIC0yMTEsMTMgKzIxMSwxMyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xKSB7CiAKIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAgICAgIWNvbnRhaW5zKERFRklORVMs
IFVTRV9HU1RSRUFNRVI9MSk6Y29udGFpbnMoTU9CSUxJVFlfQ09ORklHLCBtdWx0aW1lZGlhKSB7
Ci0gICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQv
RnVsbFNjcmVlblZpZGVvUXQuaCBcCi0gICAgICAgICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9G
dWxsU2NyZWVuVmlkZW9XaWRnZXQuaAorICAgICAgICBIRUFERVJTICs9ICQkUFdEL1dlYkNvcmVT
dXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdldC5oCisgICAgICAgIFNPVVJDRVMgKz0gJCRQV0Qv
V2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvV2lkZ2V0LmNwcAorICAgIH0KIAotICAgICAg
ICBTT1VSQ0VTICs9IFwKLSAgICAgICAgICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1F0LmNwcCBcCi0gICAgICAgICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2Ny
ZWVuVmlkZW9XaWRnZXQuY3BwCisgICAgY29udGFpbnMoREVGSU5FUywgVVNFX0dTVFJFQU1FUj0x
KSB8IGNvbnRhaW5zKE1PQklMSVRZX0NPTkZJRywgbXVsdGltZWRpYSkgeworICAgICAgICBIRUFE
RVJTICs9ICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKKyAgICAgICAg
U09VUkNFUyArPSAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHAKaW5kZXggYmVjNGJjNC4uYWI1NWU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTc1LDEzICs3NSwx
NSBAQAogI2luY2x1ZGUgPHF0b29sdGlwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi0j
aWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklE
RU8pCiAjaW5jbHVkZSAiRnVsbFNjcmVlblZpZGVvUXQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZVF0LmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTkwLDcgKzkyLDcgQEAgYm9vbCBDaHJvbWVDbGllbnRRdDo6ZHVtcFZpc2l0ZWRMaW5rc0NhbGxi
YWNrcyA9IGZhbHNlOwogQ2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KFFXZWJQYWdlKiB3
ZWJQYWdlKQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCiAgICAgLCBtX2V2ZW50TG9vcCgwKQot
I2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJ
REVPKQogICAgICwgbV9mdWxsU2NyZWVuVmlkZW8oMCkKICNlbmRpZgogewpAQCAtMTAyLDcgKzEw
NCw3IEBAIENocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50UXQoKQogICAgIGlmIChtX2V2ZW50
TG9vcCkKICAgICAgICAgbV9ldmVudExvb3AtPmV4aXQoKTsKIAotI2lmIEVOQUJMRShWSURFTykg
JiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogICAgIGRlbGV0ZSBt
X2Z1bGxTY3JlZW5WaWRlbzsKICNlbmRpZgogfQpAQCAtNjUwLDcgKzY1Miw3IEBAIEludFJlY3Qg
Q2hyb21lQ2xpZW50UXQ6OnZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25zdAog
fQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1FRElBKQor
I2lmIEVOQUJMRShWSURFTykKIEZ1bGxTY3JlZW5WaWRlb1F0KiBDaHJvbWVDbGllbnRRdDo6ZnVs
bFNjcmVlblZpZGVvKCkKIHsKICAgICBpZiAoIW1fZnVsbFNjcmVlblZpZGVvKQpAQCAtNjczLDEz
ICs2NzUsNiBAQCB2b2lkIENocm9tZUNsaWVudFF0OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5v
ZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnZpZGVvVGFnKSk7CiAKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBz
dGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7Ci0gICAgUGxhdGZvcm1NZWRpYSBw
bGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCk7Ci0KLSAgICBBU1NF
UlQocGxhdGZvcm1NZWRpYS50eXBlID09IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBl
KTsKLSAgICBpZiAocGxhdGZvcm1NZWRpYS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQ
bGF5ZXJUeXBlKQotICAgICAgICByZXR1cm47Ci0KICAgICBmdWxsU2NyZWVuVmlkZW8oKS0+ZW50
ZXJGdWxsU2NyZWVuRm9yTm9kZShub2RlKTsKIH0KIApAQCAtNjg3LDEzICs2ODIsNiBAQCB2b2lk
IENocm9tZUNsaWVudFF0OjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKICAg
ICBBU1NFUlQobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpKTsK
IAotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxW
aWRlb0VsZW1lbnQqPihub2RlKTsKLSAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEgPSB2
aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKLQotICAgIEFTU0VSVChwbGF0Zm9ybU1lZGlh
LnR5cGUgPT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpOwotICAgIGlmIChwbGF0
Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIGZ1bGxTY3JlZW5WaWRlbygpLT5leGl0RnVsbFNjcmVlbkZvck5v
ZGUobm9kZSk7CiB9IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggOGI3MGUwYi4uYzFlZDQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBQYWdlOwogc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiBjbGFzcyBRdEFi
c3RyYWN0V2ViUG9wdXA7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7Ci0jaWYgRU5BQkxFKFZJ
REVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiBjbGFzcyBG
dWxsU2NyZWVuVmlkZW9RdDsKICNlbmRpZgogCkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgeyB9CiAjZW5kaWYKICAKLSNp
ZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorI2lmIEVOQUJMRShWSURF
TykKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2Rl
Kik7CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSopOwogICAg
IHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopOwpAQCAtMjAyLDcgKzIw
Miw3IEBAIHB1YmxpYzoKICAgICBib29sIG1lbnVCYXJWaXNpYmxlOwogICAgIFFFdmVudExvb3Aq
IG1fZXZlbnRMb29wOwogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJ
QSkKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgRnVsbFNjcmVlblZpZGVvUXQqIG1fZnVsbFNjcmVl
blZpZGVvOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAKaW5kZXggY2NjYTQzYy4uZThkMmUzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9R
dC5jcHAKQEAgLTIyLDE4ICsyMiw3MSBAQAogI2luY2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1F0Lmgi
CiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnRRdC5oIgorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElB
KQogI2luY2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1dpZGdldC5oIgorI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZVF0LmgiCisjZW5kaWYKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCIK
ICNpbmNsdWRlICJOb2RlLmgiCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkdTdHJl
YW1lckdXb3JsZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgiCisj
ZW5kaWYKIAorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogI2luY2x1ZGUgPFFHcmFwaGljc1Zp
ZGVvSXRlbT4KICNpbmNsdWRlIDxRTWVkaWFQbGF5ZXI+CisjZW5kaWYKKyNpbmNsdWRlIDxRV2lk
Z2V0PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorR1N0cmVh
bWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxl
cigpCisgICAgOiBtX3ZpZGVvRWxlbWVudCgwKQorICAgICwgbV9mdWxsU2NyZWVuV2lkZ2V0KDAp
Cit7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6c2V0VmlkZW9F
bGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV92aWRlb0VsZW1lbnQg
PSBlbGVtZW50OworfQorCit2b2lkIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OmVu
dGVyRnVsbFNjcmVlbigpCit7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlh
KCkudHlwZSAhPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHU3RyZWFtZXJHV29ybGQqIGdzdHJlYW1lckdXb3JsZCA9
IG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkOwor
CisgICAgaWYgKCFnc3RyZWFtZXJHV29ybGQtPmVudGVyRnVsbHNjcmVlbigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQgPSByZWludGVycHJldF9jYXN0PEZ1bGxT
Y3JlZW5WaWRlb1dpbmRvdyo+KGdzdHJlYW1lckdXb3JsZC0+cGxhdGZvcm1WaWRlb1dpbmRvdygp
LT53aW5kb3coKSk7CisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5zZXRWaWRlb0VsZW1lbnQobV92
aWRlb0VsZW1lbnQpOworICAgIGNvbm5lY3QobV9mdWxsU2NyZWVuV2lkZ2V0LCBTSUdOQUwoY2xv
c2VkKCkpLCB0aGlzLCBTTE9UKHdpbmRvd0Nsb3NlZCgpKSk7CisgICAgbV9mdWxsU2NyZWVuV2lk
Z2V0LT5zaG93RnVsbFNjcmVlbigpOworfQorCit2b2lkIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXI6OndpbmRvd0Nsb3NlZCgpCit7CisgICAgbV92aWRlb0VsZW1lbnQtPmV4aXRGdWxs
c2NyZWVuKCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6ZXhp
dEZ1bGxTY3JlZW4oKQoreworICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgp
LnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVyR1dvcmxkVHlwZSkKKyAg
ICAgICAgbV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29y
bGQtPmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPnNldFZpZGVv
RWxlbWVudCgwKTsKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPmNsb3NlKCk7Cit9CisjZW5kaWYK
KworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogYm9vbCBEZWZhdWx0RnVsbFNjcmVlblZpZGVv
SGFuZGxlcjo6c19zaG91bGRGb3JjZUZ1bGxTY3JlZW5WaWRlb1BsYXliYWNrID0gZmFsc2U7CiAK
IERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFu
ZGxlcigpCkBAIC00Miw2ICs5NSw4IEBAIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpE
ZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCiB7CiAgICAgY29ubmVjdChtX2Z1bGxTY3Jl
ZW5XaWRnZXQsIFNJR05BTChkaWRFeGl0RnVsbFNjcmVlbigpKSwgdGhpcywgU0lHTkFMKGZ1bGxT
Y3JlZW5DbG9zZWQoKSkpOwogICAgIG1fZnVsbFNjcmVlbldpZGdldC0+aGlkZSgpOworCisgICAg
bV9mdWxsU2NyZWVuV2lkZ2V0LT5jbG9zZSgpOwogfQogCiBEZWZhdWx0RnVsbFNjcmVlblZpZGVv
SGFuZGxlcjo6fkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkKQEAgLTcyLDI0ICsxMjcs
MzYgQEAgdm9pZCBEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6ZXhpdEZ1bGxTY3JlZW4o
KQogewogICAgIG1fZnVsbFNjcmVlbldpZGdldC0+Y2xvc2UoKTsKIH0KKyNlbmRpZgogCiBGdWxs
U2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQoQ2hyb21lQ2xpZW50UXQqIGNocm9tZUNs
aWVudCkKICAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVudCkKICAgICAsIG1fdmlkZW9F
bGVtZW50KDApCiB7CiAgICAgUV9BU1NFUlQobV9jaHJvbWVDbGllbnQpOwotICAgIG1fRnVsbFNj
cmVlblZpZGVvSGFuZGxlciA9IG1fY2hyb21lQ2xpZW50LT5tX3BsYXRmb3JtUGx1Z2luLmNyZWF0
ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKIAorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQor
ICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciA9IG1fY2hyb21lQ2xpZW50LT5tX3BsYXRmb3Jt
UGx1Z2luLmNyZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKICAgICBpZiAoIW1fRnVsbFNj
cmVlblZpZGVvSGFuZGxlcikKICAgICAgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyID0gbmV3
IERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOwogCiAgICAgaWYgKG1fRnVsbFNjcmVlblZp
ZGVvSGFuZGxlcikKICAgICAgICAgY29ubmVjdChtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIsIFNJ
R05BTChmdWxsU2NyZWVuQ2xvc2VkKCkpLCB0aGlzLCBTTE9UKGFib3V0VG9DbG9zZSgpKSk7Cisj
ZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVy
R1N0cmVhbWVyID0gbmV3IEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CisjZW5kaWYK
IH0KIAogRnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCgpCiB7CisjaWYgRU5B
QkxFKFFUX01VTFRJTUVESUEpCiAgICAgZGVsZXRlIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcjsK
KyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgZGVsZXRlIG1fRnVsbFNjcmVlblZpZGVv
SGFuZGxlckdTdHJlYW1lcjsKKyNlbmRpZgogfQogCiB2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0Ojpl
bnRlckZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCkBAIC05NywyNSArMTY0LDU0IEBAIHZv
aWQgRnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkK
ICAgICBRX0FTU0VSVChub2RlKTsKICAgICBRX0FTU0VSVChtX0Z1bGxTY3JlZW5WaWRlb0hhbmRs
ZXIpOwogCisgICAgbV92aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50
Kj4obm9kZSk7CisKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyAgICBIVE1MVmlkZW9FbGVt
ZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7
CisgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVtZW50LT5wbGF0Zm9y
bU1lZGlhKCk7CisKKyAgICBBU1NFUlQocGxhdGZvcm1NZWRpYS50eXBlID09IFBsYXRmb3JtTWVk
aWE6OlF0TWVkaWFQbGF5ZXJUeXBlKTsKKyAgICBpZiAocGxhdGZvcm1NZWRpYS50eXBlICE9IFBs
YXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKQorICAgICAgICByZXR1cm47CisKICAgICBp
ZiAoIW1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTWVk
aWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRpYVBsYXllckZvck5vZGUobm9k
ZSk7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRpYVBsYXll
cigpOwogICAgIG1lZGlhUGxheWVyUXQtPnJlbW92ZVZpZGVvSXRlbSgpOwogICAgIG1fRnVsbFNj
cmVlblZpZGVvSGFuZGxlci0+ZW50ZXJGdWxsU2NyZWVuKG1lZGlhUGxheWVyUXQtPm1lZGlhUGxh
eWVyKCkpOworI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIG1fRnVsbFNjcmVlblZp
ZGVvSGFuZGxlckdTdHJlYW1lci0+c2V0VmlkZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50KTsKKyAg
ICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXItPmVudGVyRnVsbFNjcmVlbigpOwor
I2VuZGlmCiB9CiAKIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmV4aXRGdWxsU2NyZWVuRm9yTm9k
ZShOb2RlKiBub2RlKQogewogICAgIFFfQVNTRVJUKG5vZGUpOworCisjaWYgRU5BQkxFKFFUX01V
TFRJTUVESUEpCisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOworICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOworCisgICAgQVNTRVJUKHBsYXRm
b3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlwZSk7CisgICAg
aWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRdE1lZGlhUGxheWVyVHlw
ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUV9BU1NFUlQobV9GdWxsU2NyZWVuVmlkZW9IYW5k
bGVyKTsKIAogICAgIGlmICghbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPmV4aXRGdWxsU2NyZWVuKCk7Ci0g
ICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRpYVBsYXllckZvck5v
ZGUobm9kZSk7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBtZWRp
YVBsYXllcigpOwogICAgIG1lZGlhUGxheWVyUXQtPnJlc3RvcmVWaWRlb0l0ZW0oKTsKKyNlbmRp
ZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVh
bWVyLT5leGl0RnVsbFNjcmVlbigpOworI2VuZGlmCiB9CiAKIHZvaWQgRnVsbFNjcmVlblZpZGVv
UXQ6OmFib3V0VG9DbG9zZSgpCkBAIC0xMjQsMjQgKzIyMCwzMyBAQCB2b2lkIEZ1bGxTY3JlZW5W
aWRlb1F0OjphYm91dFRvQ2xvc2UoKQogICAgIG1fdmlkZW9FbGVtZW50LT5leGl0RnVsbHNjcmVl
bigpOwogfQogCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiBNZWRpYVBsYXllclByaXZhdGVR
dCogRnVsbFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxheWVyKCkKIHsKICAgICBRX0FTU0VSVChtX3Zp
ZGVvRWxlbWVudCk7CiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gbV92aWRlb0Vs
ZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFQbGF5
ZXJQcml2YXRlUXQqPihwbGF0Zm9ybU1lZGlhLm1lZGlhLnF0TWVkaWFQbGF5ZXIpOwogfQorI2Vu
ZGlmCiAKLU1lZGlhUGxheWVyUHJpdmF0ZVF0KiBGdWxsU2NyZWVuVmlkZW9RdDo6bWVkaWFQbGF5
ZXJGb3JOb2RlKE5vZGUqIG5vZGUpCitib29sIEZ1bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1
bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkKIHsKLSAgICBRX0FTU0VSVChub2RlKTsKLSAgICBp
ZiAobm9kZSkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9F
bGVtZW50Kj4obm9kZSk7Ci0gICAgcmV0dXJuIG1lZGlhUGxheWVyKCk7CisjaWYgRU5BQkxFKFFU
X01VTFRJTUVESUEpCisgICAgcmV0dXJuIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciA/IG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlci0+cmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygp
IDogZmFsc2U7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogfQogCi1ib29sIEZ1bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5G
b3JWaWRlb1BsYXliYWNrKCkKK2Jvb2wgRnVsbFNjcmVlblZpZGVvUXQ6OmlzVmFsaWQoKSBjb25z
dAogewotICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIgPyBtX0Z1bGxTY3JlZW5W
aWRlb0hhbmRsZXItPnJlcXVpcmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2soKSA6IGZhbHNl
OworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRl
b0hhbmRsZXI7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIHJldHVybiBtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCmluZGV4IGE0
OGE4ODIuLmFjNWNiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnVsbFNjcmVlblZpZGVvUXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgInF3
ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgogI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUUdyYXBoaWNzVmlkZW9J
dGVtOwpAQCAtMzQsOCArMzUsMzUgQEAgY2xhc3MgQ2hyb21lQ2xpZW50UXQ7CiBjbGFzcyBGdWxs
U2NyZWVuVmlkZW9XaWRnZXQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgTm9kZTsK
KyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVF0Owor
I2VuZGlmCiAKKy8vIFdlIGRvIG5vdCB1c2UgRU5BQkxFIG9yIFVTRSBiZWNhdXNlIG1vYyBkb2Vz
IG5vdCBleHBhbmQgdGhlc2UgbWFjcm9zLgorI2lmIGRlZmluZWQoV1RGX1VTRV9HU1RSRUFNRVIp
ICYmIFdURl9VU0VfR1NUUkVBTUVSCitjbGFzcyBGdWxsU2NyZWVuVmlkZW9XaW5kb3c7CisKK2Ns
YXNzIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIgOiBwdWJsaWMgUU9iamVjdCB7Cisg
ICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
KCk7CisgICAgfkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKSB7IH0KKyAgICB2b2lk
IHNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7CisKKyAgICB2b2lkIGVudGVyRnVs
bFNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKTsKKworcHVibGljIFFfU0xPVFM6
CisgICAgdm9pZCB3aW5kb3dDbG9zZWQoKTsKKworcHJpdmF0ZToKKyAgICBIVE1MVmlkZW9FbGVt
ZW50KiBtX3ZpZGVvRWxlbWVudDsKKyAgICBGdWxsU2NyZWVuVmlkZW9XaW5kb3cqIG1fZnVsbFNj
cmVlbldpZGdldDsKK307CisjZW5kaWYKKworLy8gV2UgZG8gbm90IHVzZSBFTkFCTEUgb3IgVVNF
IGJlY2F1c2UgbW9jIGRvZXMgbm90IGV4cGFuZCB0aGVzZSBtYWNyb3MuCisjaWYgZGVmaW5lZChF
TkFCTEVfUVRfTVVMVElNRURJQSkgJiYgRU5BQkxFX1FUX01VTFRJTUVESUEKIGNsYXNzIERlZmF1
bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDogcHVibGljIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyIHsKICAgICBRX09CSkVDVAogcHVibGljOgpAQCAtNTEsNiArNzksNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIHNfc2hvdWxkRm9yY2VGdWxsU2NyZWVuVmlkZW9QbGF5YmFjazsKICAg
ICBGdWxsU2NyZWVuVmlkZW9XaWRnZXQgKm1fZnVsbFNjcmVlbldpZGdldDsKIH07CisjZW5kaWYK
IAogY2xhc3MgRnVsbFNjcmVlblZpZGVvUXQgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpF
Q1QKQEAgLTYxLDExICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVs
bFNjcmVlbkZvck5vZGUoTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZv
ck5vZGUoTm9kZSopOwogICAgIGJvb2wgcmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFj
aygpOwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRl
b0hhbmRsZXI7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogcHJpdmF0ZToKKyNpZiBF
TkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5
ZXIoKTsKLSAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5ZXJGb3JOb2RlKE5vZGUq
ID0gMCk7CisjZW5kaWYKIAogcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIGFib3V0VG9DbG9zZSgp
OwpAQCAtNzMsNyArMTAzLDEyIEBAIHByaXZhdGUgc2xvdHM6CiBwcml2YXRlOgogICAgIENocm9t
ZUNsaWVudFF0KiBtX2Nocm9tZUNsaWVudDsKICAgICBIVE1MVmlkZW9FbGVtZW50KiBtX3ZpZGVv
RWxlbWVudDsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBRV2ViRnVsbFNjcmVlblZp
ZGVvSGFuZGxlciogbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyOworI2VuZGlmCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBtX0Z1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5kaWYKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88454</attachid>
            <date>2011-04-06 09:48:50 -0700</date>
            <delta_ts>2011-04-06 11:43:53 -0700</delta_ts>
            <desc>V7 with the changelog.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>21039</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ODRmMmViLi5jNTBiYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDQtMDYgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBJbXBsZW1lbnQgZnVsbHNjcmVlbiBwbGF5YmFjayBmb3IgdGhlIEdTdHJlYW1lciBiYWNrZW5k
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MjYK
KworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZnVsbHNjcmVlbiBwbGF5YmFjayB3aGVu
IGJ1aWxkaW5nIHRoZQorICAgICAgICBRdCBwb3J0IHdpdGggdGhlIEdTdHJlYW1lciBiYWNrZW5k
IChERUZJTkVTKz1VU0VfR1NUUkVBTUVSPTEpLgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
aXMgZG9uZSBpbiBGdWxsU2NyZWVuVmlkZW9RdCBhbG9uZ3NpZGUgd2l0aAorICAgICAgICB0aGUg
UXQgTXVsdGltZWRpYSBzdXBwb3J0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGxh
eW91dCB0ZXN0cyBjb3ZlciBpdC4gVGhleSBhcmUgbm90IHlldCBhY3RpdmF0ZWQKKyAgICAgICAg
YnV0IHdpbGwgYmUgYW55IHRpbWUgc29vbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwOgorICAgICAg
ICAoRnVsbFNjcmVlblZpZGVvV2luZG93OjpGdWxsU2NyZWVuVmlkZW9XaW5kb3cpOgorICAgICAg
ICAoRnVsbFNjcmVlblZpZGVvV2luZG93OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoRnVs
bFNjcmVlblZpZGVvV2luZG93OjpjbG9zZUV2ZW50KToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRl
b1dpbmRvdzo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChGdWxsU2NyZWVuVmlkZW9XaW5kb3c6
OmV2ZW50KToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2hvd0Z1bGxTY3JlZW4p
OgorICAgICAgICAoRnVsbFNjcmVlblZpZGVvV2luZG93OjpoaWRlQ3Vyc29yKToKKyAgICAgICAg
KEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2hvd0N1cnNvcik6CisKIDIwMTEtMDQtMDYgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oCmluZGV4
IDBhZTQ1ODcuLjdiNDQxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93
UHJpdmF0ZS5oCkBAIC0yMCwyMSArMjAsMzcgQEAKICNpZm5kZWYgUGxhdGZvcm1WaWRlb1dpbmRv
d1ByaXZhdGVfaAogI2RlZmluZSBQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZV9oCiAKKyNpbmNs
dWRlIDxRVGltZXI+CiAjaW5jbHVkZSA8UVdpZGdldD4KIAogY2xhc3MgUUtleUV2ZW50OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CisKIGNsYXNzIEZ1
bGxTY3JlZW5WaWRlb1dpbmRvdzogcHVibGljIFFXaWRnZXQgewogUV9PQkpFQ1QKIHB1YmxpYzoK
ICAgICBGdWxsU2NyZWVuVmlkZW9XaW5kb3coKTsKKyAgICB2b2lkIHNldFZpZGVvRWxlbWVudChI
VE1MVmlkZW9FbGVtZW50Kik7CiBzaWduYWxzOgogICAgIHZvaWQgY2xvc2VkKCk7CiBwcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCogZXYpOwotICAgIGJvb2wgZXZl
bnQoUUV2ZW50KiBldik7CisgICAgdm9pZCBjbG9zZUV2ZW50KFFDbG9zZUV2ZW50Kik7CisgICAg
dm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCopOworICAgIGJvb2wgZXZlbnQoUUV2ZW50Kik7
CisKK3B1YmxpYyBzbG90czoKKyAgICB2b2lkIHNob3dGdWxsU2NyZWVuKCk7CisKK3ByaXZhdGUg
c2xvdHM6CisgICAgdm9pZCBoaWRlQ3Vyc29yKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzaG93
Q3Vyc29yKCk7CisgICAgUVRpbWVyIG1fY3Vyc29yVGltZXI7CisgICAgSFRNTFZpZGVvRWxlbWVu
dCogbV9tZWRpYUVsZW1lbnQ7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5k
b3dRdC5jcHAKaW5kZXggODcyZDA1NS4uNzI3MDc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3Jt
VmlkZW9XaW5kb3dRdC5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCiAKKyNpbmNsdWRlICJIVE1MVmlkZW9F
bGVtZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCIKIAogI2lu
Y2x1ZGUgPFFBcHBsaWNhdGlvbj4KQEAgLTI4LDI5ICsyOSw1NSBAQAogI2luY2x1ZGUgPFFQYWxl
dHRlPgogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdCBpbnQgZ0hpZGVN
b3VzZUN1cnNvckRlbGF5ID0gMzAwMDsKKwogRnVsbFNjcmVlblZpZGVvV2luZG93OjpGdWxsU2Ny
ZWVuVmlkZW9XaW5kb3coKQogICAgIDogUVdpZGdldCgwLCBRdDo6V2luZG93KQorICAgICwgbV9t
ZWRpYUVsZW1lbnQoMCkKIHsKICAgICBzZXRBdHRyaWJ1dGUoUXQ6OldBX05hdGl2ZVdpbmRvdyk7
Ci0gICAgLy8gU2V0dGluZyB0aGVzZSB2YWx1ZXMgZW5zdXJlcyBzbW9vdGggcmVzaXppbmcgc2lu
Y2UgaXQKLSAgICAvLyB3aWxsIHByZXZlbnQgdGhlIHN5c3RlbSBmcm9tIGNsZWFyaW5nIHRoZSBi
YWNrZ3JvdW5kLgorICAgIHNldFdpbmRvd01vZGFsaXR5KFF0OjpBcHBsaWNhdGlvbk1vZGFsKTsK
ICAgICBzZXRBdHRyaWJ1dGUoUXQ6OldBX05vU3lzdGVtQmFja2dyb3VuZCwgdHJ1ZSk7CiAgICAg
c2V0QXR0cmlidXRlKFF0OjpXQV9QYWludE9uU2NyZWVuLCB0cnVlKTsKKworICAgIG1fY3Vyc29y
VGltZXIuc2V0U2luZ2xlU2hvdCh0cnVlKTsKKyAgICBjb25uZWN0KCZtX2N1cnNvclRpbWVyLCBT
SUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChoaWRlQ3Vyc29yKCkpKTsKK30KKwordm9pZCBG
dWxsU2NyZWVuVmlkZW9XaW5kb3c6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiBl
bGVtZW50KQoreworICAgIG1fbWVkaWFFbGVtZW50ID0gZWxlbWVudDsKK30KKwordm9pZCBGdWxs
U2NyZWVuVmlkZW9XaW5kb3c6OmNsb3NlRXZlbnQoUUNsb3NlRXZlbnQqKQoreworICAgIG1fY3Vy
c29yVGltZXIuc3RvcCgpOworICAgIHNldE1vdXNlVHJhY2tpbmcoZmFsc2UpOworICAgIHJlbGVh
c2VNb3VzZSgpOworICAgIFFBcHBsaWNhdGlvbjo6cmVzdG9yZU92ZXJyaWRlQ3Vyc29yKCk7CiB9
CiAKIHZvaWQgRnVsbFNjcmVlblZpZGVvV2luZG93OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCog
ZXYpCiB7Ci0gICAgaWYgKGV2LT5rZXkoKSA9PSBRdDo6S2V5X0VzY2FwZSkgewotICAgICAgICBj
bG9zZSgpOworICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBldi0+a2V5KCkgPT0gUXQ6OktleV9T
cGFjZSkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50LT5wYXVzZWQoKSkKKyAgICAgICAg
ICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZSh0cnVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnBsYXkodHJ1ZSk7CisgICAgfSBlbHNlIGlmIChldi0+a2V5KCkg
PT0gUXQ6OktleV9Fc2NhcGUpCiAgICAgICAgIGVtaXQgY2xvc2VkKCk7Ci0gICAgfQorICAgIFFX
aWRnZXQ6OmtleVByZXNzRXZlbnQoZXYpOwogfQogCiBib29sIEZ1bGxTY3JlZW5WaWRlb1dpbmRv
dzo6ZXZlbnQoUUV2ZW50KiBldikKIHsKICAgICBzd2l0Y2ggKGV2LT50eXBlKCkpIHsKKyAgICBj
YXNlIFFFdmVudDo6TW91c2VNb3ZlOgorICAgICAgICBzaG93Q3Vyc29yKCk7CisgICAgICAgIGV2
LT5hY2NlcHQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNl
QnV0dG9uRGJsQ2xpY2s6Ci0gICAgICAgIGNsb3NlKCk7CisgICAgICAgIGVtaXQgY2xvc2VkKCk7
CiAgICAgICAgIGV2LT5hY2NlcHQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVs
dDoKQEAgLTU4LDYgKzg1LDI2IEBAIGJvb2wgRnVsbFNjcmVlblZpZGVvV2luZG93OjpldmVudChR
RXZlbnQqIGV2KQogICAgIH0KIH0KIAordm9pZCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OnNob3dG
dWxsU2NyZWVuKCkKK3sKKyAgICBRV2lkZ2V0OjpzaG93RnVsbFNjcmVlbigpOworICAgIHNldE1v
dXNlVHJhY2tpbmcodHJ1ZSk7CisgICAgcmFpc2UoKTsKKyAgICBzZXRGb2N1cygpOworICAgIGhp
ZGVDdXJzb3IoKTsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OmhpZGVDdXJzb3Io
KQoreworICAgIFFBcHBsaWNhdGlvbjo6c2V0T3ZlcnJpZGVDdXJzb3IoUUN1cnNvcihRdDo6Qmxh
bmtDdXJzb3IpKTsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OnNob3dDdXJzb3Io
KQoreworICAgIFFBcHBsaWNhdGlvbjo6cmVzdG9yZU92ZXJyaWRlQ3Vyc29yKCk7CisgICAgbV9j
dXJzb3JUaW1lci5zdGFydChnSGlkZU1vdXNlQ3Vyc29yRGVsYXkpOworfQorCiAKIFBsYXRmb3Jt
VmlkZW9XaW5kb3c6OlBsYXRmb3JtVmlkZW9XaW5kb3coKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBl
MmNjZGNlLi5jMGNiMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDExLTA0
LTA2ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50
IGZ1bGxzY3JlZW4gcGxheWJhY2sgZm9yIHRoZSBHU3RyZWFtZXIgYmFja2VuZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODI2CisKKyAgICAgICAg
SW1wbGVtZW50IHN1cHBvcnQgZm9yIGZ1bGxzY3JlZW4gcGxheWJhY2sgd2hlbiBidWlsZGluZyB0
aGUKKyAgICAgICAgUXQgcG9ydCB3aXRoIHRoZSBHU3RyZWFtZXIgYmFja2VuZCAoREVGSU5FUys9
VVNFX0dTVFJFQU1FUj0xKS4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGRvbmUgaW4g
RnVsbFNjcmVlblZpZGVvUXQgYWxvbmdzaWRlIHdpdGgKKyAgICAgICAgdGhlIFF0IE11bHRpbWVk
aWEgc3VwcG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBsYXlvdXQgdGVzdHMg
Y292ZXIgaXQuIFRoZXkgYXJlIG5vdCB5ZXQgYWN0aXZhdGVkCisgICAgICAgIGJ1dCB3aWxsIGJl
IGFueSB0aW1lIHNvb24uCisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0Ojp+Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6
OmVudGVyRnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9R
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
OjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OnNldFZpZGVvRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6
d2luZG93Q2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXI6OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9yTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxTY3JlZW5G
b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1
bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5W
aWRlb1F0Ojppc1ZhbGlkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlk
ZW9RdC5oOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxl
cjo6fkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOgorCiAyMDExLTA0LTA2ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybyBiL1NvdXJjZS9XZWJLaXQvcXQv
UXRXZWJLaXQucHJvCmluZGV4IDNjZjk5OGEuLmNkMWJmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvUXRXZWJLaXQucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQucHJv
CkBAIC0yMTEsMTMgKzIxMSwxMyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVf
UExVR0lOX0FQST0xKSB7CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAg
ICAgIWNvbnRhaW5zKERFRklORVMsIFVTRV9HU1RSRUFNRVI9MSk6Y29udGFpbnMoTU9CSUxJVFlf
Q09ORklHLCBtdWx0aW1lZGlhKSB7Ci0gICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAg
JCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaCBcCi0gICAgICAgICAgICAk
JFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuaAorICAgICAgICBIRUFE
RVJTICs9ICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdldC5oCisgICAg
ICAgIFNPVVJDRVMgKz0gJCRQV0QvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvV2lkZ2V0
LmNwcAorICAgIH0KIAotICAgICAgICBTT1VSQ0VTICs9IFwKLSAgICAgICAgICAgICQkUFdEL1dl
YkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcCBcCi0gICAgICAgICAgICAkJFBXRC9X
ZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuY3BwCisgICAgY29udGFpbnMoREVG
SU5FUywgVVNFX0dTVFJFQU1FUj0xKSB8IGNvbnRhaW5zKE1PQklMSVRZX0NPTkZJRywgbXVsdGlt
ZWRpYSkgeworICAgICAgICBIRUFERVJTICs9ICQkUFdEL1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1F0LmgKKyAgICAgICAgU09VUkNFUyArPSAkJFBXRC9XZWJDb3JlU3VwcG9ydC9GdWxs
U2NyZWVuVmlkZW9RdC5jcHAKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggYmVjNGJjNC4uYWI1NWU2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHAKQEAgLTc1LDEzICs3NSwxNSBAQAogI2luY2x1ZGUgPHF0b29sdGlwLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElN
RURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiRnVsbFNjcmVlblZpZGVvUXQuaCIK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQog
I2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVF0LmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDcgKzkyLDcgQEAgYm9vbCBDaHJvbWVDbGllbnRRdDo6
ZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrcyA9IGZhbHNlOwogQ2hyb21lQ2xpZW50UXQ6OkNocm9t
ZUNsaWVudFF0KFFXZWJQYWdlKiB3ZWJQYWdlKQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCiAg
ICAgLCBtX2V2ZW50TG9vcCgwKQotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJ
TUVESUEpCisjaWYgRU5BQkxFKFZJREVPKQogICAgICwgbV9mdWxsU2NyZWVuVmlkZW8oMCkKICNl
bmRpZgogewpAQCAtMTAyLDcgKzEwNCw3IEBAIENocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50
UXQoKQogICAgIGlmIChtX2V2ZW50TG9vcCkKICAgICAgICAgbV9ldmVudExvb3AtPmV4aXQoKTsK
IAotI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisjaWYgRU5BQkxF
KFZJREVPKQogICAgIGRlbGV0ZSBtX2Z1bGxTY3JlZW5WaWRlbzsKICNlbmRpZgogfQpAQCAtNjUw
LDcgKzY1Miw3IEBAIEludFJlY3QgQ2hyb21lQ2xpZW50UXQ6OnZpc2libGVSZWN0Rm9yVGlsZWRC
YWNraW5nU3RvcmUoKSBjb25zdAogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVO
QUJMRShRVF9NVUxUSU1FRElBKQorI2lmIEVOQUJMRShWSURFTykKIEZ1bGxTY3JlZW5WaWRlb1F0
KiBDaHJvbWVDbGllbnRRdDo6ZnVsbFNjcmVlblZpZGVvKCkKIHsKICAgICBpZiAoIW1fZnVsbFNj
cmVlblZpZGVvKQpAQCAtNjczLDEzICs2NzUsNiBAQCB2b2lkIENocm9tZUNsaWVudFF0OjplbnRl
ckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSk7CiAKLSAgICBIVE1MVmlkZW9FbGVt
ZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7
Ci0gICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gdmlkZW9FbGVtZW50LT5wbGF0Zm9y
bU1lZGlhKCk7Ci0KLSAgICBBU1NFUlQocGxhdGZvcm1NZWRpYS50eXBlID09IFBsYXRmb3JtTWVk
aWE6OlF0TWVkaWFQbGF5ZXJUeXBlKTsKLSAgICBpZiAocGxhdGZvcm1NZWRpYS50eXBlICE9IFBs
YXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKQotICAgICAgICByZXR1cm47Ci0KICAgICBm
dWxsU2NyZWVuVmlkZW8oKS0+ZW50ZXJGdWxsU2NyZWVuRm9yTm9kZShub2RlKTsKIH0KIApAQCAt
Njg3LDEzICs2ODIsNiBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpleGl0RnVsbHNjcmVlbkZvck5v
ZGUoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6dmlkZW9UYWcpKTsKIAotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihub2RlKTsKLSAgICBQbGF0Zm9ybU1l
ZGlhIHBsYXRmb3JtTWVkaWEgPSB2aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKLQotICAg
IEFTU0VSVChwbGF0Zm9ybU1lZGlhLnR5cGUgPT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXll
clR5cGUpOwotICAgIGlmIChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UXRN
ZWRpYVBsYXllclR5cGUpCi0gICAgICAgIHJldHVybjsKLQogICAgIGZ1bGxTY3JlZW5WaWRlbygp
LT5leGl0RnVsbFNjcmVlbkZvck5vZGUobm9kZSk7CiB9IAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggOGI3MGUwYi4u
YzFlZDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBQYWdlOwogc3RydWN0IEZyYW1lTG9h
ZFJlcXVlc3Q7CiBjbGFzcyBRdEFic3RyYWN0V2ViUG9wdXA7CiBzdHJ1Y3QgVmlld3BvcnRBcmd1
bWVudHM7Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBF
TkFCTEUoVklERU8pCiBjbGFzcyBGdWxsU2NyZWVuVmlkZW9RdDsKICNlbmRpZgogCkBAIC0xNjMs
NyArMTYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hFdmVudHMoYm9v
bCkgeyB9CiAjZW5kaWYKICAKLSNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShRVF9NVUxUSU1F
RElBKQorI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2Ny
ZWVuRm9yTm9kZShjb25zdCBOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVl
bkZvck5vZGUoTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUo
Tm9kZSopOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBib29sIG1lbnVCYXJWaXNp
YmxlOwogICAgIFFFdmVudExvb3AqIG1fZXZlbnRMb29wOwogCi0jaWYgRU5BQkxFKFZJREVPKSAm
JiBFTkFCTEUoUVRfTVVMVElNRURJQSkKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgRnVsbFNjcmVl
blZpZGVvUXQqIG1fZnVsbFNjcmVlblZpZGVvOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAKaW5kZXggY2Nj
YTQzYy4uZThkMmUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAKQEAgLTIyLDE4ICsyMiw3MSBAQAogI2luY2x1ZGUg
IkZ1bGxTY3JlZW5WaWRlb1F0LmgiCiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnRRdC5oIgorI2lm
IEVOQUJMRShRVF9NVUxUSU1FRElBKQogI2luY2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1dpZGdldC5o
IgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVF0LmgiCisjZW5kaWYKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlUXQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAKKyNpZiBVU0UoR1NUUkVB
TUVSKQorI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlk
ZW9XaW5kb3dQcml2YXRlLmgiCisjZW5kaWYKIAorI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQog
I2luY2x1ZGUgPFFHcmFwaGljc1ZpZGVvSXRlbT4KICNpbmNsdWRlIDxRTWVkaWFQbGF5ZXI+Cisj
ZW5kaWYKKyNpbmNsdWRlIDxRV2lkZ2V0PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBV
U0UoR1NUUkVBTUVSKQorR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6R1N0cmVhbWVy
RnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCisgICAgOiBtX3ZpZGVvRWxlbWVudCgwKQorICAgICwg
bV9mdWxsU2NyZWVuV2lkZ2V0KDApCit7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVlblZp
ZGVvSGFuZGxlcjo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIGVsZW1lbnQpCit7
CisgICAgbV92aWRlb0VsZW1lbnQgPSBlbGVtZW50OworfQorCit2b2lkIEdTdHJlYW1lckZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXI6OmVudGVyRnVsbFNjcmVlbigpCit7CisgICAgaWYgKG1fdmlkZW9F
bGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSAhPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpH
U3RyZWFtZXJHV29ybGRUeXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBHU3RyZWFtZXJHV29y
bGQqIGdzdHJlYW1lckdXb3JsZCA9IG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVk
aWEuZ3N0cmVhbWVyR1dvcmxkOworCisgICAgaWYgKCFnc3RyZWFtZXJHV29ybGQtPmVudGVyRnVs
bHNjcmVlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQgPSBy
ZWludGVycHJldF9jYXN0PEZ1bGxTY3JlZW5WaWRlb1dpbmRvdyo+KGdzdHJlYW1lckdXb3JsZC0+
cGxhdGZvcm1WaWRlb1dpbmRvdygpLT53aW5kb3coKSk7CisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0
LT5zZXRWaWRlb0VsZW1lbnQobV92aWRlb0VsZW1lbnQpOworICAgIGNvbm5lY3QobV9mdWxsU2Ny
ZWVuV2lkZ2V0LCBTSUdOQUwoY2xvc2VkKCkpLCB0aGlzLCBTTE9UKHdpbmRvd0Nsb3NlZCgpKSk7
CisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5zaG93RnVsbFNjcmVlbigpOworfQorCit2b2lkIEdT
dHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OndpbmRvd0Nsb3NlZCgpCit7CisgICAgbV92
aWRlb0VsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNj
cmVlblZpZGVvSGFuZGxlcjo6ZXhpdEZ1bGxTY3JlZW4oKQoreworICAgIGlmIChtX3ZpZGVvRWxl
bWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0
cmVhbWVyR1dvcmxkVHlwZSkKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEo
KS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBtX2Z1bGxT
Y3JlZW5XaWRnZXQtPnNldFZpZGVvRWxlbWVudCgwKTsKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQt
PmNsb3NlKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQogYm9vbCBE
ZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6c19zaG91bGRGb3JjZUZ1bGxTY3JlZW5WaWRl
b1BsYXliYWNrID0gZmFsc2U7CiAKIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpEZWZh
dWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCkBAIC00Miw2ICs5NSw4IEBAIERlZmF1bHRGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCiB7CiAg
ICAgY29ubmVjdChtX2Z1bGxTY3JlZW5XaWRnZXQsIFNJR05BTChkaWRFeGl0RnVsbFNjcmVlbigp
KSwgdGhpcywgU0lHTkFMKGZ1bGxTY3JlZW5DbG9zZWQoKSkpOwogICAgIG1fZnVsbFNjcmVlbldp
ZGdldC0+aGlkZSgpOworCisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5jbG9zZSgpOwogfQogCiBE
ZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6fkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyKCkKQEAgLTcyLDI0ICsxMjcsMzYgQEAgdm9pZCBEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFu
ZGxlcjo6ZXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fZnVsbFNjcmVlbldpZGdldC0+Y2xvc2Uo
KTsKIH0KKyNlbmRpZgogCiBGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQoQ2hy
b21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCkKICAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNs
aWVudCkKICAgICAsIG1fdmlkZW9FbGVtZW50KDApCiB7CiAgICAgUV9BU1NFUlQobV9jaHJvbWVD
bGllbnQpOwotICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciA9IG1fY2hyb21lQ2xpZW50LT5t
X3BsYXRmb3JtUGx1Z2luLmNyZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKIAorI2lmIEVO
QUJMRShRVF9NVUxUSU1FRElBKQorICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciA9IG1fY2hy
b21lQ2xpZW50LT5tX3BsYXRmb3JtUGx1Z2luLmNyZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIo
KTsKICAgICBpZiAoIW1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcikKICAgICAgICAgbV9GdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyID0gbmV3IERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOwogCiAg
ICAgaWYgKG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcikKICAgICAgICAgY29ubmVjdChtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIsIFNJR05BTChmdWxsU2NyZWVuQ2xvc2VkKCkpLCB0aGlzLCBTTE9U
KGFib3V0VG9DbG9zZSgpKSk7CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgbV9G
dWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyID0gbmV3IEdTdHJlYW1lckZ1bGxTY3JlZW5W
aWRlb0hhbmRsZXI7CisjZW5kaWYKIH0KIAogRnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVu
VmlkZW9RdCgpCiB7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCiAgICAgZGVsZXRlIG1fRnVs
bFNjcmVlblZpZGVvSGFuZGxlcjsKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgZGVs
ZXRlIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1lcjsKKyNlbmRpZgogfQogCiB2b2lk
IEZ1bGxTY3JlZW5WaWRlb1F0OjplbnRlckZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCkBA
IC05NywyNSArMTY0LDU0IEBAIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVl
bkZvck5vZGUoTm9kZSogbm9kZSkKICAgICBRX0FTU0VSVChub2RlKTsKICAgICBRX0FTU0VSVCht
X0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOwogCisgICAgbV92aWRlb0VsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7CisKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJ
QSkKKyAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
VmlkZW9FbGVtZW50Kj4obm9kZSk7CisgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0g
dmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCk7CisKKyAgICBBU1NFUlQocGxhdGZvcm1NZWRp
YS50eXBlID09IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKTsKKyAgICBpZiAocGxh
dGZvcm1NZWRpYS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJUeXBlKQorICAg
ICAgICByZXR1cm47CisKICAgICBpZiAoIW1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVyUXQgPSBt
ZWRpYVBsYXllckZvck5vZGUobm9kZSk7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlh
UGxheWVyUXQgPSBtZWRpYVBsYXllcigpOwogICAgIG1lZGlhUGxheWVyUXQtPnJlbW92ZVZpZGVv
SXRlbSgpOwogICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlci0+ZW50ZXJGdWxsU2NyZWVuKG1l
ZGlhUGxheWVyUXQtPm1lZGlhUGxheWVyKCkpOworI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVS
KQorICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1lci0+c2V0VmlkZW9FbGVtZW50
KG1fdmlkZW9FbGVtZW50KTsKKyAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXIt
PmVudGVyRnVsbFNjcmVlbigpOworI2VuZGlmCiB9CiAKIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6
OmV4aXRGdWxsU2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogewogICAgIFFfQVNTRVJUKG5vZGUp
OworCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOworICAgIFBs
YXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgp
OworCisgICAgQVNTRVJUKHBsYXRmb3JtTWVkaWEudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpRdE1l
ZGlhUGxheWVyVHlwZSk7CisgICAgaWYgKHBsYXRmb3JtTWVkaWEudHlwZSAhPSBQbGF0Zm9ybU1l
ZGlhOjpRdE1lZGlhUGxheWVyVHlwZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUV9BU1NFUlQo
bV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKTsKIAogICAgIGlmICghbV9GdWxsU2NyZWVuVmlkZW9I
YW5kbGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIt
PmV4aXRGdWxsU2NyZWVuKCk7Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVy
UXQgPSBtZWRpYVBsYXllckZvck5vZGUobm9kZSk7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQq
IG1lZGlhUGxheWVyUXQgPSBtZWRpYVBsYXllcigpOwogICAgIG1lZGlhUGxheWVyUXQtPnJlc3Rv
cmVWaWRlb0l0ZW0oKTsKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgbV9GdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyLT5leGl0RnVsbFNjcmVlbigpOworI2VuZGlmCiB9CiAK
IHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmFib3V0VG9DbG9zZSgpCkBAIC0xMjQsMjQgKzIyMCwz
MyBAQCB2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0OjphYm91dFRvQ2xvc2UoKQogICAgIG1fdmlkZW9F
bGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwogfQogCisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEp
CiBNZWRpYVBsYXllclByaXZhdGVRdCogRnVsbFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxheWVyKCkK
IHsKICAgICBRX0FTU0VSVChtX3ZpZGVvRWxlbWVudCk7CiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0
Zm9ybU1lZGlhID0gbV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlUXQqPihwbGF0Zm9ybU1lZGlhLm1lZGlhLnF0
TWVkaWFQbGF5ZXIpOwogfQorI2VuZGlmCiAKLU1lZGlhUGxheWVyUHJpdmF0ZVF0KiBGdWxsU2Ny
ZWVuVmlkZW9RdDo6bWVkaWFQbGF5ZXJGb3JOb2RlKE5vZGUqIG5vZGUpCitib29sIEZ1bGxTY3Jl
ZW5WaWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkKIHsKLSAgICBR
X0FTU0VSVChub2RlKTsKLSAgICBpZiAobm9kZSkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQgPSBz
dGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obm9kZSk7Ci0gICAgcmV0dXJuIG1lZGlhUGxh
eWVyKCk7CisjaWYgRU5BQkxFKFFUX01VTFRJTUVESUEpCisgICAgcmV0dXJuIG1fRnVsbFNjcmVl
blZpZGVvSGFuZGxlciA/IG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlci0+cmVxdWlyZXNGdWxsU2Ny
ZWVuRm9yVmlkZW9QbGF5YmFjaygpIDogZmFsc2U7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVS
KQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCi1ib29sIEZ1bGxTY3JlZW5WaWRlb1F0
OjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkKK2Jvb2wgRnVsbFNjcmVlblZp
ZGVvUXQ6OmlzVmFsaWQoKSBjb25zdAogewotICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hh
bmRsZXIgPyBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPnJlcXVpcmVzRnVsbFNjcmVlbkZvclZp
ZGVvUGxheWJhY2soKSA6IGZhbHNlOworI2lmIEVOQUJMRShRVF9NVUxUSU1FRElBKQorICAgIHJl
dHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVS
KQorICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5kaWYK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxs
U2NyZWVuVmlkZW9RdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2Ny
ZWVuVmlkZW9RdC5oCmluZGV4IGE0OGE4ODIuLmFjNWNiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKQEAgLTIyLDYgKzIy
LDcgQEAKIAogI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgogI2luY2x1ZGUgPFFP
YmplY3Q+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKIFFUX0JFR0lOX05BTUVTUEFDRQog
Y2xhc3MgUUdyYXBoaWNzVmlkZW9JdGVtOwpAQCAtMzQsOCArMzUsMzUgQEAgY2xhc3MgQ2hyb21l
Q2xpZW50UXQ7CiBjbGFzcyBGdWxsU2NyZWVuVmlkZW9XaWRnZXQ7CiBjbGFzcyBIVE1MVmlkZW9F
bGVtZW50OwogY2xhc3MgTm9kZTsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZVF0OworI2VuZGlmCiAKKy8vIFdlIGRvIG5vdCB1c2UgRU5BQkxFIG9y
IFVTRSBiZWNhdXNlIG1vYyBkb2VzIG5vdCBleHBhbmQgdGhlc2UgbWFjcm9zLgorI2lmIGRlZmlu
ZWQoV1RGX1VTRV9HU1RSRUFNRVIpICYmIFdURl9VU0VfR1NUUkVBTUVSCitjbGFzcyBGdWxsU2Ny
ZWVuVmlkZW9XaW5kb3c7CisKK2NsYXNzIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIg
OiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBHU3RyZWFtZXJG
dWxsU2NyZWVuVmlkZW9IYW5kbGVyKCk7CisgICAgfkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXIoKSB7IH0KKyAgICB2b2lkIHNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7
CisKKyAgICB2b2lkIGVudGVyRnVsbFNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW4o
KTsKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCB3aW5kb3dDbG9zZWQoKTsKKworcHJpdmF0
ZToKKyAgICBIVE1MVmlkZW9FbGVtZW50KiBtX3ZpZGVvRWxlbWVudDsKKyAgICBGdWxsU2NyZWVu
VmlkZW9XaW5kb3cqIG1fZnVsbFNjcmVlbldpZGdldDsKK307CisjZW5kaWYKKworLy8gV2UgZG8g
bm90IHVzZSBFTkFCTEUgb3IgVVNFIGJlY2F1c2UgbW9jIGRvZXMgbm90IGV4cGFuZCB0aGVzZSBt
YWNyb3MuCisjaWYgZGVmaW5lZChFTkFCTEVfUVRfTVVMVElNRURJQSkgJiYgRU5BQkxFX1FUX01V
TFRJTUVESUEKIGNsYXNzIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDogcHVibGljIFFX
ZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIHsKICAgICBRX09CSkVDVAogcHVibGljOgpAQCAtNTEs
NiArNzksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNfc2hvdWxkRm9yY2VGdWxsU2Ny
ZWVuVmlkZW9QbGF5YmFjazsKICAgICBGdWxsU2NyZWVuVmlkZW9XaWRnZXQgKm1fZnVsbFNjcmVl
bldpZGdldDsKIH07CisjZW5kaWYKIAogY2xhc3MgRnVsbFNjcmVlblZpZGVvUXQgOiBwdWJsaWMg
UU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKQEAgLTYxLDExICs5MCwxMiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGVudGVyRnVsbFNjcmVlbkZvck5vZGUoTm9kZSopOwogICAgIHZpcnR1YWwg
dm9pZCBleGl0RnVsbFNjcmVlbkZvck5vZGUoTm9kZSopOwogICAgIGJvb2wgcmVxdWlyZXNGdWxs
U2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpOwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgIHJl
dHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25z
dDsKIAogcHJpdmF0ZToKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkKICAgICBNZWRpYVBsYXll
clByaXZhdGVRdCogbWVkaWFQbGF5ZXIoKTsKLSAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVk
aWFQbGF5ZXJGb3JOb2RlKE5vZGUqID0gMCk7CisjZW5kaWYKIAogcHJpdmF0ZSBzbG90czoKICAg
ICB2b2lkIGFib3V0VG9DbG9zZSgpOwpAQCAtNzMsNyArMTAzLDEyIEBAIHByaXZhdGUgc2xvdHM6
CiBwcml2YXRlOgogICAgIENocm9tZUNsaWVudFF0KiBtX2Nocm9tZUNsaWVudDsKICAgICBIVE1M
VmlkZW9FbGVtZW50KiBtX3ZpZGVvRWxlbWVudDsKKyNpZiBFTkFCTEUoUVRfTVVMVElNRURJQSkK
ICAgICBRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlciogbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVy
OworI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBHU3RyZWFtZXJGdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyKiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5kaWYKIH07
CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>