<?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>74386</bug_id>
          
          <creation_ts>2011-12-13 00:31:08 -0800</creation_ts>
          <short_desc>Migrate createObjectURL &amp; revokeObjectURL to static (Class) methods</short_desc>
          <delta_ts>2012-10-15 01:47:06 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/FileAPI/#creating-revoking</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77182</dependson>
    
    <dependson>77947</dependson>
          <blocked>74385</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kaustubh Atrawalkar">kaustubh.ra</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dslomov</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>jianli</cc>
    
    <cc>kaustubh.ra</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519922</commentid>
    <comment_count>0</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-13 00:31:08 -0800</bug_when>
    <thetext>Need to move createObjectURL &amp; revokeObjectURL from DOMURL implementation to static methods as per specs - http://www.w3.org/TR/FileAPI/#creating-revoking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519973</commentid>
    <comment_count>1</comment_count>
      <attachid>118981</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-13 02:25:09 -0800</bug_when>
    <thetext>Created attachment 118981
Patch

Added DOMURL constructor as per new specs. Moved createObjectURL &amp; revokeObjectURL to static methods.
Added test case for checking static property of above methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519976</commentid>
    <comment_count>2</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-13 02:26:56 -0800</bug_when>
    <thetext>IDL attributes for DOMURL and test cases for constructor &amp; attributes to be followed up in next patch. This is with reference to spec mentioned in the above url.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520149</commentid>
    <comment_count>3</comment_count>
      <attachid>118981</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-13 10:11:45 -0800</bug_when>
    <thetext>Comment on attachment 118981
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Test: fast/dom/DOMURL/check-instanceof-domurl-functions.html

It is probably worth pointing out that there are existing tests that cover webkitURL.

&gt; Source/WebCore/html/DOMURL.cpp:179
&gt; +DOMURL::DOMURL(const String&amp; url, const String&amp; baseURL)
&gt; +{
&gt; +    m_href = KURL(KURL(), url);
&gt; +    // Resolve the URL relative to baseURL if is provide.
&gt; +    if (!baseURL.isEmpty())
&gt; +        m_href = KURL(m_href, baseURL);
&gt; +}

Can this be taken out of this patch? In this patch we don&apos;t want to be able to instantiate new URL objects.

&gt; Source/WebCore/html/DOMURL.h:59
&gt; +    KURL m_href;

Not needed in this patch.

&gt; Source/WebCore/html/DOMURL.idl:-28
&gt; -        Conditional=BLOB,

Keep conditional in this patch?

&gt; Source/WebCore/html/DOMURL.idl:32
&gt; +        Constructor(in DOMString url, in [Optional=CallWithNullValue] DOMString baseURL)

For this patch I would remove the Constructor since at this point there is no need to be able to instantiate this.

&gt; Source/WebCore/page/DOMWindow.idl:817
&gt; +        attribute DOMURLConstructor webkitURL;

Given this patch is only about moving these methods from instance methods to class methods it still makes sense to keep the conditional here and in WorkerContext.idl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520799</commentid>
    <comment_count>4</comment_count>
      <attachid>119180</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-14 02:05:30 -0800</bug_when>
    <thetext>Created attachment 119180
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520801</commentid>
    <comment_count>5</comment_count>
      <attachid>119180</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-14 02:06:51 -0800</bug_when>
    <thetext>Comment on attachment 119180
Updated patch

Changed the patch as per Erik&apos;s comments. Darin can you review once?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520805</commentid>
    <comment_count>6</comment_count>
      <attachid>119183</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-14 02:20:11 -0800</bug_when>
    <thetext>Created attachment 119183
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520866</commentid>
    <comment_count>7</comment_count>
      <attachid>119207</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-14 05:15:44 -0800</bug_when>
    <thetext>Created attachment 119207
Fixed ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525519</commentid>
    <comment_count>8</comment_count>
      <attachid>119207</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-21 13:30:24 -0800</bug_when>
    <thetext>Comment on attachment 119207
Fixed ChangeLog

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

I&apos;m going to mark this R+, but there is one subtle issue (mentioned below) that you might want to consider before landing this patch.

&gt; Source/WebCore/html/DOMURL.cpp:88
&gt; +static PublicURLManagerMap&amp; publicURLManagerMap()

Interesting design choice.  Another option is to store the information in the ScriptExecutionContext as some sort of a mix-in.  We don&apos;t have a facility for doing that at the moment, but there are a bunch of cases like this where it would be useful.

&gt; Source/WebCore/html/DOMURL.idl:34
&gt; -        [ConvertNullStringTo=Undefined] DOMString createObjectURL(in MediaStream stream);
&gt; +        static [ConvertNullStringTo=Undefined,CallWith=ScriptExecutionContext] DOMString createObjectURL(in MediaStream stream);

So, this is actually slightly different because you&apos;ll get a different ScriptExecution context.  After this change, you get the script execution context associated with the currently executing script rather than the one associated with the window object that contains this object.  Is that an intentional change?  If so, should we add a test that demonstrates it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525553</commentid>
    <comment_count>9</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-21 14:02:17 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 119207 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119207&amp;action=review
&gt; 
&gt; I&apos;m going to mark this R+, but there is one subtle issue (mentioned below) that you might want to consider before landing this patch.
&gt; 
&gt; &gt; Source/WebCore/html/DOMURL.cpp:88
&gt; &gt; +static PublicURLManagerMap&amp; publicURLManagerMap()
&gt; 
&gt; Interesting design choice.  Another option is to store the information in the ScriptExecutionContext as some sort of a mix-in.  We don&apos;t have a facility for doing that at the moment, but there are a bunch of cases like this where it would be useful.
&gt; 
&gt; &gt; Source/WebCore/html/DOMURL.idl:34
&gt; &gt; -        [ConvertNullStringTo=Undefined] DOMString createObjectURL(in MediaStream stream);
&gt; &gt; +        static [ConvertNullStringTo=Undefined,CallWith=ScriptExecutionContext] DOMString createObjectURL(in MediaStream stream);
&gt; 
&gt; So, this is actually slightly different because you&apos;ll get a different ScriptExecution context.  After this change, you get the script execution context associated with the currently executing script rather than the one associated with the window object that contains this object.  Is that an intentional change?  If so, should we add a test that demonstrates it?

Good catch. That is the wrong behavior. If you do &quot;someWindow.URL.createObjectURL(...)&quot; that URL should be associated with the ScriptExecution context of &quot;someWindow&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525670</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 15:01:55 -0800</bug_when>
    <thetext>He&apos;s not a committer, so this might as well be an r- if we&apos;re not gonna set cq+ :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525714</commentid>
    <comment_count>11</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-21 15:25:12 -0800</bug_when>
    <thetext>For V8 this looks like it it using the right context. The V8 bindings call getScriptExecutionContext which in turn calls V8Proxy::retrieveFrameForCurrentContext() which according to the comments is the frame of the context of the function.

http://www.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/bindings/v8/V8Proxy.h&amp;type=cs&amp;l=184

I&apos;m not sure I&apos;m reading this correctly and a test would be very helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534718</commentid>
    <comment_count>12</comment_count>
      <attachid>122206</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-01-12 03:47:37 -0800</bug_when>
    <thetext>Created attachment 122206
Patch

First of all, apology for long delay in updating the patch. Fixed Test cases. Updated to current revision. added check for somewindow.webkitURL.createObjectURL &amp; somewindow.webkitURL.revokeObjectURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534747</commentid>
    <comment_count>13</comment_count>
      <attachid>122206</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 04:37:42 -0800</bug_when>
    <thetext>Comment on attachment 122206
Patch

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

New failing tests:
fast/dom/DOMURL/check-instanceof-domurl-functions.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537439</commentid>
    <comment_count>14</comment_count>
      <attachid>122206</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-01-17 16:32:32 -0800</bug_when>
    <thetext>Comment on attachment 122206
Patch

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

&gt; LayoutTests/fast/dom/DOMURL/check-instanceof-domurl-functions-expected.txt:7
&gt; +FAIL successfullyParsed should be true (of type boolean). Was undefined (of type undefined).

Can you fix the test so that it does not fail?

&gt; LayoutTests/fast/dom/DOMURL/check-instanceof-domurl-functions.html:10
&gt; +var url = new webkitURL();

At this point we do not care if webkitURL is constructable or not.

This also throws so none of the other tests are reached.

&gt; LayoutTests/fast/dom/DOMURL/check-instanceof-domurl-functions.html:16
&gt; +shouldBeUndefined(&quot;url.createObjectURL&quot;);
&gt; +shouldBeUndefined(&quot;url.revokeObjectURL&quot;);

Remove or comment out since webkitURL is not yet constructable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537667</commentid>
    <comment_count>15</comment_count>
      <attachid>122880</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-01-17 23:50:18 -0800</bug_when>
    <thetext>Created attachment 122880
Updated Patch

Fixed test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538037</commentid>
    <comment_count>16</comment_count>
      <attachid>122880</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-01-18 11:40:17 -0800</bug_when>
    <thetext>Comment on attachment 122880
Updated Patch

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

&gt; LayoutTests/fast/dom/DOMURL/check-instanceof-domurl-functions.html:13
&gt; +//shouldBeTrue(&quot;&apos;createObjectURL&apos; in webkitURL&quot;);
&gt; +//shouldBeTrue(&quot;&apos;revokeObjectURL&apos; in webkitURL&quot;);

This is confusing. I thought &quot;new webkitURL&quot; was throwing before and if it isn&apos;t then these 2 tests should be OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538497</commentid>
    <comment_count>17</comment_count>
      <attachid>123078</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-01-18 22:53:51 -0800</bug_when>
    <thetext>Created attachment 123078
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538860</commentid>
    <comment_count>18</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-01-19 11:39:38 -0800</bug_when>
    <thetext>I have no more issues with this. I&apos;m not a reviewer and I did not pay attention to style issues. Maybe Adam or Darin can give you a real review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539037</commentid>
    <comment_count>19</comment_count>
      <attachid>123078</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-19 14:28:49 -0800</bug_when>
    <thetext>Comment on attachment 123078
Updated Patch

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

This looks good.  A few minor questions/nits below.  Thanks!

&gt; Source/WebCore/html/DOMURL.cpp:-28
&gt; -#if ENABLE(BLOB)

I&apos;m curious why you moved this ifdef around.  It looks like almost everything is ifdefed anyway.

&gt; Source/WebCore/html/DOMURL.cpp:59
&gt; +    virtual void contextDestroyed()

Please add the OVERRIDE keyword.  We&apos;re just starting to use that in WebKit.

&gt; Source/WebCore/html/DOMURL.h:41
&gt; +class DOMURL : public RefCounted&lt;DOMURL&gt; {

It looks like DOMURL is now declared outside of ENABLE(BLOB).  Is that what you intend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539286</commentid>
    <comment_count>20</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-01-19 22:43:13 -0800</bug_when>
    <thetext>(In reply to comment #19)

Thanks for the review Adam. Please find my comments inline.

&gt; (From update of attachment 123078 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123078&amp;action=review
&gt; 
&gt; This looks good.  A few minor questions/nits below.  Thanks!
&gt; 
&gt; &gt; Source/WebCore/html/DOMURL.cpp:-28
&gt; &gt; -#if ENABLE(BLOB)
&gt; 
&gt; I&apos;m curious why you moved this ifdef around.  It looks like almost everything is ifdefed anyway.
&gt; 

This is partial implementation of the Meta bug - Implement URL API. Going forward other implementation wont be in #if ENABLE(BLOB) so tried to keep it that way.

&gt; &gt; Source/WebCore/html/DOMURL.cpp:59
&gt; &gt; +    virtual void contextDestroyed()
&gt; 
&gt; Please add the OVERRIDE keyword.  We&apos;re just starting to use that in WebKit.
&gt; 

Sure, will add it. 

&gt; &gt; Source/WebCore/html/DOMURL.h:41
&gt; &gt; +class DOMURL : public RefCounted&lt;DOMURL&gt; {
&gt; 
&gt; It looks like DOMURL is now declared outside of ENABLE(BLOB).  Is that what you intend?

Yes, I suppose that&apos;s what new URL implementation is expecting. Correct me if I am wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539290</commentid>
    <comment_count>21</comment_count>
      <attachid>123078</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-19 22:57:43 -0800</bug_when>
    <thetext>Comment on attachment 123078
Updated Patch

Ok.  We can add OVERRIDE next time we touch this file.  It&apos;s not worth respinning the patch.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539307</commentid>
    <comment_count>22</comment_count>
      <attachid>123078</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 00:00:27 -0800</bug_when>
    <thetext>Comment on attachment 123078
Updated Patch

Clearing flags on attachment: 123078

Committed r105486: &lt;http://trac.webkit.org/changeset/105486&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539308</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 00:00:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539667</commentid>
    <comment_count>24</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-01-20 11:50:55 -0800</bug_when>
    <thetext>This broke these tests:
fast/dom/prototype-inheritance-2.html
fast/js/global-constructors.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540391</commentid>
    <comment_count>25</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-01-22 22:42:35 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; This broke these tests:
&gt; fast/dom/prototype-inheritance-2.html
&gt; fast/js/global-constructors.html

Which platform did the tests failed? Working on chromium port + gtk port here on my machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540400</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-22 23:38:53 -0800</bug_when>
    <thetext>http://build.webkit.org/waterfall can answer these sorts of questions.  It looks like Lion, at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541744</commentid>
    <comment_count>27</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-24 15:06:08 -0800</bug_when>
    <thetext>This patch looks like this patch will cause problems for usage from workers.

Here&apos;s why:

1. It removed &quot;NoStaticTables&quot; from DOMURL.idl. Isn&apos;t that needed to allow this to be used with workers?
2. The methods publicURLManagerMap and publicURLManager aren&apos;t threadsafe so they has potential race conditions since it can be called on Web Worker threads as well as the main thread.

On the plus side, I noticed this because it fixes a leak that existed in the code before this patch. (The leak would happen because ~DOMURL would get called before DOM::contextDestroyed got called and now it appears that contextDestroyed always gets called before ~PublicURLManager.)

It may be good to roll this out while these are being addressed rather than leaves this in the tree and have potential random crashes due to it (unless they are addressed quickly).


PS It also feels odd that DOMURL is the one calling registerBlobURL but PublicURLManager is the one responsible for calling unregisterBlobURL and how PublicURLManager basically just exposes m_blobURLs. (I think that PublicURLManager should hide the implementation detail that it has HashSets and just expose a method to register*URL which would address this PS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541751</commentid>
    <comment_count>28</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-24 15:10:00 -0800</bug_when>
    <thetext>I&apos;ll wait a day or two before rolling out to see if there a fix being done quickly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541808</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-24 16:12:57 -0800</bug_when>
    <thetext>Thanks Dave.  I&apos;m sorry I missed those issues in my review.  I wasn&apos;t thinking about the worker case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541817</commentid>
    <comment_count>30</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-24 16:18:35 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Thanks Dave.  I&apos;m sorry I missed those issues in my review.  I wasn&apos;t thinking about the worker case.

It might be that the NoStaticTables thing isn&apos;t needed due to all methods becoming static. I don&apos;t know. It feels like it may still be needed. (It would be nice to know it was done on purpose and why :) .)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541842</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-24 16:45:05 -0800</bug_when>
    <thetext>&gt; It might be that the NoStaticTables thing isn&apos;t needed due to all methods becoming static. I don&apos;t know. It feels like it may still be needed.

It&apos;s going to be needed once we let web site construct these objects.

&gt; (It would be nice to know it was done on purpose and why :) .)

I just missed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541971</commentid>
    <comment_count>32</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-01-24 19:36:13 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; I&apos;ll wait a day or two before rolling out to see if there a fix being done quickly.

Thanks David, I am sorry I could not think of these issues. I saw your comment on Meta bug though about these functions not being thread safe. I will try to fix both NoStaticTables and threading issues ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542031</commentid>
    <comment_count>33</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-24 23:15:48 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #28)
&gt; &gt; I&apos;ll wait a day or two before rolling out to see if there a fix being done quickly.
&gt; 
&gt; Thanks David, I am sorry I could not think of these issues. I saw your comment on Meta bug though about these functions not being thread safe. I will try to fix both NoStaticTables and threading issues ASAP.

No worries. It is hard to see it every angle. We all make mistakes. (I just would rather them no be lingering in the code and making things flaky now that we know about them :) ).

Anyway, I don&apos;t want you too feel too pressured. There is no problem with rolling out the change and putting up a fixed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542368</commentid>
    <comment_count>34</comment_count>
      <attachid>123078</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-01-25 09:42:19 -0800</bug_when>
    <thetext>Comment on attachment 123078
Updated Patch

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

&gt; Source/WebCore/html/DOMURL.cpp:52
&gt; +static PublicURLManagerMap&amp; publicURLManagerMap();

I do not think having a global PubliURLManagerMap is a good idea. This map will be accessed from different thread, so access to it must made thread safe, and this introduces complexity.
Better to make PublicURLManager a part of ScriptExecutionContext to ensure single-threaded access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542372</commentid>
    <comment_count>35</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-25 09:44:17 -0800</bug_when>
    <thetext>Re-opening due to threadsafety issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542397</commentid>
    <comment_count>36</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-25 10:06:58 -0800</bug_when>
    <thetext>Actually the thread safety issues have been broken out in a separate bug (https://bugs.webkit.org/show_bug.cgi?id=77003), so re-resolving.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543808</commentid>
    <comment_count>37</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-26 21:10:45 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; I&apos;ll wait a day or two before rolling out to see if there a fix being done quickly.

Rolled out here: http://trac.webkit.org/changeset/106087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543948</commentid>
    <comment_count>38</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-01-27 03:58:14 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #28)
&gt; &gt; I&apos;ll wait a day or two before rolling out to see if there a fix being done quickly.
&gt; 
&gt; Rolled out here: http://trac.webkit.org/changeset/106087

I rolled out the Qt expected files update too - http://trac.webkit.org/changeset/106105  I think GTK update should be roll out too.

Please land the Qt and GTK expected file changes with the proper fix. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546950</commentid>
    <comment_count>39</comment_count>
      <attachid>124918</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-01 02:37:31 -0800</bug_when>
    <thetext>Created attachment 124918
Work in progress patch

Trying to make it work as per Dimitry&apos;s suggestion. Can you check if I am going right? Please provide comments/suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546955</commentid>
    <comment_count>40</comment_count>
      <attachid>124918</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-02-01 02:43:56 -0800</bug_when>
    <thetext>Comment on attachment 124918
Work in progress patch

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

This appears to be on the right track now and should work with web workers.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:130
&gt; +    if (m_publicURLManager)

#if ENABLE(BLOB)

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:395
&gt; +        m_publicURLManager = adoptPtr(new PublicURLManager(this));

Should be PublicURLManager::create (which is a static method that does &quot;return adoptPtr(new PublicURLManager(context));&quot;

&gt; Source/WebCore/html/DOMURL.cpp:3
&gt; + * Copyright (C) 2011 Motorola Mobility Inc.

2012

&gt; Source/WebCore/html/DOMURL.cpp:-28
&gt; -#if ENABLE(BLOB)

Why not leave this if as is?

&gt; Source/WebCore/html/DOMURL.h:59
&gt; +class PublicURLManager : public RefCounted&lt;PublicURLManager&gt; {

I would create a separate header file for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547125</commentid>
    <comment_count>41</comment_count>
      <attachid>124918</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-01 09:28:23 -0800</bug_when>
    <thetext>Comment on attachment 124918
Work in progress patch

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

Some lifetime commnents

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:131
&gt; +        m_publicURLManager-&gt;contextDestroyed();

If you end up not ref-counting PublicURLManager (see my comments below) maybe not have a separate PublicURLManager::contextDestroyed() method, and just do cleanup in PublicURLManager&apos;s destructor?

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:392
&gt; +PublicURLManager* ScriptExecutionContext::publicURLManager()

(see below comment on header file).

&gt; Source/WebCore/dom/ScriptExecutionContext.h:110
&gt; +    PublicURLManager* publicURLManager();

Since PublicURLManager is a RefCounted, this should return a RefPtr - never leak a naked pointer to ref-counted class.
Alternatively, I suggest *not* making PublicURLManager ref-counted - looks like it is only used in conjunction with owning ScriptExecutionContext and never stored anywhere else.

&gt; Source/WebCore/dom/ScriptExecutionContext.h:215
&gt; +    OwnPtr&lt;PublicURLManager&gt; m_publicURLManager;

Ditto, choose if ref-counted or not. If ref-counted, use RefPtr, not OwnPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547157</commentid>
    <comment_count>42</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-01 10:09:05 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 124918 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124918&amp;action=review
&gt; 
&gt; Some lifetime commnents
&gt; 
&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:131
&gt; &gt; +        m_publicURLManager-&gt;contextDestroyed();
&gt; 
&gt; If you end up not ref-counting PublicURLManager (see my comments below) maybe not have a separate PublicURLManager::contextDestroyed() method, and just do cleanup in PublicURLManager&apos;s destructor?
&gt; 
&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:392
&gt; &gt; +PublicURLManager* ScriptExecutionContext::publicURLManager()
&gt; 
&gt; (see below comment on header file).
&gt; 
&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.h:110
&gt; &gt; +    PublicURLManager* publicURLManager();
&gt; 
&gt; Since PublicURLManager is a RefCounted, this should return a RefPtr - never leak a naked pointer to ref-counted class.
&gt; Alternatively, I suggest *not* making PublicURLManager ref-counted - looks like it is only used in conjunction with owning ScriptExecutionContext and never stored anywhere else.

David suggested offline to return PublicURLManager&amp; instead of any pointers. This is guaranteed to be non-null.


&gt; 
&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.h:215
&gt; &gt; +    OwnPtr&lt;PublicURLManager&gt; m_publicURLManager;
&gt; 
&gt; Ditto, choose if ref-counted or not. If ref-counted, use RefPtr, not OwnPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548495</commentid>
    <comment_count>43</comment_count>
      <attachid>125273</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-02 23:30:49 -0800</bug_when>
    <thetext>Created attachment 125273
WIP

Update patch considering comments &amp; suggestions from David &amp; Dmitry. But there is some issue, adding PublicURLManager as a part of ScriptExecutionContext is changing the rendering position of the test cases by 2 pixels. Can you assist in that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548496</commentid>
    <comment_count>44</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-02-02 23:36:35 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; Created an attachment (id=125273) [details]
&gt; WIP
&gt; 
&gt; Update patch considering comments &amp; suggestions from David &amp; Dmitry. But there is some issue, adding PublicURLManager as a part of ScriptExecutionContext is changing the rendering position of the test cases by 2 pixels. Can you assist in that?

This doesn&apos;t make sense. I&apos;d retry the failing tests without the change to check this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548503</commentid>
    <comment_count>45</comment_count>
      <attachid>125273</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-03 00:03:04 -0800</bug_when>
    <thetext>Comment on attachment 125273
WIP

Attachment 125273 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11421177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548517</commentid>
    <comment_count>46</comment_count>
      <attachid>125273</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 00:34:05 -0800</bug_when>
    <thetext>Comment on attachment 125273
WIP

Attachment 125273 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11424112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548523</commentid>
    <comment_count>47</comment_count>
      <attachid>125273</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-03 00:44:43 -0800</bug_when>
    <thetext>Comment on attachment 125273
WIP

Attachment 125273 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11422164</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548530</commentid>
    <comment_count>48</comment_count>
      <attachid>125279</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-03 00:48:32 -0800</bug_when>
    <thetext>Created attachment 125279
WIP

Missed one file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548531</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 00:50:45 -0800</bug_when>
    <thetext>Attachment 125279 did not pass style-queue:

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

Source/WebCore/html/PublicURLManager.h:26:  #ifndef header guard has wrong style, please use: PublicURLManager_h  [build/header_guard] [5]
Total errors found: 1 in 8 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>548599</commentid>
    <comment_count>50</comment_count>
      <attachid>125298</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-03 02:50:20 -0800</bug_when>
    <thetext>Created attachment 125298
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548620</commentid>
    <comment_count>51</comment_count>
      <attachid>125298</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 03:47:07 -0800</bug_when>
    <thetext>Comment on attachment 125298
WIP

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

New failing tests:
fast/dom/window-domurl-crash.html
fast/files/workers/inline-worker-via-blob-url.html
editing/pasteboard/data-transfer-items-image-png.html
fast/files/apply-blob-url-to-img.html
fast/dom/HTMLAnchorElement/anchor-download.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548889</commentid>
    <comment_count>52</comment_count>
      <attachid>125298</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-03 11:31:54 -0800</bug_when>
    <thetext>Comment on attachment 125298
WIP

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

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:393
&gt; +        m_publicURLManager = PublicURLManager::create();

Once m_publicURLManager is allocated, who deallocates it?

To avoid this issue entirely, use OwnPtr&lt;PublicURLManager&gt; as a type for m_publicURLManager.

&gt; Source/WebCore/html/PublicURLManager.h:48
&gt; +    void contextDestroyed()

Who calls contextDestroyed()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549842</commentid>
    <comment_count>53</comment_count>
      <attachid>125599</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-06 01:52:52 -0800</bug_when>
    <thetext>Created attachment 125599
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550069</commentid>
    <comment_count>54</comment_count>
      <attachid>125599</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-06 09:47:20 -0800</bug_when>
    <thetext>Comment on attachment 125599
Updated Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550087</commentid>
    <comment_count>55</comment_count>
      <attachid>125599</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-02-06 10:24:44 -0800</bug_when>
    <thetext>Comment on attachment 125599
Updated Patch

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550088</commentid>
    <comment_count>56</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-02-06 10:26:53 -0800</bug_when>
    <thetext>LGTM. Thanks a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550089</commentid>
    <comment_count>57</comment_count>
      <attachid>125599</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 10:26:54 -0800</bug_when>
    <thetext>Comment on attachment 125599
Updated Patch

Rejecting attachment 125599 from commit-queue.

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

Last 500 characters of output:
urce/WebCore/workers/WorkerContext.h
patching file Source/WebCore/workers/WorkerContext.idl
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/dom/DOMURL/check-instanceof-domurl-functions-expected.txt
patching file LayoutTests/fast/dom/DOMURL/check-instanceof-domurl-functions.html

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

Full output: http://queues.webkit.org/results/11428488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550648</commentid>
    <comment_count>58</comment_count>
      <attachid>125599</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-06 23:17:41 -0800</bug_when>
    <thetext>Comment on attachment 125599
Updated Patch

Dont knw what it failed. worked at my end. Trying again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550649</commentid>
    <comment_count>59</comment_count>
      <attachid>125599</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 23:18:24 -0800</bug_when>
    <thetext>Comment on attachment 125599
Updated Patch

Rejecting attachment 125599 from commit-queue.

kaustubh@motorola.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550655</commentid>
    <comment_count>60</comment_count>
      <attachid>125599</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-02-06 23:34:13 -0800</bug_when>
    <thetext>Comment on attachment 125599
Updated Patch

I bet the patch is failing to apply.

You should sync your tree and verify that the patch applies (and/or fix up any conflicts and then reupload).

but I&apos;ll cq+ one more time for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550662</commentid>
    <comment_count>61</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-06 23:50:39 -0800</bug_when>
    <thetext>(In reply to comment #60)
&gt; (From update of attachment 125599 [details])
&gt; I bet the patch is failing to apply.
&gt; 
&gt; You should sync your tree and verify that the patch applies (and/or fix up any conflicts and then reupload).
&gt; 
&gt; but I&apos;ll cq+ one more time for you.

Thanks David, I will try to fix the patch if it again fails to apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550674</commentid>
    <comment_count>62</comment_count>
      <attachid>125599</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 00:18:54 -0800</bug_when>
    <thetext>Comment on attachment 125599
Updated Patch

Clearing flags on attachment: 125599

Committed r106912: &lt;http://trac.webkit.org/changeset/106912&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550675</commentid>
    <comment_count>63</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 00:19:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550721</commentid>
    <comment_count>64</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-07 01:46:42 -0800</bug_when>
    <thetext>I rolled out the patch, since it broke AppleWebKit build: https://bugs.webkit.org/show_bug.cgi?id=77947</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550723</commentid>
    <comment_count>65</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-07 01:48:47 -0800</bug_when>
    <thetext>(In reply to comment #64)
&gt; I rolled out the patch, since it broke AppleWebKit build: https://bugs.webkit.org/show_bug.cgi?id=77947

Can you give me logs for build break?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550724</commentid>
    <comment_count>66</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-07 01:52:14 -0800</bug_when>
    <thetext>(In reply to comment #65)
&gt; (In reply to comment #64)
&gt; &gt; I rolled out the patch, since it broke AppleWebKit build: https://bugs.webkit.org/show_bug.cgi?id=77947
&gt; 
&gt; Can you give me logs for build break?

This one:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Build%29/builds/38567/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550774</commentid>
    <comment_count>67</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-07 03:21:09 -0800</bug_when>
    <thetext>Reopening to fix the xcodeproj files required for AppleWebkit build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550789</commentid>
    <comment_count>68</comment_count>
      <attachid>125803</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-07 03:37:46 -0800</bug_when>
    <thetext>Created attachment 125803
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550795</commentid>
    <comment_count>69</comment_count>
      <attachid>125803</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-07 03:44:19 -0800</bug_when>
    <thetext>Comment on attachment 125803
Updated patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Rollout fixes for xcodeproj, vcproj &amp; gypi files.

This is not so descriptive. Maybe you can add more explanation about what this patch is doing.

&gt; Source/WebCore/GNUmakefile.list.am:2259
&gt; +    Source/WebCore/html/PublicURLManager.h \

Nit: One tab instead of four spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550817</commentid>
    <comment_count>70</comment_count>
      <attachid>125803</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 04:07:02 -0800</bug_when>
    <thetext>Comment on attachment 125803
Updated patch

Attachment 125803 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11438242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550891</commentid>
    <comment_count>71</comment_count>
      <attachid>125825</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-07 05:30:04 -0800</bug_when>
    <thetext>Created attachment 125825
Patch with rebaseline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550939</commentid>
    <comment_count>72</comment_count>
      <attachid>125825</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-07 06:35:10 -0800</bug_when>
    <thetext>Comment on attachment 125825
Patch with rebaseline

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

&gt; Source/WebCore/dom/ScriptExecutionContext.h:33
&gt; +#include &quot;PublicURLManager.h&quot;

By the way, do you need this #include? The below &quot;class PublicURLManager;&quot; would be enough, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552005</commentid>
    <comment_count>73</comment_count>
      <attachid>126051</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-02-08 04:13:35 -0800</bug_when>
    <thetext>Created attachment 126051
Fixed patch

I hope this is the final patch and apple webkit build does not fails. Have done changes as suggested by Haraken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552038</commentid>
    <comment_count>74</comment_count>
      <attachid>126051</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-08 04:55:00 -0800</bug_when>
    <thetext>Comment on attachment 126051
Fixed patch

r+ for the build script change. Based on the previous r+ from David Levin, let me r+ the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552080</commentid>
    <comment_count>75</comment_count>
      <attachid>126051</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 06:39:36 -0800</bug_when>
    <thetext>Comment on attachment 126051
Fixed patch

Clearing flags on attachment: 126051

Committed r107082: &lt;http://trac.webkit.org/changeset/107082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552081</commentid>
    <comment_count>76</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 06:39:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552107</commentid>
    <comment_count>77</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-02-08 07:31:42 -0800</bug_when>
    <thetext>Looks like it included qt and gtk rebaselines but was missing other platforms.

I suspect this caused Chromium and OS X Webkit builds to fail tests. Something to consider for future patches. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741849</commentid>
    <comment_count>78</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-15 01:47:06 -0700</bug_when>
    <thetext>This patch seems to cause some problems atleast for JSC, since the static method table for DOMURLConstructor end up shared between threads which doesn&apos;t really work. See bug #99178</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118981</attachid>
            <date>2011-12-13 02:25:09 -0800</date>
            <delta_ts>2011-12-14 02:20:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>74386_patch.txt</filename>
            <type>text/plain</type>
            <size>18542</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjY2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDExLTEyLTEzICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPiAmIEVyaWsgQXJ2aWRzc29uICA8
YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJl
dm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9ET01VUkwvY2hl
Y2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKKworICAgICAgICAqIGh0bWwvRE9N
VVJMLmNwcDogQWRkZWQgSGFzaE1hcCBmb3IgbG9jYWwgc3RhdGljIG9iamVjdHMuCisgICAgICAg
IChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpQdWJsaWNVUkxNYW5hZ2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6YmxvYlVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6
UHVibGljVVJMTWFuYWdlcjo6c3RyZWFtVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpwdWJsaWNV
UkxNYW5hZ2VyTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnB1YmxpY1VSTE1hbmFnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cHVibGljQmxvYlVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6cHVibGlj
U3RyZWFtVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZU9iamVjdFVSTCk6
IENoYW5nZWQgdG8gc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpyZXZva2VPYmpl
Y3RVUkwpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL0RPTVVSTC5oOgorICAgICAgICAqIGh0bWwv
RE9NVVJMLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6IFJlbW92ZWQgb2JqZWN0
IGluaXRpYWxpemF0aW9uIGZvciBET01VUkwuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDog
ZGl0dG8uCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBkaXR0by4KKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOiBkaXR0by4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaDogZGl0dG8uCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDog
ZGl0dG8uCisKIDIwMTEtMTItMTMgIFlvc2lmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlbmRlclRoZW1lIHNob3VsZCBoYXZlIGEgZnVuY3Rpb24gZm9yIGRpc2Fi
bGVkIHRleHQgY29sb3IgYWRqdXN0bWVudApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01V
UkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkocmV2
aXNpb24gMTAyNjU3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xh
IE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNTYg
KzI1LDk4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEJMT0Ip
Ci0KICNpbmNsdWRlICJET01VUkwuaCIKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisKKyNpZiBFTkFCTEUoQkxPQikKICNpbmNsdWRlICJCbG9iLmgi
CiAjaW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
IgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLURPTVVSTDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cihzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorI2lmIEVOQUJMRShCTE9CKQorY2xhc3MgUHVibGlj
VVJMTWFuYWdlcjsKK3R5cGVkZWYgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgT3du
UHRyPFB1YmxpY1VSTE1hbmFnZXI+ID4gUHVibGljVVJMTWFuYWdlck1hcDsKK3N0YXRpYyBQdWJs
aWNVUkxNYW5hZ2VyTWFwJiBwdWJsaWNVUkxNYW5hZ2VyTWFwKCk7CisKK2NsYXNzIFB1YmxpY1VS
TE1hbmFnZXIgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IFB1YmxpY1VSTE1hbmFnZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCkKKyAgICB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgYmxv
YlVSTHNFbmQgPSBtX2Jsb2JVUkxzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5n
Pjo6aXRlcmF0b3IgaXRlciA9IG1fYmxvYlVSTHMuYmVnaW4oKTsgaXRlciAhPSBibG9iVVJMc0Vu
ZDsgKytpdGVyKQorICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3Rl
ckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHN0cmVhbVVSTHNF
bmQgPSBtX3N0cmVhbVVSTHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmc+Ojpp
dGVyYXRvciBpdGVyID0gbV9zdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gc3RyZWFtVVJMc0Vu
ZDsgKytpdGVyKQorICAgICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51
bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7Cisj
ZW5kaWYKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
Y29udGV4dERlc3Ryb3llZCgpOworICAgICAgICBwdWJsaWNVUkxNYW5hZ2VyTWFwKCkucmVtb3Zl
KGNvbnRleHQpOworICAgIH0KKworICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMoKSB7IHJl
dHVybiBtX2Jsb2JVUkxzOyB9CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBIYXNoU2V0
PFN0cmluZz4mIHN0cmVhbVVSTHMoKSB7IHJldHVybiBtX3N0cmVhbVVSTHM7IH0KKyNlbmRpZgor
Citwcml2YXRlOgorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Jsb2JVUkxzOworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+IG1fc3RyZWFtVVJMczsKKyNlbmRpZgor
fTsKKworc3RhdGljIFB1YmxpY1VSTE1hbmFnZXJNYXAmIHB1YmxpY1VSTE1hbmFnZXJNYXAoKQog
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUHVibGljVVJMTWFuYWdlck1hcCwgc3RhdGljUHVi
bGljVVJMTWFuYWdlcnMsICgpKTsKKyAgICByZXR1cm4gc3RhdGljUHVibGljVVJMTWFuYWdlcnM7
CiB9CiAKLURPTVVSTDo6fkRPTVVSTCgpCitzdGF0aWMgUHVibGljVVJMTWFuYWdlciYgcHVibGlj
VVJMTWFuYWdlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQogeworICAgIFB1YmxpY1VSTE1hbmFnZXJNYXAmIG1hcCA9IHB1YmxpY1VSTE1hbmFnZXJNYXAo
KTsKKyAgICBPd25QdHI8UHVibGljVVJMTWFuYWdlcj4mIG1hbmFnZXIgPSBtYXAuYWRkKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKCFtYW5h
Z2VyKQorICAgICAgICBtYW5hZ2VyID0gYWRvcHRQdHIobmV3IFB1YmxpY1VSTE1hbmFnZXIoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgIHJldHVybiAqbWFuYWdlcjsKIH0KIAotdm9pZCBE
T01VUkw6OmNvbnRleHREZXN0cm95ZWQoKQorc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgcHVibGlj
QmxvYlVSTHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
IHsKLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwot
Ci0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNCbG9iVVJMc0VuZCA9IG1fcHVi
bGljQmxvYlVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0
ZXIgPSBtX3B1YmxpY0Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljQmxvYlVSTHNFbmQ7
ICsraXRlcikKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JV
UkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisgICAgcmV0dXJuIHB1YmxpY1VSTE1h
bmFnZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuYmxvYlVSTHMoKTsKK30KIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNTdHJl
YW1VUkxzRW5kID0gbV9wdWJsaWNTdHJlYW1VUkxzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxT
dHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNTdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIg
IT0gcHVibGljU3RyZWFtVVJMc0VuZDsgKytpdGVyKQotICAgICAgICBNZWRpYVN0cmVhbVJlZ2lz
dHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChLVVJMKFBhcnNlZFVSTFN0
cmluZywgKml0ZXIpKTsKLSNlbmRpZgorc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgcHVibGljU3Ry
ZWFtVVJMcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQor
eworICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnN0
cmVhbVVSTHMoKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1TdHJpbmcgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVhbSkKK1N0cmluZyBET01VUkw6OmNy
ZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBNZWRpYVN0cmVhbSogc3RyZWFtKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0IHx8ICFzdHJlYW0pCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFz
dHJlYW0pCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIEtVUkwgcHVibGljVVJMID0g
QmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJp
dHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNV
Ukwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKHB1
YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtODEsNTAg
KzEyNCw2MyBAQCBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lz
dHJ5KCkucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChwdWJsaWNVUkwsIHN0cmVhbSk7Ci0gICAgbV9w
dWJsaWNTdHJlYW1VUkxzLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOworICAgIHB1YmxpY1N0cmVh
bVVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAK
ICAgICByZXR1cm4gcHVibGljVVJMLnN0cmluZygpOwogfQogI2VuZGlmCiAKLVN0cmluZyBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChCbG9iKiBibG9iKQorU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2Jq
ZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJs
b2IqIGJsb2IpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2Ip
CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFibG9iKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1Ymxp
Y1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtV
UkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwocHVibGljVVJMLCBibG9iLT51cmwoKSk7Ci0gICAgbV9wdWJsaWNCbG9i
VVJMcy5hZGQocHVibGljVVJMLnN0cmluZygpKTsKKyAgICBwdWJsaWNCbG9iVVJMcyhzY3JpcHRF
eGVjdXRpb25Db250ZXh0KS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBw
dWJsaWNVUkwuc3RyaW5nKCk7CiB9CiAKLXZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCit2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgS1VSTCB1
cmwoS1VSTCgpLCB1cmxTdHJpbmcpOwogCi0gICAgaWYgKG1fcHVibGljQmxvYlVSTHMuY29udGFp
bnModXJsLnN0cmluZygpKSkgeworICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMgPSBwdWJs
aWNCbG9iVVJMcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoYmxvYlVSTHMuY29u
dGFpbnModXJsLnN0cmluZygpKSkgewogICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgICAgICBtX3B1YmxpY0Jsb2JVUkxzLnJlbW92ZSh1
cmwuc3RyaW5nKCkpOworICAgICAgICBibG9iVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAg
ICB9Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGlmIChtX3B1YmxpY1N0cmVhbVVS
THMuY29udGFpbnModXJsLnN0cmluZygpKSkgeworICAgIEhhc2hTZXQ8U3RyaW5nPiYgc3RyZWFt
VVJMcyA9IHB1YmxpY1N0cmVhbVVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYg
KHN0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgewogICAgICAgICAvLyBGSVhNRTog
bWFrZSBzdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIGJlbG93LiBSYWlzZSBhIHNwZWMgcXVlc3Rpb24g
aWYgcmVxdWlyZWQuCiAgICAgICAgIC8vIFNpbmNlIFdlYldvcmtlcnMgY2Fubm90IG9idGFpbiBT
dHJlYW0gb2JqZWN0cywgd2Ugc2hvdWxkIGJlIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVn
aXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwodXJsKTsKLSAgICAgICAgbV9wdWJsaWNT
dHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgICAgICBzdHJlYW1VUkxzLnJlbW92
ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KICNlbmRpZgogfQorI2VuZGlmIC8vIEVOQUJMRShCTE9C
KQorCitET01VUkw6OkRPTVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBiYXNl
VVJMKQoreworICAgIG1faHJlZiA9IEtVUkwoS1VSTCgpLCB1cmwpOworICAgIC8vIFJlc29sdmUg
dGhlIFVSTCByZWxhdGl2ZSB0byBiYXNlVVJMIGlmIGlzIHByb3ZpZGUuCisgICAgaWYgKCFiYXNl
VVJMLmlzRW1wdHkoKSkKKyAgICAgICAgbV9ocmVmID0gS1VSTChtX2hyZWYsIGJhc2VVUkwpOwor
fQorCitET01VUkw6On5ET01VUkwoKQoreworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkocmV2aXNpb24g
MTAyNjU3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0
eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNyw4IEBA
CiAjaWZuZGVmIERPTVVSTF9oCiAjZGVmaW5lIERPTVVSTF9oCiAKLSNpZiBFTkFCTEUoQkxPQikK
LQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00
MCwzMCArMzgsMjkgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8
RE9NVVJMPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK2NsYXNzIERPTVVS
TCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4geworCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgRE9NVVJMKHVybCwgYmFzZVVSTCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJM
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwo
dXJsLCBlbXB0eVN0cmluZygpKSk7IH0KICAgICB+RE9NVVJMKCk7CiAKKyNpZiBFTkFCTEUoQkxP
QikKKyAgICBzdGF0aWMgdm9pZCBjb250ZXh0RGVzdHJveWVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKKworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBCbG9iKik7CisgICAgc3RhdGljIHZvaWQgcmV2b2tlT2JqZWN0VVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qKTsKKyAgICBzdGF0
aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFT
dHJlYW0qKTsKKyNlbmRpZgogI2VuZGlmCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChCbG9i
Kik7Ci0gICAgdm9pZCByZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgRE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisgICAgS1VSTCBtX2hyZWY7CiAKLSAgICBI
YXNoU2V0PFN0cmluZz4gbV9wdWJsaWNCbG9iVVJMczsKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY1N0cmVhbVVSTHM7Ci0jZW5kaWYKKyAgICBE
T01VUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKLQogI2VuZGlmIC8vIERPTVVSTF9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCShyZXZpc2lvbiAxMDI2NTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxNiArMjYsMTYgQEAKIAogbW9kdWxlIGh0bWwg
ewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUJMT0IsCi0gICAgICAgIE9t
aXRDb25zdHJ1Y3RvciwKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAg
IEdlbmVyYXRlVG9KUywKLSAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICAgICAgUmVwbGFjZWFi
bGUsCisgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIFtPcHRpb25hbD1D
YWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIGJhc2VVUkwpCiAgICAgXSBET01VUkwgeworCiAj
aWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAmJiBFTkFCTEVfTUVESUFfU1RSRUFNCi0g
ICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9i
amVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOworICAgICAgICBzdGF0aWMgW0NvbmRpdGlv
bmFsPUJMT0IsQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBz
dHJlYW0pOwogI2VuZGlmCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0g
RE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAgICB2b2lkIHJl
dm9rZU9iamVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICAgc3RhdGljIFtDb25kaXRp
b25hbD1CTE9CLENvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkLENhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsK
KyAgICAgICAgc3RhdGljIFtDb25kaXRpb25hbD1CTE9CLENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGluIERPTVN0cmluZyB1cmwpOwogICAgIH07
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxMDI2NTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
MzUsMTUgKzE5MzUsNiBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0
CiAgICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPnJ1bk1vZGFsKCk7CiB9CiAKLSNp
ZiBFTkFCTEUoQkxPQikKLURPTVVSTCogRE9NV2luZG93Ojp3ZWJraXRVUkwoKSBjb25zdAotewot
ICAgIGlmICghbV9kb21VUkwgJiYgaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAg
ICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShRVU9UQSkKIFN0b3JhZ2VJbmZvKiBET01XaW5kb3c6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29u
c3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMTAyNjU3KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDEw
ICszNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8
RE9NV2luZG93Pjo6cmVmOwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPERPTVdpbmRvdz46OmRl
cmVmOwogCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29u
c3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAgIFBhc3NSZWZQ
dHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3Rp
bWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAkocmV2aXNpb24gMTAyNjU3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC04MTQsNyArODE0LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAg
ICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBXZWJLaXRCbG9iQnVpbGRlckNvbnN0
cnVjdG9yIFdlYktpdEJsb2JCdWlsZGVyOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
Q29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmlidXRlIERP
TVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1FVT1RBKSAm
JiBFTkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50
aW1lPVF1b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTAyNjU3KQorKysgU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzc5LDE1ICszNzksNiBAQCBFdmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRleHQ6OmVuc3VyZUV2
CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVOQUJMRShCTE9CKQot
RE9NVVJMKiBXb3JrZXJDb250ZXh0Ojp3ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlmICghbV9k
b21VUkwpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIHZvaWQgV29ya2VyQ29udGV4dDo6d2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVT
eXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuaAkocmV2aXNpb24gMTAyNjU3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMCArMTMxLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKLSNp
ZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgICAgICBlbnVtIEZpbGVTeXN0ZW1UeXBl
IHsKICAgICAgICAgICAgIFRFTVBPUkFSWSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gMTAyNjU3KQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBA
IG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYXR0cmlidXRlIEZpbGVSZWFkZXJTeW5jQ29uc3Ry
dWN0b3IgRmlsZVJlYWRlclN5bmM7CiAjZW5kaWYKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAgIGF0dHJpYnV0
ZSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxF
X1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFRFTVBPUkFSWSA9IDA7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDI2NjIpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMi0x
MyAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAg
ICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJldm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENs
YXNzKSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHRlc3QgdG8gY2hlY2sgaWYgY3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0
VVJMIGFyZSBzdGF0aWMgZnVuY3Rpb25zLgorCisgICAgICAgICogZmFzdC9kb20vRE9NVVJMOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwt
ZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJM
L2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sOiBBZGRlZC4KKwogMjAxMS0x
Mi0xMyAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFz
eW5jaHJvbm91cyB0ZXh0IGNoZWNraW5nIHNob3VsZCBjaGVjayB0aGUgZ3JhbW1hci4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5j
dGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2Yt
ZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMg
QEAKK1Rlc3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMgb2Ygd2Via2l0VVJM
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnY3JlYXRlT2JqZWN0VVJM
JyBpbiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyAncmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRV
UkwgaXMgdHJ1ZQorUEFTUyB1cmwuY3JlYXRlT2JqZWN0VVJMIGlzIHVuZGVmaW5lZC4KK1BBU1Mg
dXJsLnJldm9rZU9iamVjdFVSTCBpcyB1bmRlZmluZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
RE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1m
dW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVS
TC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9u
cyBhbmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuIik7CisKK3ZhciB1cmwgPSBuZXcgd2Via2l0
VVJMKCJ3d3cud2Via2l0Lm9yZyIpOworCitzaG91bGRCZVRydWUoIidjcmVhdGVPYmplY3RVUkwn
IGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVUcnVlKCIncmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJr
aXRVUkwiKTsKKworc2hvdWxkQmVVbmRlZmluZWQoInVybC5jcmVhdGVPYmplY3RVUkwiKTsKK3No
b3VsZEJlVW5kZWZpbmVkKCJ1cmwucmV2b2tlT2JqZWN0VVJMIik7CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119180</attachid>
            <date>2011-12-14 02:05:30 -0800</date>
            <delta_ts>2011-12-14 02:15:12 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>74386_patch_2.txt</filename>
            <type>text/plain</type>
            <size>18737</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjc1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwyOCArMSwzNyBAQAotMjAxMS0xMi0xNCAgQWxleGFu
ZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95QG5va2lhLmNvbT4KKzIwMTEtMTItMTQgIEth
dXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+ICYgRXJpayBBcnZpZHNz
b24gIDxhcnZAY2hyb21pdW0ub3JnPgogCi0gICAgICAgIFtRdF0gRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrUXQgc2hvdWxkIGJlIHJlbW92ZWQgaW4gZmF2b3Igb2YgRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDQxNworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJldm9rZU9iamVj
dFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKIAotICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKLSAgICAg
ICAgQmFzZWQgb24gb3JpZ2luYWwgcGF0Y2ggYnkgS2VubmV0aCBDaHJpc3RpYW5zZW4uCi0KLSAg
ICAgICAgQWxyZWFkeSBjb3ZlcmVkIGJ5IGN1cnJlbnQgdGVzdHMuCi0KLSAgICAgICAgKiBkb20v
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6Ci0gICAgICAgIChXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXI6OmNsaWVudCk6Ci0KLTIwMTEtMTItMTQgIEphY2t5IEppYW5n
ICA8emhhamlhbmdAcmltLmNvbT4KLQotICAgICAgICBbQmxhY2tCZXJyeV0gU3dpdGNoIHRvIGxp
YmpwZWcgZm9yIGRlY29kaW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDQ3NQotCi0gICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KLQot
ICAgICAgICBTd2l0Y2ggdG8gY3Jvc3MgcGxhdGZvcm0gSlBFRyBpbWFnZSBkZWNvZGVyIGZvciBk
ZWNvZGluZyBhcyB0aGlzIGtlZXBzCi0gICAgICAgIHVzIGlubGluZSB3aXRoIG90aGVyIHBvcnRz
IGFuZCBsZXNzIHRvIG1haW50YWluLgotCi0gICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNt
YWtlOgorICAgICAgICBUZXN0OiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211
cmwtZnVuY3Rpb25zLmh0bWwKKyAgICAgICAgQWxyZWFkeSBleGlzdGluZyAtCisJCQlmYXN0L2Zp
bGVzL3Jldm9rZS1ibG9iLXVybC5odG1sCisJCQlmYXN0L2RvbS93aW5kb3ctZG9tdXJsLWNyYXNo
Lmh0bWwKKwkJCWZhc3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8taW1nLmh0bWwKKwkJCWZhc3Qv
ZmlsZXMvY3JlYXRlLWJsb2ItdXJsLWNyYXNoLmh0bWwKKwkJCWZhc3QvZmlsZXMvd29ya2Vycy9p
bmxpbmUtd29ya2VyLXZpYS1ibG9iLXVybC5odG1sCisKKyAgICAgICAgKiBodG1sL0RPTVVSTC5j
cHA6IEFkZGVkIEhhc2hNYXAgZm9yIGxvY2FsIHN0YXRpYyBvYmplY3RzLgorICAgICAgICAoV2Vi
Q29yZTo6UHVibGljVVJMTWFuYWdlcjo6UHVibGljVVJMTWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlB1YmxpY1VSTE1hbmFnZXI6OmJsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OlB1Ymxp
Y1VSTE1hbmFnZXI6OnN0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6cHVibGljVVJMTWFu
YWdlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpwdWJsaWNVUkxNYW5hZ2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OnB1YmxpY0Jsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OnB1YmxpY1N0cmVh
bVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwpOiBDaGFu
Z2VkIHRvIHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2JqZWN0VVJM
KTogZGl0dG8uCisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKiBodG1sL0RPTVVS
TC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOiBSZW1vdmVkIG9iamVjdCBpbml0
aWFsaXphdGlvbiBmb3IgRE9NVVJMLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6IGRpdHRv
LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDogZGl0dG8uCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcDogZGl0dG8uCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250
ZXh0Lmg6IGRpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6IGRpdHRv
LgogCiAyMDExLTEyLTAzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkocmV2aXNpb24gMTAyNzQ4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNTYgKzI1LDk4IEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEJMT0IpCi0KICNpbmNsdWRlICJET01VUkwuaCIK
IAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKKyNp
ZiBFTkFCTEUoQkxPQikKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+Ci0KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVJl
Z2lzdHJ5LmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTVVS
TDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
Ci0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQorI2lmIEVOQUJMRShCTE9CKQorY2xhc3MgUHVibGljVVJMTWFuYWdlcjsKK3R5cGVkZWYgSGFz
aE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgT3duUHRyPFB1YmxpY1VSTE1hbmFnZXI+ID4g
UHVibGljVVJMTWFuYWdlck1hcDsKK3N0YXRpYyBQdWJsaWNVUkxNYW5hZ2VyTWFwJiBwdWJsaWNV
UkxNYW5hZ2VyTWFwKCk7CisKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXIgOiBwdWJsaWMgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFB1YmxpY1VSTE1h
bmFnZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAg
ICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkKKyAgICB7CisgICAg
ICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgYmxvYlVSTHNFbmQgPSBtX2Jsb2JVUkxzLmVu
ZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fYmxv
YlVSTHMuYmVnaW4oKTsgaXRlciAhPSBibG9iVVJMc0VuZDsgKytpdGVyKQorICAgICAgICAgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsICppdGVyKSk7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBIYXNo
U2V0PFN0cmluZz46Oml0ZXJhdG9yIHN0cmVhbVVSTHNFbmQgPSBtX3N0cmVhbVVSTHMuZW5kKCk7
CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9zdHJlYW1V
UkxzLmJlZ2luKCk7IGl0ZXIgIT0gc3RyZWFtVVJMc0VuZDsgKytpdGVyKQorICAgICAgICAgICAg
TWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwo
S1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisjZW5kaWYKKworICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAg
ICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOworICAg
ICAgICBwdWJsaWNVUkxNYW5hZ2VyTWFwKCkucmVtb3ZlKGNvbnRleHQpOworICAgIH0KKworICAg
IEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMoKSB7IHJldHVybiBtX2Jsb2JVUkxzOyB9CisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMoKSB7
IHJldHVybiBtX3N0cmVhbVVSTHM7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2Jsb2JVUkxzOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFzaFNl
dDxTdHJpbmc+IG1fc3RyZWFtVVJMczsKKyNlbmRpZgorfTsKKworc3RhdGljIFB1YmxpY1VSTE1h
bmFnZXJNYXAmIHB1YmxpY1VSTE1hbmFnZXJNYXAoKQogeworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUHVibGljVVJMTWFuYWdlck1hcCwgc3RhdGljUHVibGljVVJMTWFuYWdlcnMsICgpKTsKKyAg
ICByZXR1cm4gc3RhdGljUHVibGljVVJMTWFuYWdlcnM7CiB9CiAKLURPTVVSTDo6fkRPTVVSTCgp
CitzdGF0aWMgUHVibGljVVJMTWFuYWdlciYgcHVibGljVVJMTWFuYWdlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogeworICAgIFB1YmxpY1VSTE1hbmFn
ZXJNYXAmIG1hcCA9IHB1YmxpY1VSTE1hbmFnZXJNYXAoKTsKKyAgICBPd25QdHI8UHVibGljVVJM
TWFuYWdlcj4mIG1hbmFnZXIgPSBtYXAuYWRkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG51bGxw
dHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKCFtYW5hZ2VyKQorICAgICAgICBtYW5hZ2VyID0g
YWRvcHRQdHIobmV3IFB1YmxpY1VSTE1hbmFnZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwor
ICAgIHJldHVybiAqbWFuYWdlcjsKIH0KIAotdm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95ZWQo
KQorc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgcHVibGljQmxvYlVSTHMoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKLSAgICBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotCi0gICAgSGFzaFNldDxTdHJpbmc+Ojpp
dGVyYXRvciBwdWJsaWNCbG9iVVJMc0VuZCA9IG1fcHVibGljQmxvYlVSTHMuZW5kKCk7Ci0gICAg
Zm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY0Jsb2JVUkxzLmJl
Z2luKCk7IGl0ZXIgIT0gcHVibGljQmxvYlVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcs
ICppdGVyKSk7CisgICAgcmV0dXJuIHB1YmxpY1VSTE1hbmFnZXIoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkuYmxvYlVSTHMoKTsKK30KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFz
aFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNTdHJlYW1VUkxzRW5kID0gbV9wdWJsaWNTdHJl
YW1VUkxzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0g
bV9wdWJsaWNTdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljU3RyZWFtVVJMc0VuZDsg
KytpdGVyKQotICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0
ZXJNZWRpYVN0cmVhbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKLSNlbmRpZgor
c3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgcHVibGljU3RyZWFtVVJMcyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIHJldHVybiBwdWJsaWNVUkxN
YW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnN0cmVhbVVSTHMoKTsKIH0KIAotI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFT
dHJlYW0qIHN0cmVhbSkKK1N0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNZWRpYVN0cmVhbSogc3RyZWFt
KQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCisgICAg
aWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAotICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJM
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBw
dWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtODEsNTAgKzEyNCw1MSBAQCBTdHJpbmcgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAogICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkucmVnaXN0ZXJNZWRpYVN0cmVh
bVVSTChwdWJsaWNVUkwsIHN0cmVhbSk7Ci0gICAgbV9wdWJsaWNTdHJlYW1VUkxzLmFkZChwdWJs
aWNVUkwuc3RyaW5nKCkpOworICAgIHB1YmxpY1N0cmVhbVVSTHMoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0
cmluZygpOwogfQogI2VuZGlmCiAKLVN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChCbG9i
KiBibG9iKQorU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IpCiB7Ci0gICAgaWYgKCFt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2IpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0IHx8ICFibG9iKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJM
IHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6
Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkp
OwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwocHVibGljVVJM
LCBibG9iLT51cmwoKSk7Ci0gICAgbV9wdWJsaWNCbG9iVVJMcy5hZGQocHVibGljVVJMLnN0cmlu
ZygpKTsKKyAgICBwdWJsaWNCbG9iVVJMcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5hZGQocHVi
bGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3RyaW5nKCk7CiB9CiAK
LXZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit2
b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxTdHJpbmcpOwog
Ci0gICAgaWYgKG1fcHVibGljQmxvYlVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgeworICAg
IEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMgPSBwdWJsaWNCbG9iVVJMcyhzY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKKyAgICBpZiAoYmxvYlVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgewog
ICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwot
ICAgICAgICBtX3B1YmxpY0Jsb2JVUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgICAgICBi
bG9iVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICB9Ci0KICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIGlmIChtX3B1YmxpY1N0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygp
KSkgeworICAgIEhhc2hTZXQ8U3RyaW5nPiYgc3RyZWFtVVJMcyA9IHB1YmxpY1N0cmVhbVVSTHMo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKHN0cmVhbVVSTHMuY29udGFpbnModXJs
LnN0cmluZygpKSkgewogICAgICAgICAvLyBGSVhNRTogbWFrZSBzdXJlIG9mIHRoaXMgYXNzZXJ0
aW9uIGJlbG93LiBSYWlzZSBhIHNwZWMgcXVlc3Rpb24gaWYgcmVxdWlyZWQuCiAgICAgICAgIC8v
IFNpbmNlIFdlYldvcmtlcnMgY2Fubm90IG9idGFpbiBTdHJlYW0gb2JqZWN0cywgd2Ugc2hvdWxk
IGJlIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFT
dHJlYW1VUkwodXJsKTsKLSAgICAgICAgbV9wdWJsaWNTdHJlYW1VUkxzLnJlbW92ZSh1cmwuc3Ry
aW5nKCkpOworICAgICAgICBzdHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0K
ICNlbmRpZgogfQorI2VuZGlmIC8vIEVOQUJMRShCTE9CKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
RE9NVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkocmV2
aXNpb24gMTAyNzQ4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBN
b2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsy
Nyw4IEBACiAjaWZuZGVmIERPTVVSTF9oCiAjZGVmaW5lIERPTVVSTF9oCiAKLSNpZiBFTkFCTEUo
QkxPQikKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CkBAIC00MCwzMCArMzgsMjEgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NVVJMPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9N
VVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQotICAgIH5ET01VUkwoKTsKLQotI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVh
bSopOwotI2VuZGlmCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChCbG9iKik7Ci0gICAgdm9p
ZCByZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJik7CitjbGFzcyBET01VUkwgOiBwdWJsaWMg
UmVmQ291bnRlZDxET01VUkw+IHsKIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworcHVibGljOgogCi0gICAgdmlydHVhbCB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBzdGF0aWMgdm9pZCBjb250ZXh0
RGVzdHJveWVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3B1YmxpY0Jsb2JVUkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKik7CisgICAgc3RhdGljIHZvaWQgcmV2b2tlT2Jq
ZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY1N0cmVhbVVSTHM7
CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1lZGlhU3RyZWFtKik7CisjZW5kaWYKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEJMT0IpCi0KICNlbmRpZiAvLyBET01VUkxfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkocmV2aXNpb24gMTAyNzQ4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI3LDEzIEBACiBtb2R1bGUgaHRtbCB7CiAg
ICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21pdENv
bnN0cnVjdG9yLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgR2Vu
ZXJhdGVUb0pTLAotICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gRE9NVVJMIHsKICNpZiBk
ZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJFQU0pICYmIEVOQUJMRV9NRURJQV9TVFJFQU0KLSAgICAg
ICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0
VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CisgICAgICAgIHN0YXRpYyBbQ29udmVydE51bGxT
dHJpbmdUbz1VbmRlZmluZWQsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3Ry
aW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOwogI2VuZGlmCi0gICAg
ICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVj
dFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAgICB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBET01T
dHJpbmcgdXJsKTsKKyAgICAgICAgc3RhdGljIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5l
ZCxDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBET01TdHJpbmcgY3JlYXRlT2JqZWN0
VVJMKGluIEJsb2IgYmxvYik7CisgICAgICAgIHN0YXRpYyBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gdm9pZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CiAgICAg
fTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDEwMjc0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTkyOCwxNSArMTkyOCw2IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3Qg
U3QKICAgICBkaWFsb2dGcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+cnVuTW9kYWwoKTsKIH0KIAot
I2lmIEVOQUJMRShCTE9CKQotRE9NVVJMKiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2RvbVVSTCAmJiBpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAg
ICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5B
QkxFKFFVT1RBKQogU3RvcmFnZUluZm8qIERPTVdpbmRvdzo6d2Via2l0U3RvcmFnZUluZm8oKSBj
b25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAxMDI3NDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDcs
MTAgKzM0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdXNpbmcgUmVmQ291bnRl
ZDxET01XaW5kb3c+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6
ZGVyZWY7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBj
b25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgUGFzc1Jl
ZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCShyZXZpc2lvbiAxMDI3NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTgxNCw3ICs4MTQsNyBAQCBtb2R1bGUgd2luZG93IHsKIAog
ICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIFdlYktpdEJsb2JCdWlsZGVyQ29u
c3RydWN0b3IgV2ViS2l0QmxvYkJ1aWxkZXI7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtDb25kaXRpb25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUg
W0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRl
ZmluZWQoRU5BQkxFX1FVT1RBKSAmJiBFTkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPVF1b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdl
SW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2
aXNpb24gMTAyNzQ4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDE1ICszNzksNiBAQCBFdmVudFRhcmdldERhdGEqIFdv
cmtlckNvbnRleHQ6OmVuc3VyZUV2CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0K
IAotI2lmIEVOQUJMRShCTE9CKQotRE9NVVJMKiBXb3JrZXJDb250ZXh0Ojp3ZWJraXRVUkwoKSBj
b25zdAotewotICAgIGlmICghbV9kb21VUkwpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpj
cmVhdGUodGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21V
UkwuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIHZvaWQgV29y
a2VyQ29udGV4dDo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBz
aXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gMTAyNzQ4KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMCAr
MTMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250
ZXh0VGhyZWFkKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9y
YmlkZGVuKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJr
aXRVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgICAg
ICBlbnVtIEZpbGVTeXN0ZW1UeXBlIHsKICAgICAgICAgICAgIFRFTVBPUkFSWSwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gMTAyNzQ4KQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDcgKzEwMSw3IEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYXR0cmlidXRl
IEZpbGVSZWFkZXJTeW5jQ29uc3RydWN0b3IgRmlsZVJlYWRlclN5bmM7CiAjZW5kaWYKIAotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRV
Ukw7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMQ29uc3RydWN0
b3Igd2Via2l0VVJMOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJM
RV9GSUxFX1NZU1RFTQogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAw
OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTAyNzU1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTQgIEthdXN0dWJoIEF0cmF3
YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRl
c2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IHRvIGNoZWNrIGlmIGNyZWF0ZU9iamVj
dFVSTCAmIHJldm9rZU9iamVjdFVSTCBhcmUgc3RhdGljIGZ1bmN0aW9ucy4KKworICAgICAgICAq
IGZhc3QvZG9tL0RPTVVSTDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNr
LWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRt
bDogQWRkZWQuCisKIDIwMTEtMTItMTQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEdUSyBiYXNlbGluZXMgZm9yIG5ldyB0ZXN0
cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRv
bXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWlu
c3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTAgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogVW5jYXVnaHQgVHlwZUVycm9y
OiBJbGxlZ2FsIGNvbnN0cnVjdG9yCitUZXN0IGluc3RhbmNlb2YgZnVuY3Rpb25zIGFuZCBwcm9w
ZXJ0aWVzIG9mIHdlYmtpdFVSTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ZB
SUwgc3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSB0cnVlIChvZiB0eXBlIGJvb2xlYW4pLiBX
YXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5lZCkuCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1
bmN0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9j
aGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlv
bnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIEhUTUw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuIik7
CisKK3ZhciB1cmwgPSBuZXcgd2Via2l0VVJMKCJ3d3cud2Via2l0Lm9yZyIpOworCitzaG91bGRC
ZVRydWUoIidjcmVhdGVPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVUcnVlKCIn
cmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKKworc2hvdWxkQmVVbmRlZmluZWQoInVy
bC5jcmVhdGVPYmplY3RVUkwiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwucmV2b2tlT2JqZWN0
VVJMIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119183</attachid>
            <date>2011-12-14 02:20:11 -0800</date>
            <delta_ts>2011-12-14 05:15:44 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>74386_patch_2.txt</filename>
            <type>text/plain</type>
            <size>19188</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDExLTEyLTE0ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPiAmIEVyaWsgQXJ2aWRzc29uICA8
YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJl
dm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9ET01VUkwvY2hl
Y2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKKyAgICAgICAgQWxyZWFkeSBleGlz
dGluZyAtCisgICAgICAgICAgICBmYXN0L2ZpbGVzL3Jldm9rZS1ibG9iLXVybC5odG1sCisgICAg
ICAgICAgICBmYXN0L2RvbS93aW5kb3ctZG9tdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZh
c3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8taW1nLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmls
ZXMvY3JlYXRlLWJsb2ItdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmlsZXMvd29y
a2Vycy9pbmxpbmUtd29ya2VyLXZpYS1ibG9iLXVybC5odG1sCisKKyAgICAgICAgKiBodG1sL0RP
TVVSTC5jcHA6IEFkZGVkIEhhc2hNYXAgZm9yIGxvY2FsIHN0YXRpYyBvYmplY3RzLgorICAgICAg
ICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6UHVibGljVVJMTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmJsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1YmxpY1VSTE1hbmFnZXI6OnN0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6cHVibGlj
VVJMTWFuYWdlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpwdWJsaWNVUkxNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnB1YmxpY0Jsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OnB1Ymxp
Y1N0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwp
OiBDaGFuZ2VkIHRvIHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2Jq
ZWN0VVJMKTogZGl0dG8uCisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKiBodG1s
L0RPTVVSTC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOiBSZW1vdmVkIG9iamVj
dCBpbml0aWFsaXphdGlvbiBmb3IgRE9NVVJMLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
IGRpdHRvLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDogZGl0dG8uCisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDogZGl0dG8uCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0Lmg6IGRpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6
IGRpdHRvLgorCiAyMDExLTEyLTEzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRyZWVPdXRsaW5lJ3MgaXMgYnJva2VuIHdo
ZW4gbGkgZWxlbWVudHMgaGF2ZSBwYWRkaW5nLWxlZnQgZGlmZmVyZW50IGZyb20gMTRweC4KQEAg
LTIxLDMyICs1Niw2IEBACiAgICAgICAgICgjc2NyaXB0cy1kZWJ1Zy10b29sYmFyKToKICAgICAg
ICAgKCNzY3JpcHRzLWRlYnVnLXNpZGViYXItY29udGVudHMpOgogCi0yMDExLTEyLTE0ICBBbGV4
YW5kZXIgRsOmcsO4eSAgPGFsZXhhbmRlci5mYWVyb3lAbm9raWEuY29tPgotCi0gICAgICAgIFtR
dF0gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrUXQgc2hvdWxkIGJlIHJlbW92ZWQgaW4gZmF2
b3Igb2YgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNwotCi0gICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgotCi0gICAgICAgIEJhc2VkIG9uIG9yaWdpbmFsIHBhdGNoIGJ5IEtlbm5l
dGggQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgIEFscmVhZHkgY292ZXJlZCBieSBjdXJyZW50IHRl
c3RzLgotCi0gICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oOgotICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpjbGllbnQpOgotCi0y
MDExLTEyLTE0ICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+Ci0KLSAgICAgICAgW0Js
YWNrQmVycnldIFN3aXRjaCB0byBsaWJqcGVnIGZvciBkZWNvZGluZwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NzUKLQotICAgICAgICBSZXZpZXdl
ZCBieSBEYW5pZWwgQmF0ZXMuCi0KLSAgICAgICAgU3dpdGNoIHRvIGNyb3NzIHBsYXRmb3JtIEpQ
RUcgaW1hZ2UgZGVjb2RlciBmb3IgZGVjb2RpbmcgYXMgdGhpcyBrZWVwcwotICAgICAgICB1cyBp
bmxpbmUgd2l0aCBvdGhlciBwb3J0cyBhbmQgbGVzcyB0byBtYWludGFpbi4KLQotICAgICAgICAq
IFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKLQogMjAxMS0xMi0wMyAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQmFkIHRleHQgcmVuZGVy
aW5nIHNpbmNlIHIxMDEzNDMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHJldmlzaW9uIDEw
Mjc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0
eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDU2ICsyNSw5OCBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShCTE9CKQotCiAjaW5j
bHVkZSAiRE9NVVJMLmgiCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorCisjaWYgRU5BQkxFKEJMT0IpCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1
ZGUgIkJsb2JVUkwuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1ET01VUkw6OkRPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKKyNpZiBFTkFCTEUoQkxPQikKK2NsYXNzIFB1YmxpY1VSTE1hbmFn
ZXI7Cit0eXBlZGVmIEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE93blB0cjxQdWJs
aWNVUkxNYW5hZ2VyPiA+IFB1YmxpY1VSTE1hbmFnZXJNYXA7CitzdGF0aWMgUHVibGljVVJMTWFu
YWdlck1hcCYgcHVibGljVVJMTWFuYWdlck1hcCgpOworCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2Vy
IDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBQdWJsaWNVUkxNYW5hZ2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCisgICAgICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpCisgICAgeworICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGJsb2JVUkxzRW5k
ID0gbV9ibG9iVVJMcy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJh
dG9yIGl0ZXIgPSBtX2Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gYmxvYlVSTHNFbmQ7ICsraXRl
cikKKyAgICAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyAgICAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBzdHJlYW1VUkxzRW5kID0gbV9z
dHJlYW1VUkxzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3Ig
aXRlciA9IG1fc3RyZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHN0cmVhbVVSTHNFbmQ7ICsraXRl
cikKKyAgICAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rl
ck1lZGlhU3RyZWFtVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOworI2VuZGlmCisK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHRE
ZXN0cm95ZWQoKTsKKyAgICAgICAgcHVibGljVVJMTWFuYWdlck1hcCgpLnJlbW92ZShjb250ZXh0
KTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzKCkgeyByZXR1cm4gbV9i
bG9iVVJMczsgfQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+
JiBzdHJlYW1VUkxzKCkgeyByZXR1cm4gbV9zdHJlYW1VUkxzOyB9CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ibG9iVVJMczsKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3N0cmVhbVVSTHM7CisjZW5kaWYKK307CisKK3N0
YXRpYyBQdWJsaWNVUkxNYW5hZ2VyTWFwJiBwdWJsaWNVUkxNYW5hZ2VyTWFwKCkKIHsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFB1YmxpY1VSTE1hbmFnZXJNYXAsIHN0YXRpY1B1YmxpY1VSTE1h
bmFnZXJzLCAoKSk7CisgICAgcmV0dXJuIHN0YXRpY1B1YmxpY1VSTE1hbmFnZXJzOwogfQogCi1E
T01VUkw6On5ET01VUkwoKQorc3RhdGljIFB1YmxpY1VSTE1hbmFnZXImIHB1YmxpY1VSTE1hbmFn
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKKyAg
ICBQdWJsaWNVUkxNYW5hZ2VyTWFwJiBtYXAgPSBwdWJsaWNVUkxNYW5hZ2VyTWFwKCk7CisgICAg
T3duUHRyPFB1YmxpY1VSTE1hbmFnZXI+JiBtYW5hZ2VyID0gbWFwLmFkZChzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIGlmICghbWFuYWdlcikKKyAg
ICAgICAgbWFuYWdlciA9IGFkb3B0UHRyKG5ldyBQdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpKTsKKyAgICByZXR1cm4gKm1hbmFnZXI7CiB9CiAKLXZvaWQgRE9NVVJMOjpj
b250ZXh0RGVzdHJveWVkKCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHB1YmxpY0Jsb2JVUkxz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKLQotICAgIEhh
c2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljQmxvYlVSTHNFbmQgPSBtX3B1YmxpY0Jsb2JV
UkxzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9w
dWJsaWNCbG9iVVJMcy5iZWdpbigpOyBpdGVyICE9IHB1YmxpY0Jsb2JVUkxzRW5kOyArK2l0ZXIp
Ci0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOworICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLmJsb2JVUkxzKCk7Cit9CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljU3RyZWFtVVJMc0Vu
ZCA9IG1fcHVibGljU3RyZWFtVVJMcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6
aXRlcmF0b3IgaXRlciA9IG1fcHVibGljU3RyZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHB1Ymxp
Y1N0cmVhbVVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVn
aXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICpp
dGVyKSk7Ci0jZW5kaWYKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHB1YmxpY1N0cmVhbVVSTHMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gcHVibGljVVJMTWFuYWdlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zdHJlYW1VUkxz
KCk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotU3RyaW5nIERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKE1lZGlhU3RyZWFtKiBzdHJlYW0pCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWVk
aWFTdHJlYW0qIHN0cmVhbSkKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8
fCAhc3RyZWFtKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6
OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2lu
KCkpOworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTgxLDUwICsxMjQsNTEg
QEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZQogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnJl
Z2lzdGVyTWVkaWFTdHJlYW1VUkwocHVibGljVVJMLCBzdHJlYW0pOwotICAgIG1fcHVibGljU3Ry
ZWFtVVJMcy5hZGQocHVibGljVVJMLnN0cmluZygpKTsKKyAgICBwdWJsaWNTdHJlYW1VUkxzKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0
dXJuIHB1YmxpY1VSTC5zdHJpbmcoKTsKIH0KICNlbmRpZgogCi1TdHJpbmcgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoQmxvYiogYmxvYikKK1N0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9i
KQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFibG9iKQorICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxvYikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1Ymxp
Y1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKHB1YmxpY1VSTCwgYmxvYi0+dXJsKCkpOwotICAgIG1fcHVibGljQmxvYlVSTHMuYWRk
KHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAgcHVibGljQmxvYlVSTHMoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJM
LnN0cmluZygpOwogfQogCi12b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQordm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEtVUkwgdXJsKEtVUkwo
KSwgdXJsU3RyaW5nKTsKIAotICAgIGlmIChtX3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5zKHVybC5z
dHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzID0gcHVibGljQmxvYlVS
THMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKGJsb2JVUkxzLmNvbnRhaW5zKHVy
bC5zdHJpbmcoKSkpIHsKICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3Rl
ckJsb2JVUkwodXJsKTsKLSAgICAgICAgbV9wdWJsaWNCbG9iVVJMcy5yZW1vdmUodXJsLnN0cmlu
ZygpKTsKKyAgICAgICAgYmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQotCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBpZiAobV9wdWJsaWNTdHJlYW1VUkxzLmNvbnRh
aW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMgPSBw
dWJsaWNTdHJlYW1VUkxzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmIChzdHJlYW1V
UkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc3Vy
ZSBvZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4gUmFpc2UgYSBzcGVjIHF1ZXN0aW9uIGlmIHJlcXVp
cmVkLgogICAgICAgICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5vdCBvYnRhaW4gU3RyZWFtIG9i
amVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCku
dW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHVybCk7Ci0gICAgICAgIG1fcHVibGljU3RyZWFtVVJM
cy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAgc3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0
cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0KKyNlbmRpZiAvLyBFTkFCTEUoQkxPQikKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEJMT0IpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmgJKHJldmlzaW9uIDEwMjc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
VVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiwxMSArMjcsOCBAQAogI2lmbmRlZiBET01VUkxfaAogI2RlZmluZSBET01VUkxf
aAogCi0jaWYgRU5BQkxFKEJMT0IpCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIApAQCAtNDAsMzAgKzM4LDIxIEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBN
ZWRpYVN0cmVhbTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIERPTVVS
TCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IERPTVVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KLSAgICB+RE9N
VVJMKCk7Ci0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFN0cmluZyBjcmVhdGVPYmpl
Y3RVUkwoTWVkaWFTdHJlYW0qKTsKLSNlbmRpZgotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwo
QmxvYiopOwotICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOworY2xhc3Mg
RE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NVVJMPiB7CiAKLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgRE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK3B1YmxpYzoKIAotICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisjaWYgRU5BQkxFKEJMT0IpCisgICAgc3Rh
dGljIHZvaWQgY29udGV4dERlc3Ryb3llZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAg
ICBIYXNoU2V0PFN0cmluZz4gbV9wdWJsaWNCbG9iVVJMczsKKyAgICBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiopOworICAgIHN0YXRp
YyB2b2lkIHJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJik7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9w
dWJsaWNTdHJlYW1VUkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbSopOworI2VuZGlmCiAjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9CKQotCiAjZW5k
aWYgLy8gRE9NVVJMX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHJldmlzaW9uIDEwMjc1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDE1ICsyNywxMyBAQAog
bW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUJMT0Is
Ci0gICAgICAgIE9taXRDb25zdHJ1Y3RvciwKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0
ZXIsCiAgICAgICAgIEdlbmVyYXRlVG9KUywKLSAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBd
IERPTVVSTCB7CiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAmJiBFTkFCTEVfTUVE
SUFfU1RSRUFNCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3Ry
aW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOworICAgICAgICBzdGF0
aWMgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkLENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJlYW0gc3RyZWFt
KTsKICNlbmRpZgotICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0
cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsKLSAgICAgICAgdm9pZCByZXZva2VP
YmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CisgICAgICAgIHN0YXRpYyBbQ29udmVydE51bGxT
dHJpbmdUbz1VbmRlZmluZWQsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3Ry
aW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOworICAgICAgICBzdGF0aWMgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGluIERPTVN0
cmluZyB1cmwpOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShy
ZXZpc2lvbiAxMDI3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MjgsMTUgKzE5MjgsNiBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01v
ZGFsRGlhbG9nKGNvbnN0IFN0CiAgICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPnJ1
bk1vZGFsKCk7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLURPTVVSTCogRE9NV2luZG93Ojp3ZWJr
aXRVUkwoKSBjb25zdAotewotICAgIGlmICghbV9kb21VUkwgJiYgaXNDdXJyZW50bHlEaXNwbGF5
ZWRJbkZyYW1lKCkpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShRVU9UQSkKIFN0b3JhZ2VJbmZvKiBET01XaW5kb3c6OndlYmtp
dFN0b3JhZ2VJbmZvKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2
aXNpb24gMTAyNzU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQ3LDEwICszNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6cmVmOwogICAgICAgICB1c2luZyBSZWZDb3Vu
dGVkPERPTVdpbmRvdz46OmRlcmVmOwogCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgICAgIERPTVVS
TCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMTAyNzU4KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MTQsNyArODE0LDcgQEAgbW9k
dWxlIHdpbmRvdyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBXZWJL
aXRCbG9iQnVpbGRlckNvbnN0cnVjdG9yIFdlYktpdEJsb2JCdWlsZGVyOwogCi0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAg
ICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkxDb25zdHJ1Y3RvciB3ZWJr
aXRVUkw7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9RVU9UQSkgJiYgRU5BQkxFX1FVT1RBCiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT1RdW90YV0gU3RvcmFnZUlu
Zm8gd2Via2l0U3RvcmFnZUluZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5jcHAJKHJldmlzaW9uIDEwMjc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OSwxNSArMzc5LDYgQEAgRXZl
bnRUYXJnZXREYXRhKiBXb3JrZXJDb250ZXh0OjplbnN1cmVFdgogICAgIHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLURPTVVSTCogV29ya2VyQ29udGV4
dDo6d2Via2l0VVJMKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZG9tVVJMKQotICAgICAgICBtX2Rv
bVVSTCA9IERPTVVSTDo6Y3JlYXRlKHRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0g
ICAgcmV0dXJuIG1fZG9tVVJMLmdldCgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCiB2b2lkIFdvcmtlckNvbnRleHQ6OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKGludCB0
eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDEwMjc1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzEsMTAgKzEzMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OwogCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAg
ICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKICAgICAgICAgZW51bSBGaWxlU3lzdGVtVHlwZSB7CiAgICAgICAgICAgICBURU1Q
T1JBUlksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHJl
dmlzaW9uIDEwMjc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBtb2R1bGUgdGhyZWFkcyB7CiAg
ICAgICAgIGF0dHJpYnV0ZSBGaWxlUmVhZGVyU3luY0NvbnN0cnVjdG9yIEZpbGVSZWFkZXJTeW5j
OwogI2VuZGlmCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9C
XSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0Jd
IERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVf
U1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgVEVNUE9SQVJZID0gMDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjc1OCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTEyLTE0
ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgY3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIHRvIHN0YXRpYyAoQ2xh
c3MpIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc0Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgdGVzdCB0byBjaGVjayBpZiBjcmVhdGVPYmplY3RVUkwgJiByZXZva2VPYmplY3RV
UkwgYXJlIHN0YXRpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1m
dW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWw6IEFkZGVkLgorCiAyMDExLTEy
LTE0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBtYXJrIGEgR1RLIGFjY2Vzc2liaWxpdHkgdGVzdCBmbGFreSBhbmQgZml4Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwt
ZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5j
ZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IFVuY2F1Z2h0IFR5cGVFcnJvcjogSWxs
ZWdhbCBjb25zdHJ1Y3RvcgorVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGll
cyBvZiB3ZWJraXRVUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIHN1
Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgdHJ1ZSAob2YgdHlwZSBib29sZWFuKS4gV2FzIHVu
ZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlv
bnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2st
aW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qg
aW5zdGFuY2VvZiBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMgb2Ygd2Via2l0VVJMLiIpOworCit2
YXIgdXJsID0gbmV3IHdlYmtpdFVSTCgid3d3LndlYmtpdC5vcmciKTsKKworc2hvdWxkQmVUcnVl
KCInY3JlYXRlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3Jldm9r
ZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIik7CisKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwuY3Jl
YXRlT2JqZWN0VVJMIik7CitzaG91bGRCZVVuZGVmaW5lZCgidXJsLnJldm9rZU9iamVjdFVSTCIp
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119207</attachid>
            <date>2011-12-14 05:15:44 -0800</date>
            <delta_ts>2012-01-12 03:47:37 -0800</delta_ts>
            <desc>Fixed ChangeLog</desc>
            <filename>74386_patch_2.txt</filename>
            <type>text/plain</type>
            <size>18141</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjc2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDExLTEyLTE0ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPiAmIEVyaWsgQXJ2aWRzc29uICA8
YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJl
dm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9ET01VUkwvY2hl
Y2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKKyAgICAgICAgQWxyZWFkeSBleGlz
dGluZyAtCisgICAgICAgICAgICBmYXN0L2ZpbGVzL3Jldm9rZS1ibG9iLXVybC5odG1sCisgICAg
ICAgICAgICBmYXN0L2RvbS93aW5kb3ctZG9tdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZh
c3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8taW1nLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmls
ZXMvY3JlYXRlLWJsb2ItdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmlsZXMvd29y
a2Vycy9pbmxpbmUtd29ya2VyLXZpYS1ibG9iLXVybC5odG1sCisKKyAgICAgICAgKiBodG1sL0RP
TVVSTC5jcHA6IEFkZGVkIEhhc2hNYXAgZm9yIGxvY2FsIHN0YXRpYyBvYmplY3RzLgorICAgICAg
ICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6UHVibGljVVJMTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmJsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1YmxpY1VSTE1hbmFnZXI6OnN0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6cHVibGlj
VVJMTWFuYWdlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpwdWJsaWNVUkxNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnB1YmxpY0Jsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OnB1Ymxp
Y1N0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwp
OiBDaGFuZ2VkIHRvIHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2Jq
ZWN0VVJMKTogZGl0dG8uCisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKiBodG1s
L0RPTVVSTC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOiBSZW1vdmVkIG9iamVj
dCBpbml0aWFsaXphdGlvbiBmb3IgRE9NVVJMLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
IGRpdHRvLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDogZGl0dG8uCisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDogZGl0dG8uCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0Lmg6IGRpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6
IGRpdHRvLgorCiAyMDExLTEyLTE0ICBSYWtlc2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29t
PgogCiAgICAgICAgIFtOb24tTWFjXSBDaGFuZ2UgZXZlbnQgc2hvdWxkIGJlIGZpcmVkIHdoZW4g
Y2hhbmdpbmcgb3B0aW9uIGJ5IHVzaW5nIGtleWJvYXJkLgpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJM
LmNwcAkocmV2aXNpb24gMTAyNzY3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjQsNTYgKzI1LDk4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5B
QkxFKEJMT0IpCi0KICNpbmNsdWRlICJET01VUkwuaCIKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgor
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKKyNpZiBFTkFCTEUoQkxPQikKICNpbmNsdWRl
ICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oIgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCiAjZW5kaWYKKyNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTVVSTDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorI2lmIEVOQUJMRShCTE9CKQorY2xh
c3MgUHVibGljVVJMTWFuYWdlcjsKK3R5cGVkZWYgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgT3duUHRyPFB1YmxpY1VSTE1hbmFnZXI+ID4gUHVibGljVVJMTWFuYWdlck1hcDsKK3N0
YXRpYyBQdWJsaWNVUkxNYW5hZ2VyTWFwJiBwdWJsaWNVUkxNYW5hZ2VyTWFwKCk7CisKK2NsYXNz
IFB1YmxpY1VSTE1hbmFnZXIgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IFB1YmxpY1VSTE1hbmFnZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBjb250ZXh0RGVzdHJveWVkKCkKKyAgICB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRl
cmF0b3IgYmxvYlVSTHNFbmQgPSBtX2Jsb2JVUkxzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hT
ZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fYmxvYlVSTHMuYmVnaW4oKTsgaXRlciAhPSBi
bG9iVVJMc0VuZDsgKytpdGVyKQorICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
dW5yZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHN0
cmVhbVVSTHNFbmQgPSBtX3N0cmVhbVVSTHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxT
dHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9zdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gc3Ry
ZWFtVVJMc0VuZDsgKytpdGVyKQorICAgICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVn
aXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICpp
dGVyKSk7CisjZW5kaWYKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOworICAgICAgICBwdWJsaWNVUkxNYW5hZ2VyTWFw
KCkucmVtb3ZlKGNvbnRleHQpOworICAgIH0KKworICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVS
THMoKSB7IHJldHVybiBtX2Jsb2JVUkxzOyB9CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMoKSB7IHJldHVybiBtX3N0cmVhbVVSTHM7IH0K
KyNlbmRpZgorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Jsb2JVUkxzOworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+IG1fc3RyZWFtVVJMczsK
KyNlbmRpZgorfTsKKworc3RhdGljIFB1YmxpY1VSTE1hbmFnZXJNYXAmIHB1YmxpY1VSTE1hbmFn
ZXJNYXAoKQogeworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUHVibGljVVJMTWFuYWdlck1hcCwg
c3RhdGljUHVibGljVVJMTWFuYWdlcnMsICgpKTsKKyAgICByZXR1cm4gc3RhdGljUHVibGljVVJM
TWFuYWdlcnM7CiB9CiAKLURPTVVSTDo6fkRPTVVSTCgpCitzdGF0aWMgUHVibGljVVJMTWFuYWdl
ciYgcHVibGljVVJMTWFuYWdlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQogeworICAgIFB1YmxpY1VSTE1hbmFnZXJNYXAmIG1hcCA9IHB1YmxpY1VSTE1h
bmFnZXJNYXAoKTsKKyAgICBPd25QdHI8UHVibGljVVJMTWFuYWdlcj4mIG1hbmFnZXIgPSBtYXAu
YWRkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAg
aWYgKCFtYW5hZ2VyKQorICAgICAgICBtYW5hZ2VyID0gYWRvcHRQdHIobmV3IFB1YmxpY1VSTE1h
bmFnZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgIHJldHVybiAqbWFuYWdlcjsKIH0K
IAotdm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95ZWQoKQorc3RhdGljIEhhc2hTZXQ8U3RyaW5n
PiYgcHVibGljQmxvYlVSTHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKIHsKLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ry
b3llZCgpOwotCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNCbG9iVVJMc0Vu
ZCA9IG1fcHVibGljQmxvYlVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0
ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY0Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljQmxv
YlVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdp
c3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisgICAgcmV0dXJuIHB1
YmxpY1VSTE1hbmFnZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuYmxvYlVSTHMoKTsKK30KIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBw
dWJsaWNTdHJlYW1VUkxzRW5kID0gbV9wdWJsaWNTdHJlYW1VUkxzLmVuZCgpOwotICAgIGZvciAo
SGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNTdHJlYW1VUkxzLmJlZ2lu
KCk7IGl0ZXIgIT0gcHVibGljU3RyZWFtVVJMc0VuZDsgKytpdGVyKQotICAgICAgICBNZWRpYVN0
cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChLVVJMKFBh
cnNlZFVSTFN0cmluZywgKml0ZXIpKTsKLSNlbmRpZgorc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYg
cHVibGljU3RyZWFtVVJMcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQoreworICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpLnN0cmVhbVVSTHMoKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1TdHJp
bmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVhbSkKK1N0cmluZyBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBNZWRpYVN0cmVhbSogc3RyZWFtKQogewotICAgIGlmICghbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0IHx8ICFzdHJlYW0pCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIEtVUkwgcHVi
bGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVh
dGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAg
ICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApA
QCAtODEsNTAgKzEyNCw1MSBAQCBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFT
dHJlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIE1lZGlhU3RyZWFtUmVnaXN0
cnk6OnJlZ2lzdHJ5KCkucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChwdWJsaWNVUkwsIHN0cmVhbSk7
Ci0gICAgbV9wdWJsaWNTdHJlYW1VUkxzLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOworICAgIHB1
YmxpY1N0cmVhbVVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuYWRkKHB1YmxpY1VSTC5zdHJp
bmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0cmluZygpOwogfQogI2VuZGlmCiAKLVN0
cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChCbG9iKiBibG9iKQorU3RyaW5nIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIEJsb2IqIGJsb2IpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
fHwgIWJsb2IpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFibG9iKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNy
ZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkp
OworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwocHVibGljVVJMLCBibG9iLT51cmwoKSk7Ci0gICAgbV9w
dWJsaWNCbG9iVVJMcy5hZGQocHVibGljVVJMLnN0cmluZygpKTsKKyAgICBwdWJsaWNCbG9iVVJM
cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAg
IHJldHVybiBwdWJsaWNVUkwuc3RyaW5nKCk7CiB9CiAKLXZvaWQgRE9NVVJMOjpyZXZva2VPYmpl
Y3RVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0
VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxTdHJpbmcpOwogCi0gICAgaWYgKG1fcHVibGljQmxvYlVS
THMuY29udGFpbnModXJsLnN0cmluZygpKSkgeworICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVS
THMgPSBwdWJsaWNCbG9iVVJMcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoYmxv
YlVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgewogICAgICAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgICAgICBtX3B1YmxpY0Jsb2JVUkxz
LnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgICAgICBibG9iVVJMcy5yZW1vdmUodXJsLnN0cmlu
ZygpKTsKICAgICB9Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGlmIChtX3B1Ymxp
Y1N0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgeworICAgIEhhc2hTZXQ8U3RyaW5n
PiYgc3RyZWFtVVJMcyA9IHB1YmxpY1N0cmVhbVVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CisgICAgaWYgKHN0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgewogICAgICAgICAv
LyBGSVhNRTogbWFrZSBzdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIGJlbG93LiBSYWlzZSBhIHNwZWMg
cXVlc3Rpb24gaWYgcmVxdWlyZWQuCiAgICAgICAgIC8vIFNpbmNlIFdlYldvcmtlcnMgY2Fubm90
IG9idGFpbiBTdHJlYW0gb2JqZWN0cywgd2Ugc2hvdWxkIGJlIG9uIHRoZSBtYWluIHRocmVhZC4K
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgTWVkaWFTdHJlYW1SZWdp
c3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwodXJsKTsKLSAgICAgICAg
bV9wdWJsaWNTdHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgICAgICBzdHJlYW1V
UkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KICNlbmRpZgogfQorI2VuZGlmIC8vIEVO
QUJMRShCTE9CKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUo
QkxPQikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkocmV2aXNpb24gMTAyNzY3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNyw4IEBACiAjaWZuZGVmIERPTVVSTF9o
CiAjZGVmaW5lIERPTVVSTF9oCiAKLSNpZiBFTkFCTEUoQkxPQikKLQotI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00MCwzMCArMzgsMjEgQEAgY2xh
c3MgQmxvYjsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIAotY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NVVJMPiwgcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01VUkw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpKTsgfQotICAgIH5ET01VUkwoKTsKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAg
U3RyaW5nIGNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSopOwotI2VuZGlmCi0gICAgU3RyaW5n
IGNyZWF0ZU9iamVjdFVSTChCbG9iKik7Ci0gICAgdm9pZCByZXZva2VPYmplY3RVUkwoY29uc3Qg
U3RyaW5nJik7CitjbGFzcyBET01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+IHsKIAot
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
cHVibGljOgogCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyNpZiBFTkFC
TEUoQkxPQikKKyAgICBzdGF0aWMgdm9pZCBjb250ZXh0RGVzdHJveWVkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxzOworICAg
IHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBC
bG9iKik7CisgICAgc3RhdGljIHZvaWQgcmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3B1YmxpY1N0cmVhbVVSTHM7CisgICAgc3RhdGljIFN0cmluZyBjcmVh
dGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtKik7CisjZW5k
aWYKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKEJMT0IpCi0KICNlbmRpZiAvLyBET01VUkxfaApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlk
bAkocmV2aXNpb24gMTAyNzY3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1v
dG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMTUgKzI3LDEzIEBACiBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAg
Q29uZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yLAogICAgICAgICBHZW5l
cmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgR2VuZXJhdGVUb0pTLAotICAgICAgICBOb1N0
YXRpY1RhYmxlcwogICAgIF0gRE9NVVJMIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJF
QU0pICYmIEVOQUJMRV9NRURJQV9TVFJFQU0KLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89
VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVh
bSk7CisgICAgICAgIHN0YXRpYyBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBN
ZWRpYVN0cmVhbSBzdHJlYW0pOwogI2VuZGlmCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1Rv
PVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAg
ICAgICB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICAgc3Rh
dGljIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZCxDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIEJsb2IgYmxvYik7CisgICAg
ICAgIHN0YXRpYyBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCByZXZva2VP
YmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDEwMjc2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyOCwxNSArMTkyOCw2IEBAIHZvaWQg
RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3QKICAgICBkaWFsb2dGcmFtZS0+cGFn
ZSgpLT5jaHJvbWUoKS0+cnVuTW9kYWwoKTsKIH0KIAotI2lmIEVOQUJMRShCTE9CKQotRE9NVVJM
KiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RvbVVSTCAmJiBp
c0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6
OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBtX2Rv
bVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFFVT1RBKQogU3RvcmFnZUluZm8q
IERPTVdpbmRvdzo6d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCShyZXZpc2lvbiAxMDI3NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsMTAgKzM0Nyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxET01XaW5kb3c+OjpyZWY7CiAgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6ZGVyZWY7CiAKLSNpZiBFTkFCTEUoQkxP
QikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFi
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8
RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAxMDI3NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTgx
NCw3ICs4MTQsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRp
dGlvbmFsPUJMT0JdIFdlYktpdEJsb2JCdWlsZGVyQ29uc3RydWN0b3IgV2ViS2l0QmxvYkJ1aWxk
ZXI7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01V
Ukwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVS
TENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1FVT1RBKSAmJiBF
TkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1l
PVF1b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTAyNzY3KQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5
LDE1ICszNzksNiBAQCBFdmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRleHQ6OmVuc3VyZUV2CiAg
ICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVOQUJMRShCTE9CKQotRE9N
VVJMKiBXb3JrZXJDb250ZXh0Ojp3ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlmICghbV9kb21V
UkwpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19Ci0jZW5kaWYKLQog
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIHZvaWQgV29ya2VyQ29udGV4dDo6d2Via2l0UmVxdWVz
dEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0
ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aAkocmV2aXNpb24gMTAyNzY3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMCArMTMxLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKLSNpZiBF
TkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRpZgot
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgICAgICBlbnVtIEZpbGVTeXN0ZW1UeXBlIHsK
ICAgICAgICAgICAgIFRFTVBPUkFSWSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmlkbAkocmV2aXNpb24gMTAyNzY3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIG1v
ZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYXR0cmlidXRlIEZpbGVSZWFkZXJTeW5jQ29uc3RydWN0
b3IgRmlsZVJlYWRlclN5bmM7CiAjZW5kaWYKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAgIGF0dHJpYnV0ZSBb
Q29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMQ29uc3RydWN0b3Igd2Via2l0VVJMOwogCiAjaWYgZGVm
aW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZU1RFTQogICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAy
NzY3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTEtMTItMTQgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9s
YS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBjcmVhdGVPYmplY3RVUkwgJiByZXZva2VPYmplY3RV
UkwgdG8gc3RhdGljIChDbGFzcykgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IHRvIGNoZWNrIGlmIGNyZWF0ZU9iamVjdFVS
TCAmIHJldm9rZU9iamVjdFVSTCBhcmUgc3RhdGljIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGZh
c3QvZG9tL0RPTVVSTDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNrLWlu
c3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbDog
QWRkZWQuCisKIDIwMTEtMTItMTQgIFJha2VzaCBLTiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+
CiAKICAgICAgICAgW05vbi1NYWNdIENoYW5nZSBldmVudCBzaG91bGQgYmUgZmlyZWQgd2hlbiBj
aGFuZ2luZyBvcHRpb24gYnkgdXNpbmcga2V5Ym9hcmQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFu
Y2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMTA6IFVuY2F1Z2h0IFR5cGVFcnJvcjogSWxsZWdhbCBjb25zdHJ1Y3RvcgorVGVz
dCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91
bGQgYmUgdHJ1ZSAob2YgdHlwZSBib29sZWFuKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRl
ZmluZWQpLgorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVu
Y3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMg
YW5kIHByb3BlcnRpZXMgb2Ygd2Via2l0VVJMLiIpOworCit2YXIgdXJsID0gbmV3IHdlYmtpdFVS
TCgid3d3LndlYmtpdC5vcmciKTsKKworc2hvdWxkQmVUcnVlKCInY3JlYXRlT2JqZWN0VVJMJyBp
biB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3Jldm9rZU9iamVjdFVSTCcgaW4gd2Via2l0
VVJMIik7CisKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwuY3JlYXRlT2JqZWN0VVJMIik7CitzaG91
bGRCZVVuZGVmaW5lZCgidXJsLnJldm9rZU9iamVjdFVSTCIpOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="119147"
          type_id="1"
          status="-"
          setter="arv"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122206</attachid>
            <date>2012-01-12 03:47:37 -0800</date>
            <delta_ts>2012-01-17 23:50:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>74386_patch_3.txt</filename>
            <type>text/plain</type>
            <size>18339</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAxLTEyICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPiAmIEVyaWsgQXJ2aWRzc29uICA8
YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJl
dm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9ET01VUkwvY2hl
Y2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKKyAgICAgICAgQWxyZWFkeSBleGlz
dGluZyAtCisgICAgICAgICAgICBmYXN0L2ZpbGVzL3Jldm9rZS1ibG9iLXVybC5odG1sCisgICAg
ICAgICAgICBmYXN0L2RvbS93aW5kb3ctZG9tdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZh
c3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8taW1nLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmls
ZXMvY3JlYXRlLWJsb2ItdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmlsZXMvd29y
a2Vycy9pbmxpbmUtd29ya2VyLXZpYS1ibG9iLXVybC5odG1sCisKKyAgICAgICAgKiBodG1sL0RP
TVVSTC5jcHA6IEFkZGVkIEhhc2hNYXAgZm9yIGxvY2FsIHN0YXRpYyBvYmplY3RzLgorICAgICAg
ICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6UHVibGljVVJMTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmJsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1YmxpY1VSTE1hbmFnZXI6OnN0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6cHVibGlj
VVJMTWFuYWdlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpwdWJsaWNVUkxNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnB1YmxpY0Jsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OnB1Ymxp
Y1N0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwp
OiBDaGFuZ2VkIHRvIHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2Jq
ZWN0VVJMKTogZGl0dG8uCisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6fkRPTVVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OkRPTVVSTCk6CisgICAgICAgICogaHRtbC9ET01V
UkwuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDogUmVtb3ZlZCBvYmplY3QgaW5p
dGlhbGl6YXRpb24gZm9yIERPTVVSTC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOiBkaXR0
by4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6IGRpdHRvLgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHA6IGRpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29u
dGV4dC5oOiBkaXR0by4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOiBkaXR0
by4KKwogMjAxMi0wMS0xMiAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIHVzZSBxdWVy
eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHJldmlzaW9uIDEwNDY3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDU2ICsyNSw5OCBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShCTE9CKQotCiAjaW5jbHVkZSAiRE9NVVJMLmgi
CiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCisj
aWYgRU5BQkxFKEJMT0IpCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgotCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1S
ZWdpc3RyeS5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01V
Ukw6OkRPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKKyNpZiBFTkFCTEUoQkxPQikKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXI7Cit0eXBlZGVmIEhh
c2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE93blB0cjxQdWJsaWNVUkxNYW5hZ2VyPiA+
IFB1YmxpY1VSTE1hbmFnZXJNYXA7CitzdGF0aWMgUHVibGljVVJMTWFuYWdlck1hcCYgcHVibGlj
VVJMTWFuYWdlck1hcCgpOworCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyIDogcHVibGljIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQdWJsaWNVUkxN
YW5hZ2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisg
ICAgICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpCisgICAgeworICAg
ICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGJsb2JVUkxzRW5kID0gbV9ibG9iVVJMcy5l
bmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX2Js
b2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gYmxvYlVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAgICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCAqaXRlcikpOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgSGFz
aFNldDxTdHJpbmc+OjppdGVyYXRvciBzdHJlYW1VUkxzRW5kID0gbV9zdHJlYW1VUkxzLmVuZCgp
OworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fc3RyZWFt
VVJMcy5iZWdpbigpOyBpdGVyICE9IHN0cmVhbVVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAgICAg
IE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJM
KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOworI2VuZGlmCisKKyAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAg
ICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKKyAg
ICAgICAgcHVibGljVVJMTWFuYWdlck1hcCgpLnJlbW92ZShjb250ZXh0KTsKKyAgICB9CisKKyAg
ICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzKCkgeyByZXR1cm4gbV9ibG9iVVJMczsgfQorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxzKCkg
eyByZXR1cm4gbV9zdHJlYW1VUkxzOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBIYXNoU2V0
PFN0cmluZz4gbV9ibG9iVVJMczsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX3N0cmVhbVVSTHM7CisjZW5kaWYKK307CisKK3N0YXRpYyBQdWJsaWNVUkxN
YW5hZ2VyTWFwJiBwdWJsaWNVUkxNYW5hZ2VyTWFwKCkKIHsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFB1YmxpY1VSTE1hbmFnZXJNYXAsIHN0YXRpY1B1YmxpY1VSTE1hbmFnZXJzLCAoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY1B1YmxpY1VSTE1hbmFnZXJzOwogfQogCi1ET01VUkw6On5ET01VUkwo
KQorc3RhdGljIFB1YmxpY1VSTE1hbmFnZXImIHB1YmxpY1VSTE1hbmFnZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKKyAgICBQdWJsaWNVUkxNYW5h
Z2VyTWFwJiBtYXAgPSBwdWJsaWNVUkxNYW5hZ2VyTWFwKCk7CisgICAgT3duUHRyPFB1YmxpY1VS
TE1hbmFnZXI+JiBtYW5hZ2VyID0gbWFwLmFkZChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBudWxs
cHRyKS5maXJzdC0+c2Vjb25kOworICAgIGlmICghbWFuYWdlcikKKyAgICAgICAgbWFuYWdlciA9
IGFkb3B0UHRyKG5ldyBQdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsK
KyAgICByZXR1cm4gKm1hbmFnZXI7CiB9CiAKLXZvaWQgRE9NVVJMOjpjb250ZXh0RGVzdHJveWVk
KCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHB1YmxpY0Jsb2JVUkxzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPjo6
aXRlcmF0b3IgcHVibGljQmxvYlVSTHNFbmQgPSBtX3B1YmxpY0Jsb2JVUkxzLmVuZCgpOwotICAg
IGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNCbG9iVVJMcy5i
ZWdpbigpOyBpdGVyICE9IHB1YmxpY0Jsb2JVUkxzRW5kOyArK2l0ZXIpCi0gICAgICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCAqaXRlcikpOworICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpLmJsb2JVUkxzKCk7Cit9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhh
c2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljU3RyZWFtVVJMc0VuZCA9IG1fcHVibGljU3Ry
ZWFtVVJMcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9
IG1fcHVibGljU3RyZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHB1YmxpY1N0cmVhbVVSTHNFbmQ7
ICsraXRlcikKLSAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lz
dGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7Ci0jZW5kaWYK
K3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHB1YmxpY1N0cmVhbVVSTHMoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4gcHVibGljVVJM
TWFuYWdlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zdHJlYW1VUkxzKCk7CiB9CiAKLSNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKE1lZGlh
U3RyZWFtKiBzdHJlYW0pCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWVkaWFTdHJlYW0qIHN0cmVh
bSkKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQorICAg
IGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VS
TChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwg
cHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTgxLDUwICsxMjQsNTEgQEAgU3RyaW5nIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnJlZ2lzdGVyTWVkaWFTdHJl
YW1VUkwocHVibGljVVJMLCBzdHJlYW0pOwotICAgIG1fcHVibGljU3RyZWFtVVJMcy5hZGQocHVi
bGljVVJMLnN0cmluZygpKTsKKyAgICBwdWJsaWNTdHJlYW1VUkxzKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5z
dHJpbmcoKTsKIH0KICNlbmRpZgogCi1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoQmxv
YiogYmxvYikKK1N0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9iKQogewotICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFibG9iKQorICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCB8fCAhYmxvYikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VS
TCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6
OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigp
KTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKHB1YmxpY1VS
TCwgYmxvYi0+dXJsKCkpOwotICAgIG1fcHVibGljQmxvYlVSTHMuYWRkKHB1YmxpY1VSTC5zdHJp
bmcoKSk7CisgICAgcHVibGljQmxvYlVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuYWRkKHB1
YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0cmluZygpOwogfQog
Ci12b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQor
dm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBpZiAo
IW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3RyaW5nKTsK
IAotICAgIGlmIChtX3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAg
ICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzID0gcHVibGljQmxvYlVSTHMoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CisgICAgaWYgKGJsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsK
ICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwodXJsKTsK
LSAgICAgICAgbV9wdWJsaWNCbG9iVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAg
YmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQotCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICBpZiAobV9wdWJsaWNTdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmco
KSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMgPSBwdWJsaWNTdHJlYW1VUkxz
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmIChzdHJlYW1VUkxzLmNvbnRhaW5zKHVy
bC5zdHJpbmcoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSBvZiB0aGlzIGFzc2Vy
dGlvbiBiZWxvdy4gUmFpc2UgYSBzcGVjIHF1ZXN0aW9uIGlmIHJlcXVpcmVkLgogICAgICAgICAv
LyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5vdCBvYnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNob3Vs
ZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlh
U3RyZWFtVVJMKHVybCk7Ci0gICAgICAgIG1fcHVibGljU3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0
cmluZygpKTsKKyAgICAgICAgc3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICB9
CiAjZW5kaWYKIH0KKyNlbmRpZiAvLyBFTkFCTEUoQkxPQikKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEJMT0IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJl
dmlzaW9uIDEwNDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEg
TW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSAr
MjcsOCBAQAogI2lmbmRlZiBET01VUkxfaAogI2RlZmluZSBET01VUkxfaAogCi0jaWYgRU5BQkxF
KEJMT0IpCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApAQCAtNDAsMzAgKzM4LDI3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIERPTVVSTCA6IHB1YmxpYyBSZWZD
b3VudGVkPERPTVVSTD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFz
cyBET01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+IHsKKwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpOyB9Ci0gICAgfkRPTVVSTCgpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERPTVVSTD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTCgpKTsgfQor
ICAgIHZpcnR1YWwgfkRPTVVSTCgpIHsgfTsKKworI2lmIEVOQUJMRShCTE9CKQorICAgIHN0YXRp
YyB2b2lkIGNvbnRleHREZXN0cm95ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCisgICAg
c3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJs
b2IqKTsKKyAgICBzdGF0aWMgdm9pZCByZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgU3Ry
aW5nIGNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSopOworICAgIHN0YXRpYyBTdHJpbmcgY3Jl
YXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbSopOworI2Vu
ZGlmCiAjZW5kaWYKLSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKEJsb2IqKTsKLSAgICB2b2lk
IHJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCi0gICAgdmlydHVhbCB2b2lkIGNv
bnRleHREZXN0cm95ZWQoKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxz
OwotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGlj
U3RyZWFtVVJMczsKLSNlbmRpZgorICAgIERPTVVSTCgpIHsgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9CKQotCiAjZW5kaWYgLy8gRE9NVVJM
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHJldmlzaW9uIDEwNDY3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDE1ICsyNywxNCBAQAogbW9kdWxlIGh0bWwg
ewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUJMT0IsCi0gICAgICAgIE9t
aXRDb25zdHJ1Y3RvciwKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAg
IEdlbmVyYXRlVG9KUywKLSAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICAgICAgQ29uc3RydWN0
b3IKICAgICBdIERPTVVSTCB7CiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAmJiBF
TkFCTEVfTUVESUFfU1RSRUFNCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5l
ZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOworICAg
ICAgICBzdGF0aWMgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkLENhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJl
YW0gc3RyZWFtKTsKICNlbmRpZgotICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmlu
ZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsKLSAgICAgICAgdm9p
ZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CisgICAgICAgIHN0YXRpYyBbQ29u
dmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOworICAgICAgICBzdGF0
aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmV2b2tlT2JqZWN0VVJM
KGluIERPTVN0cmluZyB1cmwpOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCShyZXZpc2lvbiAxMDQ2NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NzksMTUgKzE4NzksNiBAQCB2b2lkIERPTVdpbmRv
dzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0CiAgICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCktPnJ1bk1vZGFsKCk7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLURPTVVSTCogRE9NV2lu
ZG93Ojp3ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlmICghbV9kb21VUkwgJiYgaXNDdXJyZW50
bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUo
dGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0
KCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShRVU9UQSkKIFN0b3JhZ2VJbmZvKiBET01XaW5k
b3c6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAkocmV2aXNpb24gMTA0NjcxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUxLDEwICszNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6cmVmOwogICAgICAgICB1c2lu
ZyBSZWZDb3VudGVkPERPTVdpbmRvdz46OmRlcmVmOwogCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAg
ICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
ZGV2aWNlbW90aW9uKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihk
ZXZpY2VvcmllbnRhdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZp
c2lvbiAxMDQ2NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTc5Nyw3ICs3OTcsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIFdlYktpdEJsb2JCdWlsZGVyQ29uc3RydWN0b3Ig
V2ViS2l0QmxvYkJ1aWxkZXI7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlv
bmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5B
QkxFX1FVT1RBKSAmJiBFTkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtF
bmFibGVkQXRSdW50aW1lPVF1b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA0
NjcxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzc3LDE1ICszNzcsNiBAQCBFdmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRl
eHQ6OmVuc3VyZUV2CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVO
QUJMRShCTE9CKQotRE9NVVJMKiBXb3JrZXJDb250ZXh0Ojp3ZWJraXRVUkwoKSBjb25zdAotewot
ICAgIGlmICghbV9kb21VUkwpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhp
cy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIHZvaWQgV29ya2VyQ29udGV4
dDo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNz
UmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gMTA0NjcxKQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiwxMCArMTMyLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFk
KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkg
Y29uc3Q7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBj
b25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgICAgICBlbnVtIEZp
bGVTeXN0ZW1UeXBlIHsKICAgICAgICAgICAgIFRFTVBPUkFSWSwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gMTA0NjcxKQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDcgKzEwMSw3IEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYXR0cmlidXRlIEZpbGVSZWFk
ZXJTeW5jQ29uc3RydWN0b3IgRmlsZVJlYWRlclN5bmM7CiAjZW5kaWYKIAotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAg
ICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMQ29uc3RydWN0b3Igd2Via2l0
VVJMOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZ
U1RFTQogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTA0ODA1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMTIgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxr
YXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBjcmVhdGVPYmplY3RVUkwg
JiByZXZva2VPYmplY3RVUkwgdG8gc3RhdGljIChDbGFzcykgbWV0aG9kcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IHRvIGNoZWNrIGlm
IGNyZWF0ZU9iamVjdFVSTCAmIHJldm9rZU9iamVjdFVSTCBhcmUgc3RhdGljIGZ1bmN0aW9ucy4K
KworICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
RE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1m
dW5jdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMTIgIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBTaGFkb3dDb250ZW50RWxlbWVudCBzaG91bGQg
YmUgYWJsZSB0byB1c2UgcXVlcnkuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwt
ZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6
IFVuY2F1Z2h0IFR5cGVFcnJvcjogSWxsZWdhbCBjb25zdHJ1Y3RvcgorVGVzdCBpbnN0YW5jZW9m
IGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitGQUlMIHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgdHJ1ZSAo
b2YgdHlwZSBib29sZWFuKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1p
bnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFu
Y2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMgYW5kIHByb3BlcnRp
ZXMgb2Ygd2Via2l0VVJMLiIpOworCit2YXIgdXJsID0gbmV3IHdlYmtpdFVSTCgpOworCitzaG91
bGRCZVRydWUoIidjcmVhdGVPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVUcnVl
KCIncmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKKworc2hvdWxkQmVVbmRlZmluZWQo
InVybC5jcmVhdGVPYmplY3RVUkwiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwucmV2b2tlT2Jq
ZWN0VVJMIik7CisKK3Nob3VsZEJlRGVmaW5lZCgid2luZG93LndlYmtpdFVSTC5jcmVhdGVPYmpl
Y3RVUkwiKTsKK3Nob3VsZEJlRGVmaW5lZCgid2luZG93LndlYmtpdFVSTC5yZXZva2VPYmplY3RV
UkwiKTsKKworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="122942"
          type_id="1"
          status="-"
          setter="arv"
    />
    <flag name="commit-queue"
          id="122943"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122880</attachid>
            <date>2012-01-17 23:50:18 -0800</date>
            <delta_ts>2012-01-18 22:53:51 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>74386_patch_4.txt</filename>
            <type>text/plain</type>
            <size>18327</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAxLTE3ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPiAmIEVyaWsgQXJ2aWRzc29uICA8
YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJl
dm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9ET01VUkwvY2hl
Y2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKKyAgICAgICAgQWxyZWFkeSBFeGlz
dGluZyAtCisgICAgICAgICAgICBmYXN0L2ZpbGVzL3Jldm9rZS1ibG9iLXVybC5odG1sCisgICAg
ICAgICAgICBmYXN0L2RvbS93aW5kb3ctZG9tdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZh
c3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8taW1nLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmls
ZXMvY3JlYXRlLWJsb2ItdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmlsZXMvd29y
a2Vycy9pbmxpbmUtd29ya2VyLXZpYS1ibG9iLXVybC5odG1sCisKKyAgICAgICAgKiBodG1sL0RP
TVVSTC5jcHA6IEFkZGVkIEhhc2hNYXAgZm9yIGxvY2FsIHN0YXRpYyBvYmplY3RzLgorICAgICAg
ICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6UHVibGljVVJMTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmJsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1YmxpY1VSTE1hbmFnZXI6OnN0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6cHVibGlj
VVJMTWFuYWdlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpwdWJsaWNVUkxNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnB1YmxpY0Jsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OnB1Ymxp
Y1N0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwp
OiBDaGFuZ2VkIHRvIHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2Jq
ZWN0VVJMKTogZGl0dG8uCisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6fkRPTVVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OkRPTVVSTCk6CisgICAgICAgICogaHRtbC9ET01V
UkwuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDogUmVtb3ZlZCBvYmplY3QgaW5p
dGlhbGl6YXRpb24gZm9yIERPTVVSTC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOiBkaXR0
by4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6IGRpdHRvLgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHA6IGRpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29u
dGV4dC5oOiBkaXR0by4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOiBkaXR0
by4KKwogMjAxMi0wMS0xNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNTI0NC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVVSTC5jcHAJKHJldmlzaW9uIDEwNTI0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI0LDU2ICsyNSw5OCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIEVOQUJMRShCTE9CKQotCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAKKyNpbmNsdWRl
ICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCisjaWYgRU5BQkxFKEJM
T0IpCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgog
I2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01VUkw6OkRPTVVSTChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgIDogQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyNpZiBFTkFC
TEUoQkxPQikKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXI7Cit0eXBlZGVmIEhhc2hNYXA8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE93blB0cjxQdWJsaWNVUkxNYW5hZ2VyPiA+IFB1YmxpY1VSTE1h
bmFnZXJNYXA7CitzdGF0aWMgUHVibGljVVJMTWFuYWdlck1hcCYgcHVibGljVVJMTWFuYWdlck1h
cCgpOworCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyIDogcHVibGljIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQdWJsaWNVUkxNYW5hZ2VyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIDogQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpCisgICAgeworICAgICAgICBIYXNoU2V0
PFN0cmluZz46Oml0ZXJhdG9yIGJsb2JVUkxzRW5kID0gbV9ibG9iVVJMcy5lbmQoKTsKKyAgICAg
ICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX2Jsb2JVUkxzLmJlZ2lu
KCk7IGl0ZXIgIT0gYmxvYlVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAgICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRl
cikpOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgSGFzaFNldDxTdHJpbmc+
OjppdGVyYXRvciBzdHJlYW1VUkxzRW5kID0gbV9zdHJlYW1VUkxzLmVuZCgpOworICAgICAgICBm
b3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fc3RyZWFtVVJMcy5iZWdpbigp
OyBpdGVyICE9IHN0cmVhbVVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAgICAgIE1lZGlhU3RyZWFt
UmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCAqaXRlcikpOworI2VuZGlmCisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAgICAgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgcHVibGlj
VVJMTWFuYWdlck1hcCgpLnJlbW92ZShjb250ZXh0KTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFN0
cmluZz4mIGJsb2JVUkxzKCkgeyByZXR1cm4gbV9ibG9iVVJMczsgfQorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxzKCkgeyByZXR1cm4gbV9z
dHJlYW1VUkxzOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9i
bG9iVVJMczsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3N0cmVhbVVSTHM7CisjZW5kaWYKK307CisKK3N0YXRpYyBQdWJsaWNVUkxNYW5hZ2VyTWFwJiBw
dWJsaWNVUkxNYW5hZ2VyTWFwKCkKIHsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFB1YmxpY1VS
TE1hbmFnZXJNYXAsIHN0YXRpY1B1YmxpY1VSTE1hbmFnZXJzLCAoKSk7CisgICAgcmV0dXJuIHN0
YXRpY1B1YmxpY1VSTE1hbmFnZXJzOwogfQogCi1ET01VUkw6On5ET01VUkwoKQorc3RhdGljIFB1
YmxpY1VSTE1hbmFnZXImIHB1YmxpY1VSTE1hbmFnZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKKyAgICBQdWJsaWNVUkxNYW5hZ2VyTWFwJiBtYXAg
PSBwdWJsaWNVUkxNYW5hZ2VyTWFwKCk7CisgICAgT3duUHRyPFB1YmxpY1VSTE1hbmFnZXI+JiBt
YW5hZ2VyID0gbWFwLmFkZChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBudWxscHRyKS5maXJzdC0+
c2Vjb25kOworICAgIGlmICghbWFuYWdlcikKKyAgICAgICAgbWFuYWdlciA9IGFkb3B0UHRyKG5l
dyBQdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKKyAgICByZXR1cm4g
Km1hbmFnZXI7CiB9CiAKLXZvaWQgRE9NVVJMOjpjb250ZXh0RGVzdHJveWVkKCkKK3N0YXRpYyBI
YXNoU2V0PFN0cmluZz4mIHB1YmxpY0Jsb2JVUkxzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6
OmNvbnRleHREZXN0cm95ZWQoKTsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVi
bGljQmxvYlVSTHNFbmQgPSBtX3B1YmxpY0Jsb2JVUkxzLmVuZCgpOwotICAgIGZvciAoSGFzaFNl
dDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNCbG9iVVJMcy5iZWdpbigpOyBpdGVy
ICE9IHB1YmxpY0Jsb2JVUkxzRW5kOyArK2l0ZXIpCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOwor
ICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmJsb2JV
UkxzKCk7Cit9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5n
Pjo6aXRlcmF0b3IgcHVibGljU3RyZWFtVVJMc0VuZCA9IG1fcHVibGljU3RyZWFtVVJMcy5lbmQo
KTsKLSAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVibGljU3Ry
ZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHB1YmxpY1N0cmVhbVVSTHNFbmQ7ICsraXRlcikKLSAg
ICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJl
YW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7Ci0jZW5kaWYKK3N0YXRpYyBIYXNo
U2V0PFN0cmluZz4mIHB1YmxpY1N0cmVhbVVSTHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4gcHVibGljVVJMTWFuYWdlcihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS5zdHJlYW1VUkxzKCk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKiBzdHJl
YW0pCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWVkaWFTdHJlYW0qIHN0cmVhbSkKIHsKLSAgICBp
ZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQorICAgIGlmICghc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0g
QmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5
T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKQEAgLTgxLDUwICsxMjQsNTEgQEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2Jq
ZWN0VVJMKE1lZGlhU3RyZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBNZWRp
YVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwocHVibGlj
VVJMLCBzdHJlYW0pOwotICAgIG1fcHVibGljU3RyZWFtVVJMcy5hZGQocHVibGljVVJMLnN0cmlu
ZygpKTsKKyAgICBwdWJsaWNTdHJlYW1VUkxzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmFkZChw
dWJsaWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5zdHJpbmcoKTsKIH0K
ICNlbmRpZgogCi1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoQmxvYiogYmxvYikKK1N0
cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9iKQogewotICAgIGlmICghbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0IHx8ICFibG9iKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8
fCAhYmxvYikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwg
PSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1Ymxp
Y1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAo
cHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKHB1YmxpY1VSTCwgYmxvYi0+dXJs
KCkpOwotICAgIG1fcHVibGljQmxvYlVSTHMuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAg
cHVibGljQmxvYlVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuYWRkKHB1YmxpY1VSTC5zdHJp
bmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0cmluZygpOwogfQogCi12b2lkIERPTVVS
TDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQordm9pZCBET01VUkw6
OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3RyaW5nKTsKIAotICAgIGlmICht
X3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0
cmluZz4mIGJsb2JVUkxzID0gcHVibGljQmxvYlVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CisgICAgaWYgKGJsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICAgICAgbV9w
dWJsaWNCbG9iVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAgYmxvYlVSTHMucmVt
b3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAg
ICBpZiAobV9wdWJsaWNTdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBI
YXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMgPSBwdWJsaWNTdHJlYW1VUkxzKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworICAgIGlmIChzdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkp
IHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSBvZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4g
UmFpc2UgYSBzcGVjIHF1ZXN0aW9uIGlmIHJlcXVpcmVkLgogICAgICAgICAvLyBTaW5jZSBXZWJX
b3JrZXJzIGNhbm5vdCBvYnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUg
bWFpbiB0aHJlYWQuCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIE1l
ZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHVy
bCk7Ci0gICAgICAgIG1fcHVibGljU3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAg
ICAgICAgc3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0K
KyNlbmRpZiAvLyBFTkFCTEUoQkxPQikKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gRU5BQkxFKEJMT0IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDEwNTI0
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjcsOCBAQAogI2lm
bmRlZiBET01VUkxfaAogI2RlZmluZSBET01VUkxfaAogCi0jaWYgRU5BQkxFKEJMT0IpCi0KLSNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDAsMzAg
KzM4LDIyIEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIERPTVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVS
TD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KSk7IH0KLSAgICB+RE9NVVJMKCk7Ci0KLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qKTsKLSNlbmRp
ZgotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoQmxvYiopOwotICAgIHZvaWQgcmV2b2tlT2Jq
ZWN0VVJMKGNvbnN0IFN0cmluZyYpOworY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8
RE9NVVJMPiB7CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRE9NVVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpOworI2lmIEVOQUJMRShCTE9CKQorICAgIHN0YXRpYyB2b2lkIGNv
bnRleHREZXN0cm95ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgSGFzaFNldDxT
dHJpbmc+IG1fcHVibGljQmxvYlVSTHM7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RV
UkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqKTsKKyAgICBzdGF0aWMgdm9pZCByZXZv
a2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYpOwogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGljU3RyZWFt
VVJMczsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTWVkaWFTdHJlYW0qKTsKKyNlbmRpZgogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKLQogI2VuZGlmIC8vIERPTVVS
TF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCShyZXZpc2lvbiAxMDUyNDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxNSArMjcsMTQgQEAKIG1vZHVsZSBodG1s
IHsKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1CTE9CLAotICAgICAgICBP
bWl0Q29uc3RydWN0b3IsCiAgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAogICAgICAg
ICBHZW5lcmF0ZVRvSlMsCi0gICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgICAgIENvbnN0cnVj
dG9yCiAgICAgXSBET01VUkwgewogI2lmIGRlZmluZWQoRU5BQkxFX01FRElBX1NUUkVBTSkgJiYg
RU5BQkxFX01FRElBX1NUUkVBTQotICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmlu
ZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKTsKKyAg
ICAgICAgc3RhdGljIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZCxDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3Ry
ZWFtIHN0cmVhbSk7CiAjZW5kaWYKLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZp
bmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIEJsb2IgYmxvYik7Ci0gICAgICAgIHZv
aWQgcmV2b2tlT2JqZWN0VVJMKGluIERPTVN0cmluZyB1cmwpOworICAgICAgICBzdGF0aWMgW0Nv
bnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkLENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsKKyAgICAgICAgc3Rh
dGljIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lkIHJldm9rZU9iamVjdFVS
TChpbiBET01TdHJpbmcgdXJsKTsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAkocmV2aXNpb24gMTA1MjQ1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODc5LDE1ICsxODc5LDYgQEAgdm9pZCBET01XaW5k
b3c6OnNob3dNb2RhbERpYWxvZyhjb25zdCBTdAogICAgIGRpYWxvZ0ZyYW1lLT5wYWdlKCktPmNo
cm9tZSgpLT5ydW5Nb2RhbCgpOwogfQogCi0jaWYgRU5BQkxFKEJMT0IpCi1ET01VUkwqIERPTVdp
bmRvdzo6d2Via2l0VVJMKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZG9tVVJMICYmIGlzQ3VycmVu
dGx5RGlzcGxheWVkSW5GcmFtZSgpKQotICAgICAgICBtX2RvbVVSTCA9IERPTVVSTDo6Y3JlYXRl
KHRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIG1fZG9tVVJMLmdl
dCgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoUVVPVEEpCiBTdG9yYWdlSW5mbyogRE9NV2lu
ZG93Ojp3ZWJraXRTdG9yYWdlSW5mbygpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgJKHJldmlzaW9uIDEwNTI0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MSwxMCArMzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB1c2luZyBSZWZDb3VudGVkPERPTVdpbmRvdz46OnJlZjsKICAgICAgICAgdXNp
bmcgUmVmQ291bnRlZDxET01XaW5kb3c+OjpkZXJlZjsKIAotI2lmIEVOQUJMRShCTE9CKQotICAg
ICAgICBET01VUkwqIHdlYmtpdFVSTCgpIGNvbnN0OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGRldmljZW1vdGlvbik7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
ZGV2aWNlb3JpZW50YXRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2
aXNpb24gMTA1MjQ1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OTgsNyArNzk4LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAg
YXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBXZWJLaXRCbG9iQnVpbGRlckNvbnN0cnVjdG9y
IFdlYktpdEJsb2JCdWlsZGVyOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0
aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1CTE9CXSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7CiAKICNpZiBkZWZpbmVkKEVO
QUJMRV9RVU9UQSkgJiYgRU5BQkxFX1FVT1RBCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
RW5hYmxlZEF0UnVudGltZT1RdW90YV0gU3RvcmFnZUluZm8gd2Via2l0U3RvcmFnZUluZm87Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDEw
NTI0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3NywxNSArMzc3LDYgQEAgRXZlbnRUYXJnZXREYXRhKiBXb3JrZXJDb250
ZXh0OjplbnN1cmVFdgogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CiB9CiAKLSNpZiBF
TkFCTEUoQkxPQikKLURPTVVSTCogV29ya2VyQ29udGV4dDo6d2Via2l0VVJMKCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fZG9tVVJMKQotICAgICAgICBtX2RvbVVSTCA9IERPTVVSTDo6Y3JlYXRlKHRo
aXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIG1fZG9tVVJMLmdldCgp
OwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiB2b2lkIFdvcmtlckNvbnRl
eHQ6OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFz
c1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDEwNTI0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVh
ZCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigp
IGNvbnN0OwogCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgICAgIERPTVVSTCogd2Via2l0VVJMKCkg
Y29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAgICAgZW51bSBG
aWxlU3lzdGVtVHlwZSB7CiAgICAgICAgICAgICBURU1QT1JBUlksCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHJldmlzaW9uIDEwNTI0NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw3ICsxMDEsNyBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIGF0dHJpYnV0ZSBGaWxlUmVh
ZGVyU3luY0NvbnN0cnVjdG9yIEZpbGVSZWFkZXJTeW5jOwogI2VuZGlmCiAKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAg
ICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtp
dFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9T
WVNURU0KICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwNTI0NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTE3ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8
a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIE1pZ3JhdGUgY3JlYXRlT2JqZWN0VVJM
ICYgcmV2b2tlT2JqZWN0VVJMIHRvIHN0YXRpYyAoQ2xhc3MpIG1ldGhvZHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCB0byBjaGVjayBp
ZiBjcmVhdGVPYmplY3RVUkwgJiByZXZva2VPYmplY3RVUkwgYXJlIHN0YXRpYyBmdW5jdGlvbnMu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwt
ZnVuY3Rpb25zLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTE3ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTA1MjQ0LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3Rh
bmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVy
dGllcyBvZiB3ZWJraXRVUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHVybC5jcmVhdGVPYmplY3RVUkwgaXMgdW5kZWZpbmVkLgorUEFTUyB1cmwucmV2b2tlT2JqZWN0
VVJMIGlzIHVuZGVmaW5lZC4KK1BBU1Mgd2luZG93LndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwg
aXMgZGVmaW5lZC4KK1BBU1Mgd2luZG93LndlYmtpdFVSTC5yZXZva2VPYmplY3RVUkwgaXMgZGVm
aW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211
cmwtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1
bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgSFRN
TD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0IGluc3RhbmNlb2YgZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVS
TC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJraXRVUkw7CisKKy8vc2hvdWxkQmVUcnVlKCInY3Jl
YXRlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKKy8vc2hvdWxkQmVUcnVlKCIncmV2b2tlT2Jq
ZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKKworc2hvdWxkQmVVbmRlZmluZWQoInVybC5jcmVhdGVP
YmplY3RVUkwiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwucmV2b2tlT2JqZWN0VVJMIik7CisK
K3Nob3VsZEJlRGVmaW5lZCgid2luZG93LndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwiKTsKK3No
b3VsZEJlRGVmaW5lZCgid2luZG93LndlYmtpdFVSTC5yZXZva2VPYmplY3RVUkwiKTsKKworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123078</attachid>
            <date>2012-01-18 22:53:51 -0800</date>
            <delta_ts>2012-02-01 02:37:31 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>74386_patch_4.txt</filename>
            <type>text/plain</type>
            <size>18478</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAxLTE3ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPiAmIEVyaWsgQXJ2aWRzc29uICA8
YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJl
dm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9ET01VUkwvY2hl
Y2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKKyAgICAgICAgQWxyZWFkeSBFeGlz
dGluZyAtCisgICAgICAgICAgICBmYXN0L2ZpbGVzL3Jldm9rZS1ibG9iLXVybC5odG1sCisgICAg
ICAgICAgICBmYXN0L2RvbS93aW5kb3ctZG9tdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZh
c3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8taW1nLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmls
ZXMvY3JlYXRlLWJsb2ItdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZmlsZXMvd29y
a2Vycy9pbmxpbmUtd29ya2VyLXZpYS1ibG9iLXVybC5odG1sCisKKyAgICAgICAgKiBodG1sL0RP
TVVSTC5jcHA6IEFkZGVkIEhhc2hNYXAgZm9yIGxvY2FsIHN0YXRpYyBvYmplY3RzLgorICAgICAg
ICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6UHVibGljVVJMTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmJsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1YmxpY1VSTE1hbmFnZXI6OnN0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6cHVibGlj
VVJMTWFuYWdlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpwdWJsaWNVUkxNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnB1YmxpY0Jsb2JVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OnB1Ymxp
Y1N0cmVhbVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwp
OiBDaGFuZ2VkIHRvIHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2Jq
ZWN0VVJMKTogZGl0dG8uCisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6fkRPTVVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OkRPTVVSTCk6CisgICAgICAgICogaHRtbC9ET01V
UkwuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDogUmVtb3ZlZCBvYmplY3QgaW5p
dGlhbGl6YXRpb24gZm9yIERPTVVSTC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOiBkaXR0
by4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6IGRpdHRvLgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHA6IGRpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29u
dGV4dC5oOiBkaXR0by4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOiBkaXR0
by4KKwogMjAxMi0wMS0xOCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgc2V0QXR0cmlidXRlTlMgc2hvdWxkIGNvbXBseSB3aXRoIHRoZSBvYnNjdXJlIHJ1bGVzIG9m
IERPTTIsIGp1c3QgbGlrZSBjcmVhdGVBdHRyaWJ1dGVOUyBhbmQgY3JlYXRlRWxlbWVudE5TIGRv
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCShyZXZpc2lvbiAxMDUzODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw1NiArMjUsOTggQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoQkxPQikKLQogI2luY2x1ZGUgIkRPTVVSTC5oIgog
CisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworI2lm
IEVOQUJMRShCTE9CKQogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJCbG9iVVJMLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLQorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVn
aXN0cnkuaCIKICNlbmRpZgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NVVJM
OjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
LSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CisjaWYgRU5BQkxFKEJMT0IpCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOwordHlwZWRlZiBIYXNo
TWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBPd25QdHI8UHVibGljVVJMTWFuYWdlcj4gPiBQ
dWJsaWNVUkxNYW5hZ2VyTWFwOworc3RhdGljIFB1YmxpY1VSTE1hbmFnZXJNYXAmIHB1YmxpY1VS
TE1hbmFnZXJNYXAoKTsKKworY2xhc3MgUHVibGljVVJMTWFuYWdlciA6IHB1YmxpYyBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUHVibGljVVJMTWFu
YWdlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAg
ICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKQorICAgIHsKKyAgICAg
ICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBibG9iVVJMc0VuZCA9IG1fYmxvYlVSTHMuZW5k
KCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9ibG9i
VVJMcy5iZWdpbigpOyBpdGVyICE9IGJsb2JVUkxzRW5kOyArK2l0ZXIpCisgICAgICAgICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChLVVJMKFBhcnNlZFVSTFN0
cmluZywgKml0ZXIpKTsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIEhhc2hT
ZXQ8U3RyaW5nPjo6aXRlcmF0b3Igc3RyZWFtVVJMc0VuZCA9IG1fc3RyZWFtVVJMcy5lbmQoKTsK
KyAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N0cmVhbVVS
THMuYmVnaW4oKTsgaXRlciAhPSBzdHJlYW1VUkxzRW5kOyArK2l0ZXIpCisgICAgICAgICAgICBN
ZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChL
VVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKKyNlbmRpZgorCisgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
ICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7CisgICAg
ICAgIHB1YmxpY1VSTE1hbmFnZXJNYXAoKS5yZW1vdmUoY29udGV4dCk7CisgICAgfQorCisgICAg
SGFzaFNldDxTdHJpbmc+JiBibG9iVVJMcygpIHsgcmV0dXJuIG1fYmxvYlVSTHM7IH0KKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIEhhc2hTZXQ8U3RyaW5nPiYgc3RyZWFtVVJMcygpIHsg
cmV0dXJuIG1fc3RyZWFtVVJMczsgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgSGFzaFNldDxT
dHJpbmc+IG1fYmxvYlVSTHM7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBIYXNoU2V0
PFN0cmluZz4gbV9zdHJlYW1VUkxzOworI2VuZGlmCit9OworCitzdGF0aWMgUHVibGljVVJMTWFu
YWdlck1hcCYgcHVibGljVVJMTWFuYWdlck1hcCgpCiB7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChQdWJsaWNVUkxNYW5hZ2VyTWFwLCBzdGF0aWNQdWJsaWNVUkxNYW5hZ2VycywgKCkpOworICAg
IHJldHVybiBzdGF0aWNQdWJsaWNVUkxNYW5hZ2VyczsKIH0KIAotRE9NVVJMOjp+RE9NVVJMKCkK
K3N0YXRpYyBQdWJsaWNVUkxNYW5hZ2VyJiBwdWJsaWNVUkxNYW5hZ2VyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CisgICAgUHVibGljVVJMTWFuYWdl
ck1hcCYgbWFwID0gcHVibGljVVJMTWFuYWdlck1hcCgpOworICAgIE93blB0cjxQdWJsaWNVUkxN
YW5hZ2VyPiYgbWFuYWdlciA9IG1hcC5hZGQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbnVsbHB0
cikuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAoIW1hbmFnZXIpCisgICAgICAgIG1hbmFnZXIgPSBh
ZG9wdFB0cihuZXcgUHVibGljVVJMTWFuYWdlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Cisg
ICAgcmV0dXJuICptYW5hZ2VyOwogfQogCi12b2lkIERPTVVSTDo6Y29udGV4dERlc3Ryb3llZCgp
CitzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBwdWJsaWNCbG9iVVJMcyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewotICAgIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz46Oml0
ZXJhdG9yIHB1YmxpY0Jsb2JVUkxzRW5kID0gbV9wdWJsaWNCbG9iVVJMcy5lbmQoKTsKLSAgICBm
b3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVibGljQmxvYlVSTHMuYmVn
aW4oKTsgaXRlciAhPSBwdWJsaWNCbG9iVVJMc0VuZDsgKytpdGVyKQotICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywg
Kml0ZXIpKTsKKyAgICByZXR1cm4gcHVibGljVVJMTWFuYWdlcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KS5ibG9iVVJMcygpOworfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNo
U2V0PFN0cmluZz46Oml0ZXJhdG9yIHB1YmxpY1N0cmVhbVVSTHNFbmQgPSBtX3B1YmxpY1N0cmVh
bVVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3B1YmxpY1N0cmVhbVVSTHMuYmVnaW4oKTsgaXRlciAhPSBwdWJsaWNTdHJlYW1VUkxzRW5kOyAr
K2l0ZXIpCi0gICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rl
ck1lZGlhU3RyZWFtVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOwotI2VuZGlmCitz
dGF0aWMgSGFzaFNldDxTdHJpbmc+JiBwdWJsaWNTdHJlYW1VUkxzKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgcmV0dXJuIHB1YmxpY1VSTE1h
bmFnZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc3RyZWFtVVJMcygpOwogfQogCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLVN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChNZWRpYVN0
cmVhbSogc3RyZWFtKQorU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1lZGlhU3RyZWFtKiBzdHJlYW0p
CiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIXN0cmVhbSkKKyAgICBp
ZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIXN0cmVhbSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1
YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC04MSw1MCArMTI0LDUxIEBAIFN0cmluZyBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
CiAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS5yZWdpc3Rlck1lZGlhU3RyZWFt
VVJMKHB1YmxpY1VSTCwgc3RyZWFtKTsKLSAgICBtX3B1YmxpY1N0cmVhbVVSTHMuYWRkKHB1Ymxp
Y1VSTC5zdHJpbmcoKSk7CisgICAgcHVibGljU3RyZWFtVVJMcyhzY3JpcHRFeGVjdXRpb25Db250
ZXh0KS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3Ry
aW5nKCk7CiB9CiAjZW5kaWYKIAotU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKEJsb2Iq
IGJsb2IpCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYikKIHsKLSAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxvYikKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgfHwgIWJsb2IpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIEtVUkwg
cHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpj
cmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7
CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChwdWJsaWNVUkws
IGJsb2ItPnVybCgpKTsKLSAgICBtX3B1YmxpY0Jsb2JVUkxzLmFkZChwdWJsaWNVUkwuc3RyaW5n
KCkpOworICAgIHB1YmxpY0Jsb2JVUkxzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmFkZChwdWJs
aWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5zdHJpbmcoKTsKIH0KIAot
dm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3Zv
aWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgaWYgKCFt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQogICAgICAgICByZXR1cm47CiAKICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0cmluZyk7CiAK
LSAgICBpZiAobV9wdWJsaWNCbG9iVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CisgICAg
SGFzaFNldDxTdHJpbmc+JiBibG9iVVJMcyA9IHB1YmxpY0Jsb2JVUkxzKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOworICAgIGlmIChibG9iVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAg
ICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0g
ICAgICAgIG1fcHVibGljQmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CisgICAgICAgIGJs
b2JVUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KLQogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgaWYgKG1fcHVibGljU3RyZWFtVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkp
KSB7CisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxzID0gcHVibGljU3RyZWFtVVJMcyhz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoc3RyZWFtVVJMcy5jb250YWlucyh1cmwu
c3RyaW5nKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgb2YgdGhpcyBhc3NlcnRp
b24gYmVsb3cuIFJhaXNlIGEgc3BlYyBxdWVzdGlvbiBpZiByZXF1aXJlZC4KICAgICAgICAgLy8g
U2luY2UgV2ViV29ya2VycyBjYW5ub3Qgb2J0YWluIFN0cmVhbSBvYmplY3RzLCB3ZSBzaG91bGQg
YmUgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0
cmVhbVVSTCh1cmwpOwotICAgICAgICBtX3B1YmxpY1N0cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJp
bmcoKSk7CisgICAgICAgIHN0cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQog
I2VuZGlmCiB9CisjZW5kaWYgLy8gRU5BQkxFKEJMT0IpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9CKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9E
T01VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCShyZXZp
c2lvbiAxMDUzODUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1v
YmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI3
LDggQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAotI2lmIEVOQUJMRShC
TE9CKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
QEAgLTQwLDMwICszOCwyMiBAQCBjbGFzcyBCbG9iOwogY2xhc3MgTWVkaWFTdHJlYW07CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBET01VUkwgOiBwdWJsaWMgUmVmQ291
bnRlZDxET01VUkw+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01V
Ukwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9Ci0gICAgfkRPTVVSTCgpOwotCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFt
Kik7Ci0jZW5kaWYKLSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKEJsb2IqKTsKLSAgICB2b2lk
IHJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbmcmKTsKK2NsYXNzIERPTVVSTCA6IHB1YmxpYyBS
ZWZDb3VudGVkPERPTVVSTD4gewogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IERPTVVSTChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9N
VVJMPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBzdGF0
aWMgdm9pZCBjb250ZXh0RGVzdHJveWVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3Jl
YXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKik7CisgICAgc3RhdGlj
IHZvaWQgcmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1
YmxpY1N0cmVhbVVSTHM7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtKik7CisjZW5kaWYKICNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEJMT0IpCi0KICNlbmRp
ZiAvLyBET01VUkxfaApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkocmV2aXNpb24gMTA1Mzg1
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI3LDE0IEBACiBt
b2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwK
LSAgICAgICAgT21pdENvbnN0cnVjdG9yLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRl
ciwKICAgICAgICAgR2VuZXJhdGVUb0pTLAotICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgICAg
ICBDb25zdHJ1Y3RvcgogICAgIF0gRE9NVVJMIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9T
VFJFQU0pICYmIEVOQUJMRV9NRURJQV9TVFJFQU0KLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5n
VG89VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0
cmVhbSk7CisgICAgICAgIHN0YXRpYyBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChp
biBNZWRpYVN0cmVhbSBzdHJlYW0pOwogI2VuZGlmCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmlu
Z1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwot
ICAgICAgICB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICAg
c3RhdGljIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZCxDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIEJsb2IgYmxvYik7Cisg
ICAgICAgIHN0YXRpYyBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCByZXZv
a2VPYmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDEwNTM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5MCwxNSArMTg5MCw2IEBAIHZv
aWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3QKICAgICBkaWFsb2dGcmFtZS0+
cGFnZSgpLT5jaHJvbWUoKS0+cnVuTW9kYWwoKTsKIH0KIAotI2lmIEVOQUJMRShCTE9CKQotRE9N
VVJMKiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RvbVVSTCAm
JiBpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgbV9kb21VUkwgPSBET01V
Ukw6OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBt
X2RvbVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFFVT1RBKQogU3RvcmFnZUlu
Zm8qIERPTVdpbmRvdzo6d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAxMDUzODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsMTAgKzM1MSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxET01XaW5kb3c+OjpyZWY7CiAg
ICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6ZGVyZWY7CiAKLSNpZiBFTkFCTEUo
QkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihkZXZpY2Vtb3Rpb24pOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGRldmljZW9yaWVudGF0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwJKHJldmlzaW9uIDEwNTM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzk4LDcgKzc5OCw3IEBAIG1vZHVsZSB3aW5kb3cgewog
CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gV2ViS2l0QmxvYkJ1aWxkZXJD
b25zdHJ1Y3RvciBXZWJLaXRCbG9iQnVpbGRlcjsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAgIGF0dHJpYnV0
ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMQ29uc3RydWN0b3Igd2Via2l0VVJMOwogCiAjaWYg
ZGVmaW5lZChFTkFCTEVfUVVPVEEpICYmIEVOQUJMRV9RVU9UQQogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9UXVvdGFdIFN0b3JhZ2VJbmZvIHdlYmtpdFN0b3Jh
Z2VJbmZvOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShy
ZXZpc2lvbiAxMDUzODUpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsMTUgKzM3Nyw2IEBAIEV2ZW50VGFyZ2V0RGF0YSog
V29ya2VyQ29udGV4dDo6ZW5zdXJlRXYKICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwog
fQogCi0jaWYgRU5BQkxFKEJMT0IpCi1ET01VUkwqIFdvcmtlckNvbnRleHQ6OndlYmtpdFVSTCgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RvbVVSTCkKLSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6
OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBtX2Rv
bVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogdm9pZCBX
b3JrZXJDb250ZXh0Ojp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25n
IHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiAxMDUzODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDEw
ICsxMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRleHRUaHJlYWQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25G
b3JiaWRkZW4oKSBjb25zdDsKIAotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICBET01VUkwqIHdl
YmtpdFVSTCgpIGNvbnN0OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAg
ICAgIGVudW0gRmlsZVN5c3RlbVR5cGUgewogICAgICAgICAgICAgVEVNUE9SQVJZLApJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiAxMDUzODUp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1
dGUgRmlsZVJlYWRlclN5bmNDb25zdHJ1Y3RvciBGaWxlUmVhZGVyU3luYzsKICNlbmRpZgogCi0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtp
dFVSTDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkxDb25zdHJ1
Y3RvciB3ZWJraXRVUkw7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYgRU5B
QkxFX0ZJTEVfU1lTVEVNCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9
IDA7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUzODUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMS0xNyAgS2F1c3R1YmggQXRy
YXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWdyYXRlIGNyZWF0
ZU9iamVjdFVSTCAmIHJldm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3Qg
dG8gY2hlY2sgaWYgY3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIGFyZSBzdGF0aWMg
ZnVuY3Rpb25zLgorCisgICAgICAgICogZmFzdC9kb20vRE9NVVJMOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNl
b2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xOCAgRGF2aWQgR3Jv
Z2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgdXBkYXRlIHJlc29sdmUtdXJs
LXN5bmMtZXhwZWN0ZWQudHh0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hl
Y2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVu
Y3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitUZXN0IGluc3RhbmNlb2YgZnVuY3Rpb25zIGFu
ZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgJ2NyZWF0ZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIGlzIHRydWUKK1BBU1MgJ3Jl
dm9rZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIGlzIHRydWUKK1BBU1MgdXJsLmNyZWF0ZU9iamVj
dFVSTCBpcyB1bmRlZmluZWQuCitQQVNTIHVybC5yZXZva2VPYmplY3RVUkwgaXMgdW5kZWZpbmVk
LgorUEFTUyB3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTCBpcyBkZWZpbmVkLgorUEFT
UyB3aW5kb3cud2Via2l0VVJMLnJldm9rZU9iamVjdFVSTCBpcyBkZWZpbmVkLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFu
Y2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgaW5zdGFu
Y2VvZiBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMgb2Ygd2Via2l0VVJMLiIpOworCit2YXIgdXJs
ID0gbmV3IHdlYmtpdFVSTDsKKworc2hvdWxkQmVUcnVlKCInY3JlYXRlT2JqZWN0VVJMJyBpbiB3
ZWJraXRVUkwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3Jldm9rZU9iamVjdFVSTCcgaW4gd2Via2l0VVJM
Iik7CisKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwuY3JlYXRlT2JqZWN0VVJMIik7CitzaG91bGRC
ZVVuZGVmaW5lZCgidXJsLnJldm9rZU9iamVjdFVSTCIpOworCitzaG91bGRCZURlZmluZWQoIndp
bmRvdy53ZWJraXRVUkwuY3JlYXRlT2JqZWN0VVJMIik7CitzaG91bGRCZURlZmluZWQoIndpbmRv
dy53ZWJraXRVUkwucmV2b2tlT2JqZWN0VVJMIik7CisKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124918</attachid>
            <date>2012-02-01 02:37:31 -0800</date>
            <delta_ts>2012-02-02 23:30:49 -0800</delta_ts>
            <desc>Work in progress patch</desc>
            <filename>74386_new.patch</filename>
            <type>text/plain</type>
            <size>19490</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAyLTAxICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
Y3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIHRvIHN0YXRpYyAoQ2xhc3MpIG1ldGhv
ZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAor
ICAgICAgICBBbHJlYWR5IEV4aXN0aW5nIC0KKyAgICAgICAgICAgIGZhc3QvZmlsZXMvcmV2b2tl
LWJsb2ItdXJsLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZG9tL3dpbmRvdy1kb211cmwtY3Jhc2gu
aHRtbAorICAgICAgICAgICAgZmFzdC9maWxlcy9hcHBseS1ibG9iLXVybC10by1pbWcuaHRtbAor
ICAgICAgICAgICAgZmFzdC9maWxlcy9jcmVhdGUtYmxvYi11cmwtY3Jhc2guaHRtbAorICAgICAg
ICAgICAgZmFzdC9maWxlcy93b3JrZXJzL2lubGluZS13b3JrZXItdmlhLWJsb2ItdXJsLmh0bWwK
KworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZpbGVUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpwdWJsaWNVUkxNYW5hZ2VyKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OlB1YmxpY1VSTE1hbmFnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6Y29udGV4dERlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnJldm9rZU9iamVjdFVSTCk6CisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAg
ICAgICAgKERPTVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFB1YmxpY1VSTE1hbmFnZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UHVibGljVVJMTWFuYWdlcjo6YmxvYlVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6UHVi
bGljVVJMTWFuYWdlcjo6c3RyZWFtVVJMcyk6CisgICAgICAgICogaHRtbC9ET01VUkwuaWRsOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgIChET01XaW5kb3cpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6Cisg
ICAgICAgIChXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQu
aWRsOgorCiAyMDEyLTAyLTAxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBhbm90aGVyIEdUSyBidWlsZCBmaXggYWZ0ZXIgcjEw
NjQ0Ni4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAJKHJldmlzaW9uIDEwNjQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCisjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVRocmVhZC5oIgpAQCAtMTI2LDYgKzEyNyw4IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5T
Y3JpcHRFeGVjdXRpb24KICAgICAgICAgbV9maWxlVGhyZWFkID0gMDsKICAgICB9CiAjZW5kaWYK
KyAgICBpZiAobV9wdWJsaWNVUkxNYW5hZ2VyKQorICAgICAgICBtX3B1YmxpY1VSTE1hbmFnZXIt
PmNvbnRleHREZXN0cm95ZWQoKTsKIH0KIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC0z
ODUsNiArMzg4LDE2IEBAIEZpbGVUaHJlYWQqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZpbGUK
IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEJMT0IpCitQdWJsaWNVUkxNYW5hZ2VyKiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpwdWJsaWNVUkxNYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fcHVibGlj
VVJMTWFuYWdlcikKKyAgICAgICAgbV9wdWJsaWNVUkxNYW5hZ2VyID0gYWRvcHRQdHIobmV3IFB1
YmxpY1VSTE1hbmFnZXIodGhpcykpOworCisgICAgcmV0dXJuIG1fcHVibGljVVJMTWFuYWdlci5n
ZXQoKTsKK30KKyNlbmRpZgorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFkanVzdE1p
bmltdW1UaW1lckludGVydmFsKGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkKIHsKICAg
ICBpZiAobWluaW11bVRpbWVySW50ZXJ2YWwoKSAhPSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShy
ZXZpc2lvbiAxMDY0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw5IEBAIGNsYXNzIEV2ZW50UXVldWU7
CiBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogCisjaWYgRU5BQkxFKEJM
T0IpCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOworI2VuZGlmCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOwpA
QCAtMTAzLDYgKzEwNiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQWN0aXZl
RE9NT2JqZWN0cygpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwog
CisjaWYgRU5BQkxFKEJMT0IpCisgICAgUHVibGljVVJMTWFuYWdlciogcHVibGljVVJMTWFuYWdl
cigpOworI2VuZGlmCiAgICAgdm9pZCBkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9N
T2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUFjdGl2
ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIApAQCAtMjA1LDYgKzIxMSw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50OwogICAgIGNsYXNzIFBlbmRpbmdF
eGNlcHRpb247CiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlvbj4gPiA+
IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CisjaWYgRU5BQkxFKEJMT0IpCisgICAgT3duUHRyPFB1Ymxp
Y1VSTE1hbmFnZXI+IG1fcHVibGljVVJMTWFuYWdlcjsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCShyZXZpc2lvbiAxMDY0NTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw1NiArMjUsNTIgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoQkxPQikKLQogI2luY2x1ZGUgIkRPTVVSTC5oIgog
CisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworI2lm
IEVOQUJMRShCTE9CKQogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJCbG9iVVJMLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLQorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVn
aXN0cnkuaCIKICNlbmRpZgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NVVJM
OjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
LSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
Ci17Ci19Ci0KLURPTVVSTDo6fkRPTVVSTCgpCisjaWYgRU5BQkxFKEJMT0IpCitQdWJsaWNVUkxN
YW5hZ2VyOjpQdWJsaWNVUkxNYW5hZ2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKIHsKIH0KIAotdm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95ZWQoKQor
dm9pZCBQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVzdHJveWVkKCkKIHsKLSAgICBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotCi0gICAgSGFzaFNldDxT
dHJpbmc+OjppdGVyYXRvciBwdWJsaWNCbG9iVVJMc0VuZCA9IG1fcHVibGljQmxvYlVSTHMuZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY0Js
b2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljQmxvYlVSTHNFbmQ7ICsraXRlcikKKyAgICBI
YXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGJsb2JVUkxzRW5kID0gbV9ibG9iVVJMcy5lbmQoKTsK
KyAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fYmxvYlVSTHMuYmVn
aW4oKTsgaXRlciAhPSBibG9iVVJMc0VuZDsgKytpdGVyKQogICAgICAgICBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIp
KTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVy
YXRvciBwdWJsaWNTdHJlYW1VUkxzRW5kID0gbV9wdWJsaWNTdHJlYW1VUkxzLmVuZCgpOwotICAg
IGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNTdHJlYW1VUkxz
LmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljU3RyZWFtVVJMc0VuZDsgKytpdGVyKQorICAgIEhhc2hT
ZXQ8U3RyaW5nPjo6aXRlcmF0b3Igc3RyZWFtVVJMc0VuZCA9IG1fc3RyZWFtVVJMcy5lbmQoKTsK
KyAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fc3RyZWFtVVJMcy5i
ZWdpbigpOyBpdGVyICE9IHN0cmVhbVVSTHNFbmQ7ICsraXRlcikKICAgICAgICAgTWVkaWFTdHJl
YW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJz
ZWRVUkxTdHJpbmcsICppdGVyKSk7CiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVhbSkK
K1N0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBNZWRpYVN0cmVhbSogc3RyZWFtKQogewotICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAg
IEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9i
VVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKSk7CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIApAQCAtODEsNTAgKzc4LDQ5IEBAIFN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TChNZWRpYVN0cmUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgTWVkaWFTdHJl
YW1SZWdpc3RyeTo6cmVnaXN0cnkoKS5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHB1YmxpY1VSTCwg
c3RyZWFtKTsKLSAgICBtX3B1YmxpY1N0cmVhbVVSTHMuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7
CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLT5zdHJlYW1V
UkxzKCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0
cmluZygpOwogfQotI2VuZGlmCiAKLVN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChCbG9i
KiBibG9iKQorU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IpCiB7Ci0gICAgaWYgKCFt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2IpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0IHx8ICFibG9iKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJM
IHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6
Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkp
OwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwocHVibGljVVJM
LCBibG9iLT51cmwoKSk7Ci0gICAgbV9wdWJsaWNCbG9iVVJMcy5hZGQocHVibGljVVJMLnN0cmlu
ZygpKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCktPmJs
b2JVUkxzKCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJM
LnN0cmluZygpOwogfQogCi12b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQordm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEtVUkwgdXJsKEtVUkwo
KSwgdXJsU3RyaW5nKTsKIAotICAgIGlmIChtX3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5zKHVybC5z
dHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLT5ibG9iVVJMcygpOworICAgIGlmIChibG9i
VVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0gICAgICAgIG1fcHVibGljQmxvYlVSTHMu
cmVtb3ZlKHVybC5zdHJpbmcoKSk7CisgICAgICAgIGJsb2JVUkxzLnJlbW92ZSh1cmwuc3RyaW5n
KCkpOwogICAgIH0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKG1fcHVibGlj
U3RyZWFtVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CisgICAgSGFzaFNldDxTdHJpbmc+
JiBzdHJlYW1VUkxzID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigp
LT5zdHJlYW1VUkxzKCk7CisgICAgaWYgKHN0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygp
KSkgewogICAgICAgICAvLyBGSVhNRTogbWFrZSBzdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIGJlbG93
LiBSYWlzZSBhIHNwZWMgcXVlc3Rpb24gaWYgcmVxdWlyZWQuCiAgICAgICAgIC8vIFNpbmNlIFdl
YldvcmtlcnMgY2Fubm90IG9idGFpbiBTdHJlYW0gb2JqZWN0cywgd2Ugc2hvdWxkIGJlIG9uIHRo
ZSBtYWluIHRocmVhZC4KICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
TWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwo
dXJsKTsKLSAgICAgICAgbV9wdWJsaWNTdHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwor
ICAgICAgICBzdHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KICNlbmRpZgog
fQorI2VuZGlmIC8vIEVOQUJMRShCTE9CKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoQkxPQikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkocmV2aXNpb24gMTA2
NDU2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkgKzI3LDcgQEAKICNp
Zm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAotI2lmIEVOQUJMRShCTE9CKQotCi0j
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDAsMzAgKzM5LDQ1IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBN
ZWRpYVN0cmVhbTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIERPTVVS
TCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciB7CitjbGFzcyBET01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+IHsKKwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBET01VUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9Ci0gICAgfkRPTVVSTCgpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IERPTVVSTCk7IH0KKworI2lmIEVOQUJMRShCTE9CKQorICAgIHN0YXRpYyB2b2lkIGNvbnRleHRE
ZXN0cm95ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCisgICAgc3RhdGljIFN0cmluZyBj
cmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqKTsKKyAgICBzdGF0
aWMgdm9pZCByZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVj
dFVSTChNZWRpYVN0cmVhbSopOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbSopOwogI2VuZGlmCi0gICAgU3RyaW5n
IGNyZWF0ZU9iamVjdFVSTChCbG9iKik7Ci0gICAgdm9pZCByZXZva2VPYmplY3RVUkwoY29uc3Qg
U3RyaW5nJik7CisjZW5kaWYKK307CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRE9NVVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyNpZiBFTkFCTEUoQkxPQikKK2NsYXNzIFB1YmxpY1VS
TE1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQdWJsaWNVUkxNYW5hZ2VyPiB7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworcHVibGljOgorICAgIGV4cGxpY2l0IFB1
YmxpY1VSTE1hbmFnZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZvaWQgY29udGV4
dERlc3Ryb3llZCgpOwogCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGljQmxvYlVSTHM7Cisg
ICAgSGFzaFNldDxTdHJpbmc+JiBibG9iVVJMcygpIHsgcmV0dXJuIG1fYmxvYlVSTHM7IH0KICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY1N0cmVh
bVVSTHM7CisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxzKCkgeyByZXR1cm4gbV9zdHJl
YW1VUkxzOyB9CiAjZW5kaWYKKworcHJpdmF0ZToKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ibG9i
VVJMczsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3N0
cmVhbVVSTHM7CisjZW5kaWYKKwogfTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKLQogI2VuZGlmIC8vIERPTVVSTF9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9ET01VUkwuaWRsCShyZXZpc2lvbiAxMDY0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVVSTC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiwxNSArMjcsMTUgQEAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1CTE9CLAotICAgICAgICBPbWl0Q29uc3RydWN0
b3IsCisgICAgICAgIENvbnN0cnVjdG9yLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRl
ciwKICAgICAgICAgR2VuZXJhdGVUb0pTLAogICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0g
RE9NVVJMIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJFQU0pICYmIEVOQUJMRV9NRURJ
QV9TVFJFQU0KLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJp
bmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CisgICAgICAgIHN0YXRp
YyBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCxDb252ZXJ0TnVsbFN0cmluZ1RvPVVu
ZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0p
OwogI2VuZGlmCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3Ry
aW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAgICB2b2lkIHJldm9rZU9i
amVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICAgc3RhdGljIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LENvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJp
bmcgY3JlYXRlT2JqZWN0VVJMKGluIEJsb2IgYmxvYik7CisgICAgICAgIHN0YXRpYyBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3Ry
aW5nIHVybCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJl
dmlzaW9uIDEwNjQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg4NywxNSArMTg4Nyw2IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9k
YWxEaWFsb2coY29uc3QgU3QKICAgICBkaWFsb2dGcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+cnVu
TW9kYWwoKTsKIH0KIAotI2lmIEVOQUJMRShCTE9CKQotRE9NVVJMKiBET01XaW5kb3c6OndlYmtp
dFVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RvbVVSTCAmJiBpc0N1cnJlbnRseURpc3BsYXll
ZEluRnJhbWUoKSkKLSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0KLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFFVT1RBKQogU3RvcmFnZUluZm8qIERPTVdpbmRvdzo6d2Via2l0
U3RvcmFnZUluZm8oKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZp
c2lvbiAxMDY0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTEsMTAgKzM1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxET01XaW5kb3c+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50
ZWQ8RE9NV2luZG93Pjo6ZGVyZWY7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJM
KiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkZXZpY2Vtb3Rp
b24pOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRldmljZW9yaWVu
dGF0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDEwNjQ1
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNzgzLDcgKzc4Myw3IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIGF0dHJpYnV0ZSBb
Q29uZGl0aW9uYWw9QkxPQl0gV2ViS2l0QmxvYkJ1aWxkZXJDb25zdHJ1Y3RvciBXZWJLaXRCbG9i
QnVpbGRlcjsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0Jd
IERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0g
RE9NVVJMQ29uc3RydWN0b3Igd2Via2l0VVJMOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfUVVPVEEp
ICYmIEVOQUJMRV9RVU9UQQogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1
bnRpbWU9UXVvdGFdIFN0b3JhZ2VJbmZvIHdlYmtpdFN0b3JhZ2VJbmZvOwpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiAxMDY0NTYpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzcsMTUgKzM3Nyw2IEBAIEV2ZW50VGFyZ2V0RGF0YSogV29ya2VyQ29udGV4dDo6ZW5zdXJl
RXYKICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwogfQogCi0jaWYgRU5BQkxFKEJMT0Ip
Ci1ET01VUkwqIFdvcmtlckNvbnRleHQ6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2RvbVVSTCkKLSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogdm9pZCBXb3JrZXJDb250ZXh0Ojp3ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8Rmls
ZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5oCShyZXZpc2lvbiAxMDY0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDEwICsxMzEsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKIAot
I2lmIEVOQUJMRShCTE9CKQotICAgICAgICBET01VUkwqIHdlYmtpdFVSTCgpIGNvbnN0OwotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIGVudW0gRmlsZVN5c3RlbVR5
cGUgewogICAgICAgICAgICAgVEVNUE9SQVJZLApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiAxMDY0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcg
QEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1dGUgRmlsZVJlYWRlclN5bmNDb25z
dHJ1Y3RvciBGaWxlUmVhZGVyU3luYzsKICNlbmRpZgogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmli
dXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7CiAKICNp
ZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDY0NTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyOCBAQAorMjAxMi0wMi0wMSAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1v
dG9yb2xhLmNvbT4KKworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJldm9rZU9i
amVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgdG8gY2hlY2sgaWYgY3JlYXRlT2Jq
ZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIGFyZSBzdGF0aWMgZnVuY3Rpb25zLgorCisgICAgICAg
ICogZmFzdC9kb20vRE9NVVJMOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvY2hl
Y2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5o
dG1sOiBBZGRlZC4KKwogMjAxMi0wMi0wMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHJlYmFzZWxpbmUgYWZ0ZXIgcjEw
NjQ0NQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2Yt
ZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2st
aW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1MSBAQAorVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBv
ZiB3ZWJraXRVUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICdjcmVh
dGVPYmplY3RVUkwnIGluIHdlYmtpdFVSTCBpcyB0cnVlCitQQVNTICdyZXZva2VPYmplY3RVUkwn
IGluIHdlYmtpdFVSTCBpcyB0cnVlCitQQVNTIHVybC5jcmVhdGVPYmplY3RVUkwgaXMgdW5kZWZp
bmVkLgorUEFTUyB1cmwucmV2b2tlT2JqZWN0VVJMIGlzIHVuZGVmaW5lZC4KK1BBU1Mgd2luZG93
LndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwgaXMgZGVmaW5lZC4KK1BBU1Mgd2luZG93LndlYmtp
dFVSTC5yZXZva2VPYmplY3RVUkwgaXMgZGVmaW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1
bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJM
L2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDcyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGluc3RhbmNlb2YgZnVuY3Rpb25z
IGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJraXRV
Ukw7CisKK3Nob3VsZEJlVHJ1ZSgiJ2NyZWF0ZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIik7Citz
aG91bGRCZVRydWUoIidyZXZva2VPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworCitzaG91bGRC
ZVVuZGVmaW5lZCgidXJsLmNyZWF0ZU9iamVjdFVSTCIpOworc2hvdWxkQmVVbmRlZmluZWQoInVy
bC5yZXZva2VPYmplY3RVUkwiKTsKKworc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cud2Via2l0VVJM
LmNyZWF0ZU9iamVjdFVSTCIpOworc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cud2Via2l0VVJMLnJl
dm9rZU9iamVjdFVSTCIpOworCisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125273</attachid>
            <date>2012-02-02 23:30:49 -0800</date>
            <delta_ts>2012-02-03 00:48:32 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>74386_WIP.patch</filename>
            <type>text/plain</type>
            <size>13616</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDEwNjYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRmlsZVRocmVhZC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQ
b3J0LmgiCisjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKQEAgLTM4NSw2ICszODYsMTUgQEAgRmlsZVRocmVhZCogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZmlsZQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQkxPQikKK1B1YmxpY1VSTE1hbmFn
ZXImIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnB1YmxpY1VSTE1hbmFnZXIoKQoreworICAgIGlm
ICghbV9wdWJsaWNVUkxNYW5hZ2VyKQorICAgICAgICBtX3B1YmxpY1VSTE1hbmFnZXIgPSBQdWJs
aWNVUkxNYW5hZ2VyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fcHVibGljVVJMTWFuYWdlcjsK
K30KKyNlbmRpZgorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFkanVzdE1pbmltdW1U
aW1lckludGVydmFsKGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkKIHsKICAgICBpZiAo
bWluaW11bVRpbWVySW50ZXJ2YWwoKSAhPSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lv
biAxMDY2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
ICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpA
QCAtNTMsNiArNTQsOSBAQCBjbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBj
bGFzcyBNZXNzYWdlUG9ydDsKIAorI2lmIEVOQUJMRShCTE9CKQorY2xhc3MgUHVibGljVVJMTWFu
YWdlcjsKKyNlbmRpZgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiBjbGFzcyBEYXRhYmFzZTsK
IGNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKQEAgLTEwMyw2ICsxMDcsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorI2lmIEVOQUJMRShCTE9CKQorICAg
IFB1YmxpY1VSTE1hbmFnZXImIHB1YmxpY1VSTE1hbmFnZXIoKTsKKyNlbmRpZgogICAgIHZvaWQg
ZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCosIHZvaWQqIHVwY2FzdFBv
aW50ZXIpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2Jq
ZWN0Kik7CiAKQEAgLTIwNSw2ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbkRpc3Bh
dGNoRXJyb3JFdmVudDsKICAgICBjbGFzcyBQZW5kaW5nRXhjZXB0aW9uOwogICAgIE93blB0cjxW
ZWN0b3I8T3duUHRyPFBlbmRpbmdFeGNlcHRpb24+ID4gPiBtX3BlbmRpbmdFeGNlcHRpb25zOwor
I2lmIEVOQUJMRShCTE9CKQorICAgIFB1YmxpY1VSTE1hbmFnZXIqIG1fcHVibGljVVJMTWFuYWdl
cjsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJh
c2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCShy
ZXZpc2lvbiAxMDY2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTW90b3Jv
bGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwx
MSArMzAsMTUgQEAKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQpAQCAtNDMsMzcgKzQ4LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NVVJM
OjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
LSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
Ci17Ci19Ci0KLURPTVVSTDo6fkRPTVVSTCgpCi17Ci19Ci0KLXZvaWQgRE9NVVJMOjpjb250ZXh0
RGVzdHJveWVkKCkKLXsKLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERl
c3Ryb3llZCgpOwotCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNCbG9iVVJM
c0VuZCA9IG1fcHVibGljQmxvYlVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46
Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY0Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGlj
QmxvYlVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5y
ZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7Ci0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljU3Ry
ZWFtVVJMc0VuZCA9IG1fcHVibGljU3RyZWFtVVJMcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8
U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVibGljU3RyZWFtVVJMcy5iZWdpbigpOyBpdGVy
ICE9IHB1YmxpY1N0cmVhbVVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAgTWVkaWFTdHJlYW1SZWdp
c3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsICppdGVyKSk7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1T
dHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVhbSkKK1N0cmlu
ZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBNZWRpYVN0cmVhbSogc3RyZWFtKQogewotICAgIGlmICghbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0IHx8ICFzdHJlYW0pCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIEtVUkwg
cHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpj
cmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7
CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IApAQCAtODEsNDYgKzYyLDQ4IEBAIFN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChNZWRp
YVN0cmUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgTWVkaWFTdHJlYW1SZWdp
c3RyeTo6cmVnaXN0cnkoKS5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHB1YmxpY1VSTCwgc3RyZWFt
KTsKLSAgICBtX3B1YmxpY1N0cmVhbVVSTHMuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLnN0cmVhbVVSTHMoKS5h
ZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3RyaW5nKCk7
CiB9CiAjZW5kaWYKIAotU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKEJsb2IqIGJsb2Ip
CitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYikKIHsKLSAgICBpZiAoIW1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxvYikKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgfHwgIWJsb2IpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIEtVUkwgcHVibGlj
VVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQ
dWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAg
aWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChwdWJsaWNVUkwsIGJsb2It
PnVybCgpKTsKLSAgICBtX3B1YmxpY0Jsb2JVUkxzLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwor
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5ibG9iVVJMcygp
LmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5zdHJpbmco
KTsKIH0KIAotdm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKK3ZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0g
ICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0
cmluZyk7CiAKLSAgICBpZiAobV9wdWJsaWNCbG9iVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkp
KSB7CisgICAgSGFzaFNldDxTdHJpbmc+JiBibG9iVVJMcyA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5ibG9iVVJMcygpOworICAgIGlmIChibG9iVVJMcy5jb250
YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0gICAgICAgIG1fcHVibGljQmxvYlVSTHMucmVtb3ZlKHVy
bC5zdHJpbmcoKSk7CisgICAgICAgIGJsb2JVUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAg
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKG1fcHVibGljU3RyZWFtVVJM
cy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1V
UkxzID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLnN0cmVhbVVS
THMoKTsKKyAgICBpZiAoc3RyZWFtVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgb2YgdGhpcyBhc3NlcnRpb24gYmVsb3cuIFJhaXNlIGEg
c3BlYyBxdWVzdGlvbiBpZiByZXF1aXJlZC4KICAgICAgICAgLy8gU2luY2UgV2ViV29ya2VycyBj
YW5ub3Qgb2J0YWluIFN0cmVhbSBvYmplY3RzLCB3ZSBzaG91bGQgYmUgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBNZWRpYVN0cmVh
bVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTCh1cmwpOwotICAg
ICAgICBtX3B1YmxpY1N0cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CisgICAgICAgIHN0
cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDEwNjYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
RE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw5ICsyNyw3IEBACiAjaWZuZGVmIERPTVVSTF9oCiAjZGVmaW5lIERPTVVS
TF9oCiAKLSNpZiBFTkFCTEUoQkxPQikKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQwLDMwICsz
OSwyMiBAQCBjbGFzcyBCbG9iOwogY2xhc3MgTWVkaWFTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogCi1jbGFzcyBET01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+
LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpOyB9Ci0gICAgfkRPTVVSTCgpOwotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKik7Ci0jZW5kaWYK
LSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKEJsb2IqKTsKLSAgICB2b2lkIHJldm9rZU9iamVj
dFVSTChjb25zdCBTdHJpbmcmKTsKK2NsYXNzIERPTVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERP
TVVSTD4gewogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IERPTVVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNv
bnRleHREZXN0cm95ZWQoKTsKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBzdGF0aWMgdm9pZCBjb250
ZXh0RGVzdHJveWVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3B1YmxpY0Jsb2JVUkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJM
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKik7CisgICAgc3RhdGljIHZvaWQgcmV2b2tl
T2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY1N0cmVhbVVS
THM7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE1lZGlhU3RyZWFtKik7CisjZW5kaWYKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEJMT0IpCi0KICNlbmRpZiAvLyBET01VUkxf
aApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkocmV2aXNpb24gMTA2NjI4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI3LDE1IEBACiBtb2R1bGUgaHRtbCB7
CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21p
dENvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1Y3RvciwKICAgICAgICAgR2VuZXJhdGVOYXRp
dmVDb252ZXJ0ZXIsCiAgICAgICAgIEdlbmVyYXRlVG9KUywKICAgICAgICAgTm9TdGF0aWNUYWJs
ZXMKICAgICBdIERPTVVSTCB7CiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAmJiBF
TkFCTEVfTUVESUFfU1RSRUFNCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5l
ZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOworICAg
ICAgICBzdGF0aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsQ29udmVydE51bGxT
dHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJl
YW0gc3RyZWFtKTsKICNlbmRpZgotICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmlu
ZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsKLSAgICAgICAgdm9p
ZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CisgICAgICAgIHN0YXRpYyBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCxDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5l
ZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOworICAgICAgICBzdGF0
aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmV2b2tlT2JqZWN0VVJM
KGluIERPTVN0cmluZyB1cmwpOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCShyZXZpc2lvbiAxMDY2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4ODksMTUgKzE4ODksNiBAQCB2b2lkIERPTVdpbmRv
dzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0CiAgICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCktPnJ1bk1vZGFsKCk7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLURPTVVSTCogRE9NV2lu
ZG93Ojp3ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlmICghbV9kb21VUkwgJiYgaXNDdXJyZW50
bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUo
dGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0
KCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShRVU9UQSkKIFN0b3JhZ2VJbmZvKiBET01XaW5k
b3c6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAkocmV2aXNpb24gMTA2NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUxLDEwICszNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6cmVmOwogICAgICAgICB1c2lu
ZyBSZWZDb3VudGVkPERPTVdpbmRvdz46OmRlcmVmOwogCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAg
ICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
ZGV2aWNlbW90aW9uKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihk
ZXZpY2VvcmllbnRhdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZp
c2lvbiAxMDY2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTc4Myw3ICs3ODMsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIFdlYktpdEJsb2JCdWlsZGVyQ29uc3RydWN0b3Ig
V2ViS2l0QmxvYkJ1aWxkZXI7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlv
bmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5B
QkxFX1FVT1RBKSAmJiBFTkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtF
bmFibGVkQXRSdW50aW1lPVF1b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA2
NjI4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzc3LDE1ICszNzcsNiBAQCBFdmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRl
eHQ6OmVuc3VyZUV2CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVO
QUJMRShCTE9CKQotRE9NVVJMKiBXb3JrZXJDb250ZXh0Ojp3ZWJraXRVUkwoKSBjb25zdAotewot
ICAgIGlmICghbV9kb21VUkwpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhp
cy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIHZvaWQgV29ya2VyQ29udGV4
dDo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNz
UmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gMTA2NjI4KQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMCArMTMxLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFk
KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkg
Y29uc3Q7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBj
b25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgICAgICBlbnVtIEZp
bGVTeXN0ZW1UeXBlIHsKICAgICAgICAgICAgIFRFTVBPUkFSWSwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gMTA2NjI4KQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDcgKzEwMSw3IEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYXR0cmlidXRlIEZpbGVSZWFk
ZXJTeW5jQ29uc3RydWN0b3IgRmlsZVJlYWRlclN5bmM7CiAjZW5kaWYKIAotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAg
ICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMQ29uc3RydWN0b3Igd2Via2l0
VVJMOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZ
U1RFTQogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOwo=
</data>
<flag name="commit-queue"
          id="126738"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125279</attachid>
            <date>2012-02-03 00:48:32 -0800</date>
            <delta_ts>2012-02-03 02:50:20 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>74386_WIP.patch</filename>
            <type>text/plain</type>
            <size>16636</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDEwNjYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRmlsZVRocmVhZC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQ
b3J0LmgiCisjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKQEAgLTM4NSw2ICszODYsMTUgQEAgRmlsZVRocmVhZCogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZmlsZQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQkxPQikKK1B1YmxpY1VSTE1hbmFn
ZXImIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnB1YmxpY1VSTE1hbmFnZXIoKQoreworICAgIGlm
ICghbV9wdWJsaWNVUkxNYW5hZ2VyKQorICAgICAgICBtX3B1YmxpY1VSTE1hbmFnZXIgPSBQdWJs
aWNVUkxNYW5hZ2VyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fcHVibGljVVJMTWFuYWdlcjsK
K30KKyNlbmRpZgorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFkanVzdE1pbmltdW1U
aW1lckludGVydmFsKGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkKIHsKICAgICBpZiAo
bWluaW11bVRpbWVySW50ZXJ2YWwoKSAhPSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lv
biAxMDY2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
ICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpA
QCAtNTMsNiArNTQsOSBAQCBjbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBj
bGFzcyBNZXNzYWdlUG9ydDsKIAorI2lmIEVOQUJMRShCTE9CKQorY2xhc3MgUHVibGljVVJMTWFu
YWdlcjsKKyNlbmRpZgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiBjbGFzcyBEYXRhYmFzZTsK
IGNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKQEAgLTEwMyw2ICsxMDcsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorI2lmIEVOQUJMRShCTE9CKQorICAg
IFB1YmxpY1VSTE1hbmFnZXImIHB1YmxpY1VSTE1hbmFnZXIoKTsKKyNlbmRpZgogICAgIHZvaWQg
ZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCosIHZvaWQqIHVwY2FzdFBv
aW50ZXIpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2Jq
ZWN0Kik7CiAKQEAgLTIwNSw2ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbkRpc3Bh
dGNoRXJyb3JFdmVudDsKICAgICBjbGFzcyBQZW5kaW5nRXhjZXB0aW9uOwogICAgIE93blB0cjxW
ZWN0b3I8T3duUHRyPFBlbmRpbmdFeGNlcHRpb24+ID4gPiBtX3BlbmRpbmdFeGNlcHRpb25zOwor
I2lmIEVOQUJMRShCTE9CKQorICAgIFB1YmxpY1VSTE1hbmFnZXIqIG1fcHVibGljVVJMTWFuYWdl
cjsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJh
c2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCShy
ZXZpc2lvbiAxMDY2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTW90b3Jv
bGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwx
MSArMzAsMTUgQEAKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQpAQCAtNDMsMzcgKzQ4LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NVVJM
OjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
LSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
Ci17Ci19Ci0KLURPTVVSTDo6fkRPTVVSTCgpCi17Ci19Ci0KLXZvaWQgRE9NVVJMOjpjb250ZXh0
RGVzdHJveWVkKCkKLXsKLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERl
c3Ryb3llZCgpOwotCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNCbG9iVVJM
c0VuZCA9IG1fcHVibGljQmxvYlVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46
Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY0Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGlj
QmxvYlVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5y
ZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7Ci0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljU3Ry
ZWFtVVJMc0VuZCA9IG1fcHVibGljU3RyZWFtVVJMcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8
U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVibGljU3RyZWFtVVJMcy5iZWdpbigpOyBpdGVy
ICE9IHB1YmxpY1N0cmVhbVVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAgTWVkaWFTdHJlYW1SZWdp
c3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsICppdGVyKSk7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1T
dHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVhbSkKK1N0cmlu
ZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBNZWRpYVN0cmVhbSogc3RyZWFtKQogewotICAgIGlmICghbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0IHx8ICFzdHJlYW0pCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIEtVUkwg
cHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpj
cmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7
CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IApAQCAtODEsNDYgKzYyLDQ4IEBAIFN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChNZWRp
YVN0cmUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgTWVkaWFTdHJlYW1SZWdp
c3RyeTo6cmVnaXN0cnkoKS5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHB1YmxpY1VSTCwgc3RyZWFt
KTsKLSAgICBtX3B1YmxpY1N0cmVhbVVSTHMuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLnN0cmVhbVVSTHMoKS5h
ZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3RyaW5nKCk7
CiB9CiAjZW5kaWYKIAotU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKEJsb2IqIGJsb2Ip
CitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYikKIHsKLSAgICBpZiAoIW1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxvYikKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgfHwgIWJsb2IpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIEtVUkwgcHVibGlj
VVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQ
dWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAg
aWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChwdWJsaWNVUkwsIGJsb2It
PnVybCgpKTsKLSAgICBtX3B1YmxpY0Jsb2JVUkxzLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwor
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5ibG9iVVJMcygp
LmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5zdHJpbmco
KTsKIH0KIAotdm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKK3ZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0g
ICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0
cmluZyk7CiAKLSAgICBpZiAobV9wdWJsaWNCbG9iVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkp
KSB7CisgICAgSGFzaFNldDxTdHJpbmc+JiBibG9iVVJMcyA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5ibG9iVVJMcygpOworICAgIGlmIChibG9iVVJMcy5jb250
YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0gICAgICAgIG1fcHVibGljQmxvYlVSTHMucmVtb3ZlKHVy
bC5zdHJpbmcoKSk7CisgICAgICAgIGJsb2JVUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAg
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKG1fcHVibGljU3RyZWFtVVJM
cy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1V
UkxzID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLnN0cmVhbVVS
THMoKTsKKyAgICBpZiAoc3RyZWFtVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgb2YgdGhpcyBhc3NlcnRpb24gYmVsb3cuIFJhaXNlIGEg
c3BlYyBxdWVzdGlvbiBpZiByZXF1aXJlZC4KICAgICAgICAgLy8gU2luY2UgV2ViV29ya2VycyBj
YW5ub3Qgb2J0YWluIFN0cmVhbSBvYmplY3RzLCB3ZSBzaG91bGQgYmUgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBNZWRpYVN0cmVh
bVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTCh1cmwpOwotICAg
ICAgICBtX3B1YmxpY1N0cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CisgICAgICAgIHN0
cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDEwNjYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
RE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw5ICsyNyw3IEBACiAjaWZuZGVmIERPTVVSTF9oCiAjZGVmaW5lIERPTVVS
TF9oCiAKLSNpZiBFTkFCTEUoQkxPQikKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQwLDMwICsz
OSwyMiBAQCBjbGFzcyBCbG9iOwogY2xhc3MgTWVkaWFTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogCi1jbGFzcyBET01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+
LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpOyB9Ci0gICAgfkRPTVVSTCgpOwotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKik7Ci0jZW5kaWYK
LSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKEJsb2IqKTsKLSAgICB2b2lkIHJldm9rZU9iamVj
dFVSTChjb25zdCBTdHJpbmcmKTsKK2NsYXNzIERPTVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERP
TVVSTD4gewogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IERPTVVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNv
bnRleHREZXN0cm95ZWQoKTsKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBzdGF0aWMgdm9pZCBjb250
ZXh0RGVzdHJveWVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3B1YmxpY0Jsb2JVUkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJM
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKik7CisgICAgc3RhdGljIHZvaWQgcmV2b2tl
T2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY1N0cmVhbVVS
THM7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE1lZGlhU3RyZWFtKik7CisjZW5kaWYKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEJMT0IpCi0KICNlbmRpZiAvLyBET01VUkxf
aApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkocmV2aXNpb24gMTA2NjI4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI3LDE1IEBACiBtb2R1bGUgaHRtbCB7
CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21p
dENvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1Y3RvciwKICAgICAgICAgR2VuZXJhdGVOYXRp
dmVDb252ZXJ0ZXIsCiAgICAgICAgIEdlbmVyYXRlVG9KUywKICAgICAgICAgTm9TdGF0aWNUYWJs
ZXMKICAgICBdIERPTVVSTCB7CiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAmJiBF
TkFCTEVfTUVESUFfU1RSRUFNCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5l
ZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOworICAg
ICAgICBzdGF0aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsQ29udmVydE51bGxT
dHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJl
YW0gc3RyZWFtKTsKICNlbmRpZgotICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmlu
ZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsKLSAgICAgICAgdm9p
ZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CisgICAgICAgIHN0YXRpYyBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCxDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5l
ZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOworICAgICAgICBzdGF0
aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmV2b2tlT2JqZWN0VVJM
KGluIERPTVN0cmluZyB1cmwpOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L1B1YmxpY1VSTE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1B1
YmxpY1VSTE1hbmFnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUHVi
bGljVVJMTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBVQkxJ
Q1VSTE1BTkFHRVJfaAorI2RlZmluZSBQVUJMSUNVUkxNQU5BR0VSX2gKKworI2lmIEVOQUJMRShC
TE9CKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRl
ICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXIgeworCitwdWJsaWM6CisgICAgc3RhdGljIFB1Ymxp
Y1VSTE1hbmFnZXIqIGNyZWF0ZSgpIHsgcmV0dXJuIG5ldyBQdWJsaWNVUkxNYW5hZ2VyOyB9Cisg
ICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkKKyAgICB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5n
Pjo6aXRlcmF0b3IgYmxvYlVSTHNFbmQgPSBtX2Jsb2JVUkxzLmVuZCgpOworICAgICAgICBmb3Ig
KEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fYmxvYlVSTHMuYmVnaW4oKTsgaXRl
ciAhPSBibG9iVVJMc0VuZDsgKytpdGVyKQorICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJh
dG9yIHN0cmVhbVVSTHNFbmQgPSBtX3N0cmVhbVVSTHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFz
aFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9zdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIg
IT0gc3RyZWFtVVJMc0VuZDsgKytpdGVyKQorICAgICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3Ry
eTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJp
bmcsICppdGVyKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JV
UkxzKCkgeyByZXR1cm4gbV9ibG9iVVJMczsgfQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxzKCkgeyByZXR1cm4gbV9zdHJlYW1VUkxzOyB9
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ibG9iVVJMczsKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3N0cmVhbVVSTHM7
CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJMT0IK
KyNlbmRpZiAvLyBQVUJMSUNVUkxNQU5BR0VSX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAJKHJldmlzaW9uIDEwNjYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4OSwxNSArMTg4OSw2IEBAIHZvaWQgRE9NV2luZG93
OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3QKICAgICBkaWFsb2dGcmFtZS0+cGFnZSgpLT5jaHJv
bWUoKS0+cnVuTW9kYWwoKTsKIH0KIAotI2lmIEVOQUJMRShCTE9CKQotRE9NVVJMKiBET01XaW5k
b3c6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RvbVVSTCAmJiBpc0N1cnJlbnRs
eURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0
aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQo
KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFFVT1RBKQogU3RvcmFnZUluZm8qIERPTVdpbmRv
dzo6d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCShyZXZpc2lvbiAxMDY2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsMTAgKzM1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxET01XaW5kb3c+OjpyZWY7CiAgICAgICAgIHVzaW5n
IFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6ZGVyZWY7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAg
ICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihk
ZXZpY2Vtb3Rpb24pOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRl
dmljZW9yaWVudGF0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlz
aW9uIDEwNjYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNzgzLDcgKzc4Myw3IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIGF0
dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gV2ViS2l0QmxvYkJ1aWxkZXJDb25zdHJ1Y3RvciBX
ZWJLaXRCbG9iQnVpbGRlcjsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbmRpdGlv
bmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9u
YWw9QkxPQl0gRE9NVVJMQ29uc3RydWN0b3Igd2Via2l0VVJMOwogCiAjaWYgZGVmaW5lZChFTkFC
TEVfUVVPVEEpICYmIEVOQUJMRV9RVU9UQQogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0Vu
YWJsZWRBdFJ1bnRpbWU9UXVvdGFdIFN0b3JhZ2VJbmZvIHdlYmtpdFN0b3JhZ2VJbmZvOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiAxMDY2
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNzcsMTUgKzM3Nyw2IEBAIEV2ZW50VGFyZ2V0RGF0YSogV29ya2VyQ29udGV4
dDo6ZW5zdXJlRXYKICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwogfQogCi0jaWYgRU5B
QkxFKEJMT0IpCi1ET01VUkwqIFdvcmtlckNvbnRleHQ6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2RvbVVSTCkKLSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlz
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsK
LX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogdm9pZCBXb3JrZXJDb250ZXh0
Ojp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NS
ZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiAxMDY2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDEwICsxMzEsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBj
b25zdDsKIAotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICBET01VUkwqIHdlYmtpdFVSTCgpIGNv
bnN0OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIGVudW0gRmls
ZVN5c3RlbVR5cGUgewogICAgICAgICAgICAgVEVNUE9SQVJZLApJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiAxMDY2MjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEs
NyArMTAxLDcgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1dGUgRmlsZVJlYWRl
clN5bmNDb25zdHJ1Y3RvciBGaWxlUmVhZGVyU3luYzsKICNlbmRpZgogCi0gICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAg
ICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRV
Ukw7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lT
VEVNCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125298</attachid>
            <date>2012-02-03 02:50:20 -0800</date>
            <delta_ts>2012-02-06 01:52:52 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>74386_WIP.patch</filename>
            <type>text/plain</type>
            <size>21289</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjY0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAyLTAzICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
Y3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIHRvIHN0YXRpYyAoQ2xhc3MpIG1ldGhv
ZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAor
ICAgICAgICBBbHJlYWR5IEV4aXN0aW5nOgorICAgICAgICAgICAgZmFzdC9maWxlcy9yZXZva2Ut
YmxvYi11cmwuaHRtbAorICAgICAgICAgICAgZmFzdC9kb20vd2luZG93LWRvbXVybC1jcmFzaC5o
dG1sCisgICAgICAgICAgICBmYXN0L2ZpbGVzL2FwcGx5LWJsb2ItdXJsLXRvLWltZy5odG1sCisg
ICAgICAgICAgICBmYXN0L2ZpbGVzL2NyZWF0ZS1ibG9iLXVybC1jcmFzaC5odG1sCisgICAgICAg
ICAgICBmYXN0L2ZpbGVzL3dvcmtlcnMvaW5saW5lLXdvcmtlci12aWEtYmxvYi11cmwuaHRtbAor
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZVRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnB1YmxpY1VS
TE1hbmFnZXIpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAg
ICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwpOiBDaGFuZ2VkIHRvIHN0YXRpYy4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKTogZGl0dG8uCisgICAgICAgICogaHRt
bC9ET01VUkwuaDoKKyAgICAgICAgKERPTVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9ET01VUkwuaWRsOgorICAgICAgICAqIGh0bWwvUHVi
bGljVVJMTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHVi
bGljVVJMTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6Y29udGV4dERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpibG9iVVJMcyk6CisgICAg
ICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpzdHJlYW1VUkxzKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6IFJlbW92ZWQgb2JqZWN0IGluaXRpYWxpemF0aW9uIGZvciBET01V
UkwuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOiBkaXR0
by4KKyAgICAgICAgKERPTVdpbmRvdyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKFdvcmtlckNvbnRl
eHQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisKIDIwMTItMDItMDMg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCB0aGUg
IkNQUCIgcHJlZml4IHRvIENQUCBzcGVjaWZpYyBJREwgYXR0cmlidXRlcwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gMTA2
NjM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
ICNpbmNsdWRlICJGaWxlVGhyZWFkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNs
dWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMzg1
LDYgKzM4NiwxNSBAQCBGaWxlVGhyZWFkKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpmaWxlCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShCTE9CKQorUHVibGljVVJMTWFuYWdlciYgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cHVibGljVVJMTWFuYWdlcigpCit7CisgICAgaWYgKCFtX3B1YmxpY1VS
TE1hbmFnZXIpCisgICAgICAgIG1fcHVibGljVVJMTWFuYWdlciA9IFB1YmxpY1VSTE1hbmFnZXI6
OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9wdWJsaWNVUkxNYW5hZ2VyOworfQorI2VuZGlmCisK
IHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwo
ZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVydmFsKQogewogICAgIGlmIChtaW5pbXVtVGltZXJJ
bnRlcnZhbCgpICE9IG9sZE1pbmltdW1UaW1lckludGVydmFsKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDEwNjYzNykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNs
dWRlICJDb25zb2xlVHlwZXMuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHVibGlj
VVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01Myw2ICs1NCw5
IEBAIGNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIE1lc3NhZ2VQ
b3J0OwogCisjaWYgRU5BQkxFKEJMT0IpCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOworI2VuZGlm
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRGF0YWJh
c2VUYXNrU3luY2hyb25pemVyOwpAQCAtMTAzLDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
QWN0aXZlRE9NT2JqZWN0cygpOwogCisjaWYgRU5BQkxFKEJMT0IpCisgICAgUHVibGljVVJMTWFu
YWdlciYgcHVibGljVVJMTWFuYWdlcigpOworI2VuZGlmCiAgICAgdm9pZCBkaWRDcmVhdGVBY3Rp
dmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAg
dm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIApAQCAt
MjA1LDYgKzIxMiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50
OwogICAgIGNsYXNzIFBlbmRpbmdFeGNlcHRpb247CiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8
UGVuZGluZ0V4Y2VwdGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CisjaWYgRU5BQkxFKEJM
T0IpCisgICAgUHVibGljVVJMTWFuYWdlciogbV9wdWJsaWNVUkxNYW5hZ2VyOworI2VuZGlmCiAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9k
YXRhYmFzZVRocmVhZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHJldmlzaW9uIDEwNjYz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDExICszMCwxNSBAQAog
CiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNp
bmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC00Mywz
NyArNDgsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01VUkw6OkRPTVVSTChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgIDogQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLX0KLQotRE9N
VVJMOjp+RE9NVVJMKCkKLXsKLX0KLQotdm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95ZWQoKQot
ewotICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7Ci0K
LSAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHB1YmxpY0Jsb2JVUkxzRW5kID0gbV9wdWJs
aWNCbG9iVVJMcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRl
ciA9IG1fcHVibGljQmxvYlVSTHMuYmVnaW4oKTsgaXRlciAhPSBwdWJsaWNCbG9iVVJMc0VuZDsg
KytpdGVyKQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKLQotI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNTdHJlYW1VUkxzRW5kID0g
bV9wdWJsaWNTdHJlYW1VUkxzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVy
YXRvciBpdGVyID0gbV9wdWJsaWNTdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljU3Ry
ZWFtVVJMc0VuZDsgKytpdGVyKQotICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3Ry
eSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIp
KTsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVN0cmluZyBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSogc3RyZWFtKQorU3RyaW5nIERPTVVSTDo6Y3Jl
YXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIE1lZGlhU3RyZWFtKiBzdHJlYW0pCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgfHwgIXN0cmVhbSkKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIXN0
cmVhbSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwgPSBC
bG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0
eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VS
TChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAocHVi
bGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC04MSw0NiAr
NjIsNDggQEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3Ry
eSgpLnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwocHVibGljVVJMLCBzdHJlYW0pOwotICAgIG1fcHVi
bGljU3RyZWFtVVJMcy5hZGQocHVibGljVVJMLnN0cmluZygpKTsKKyAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCkuc3RyZWFtVVJMcygpLmFkZChwdWJsaWNVUkwu
c3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5zdHJpbmcoKTsKIH0KICNlbmRpZgog
Ci1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoQmxvYiogYmxvYikKK1N0cmluZyBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBCbG9iKiBibG9iKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0IHx8ICFibG9iKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxvYikK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJM
OjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAocHVibGljVVJM
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKHB1YmxpY1VSTCwgYmxvYi0+dXJsKCkpOwotICAg
IG1fcHVibGljQmxvYlVSTHMuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLmJsb2JVUkxzKCkuYWRkKHB1YmxpY1VS
TC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0cmluZygpOwogfQogCi12b2lk
IERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQordm9pZCBE
T01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBpZiAoIW1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3RyaW5nKTsKIAotICAg
IGlmIChtX3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBIYXNo
U2V0PFN0cmluZz4mIGJsb2JVUkxzID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJM
TWFuYWdlcigpLmJsb2JVUkxzKCk7CisgICAgaWYgKGJsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJp
bmcoKSkpIHsKICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JV
UkwodXJsKTsKLSAgICAgICAgbV9wdWJsaWNCbG9iVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsK
KyAgICAgICAgYmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLSAgICBpZiAobV9wdWJsaWNTdHJlYW1VUkxzLmNvbnRhaW5zKHVy
bC5zdHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCkuc3RyZWFtVVJMcygpOworICAgIGlm
IChzdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgLy8gRklYTUU6
IG1ha2Ugc3VyZSBvZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4gUmFpc2UgYSBzcGVjIHF1ZXN0aW9u
IGlmIHJlcXVpcmVkLgogICAgICAgICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5vdCBvYnRhaW4g
U3RyZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJl
Z2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHVybCk7Ci0gICAgICAgIG1fcHVibGlj
U3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAgc3RyZWFtVVJMcy5yZW1v
dmUodXJsLnN0cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwu
aAkocmV2aXNpb24gMTA2NjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBNb3Rv
cm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDkgKzI3LDcgQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAotI2lmIEVO
QUJMRShCTE9CKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDAsMzAgKzM5LDIyIEBAIGNsYXNz
IEJsb2I7CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKLWNsYXNzIERPTVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4sIHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
RE9NVVJMPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KSk7IH0KLSAgICB+RE9NVVJMKCk7Ci0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFN0
cmluZyBjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qKTsKLSNlbmRpZgotICAgIFN0cmluZyBj
cmVhdGVPYmplY3RVUkwoQmxvYiopOwotICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0
cmluZyYpOworY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NVVJMPiB7CiAKLXBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgRE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBET01VUkwpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpOworI2lmIEVOQUJMRShCTE9CKQorICAgIHN0YXRpYyB2b2lkIGNvbnRleHREZXN0cm95ZWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGlj
QmxvYlVSTHM7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEJsb2IqKTsKKyAgICBzdGF0aWMgdm9pZCByZXZva2VPYmplY3RVUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYpOwogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGljU3RyZWFtVVJMczsKKyAgICBzdGF0
aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFT
dHJlYW0qKTsKKyNlbmRpZgogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKLQogI2VuZGlmIC8vIERPTVVSTF9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuaWRsCShyZXZpc2lvbiAxMDY2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiwxNSArMjcsMTUgQEAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZh
Y2UgWwogICAgICAgICBDb25kaXRpb25hbD1CTE9CLAotICAgICAgICBPbWl0Q29uc3RydWN0b3Is
CisgICAgICAgIENvbnN0cnVjdG9yLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwK
ICAgICAgICAgR2VuZXJhdGVUb0pTLAogICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gRE9N
VVJMIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJFQU0pICYmIEVOQUJMRV9NRURJQV9T
VFJFQU0KLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcg
Y3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CisgICAgICAgIHN0YXRpYyBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCxDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVm
aW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOwog
I2VuZGlmCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5n
IGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAgICB2b2lkIHJldm9rZU9iamVj
dFVSTChpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICAgc3RhdGljIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LENvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcg
Y3JlYXRlT2JqZWN0VVJMKGluIEJsb2IgYmxvYik7CisgICAgICAgIHN0YXRpYyBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3RyaW5n
IHVybCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2Vy
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUHVibGljVVJMTWFuYWdlcl9o
CisjZGVmaW5lIFB1YmxpY1VSTE1hbmFnZXJfaAorCisjaWYgRU5BQkxFKEJMT0IpCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgUHVi
bGljVVJMTWFuYWdlciB7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUHVibGljVVJMTWFuYWdlciog
Y3JlYXRlKCkgeyByZXR1cm4gbmV3IFB1YmxpY1VSTE1hbmFnZXI7IH0KKyAgICB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBi
bG9iVVJMc0VuZCA9IG1fYmxvYlVSTHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJp
bmc+OjppdGVyYXRvciBpdGVyID0gbV9ibG9iVVJMcy5iZWdpbigpOyBpdGVyICE9IGJsb2JVUkxz
RW5kOyArK2l0ZXIpCisgICAgICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lz
dGVyQmxvYlVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3Igc3RyZWFtVVJM
c0VuZCA9IG1fc3RyZWFtVVJMcy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46
Oml0ZXJhdG9yIGl0ZXIgPSBtX3N0cmVhbVVSTHMuYmVnaW4oKTsgaXRlciAhPSBzdHJlYW1VUkxz
RW5kOyArK2l0ZXIpCisgICAgICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgp
LnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsK
KyNlbmRpZgorICAgIH0KKworICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMoKSB7IHJldHVy
biBtX2Jsb2JVUkxzOyB9CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBIYXNoU2V0PFN0
cmluZz4mIHN0cmVhbVVSTHMoKSB7IHJldHVybiBtX3N0cmVhbVVSTHM7IH0KKyNlbmRpZgorCitw
cml2YXRlOgorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Jsb2JVUkxzOworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+IG1fc3RyZWFtVVJMczsKKyNlbmRpZgorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQkxPQgorI2VuZGlmIC8vIFBV
QkxJQ1VSTE1BTkFHRVJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNp
b24gMTA2NjM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODg5LDE1ICsxODg5LDYgQEAgdm9pZCBET01XaW5kb3c6OnNob3dNb2RhbERp
YWxvZyhjb25zdCBTdAogICAgIGRpYWxvZ0ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5ydW5Nb2Rh
bCgpOwogfQogCi0jaWYgRU5BQkxFKEJMT0IpCi1ET01VUkwqIERPTVdpbmRvdzo6d2Via2l0VVJM
KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZG9tVVJMICYmIGlzQ3VycmVudGx5RGlzcGxheWVkSW5G
cmFtZSgpKQotICAgICAgICBtX2RvbVVSTCA9IERPTVVSTDo6Y3JlYXRlKHRoaXMtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIG1fZG9tVVJMLmdldCgpOwotfQotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoUVVPVEEpCiBTdG9yYWdlSW5mbyogRE9NV2luZG93Ojp3ZWJraXRTdG9y
YWdlSW5mbygpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9u
IDEwNjYzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1MSwxMCArMzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1c2lu
ZyBSZWZDb3VudGVkPERPTVdpbmRvdz46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxE
T01XaW5kb3c+OjpkZXJlZjsKIAotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICBET01VUkwqIHdl
YmtpdFVSTCgpIGNvbnN0OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRldmljZW1vdGlvbik7
CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZGV2aWNlb3JpZW50YXRp
b24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMTA2NjM3KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03
ODMsNyArNzgzLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25k
aXRpb25hbD1CTE9CXSBXZWJLaXRCbG9iQnVpbGRlckNvbnN0cnVjdG9yIFdlYktpdEJsb2JCdWls
ZGVyOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9N
VVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01V
UkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9RVU9UQSkgJiYg
RU5BQkxFX1FVT1RBCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGlt
ZT1RdW90YV0gU3RvcmFnZUluZm8gd2Via2l0U3RvcmFnZUluZm87CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDEwNjYzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
NywxNSArMzc3LDYgQEAgRXZlbnRUYXJnZXREYXRhKiBXb3JrZXJDb250ZXh0OjplbnN1cmVFdgog
ICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLURP
TVVSTCogV29ya2VyQ29udGV4dDo6d2Via2l0VVJMKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZG9t
VVJMKQotICAgICAgICBtX2RvbVVSTCA9IERPTVVSTDo6Y3JlYXRlKHRoaXMtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIG1fZG9tVVJMLmdldCgpOwotfQotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiB2b2lkIFdvcmtlckNvbnRleHQ6OndlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lz
dGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmgJKHJldmlzaW9uIDEwNjYzNykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OwogCi0jaWYg
RU5BQkxFKEJMT0IpCi0gICAgICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAgICAgZW51bSBGaWxlU3lzdGVtVHlwZSB7
CiAgICAgICAgICAgICBURU1QT1JBUlksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5pZGwJKHJldmlzaW9uIDEwNjYzNykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBt
b2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIGF0dHJpYnV0ZSBGaWxlUmVhZGVyU3luY0NvbnN0cnVj
dG9yIEZpbGVSZWFkZXJTeW5jOwogI2VuZGlmCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtDb25kaXRpb25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUg
W0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRl
ZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KICAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEw
NjY0MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDEyLTAyLTAzICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3Jv
bGEuY29tPgorCisgICAgICAgIE1pZ3JhdGUgY3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0
VVJMIHRvIHN0YXRpYyAoQ2xhc3MpIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgdG8gY2hlY2sgaWYgY3JlYXRlT2JqZWN0
VVJMICYgcmV2b2tlT2JqZWN0VVJMIGFyZSBzdGF0aWMgZnVuY3Rpb25zLgorCisgICAgICAgICog
ZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9m
LWRvbXVybC1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMjcgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgdG91Y2gg
ZXZlbnQgZW11bGF0aW9uIGluIHRoZSBXZWJDb3JlIGxheWVyCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5z
dGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlv
bnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitUZXN0IGluc3Rh
bmNlb2YgZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgJ2NyZWF0ZU9iamVjdFVSTCcgaW4gd2Via2l0VVJM
IGlzIHRydWUKK1BBU1MgJ3Jldm9rZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIGlzIHRydWUKK1BB
U1MgdXJsLmNyZWF0ZU9iamVjdFVSTCBpcyB1bmRlZmluZWQuCitQQVNTIHVybC5yZXZva2VPYmpl
Y3RVUkwgaXMgdW5kZWZpbmVkLgorUEFTUyB3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVS
TCBpcyBkZWZpbmVkLgorUEFTUyB3aW5kb3cud2Via2l0VVJMLnJldm9rZU9iamVjdFVSTCBpcyBk
ZWZpbmVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRv
bXVybC1mdW5jdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwt
ZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIlRlc3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMgb2Ygd2Via2l0
VVJMLiIpOworCit2YXIgdXJsID0gbmV3IHdlYmtpdFVSTDsKKworc2hvdWxkQmVUcnVlKCInY3Jl
YXRlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3Jldm9rZU9iamVj
dFVSTCcgaW4gd2Via2l0VVJMIik7CisKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwuY3JlYXRlT2Jq
ZWN0VVJMIik7CitzaG91bGRCZVVuZGVmaW5lZCgidXJsLnJldm9rZU9iamVjdFVSTCIpOworCitz
aG91bGRCZURlZmluZWQoIndpbmRvdy53ZWJraXRVUkwuY3JlYXRlT2JqZWN0VVJMIik7CitzaG91
bGRCZURlZmluZWQoIndpbmRvdy53ZWJraXRVUkwucmV2b2tlT2JqZWN0VVJMIik7CisKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="126783"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125599</attachid>
            <date>2012-02-06 01:52:52 -0800</date>
            <delta_ts>2012-02-07 03:37:46 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>74386_new.patch</filename>
            <type>text/plain</type>
            <size>21639</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAyLTAzICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
Y3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIHRvIHN0YXRpYyAoQ2xhc3MpIG1ldGhv
ZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAor
ICAgICAgICBBbHJlYWR5IEV4aXN0aW5nOgorICAgICAgICAgICAgZmFzdC9maWxlcy9yZXZva2Ut
YmxvYi11cmwuaHRtbAorICAgICAgICAgICAgZmFzdC9kb20vd2luZG93LWRvbXVybC1jcmFzaC5o
dG1sCisgICAgICAgICAgICBmYXN0L2ZpbGVzL2FwcGx5LWJsb2ItdXJsLXRvLWltZy5odG1sCisg
ICAgICAgICAgICBmYXN0L2ZpbGVzL2NyZWF0ZS1ibG9iLXVybC1jcmFzaC5odG1sCisgICAgICAg
ICAgICBmYXN0L2ZpbGVzL3dvcmtlcnMvaW5saW5lLXdvcmtlci12aWEtYmxvYi11cmwuaHRtbAor
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZVRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnB1YmxpY1VS
TE1hbmFnZXIpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAg
ICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwpOiBDaGFuZ2VkIHRvIHN0YXRpYy4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKTogZGl0dG8uCisgICAgICAgICogaHRt
bC9ET01VUkwuaDoKKyAgICAgICAgKERPTVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9ET01VUkwuaWRsOgorICAgICAgICAqIGh0bWwvUHVi
bGljVVJMTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHVi
bGljVVJMTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6Y29udGV4dERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpibG9iVVJMcyk6CisgICAg
ICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpzdHJlYW1VUkxzKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6IFJlbW92ZWQgb2JqZWN0IGluaXRpYWxpemF0aW9uIGZvciBET01V
UkwuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOiBkaXR0
by4KKyAgICAgICAgKERPTVdpbmRvdyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKFdvcmtlckNvbnRl
eHQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisKIDIwMTItMDItMDYg
IFBldGVyIFJ5YmluICA8cGV0ZXIucnliaW5AZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEZpeCBDYWxsQXJndW1lbnQgdHlwZSBpbiBJbnNwZWN0b3IuanNvbgpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24g
MTA2Nzg5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQu
aCIKICNpbmNsdWRlICJGaWxlVGhyZWFkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNp
bmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAt
MTI2LDYgKzEyNywxMCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9u
CiAgICAgICAgIG1fZmlsZVRocmVhZCA9IDA7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEJM
T0IpCisgICAgaWYgKG1fcHVibGljVVJMTWFuYWdlcikKKyAgICAgICAgbV9wdWJsaWNVUkxNYW5h
Z2VyLT5jb250ZXh0RGVzdHJveWVkKCk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCkBAIC0zODUsNiArMzkwLDE1IEBAIEZpbGVUaHJlYWQqIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmZpbGUKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEJMT0IpCitQdWJsaWNVUkxNYW5h
Z2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpwdWJsaWNVUkxNYW5hZ2VyKCkKK3sKKyAgICBp
ZiAoIW1fcHVibGljVVJMTWFuYWdlcikKKyAgICAgICAgbV9wdWJsaWNVUkxNYW5hZ2VyID0gUHVi
bGljVVJMTWFuYWdlcjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICptX3B1YmxpY1VSTE1hbmFnZXI7
Cit9CisjZW5kaWYKKwogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphZGp1c3RNaW5pbXVt
VGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpCiB7CiAgICAgaWYg
KG1pbmltdW1UaW1lckludGVydmFsKCkgIT0gb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNp
b24gMTA2Nzg5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTUzLDYgKzU0LDkgQEAgY2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEV2ZW50VGFyZ2V0Owog
Y2xhc3MgTWVzc2FnZVBvcnQ7CiAKKyNpZiBFTkFCTEUoQkxPQikKK2NsYXNzIFB1YmxpY1VSTE1h
bmFnZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogY2xhc3MgRGF0YWJhc2U7
CiBjbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7CkBAIC0xMDMsNiArMTA3LDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKKyNpZiBFTkFCTEUoQkxPQikKKyAg
ICBQdWJsaWNVUkxNYW5hZ2VyJiBwdWJsaWNVUkxNYW5hZ2VyKCk7CisjZW5kaWYKICAgICB2b2lk
IGRpZENyZWF0ZUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqLCB2b2lkKiB1cGNhc3RQ
b2ludGVyKTsKICAgICB2b2lkIHdpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9i
amVjdCopOwogCkBAIC0yMDUsNiArMjEyLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW5EaXNw
YXRjaEVycm9yRXZlbnQ7CiAgICAgY2xhc3MgUGVuZGluZ0V4Y2VwdGlvbjsKICAgICBPd25QdHI8
VmVjdG9yPE93blB0cjxQZW5kaW5nRXhjZXB0aW9uPiA+ID4gbV9wZW5kaW5nRXhjZXB0aW9uczsK
KyNpZiBFTkFCTEUoQkxPQikKKyAgICBPd25QdHI8UHVibGljVVJMTWFuYWdlcj4gbV9wdWJsaWNV
UkxNYW5hZ2VyOworI2VuZGlmCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFJlZlB0
cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFzZVRocmVhZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVS
TC5jcHAJKHJldmlzaW9uIDEwNjc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDExICszMCwxNSBAQAogCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAKKyNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5o
IgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCkBAIC00MywzNyArNDgsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1ET01VUkw6OkRPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKLXsKLX0KLQotRE9NVVJMOjp+RE9NVVJMKCkKLXsKLX0KLQotdm9pZCBET01VUkw6
OmNvbnRleHREZXN0cm95ZWQoKQotewotICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpj
b250ZXh0RGVzdHJveWVkKCk7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHB1Ymxp
Y0Jsb2JVUkxzRW5kID0gbV9wdWJsaWNCbG9iVVJMcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8
U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVibGljQmxvYlVSTHMuYmVnaW4oKTsgaXRlciAh
PSBwdWJsaWNCbG9iVVJMc0VuZDsgKytpdGVyKQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKLQot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBw
dWJsaWNTdHJlYW1VUkxzRW5kID0gbV9wdWJsaWNTdHJlYW1VUkxzLmVuZCgpOwotICAgIGZvciAo
SGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNTdHJlYW1VUkxzLmJlZ2lu
KCk7IGl0ZXIgIT0gcHVibGljU3RyZWFtVVJMc0VuZDsgKytpdGVyKQotICAgICAgICBNZWRpYVN0
cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChLVVJMKFBh
cnNlZFVSTFN0cmluZywgKml0ZXIpKTsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLVN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSogc3RyZWFt
KQorU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1lZGlhU3RyZWFtKiBzdHJlYW0pCiB7Ci0gICAgaWYg
KCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIXN0cmVhbSkKKyAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgfHwgIXN0cmVhbSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJs
b2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9y
aWdpbigpKTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCkBAIC04MSw0NiArNjIsNDggQEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKE1lZGlhU3RyZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBNZWRpYVN0
cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwocHVibGljVVJM
LCBzdHJlYW0pOwotICAgIG1fcHVibGljU3RyZWFtVVJMcy5hZGQocHVibGljVVJMLnN0cmluZygp
KTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCkuc3RyZWFt
VVJMcygpLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5z
dHJpbmcoKTsKIH0KICNlbmRpZgogCi1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoQmxv
YiogYmxvYikKK1N0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9iKQogewotICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFibG9iKQorICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCB8fCAhYmxvYikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VS
TCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6
OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigp
KTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKHB1YmxpY1VS
TCwgYmxvYi0+dXJsKCkpOwotICAgIG1fcHVibGljQmxvYlVSTHMuYWRkKHB1YmxpY1VSTC5zdHJp
bmcoKSk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLmJs
b2JVUkxzKCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJM
LnN0cmluZygpOwogfQogCi12b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQordm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEtVUkwgdXJsKEtVUkwo
KSwgdXJsU3RyaW5nKTsKIAotICAgIGlmIChtX3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5zKHVybC5z
dHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLmJsb2JVUkxzKCk7CisgICAgaWYgKGJsb2JV
UkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICAgICAgbV9wdWJsaWNCbG9iVVJMcy5y
ZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAgYmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmco
KSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBpZiAobV9wdWJsaWNT
dHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4m
IHN0cmVhbVVSTHMgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCku
c3RyZWFtVVJMcygpOworICAgIGlmIChzdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkp
IHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSBvZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4g
UmFpc2UgYSBzcGVjIHF1ZXN0aW9uIGlmIHJlcXVpcmVkLgogICAgICAgICAvLyBTaW5jZSBXZWJX
b3JrZXJzIGNhbm5vdCBvYnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUg
bWFpbiB0aHJlYWQuCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIE1l
ZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHVy
bCk7Ci0gICAgICAgIG1fcHVibGljU3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAg
ICAgICAgc3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuaAkocmV2aXNpb24gMTA2Nzg5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9ET01VUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkgKzI3LDcgQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZp
bmUgRE9NVVJMX2gKIAotI2lmIEVOQUJMRShCTE9CKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NDAsMzAgKzM5LDIyIEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIERPTVVSTCA6IHB1YmxpYyBSZWZDb3VudGVk
PERPTVVSTD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KLSAgICB+RE9NVVJMKCk7Ci0KLSNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qKTsK
LSNlbmRpZgotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoQmxvYiopOwotICAgIHZvaWQgcmV2
b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOworY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NVVJMPiB7CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRE9NVVJMKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworI2lmIEVOQUJMRShCTE9CKQorICAgIHN0YXRpYyB2
b2lkIGNvbnRleHREZXN0cm95ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgSGFz
aFNldDxTdHJpbmc+IG1fcHVibGljQmxvYlVSTHM7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVP
YmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqKTsKKyAgICBzdGF0aWMgdm9p
ZCByZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYp
OwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGlj
U3RyZWFtVVJMczsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW0qKTsKKyNlbmRpZgogI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKLQogI2VuZGlmIC8v
IERPTVVSTF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCShyZXZpc2lvbiAxMDY3ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxNSArMjcsMTUgQEAKIG1vZHVs
ZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1CTE9CLAotICAg
ICAgICBPbWl0Q29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yLAogICAgICAgICBHZW5l
cmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgSlNHZW5lcmF0ZVRvSlMsCiAgICAgICAgIEpT
Tm9TdGF0aWNUYWJsZXMKICAgICBdIERPTVVSTCB7CiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFf
U1RSRUFNKSAmJiBFTkFCTEVfTUVESUFfU1RSRUFNCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmlu
Z1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBz
dHJlYW0pOworICAgICAgICBzdGF0aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
Q29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwo
aW4gTWVkaWFTdHJlYW0gc3RyZWFtKTsKICNlbmRpZgotICAgICAgICBbQ29udmVydE51bGxTdHJp
bmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsK
LSAgICAgICAgdm9pZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CisgICAgICAg
IHN0YXRpYyBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCxDb252ZXJ0TnVsbFN0cmlu
Z1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwor
ICAgICAgICBzdGF0aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmV2
b2tlT2JqZWN0VVJMKGluIERPTVN0cmluZyB1cmwpOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFB1YmxpY1VSTE1hbmFnZXJfaAorI2RlZmluZSBQdWJsaWNVUkxNYW5hZ2VyX2gKKwor
I2lmIEVOQUJMRShCTE9CKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0
cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVnaXN0
cnkuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CisKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXIgeworCitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8UHVibGljVVJMTWFuYWdlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRQdHIobmV3IFB1YmxpY1VSTE1hbmFnZXIpOyB9CisgICAgdm9pZCBjb250ZXh0RGVzdHJveWVk
KCkKKyAgICB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgYmxvYlVSTHNFbmQg
PSBtX2Jsb2JVUkxzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0
b3IgaXRlciA9IG1fYmxvYlVSTHMuYmVnaW4oKTsgaXRlciAhPSBibG9iVVJMc0VuZDsgKytpdGVy
KQorICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwo
S1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHN0cmVhbVVSTHNFbmQgPSBtX3N0
cmVhbVVSTHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBp
dGVyID0gbV9zdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gc3RyZWFtVVJMc0VuZDsgKytpdGVy
KQorICAgICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVy
TWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisjZW5kaWYKKyAg
ICB9CisKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzKCkgeyByZXR1cm4gbV9ibG9iVVJM
czsgfQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJl
YW1VUkxzKCkgeyByZXR1cm4gbV9zdHJlYW1VUkxzOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBIYXNoU2V0PFN0cmluZz4gbV9ibG9iVVJMczsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3N0cmVhbVVSTHM7CisjZW5kaWYKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJMT0IKKyNlbmRpZiAvLyBQVUJMSUNVUkxNQU5B
R0VSX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDEwNjc4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTg4OSwxNSArMTg4OSw2IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3Qg
U3QKICAgICBkaWFsb2dGcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+cnVuTW9kYWwoKTsKIH0KIAot
I2lmIEVOQUJMRShCTE9CKQotRE9NVVJMKiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2RvbVVSTCAmJiBpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAg
ICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5B
QkxFKFFVT1RBKQogU3RvcmFnZUluZm8qIERPTVdpbmRvdzo6d2Via2l0U3RvcmFnZUluZm8oKSBj
b25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAxMDY3ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEs
MTAgKzM1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdXNpbmcgUmVmQ291bnRl
ZDxET01XaW5kb3c+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6
ZGVyZWY7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBj
b25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkZXZpY2Vtb3Rpb24pOwogICAgICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRldmljZW9yaWVudGF0aW9uKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDEwNjc4OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzgyLDcgKzc4Miw3
IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxP
Ql0gV2ViS2l0QmxvYkJ1aWxkZXJDb25zdHJ1Y3RvciBXZWJLaXRCbG9iQnVpbGRlcjsKIAotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRV
Ukw7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMQ29uc3RydWN0
b3Igd2Via2l0VVJMOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfUVVPVEEpICYmIEVOQUJMRV9RVU9U
QQogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1RdW90YV0g
U3RvcmFnZUluZm8gd2Via2l0U3RvcmFnZUluZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDEwNjc4OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NywxNSArMzc3
LDYgQEAgRXZlbnRUYXJnZXREYXRhKiBXb3JrZXJDb250ZXh0OjplbnN1cmVFdgogICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLURPTVVSTCogV29y
a2VyQ29udGV4dDo6d2Via2l0VVJMKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZG9tVVJMKQotICAg
ICAgICBtX2RvbVVSTCA9IERPTVVSTDo6Y3JlYXRlKHRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7Ci0gICAgcmV0dXJuIG1fZG9tVVJMLmdldCgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCiB2b2lkIFdvcmtlckNvbnRleHQ6OndlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlz
aW9uIDEwNjc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0OwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OwogCi0jaWYgRU5BQkxFKEJM
T0IpCi0gICAgICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKICAgICAgICAgZW51bSBGaWxlU3lzdGVtVHlwZSB7CiAgICAgICAg
ICAgICBURU1QT1JBUlksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5pZGwJKHJldmlzaW9uIDEwNjc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBtb2R1bGUgdGhy
ZWFkcyB7CiAgICAgICAgIGF0dHJpYnV0ZSBGaWxlUmVhZGVyU3luY0NvbnN0cnVjdG9yIEZpbGVS
ZWFkZXJTeW5jOwogI2VuZGlmCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlv
bmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5B
QkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KICAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjc4OSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTAyLTAzICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgor
CisgICAgICAgIE1pZ3JhdGUgY3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIHRvIHN0
YXRpYyAoQ2xhc3MpIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIHRlc3QgdG8gY2hlY2sgaWYgY3JlYXRlT2JqZWN0VVJMICYgcmV2
b2tlT2JqZWN0VVJMIGFyZSBzdGF0aWMgZnVuY3Rpb25zLgorCisgICAgICAgICogZmFzdC9kb20v
RE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1m
dW5jdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMDYgIE5pa29sYXMgWmltbWVybWFubiAg
PG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBTd2l0Y2ggdG8g
dW5peCBmaWxlIGVuZGluZ3MgYW5kIGF0IGEgdHJhaWxpbmcgbmV3bGluZSAtIGhvcGVmdWxseSB0
aGUgYm90cyB3aWxsIGFjY2VwdCBteSBmb2xsb3cgdXAgcGF0Y2ggdGhlbi4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9j
aGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJs
LWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1Rl
c3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMgb2Ygd2Via2l0VVJMLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnY3JlYXRlT2JqZWN0VVJMJyBpbiB3
ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyAncmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwgaXMg
dHJ1ZQorUEFTUyB1cmwuY3JlYXRlT2JqZWN0VVJMIGlzIHVuZGVmaW5lZC4KK1BBU1MgdXJsLnJl
dm9rZU9iamVjdFVSTCBpcyB1bmRlZmluZWQuCitQQVNTIHdpbmRvdy53ZWJraXRVUkwuY3JlYXRl
T2JqZWN0VVJMIGlzIGRlZmluZWQuCitQQVNTIHdpbmRvdy53ZWJraXRVUkwucmV2b2tlT2JqZWN0
VVJMIGlzIGRlZmluZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3Rh
bmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9m
LWRvbXVybC1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBv
ZiB3ZWJraXRVUkwuIik7CisKK3ZhciB1cmwgPSBuZXcgd2Via2l0VVJMOworCitzaG91bGRCZVRy
dWUoIidjcmVhdGVPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVUcnVlKCIncmV2
b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKKworc2hvdWxkQmVVbmRlZmluZWQoInVybC5j
cmVhdGVPYmplY3RVUkwiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwucmV2b2tlT2JqZWN0VVJM
Iik7CisKK3Nob3VsZEJlRGVmaW5lZCgid2luZG93LndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwi
KTsKK3Nob3VsZEJlRGVmaW5lZCgid2luZG93LndlYmtpdFVSTC5yZXZva2VPYmplY3RVUkwiKTsK
KworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125803</attachid>
            <date>2012-02-07 03:37:46 -0800</date>
            <delta_ts>2012-02-07 05:30:04 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>74386_new_2.patch</filename>
            <type>text/plain</type>
            <size>27087</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisgICAgICAgIDIwMTItMDItMDcg
IEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAg
TWlncmF0ZSBjcmVhdGVPYmplY3RVUkwgJiByZXZva2VPYmplY3RVUkwgdG8gc3RhdGljIChDbGFz
cykgbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc0Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUm9sbG91dCBmaXhlcyBmb3IgeGNvZGVwcm9qLCB2Y3Byb2ogJiBneXBpIGZpbGVzLgorCisg
ICAgICAgIFRlc3Q6IGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5j
dGlvbnMuaHRtbAorICAgICAgICBBbHJlYWR5IEV4aXN0aW5nOgorICAgICAgICAgICAgZmFzdC9m
aWxlcy9yZXZva2UtYmxvYi11cmwuaHRtbAorICAgICAgICAgICAgZmFzdC9kb20vd2luZG93LWRv
bXVybC1jcmFzaC5odG1sCisgICAgICAgICAgICBmYXN0L2ZpbGVzL2FwcGx5LWJsb2ItdXJsLXRv
LWltZy5odG1sCisgICAgICAgICAgICBmYXN0L2ZpbGVzL2NyZWF0ZS1ibG9iLXVybC1jcmFzaC5o
dG1sCisgICAgICAgICAgICBmYXN0L2ZpbGVzL3dvcmtlcnMvaW5saW5lLXdvcmtlci12aWEtYmxv
Yi11cmwuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZVRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnB1YmxpY1VSTE1hbmFnZXIpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwpOiBDaGFuZ2Vk
IHRvIHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKTog
ZGl0dG8uCisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKERPTVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9ET01VUkwuaWRs
OgorICAgICAgICAqIGh0bWwvUHVibGljVVJMTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUHVibGljVVJMTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpQ
dWJsaWNVUkxNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljVVJMTWFu
YWdlcjo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5h
Z2VyOjpibG9iVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpzdHJl
YW1VUkxzKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6IFJlbW92ZWQgb2JqZWN0IGlu
aXRpYWxpemF0aW9uIGZvciBET01VUkwuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5oOiBkaXR0by4KKyAgICAgICAgKERPTVdpbmRvdyk6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoK
KyAgICAgICAgKFdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4
dC5pZGw6CisKIDIwMTItMDItMDcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtJbnNwZWN0b3JdIEFkZCB0aGUgTm9raWEgTjkgdXNl
ciBhZ2VudApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDY5
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjU2LDYgKzIyNTYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaCBc
CisgICAgU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA2OTE3KQorKysgU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTg4MCw2ICsxODgwLDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggXAogICAgIGh0bWwvTWljcm9E
YXRhSXRlbVZhbHVlLmggXAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuaCBcCisgICAgaHRtbC9Q
dWJsaWNVUkxNYW5hZ2VyLmggXAogICAgIGh0bWwvU3RlcFJhbmdlLmggXAogICAgIGh0bWwvVGV4
dERvY3VtZW50LmggXAogICAgIGh0bWwvVGV4dFRyYWNrLmggXApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gMTA2OTE3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Mzc4LDYgKzUzNzgsNyBAQAogICAgICAgICAgICAgJ2h0bWwvUGFzc3dv
cmRJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAnLAog
ICAgICAgICAgICAgJ2h0bWwvUGx1Z2luRG9jdW1lbnQuaCcsCisgICAgICAgICAgICAnaHRtbC9Q
dWJsaWNVUkxNYW5hZ2VyLmgnCiAgICAgICAgICAgICAnaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAn
LAogICAgICAgICAgICAgJ2h0bWwvUmFkaW9JbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRt
bC9SYW5nZUlucHV0VHlwZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjkxNykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MDQ5NCw2
ICs2MDQ5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXFB1YmxpY1VSTE1hbmFnZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisgICAg
ICAgICAgICA8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxSYWRpb0lucHV0VHlwZS5j
cHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA2OTE3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzksNiArMjc5LDcgQEAKIAkJMEZGNTAyNkExMDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5
bGVNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGNTAyNjgxMDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5oICovOyB9OwogCQkwRkY1
MDI3MTEwMkJBOTZBMDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyog
U3R5bGVNZWRpYS5jcHAgKi87IH07CiAJCTBGRjUwMjcyMTAyQkE5NkEwMDY2RjM5QSAvKiBTdHls
ZU1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkY1MDI2RjEwMkJBOTZBMDA2NkYzOUEgLyogU3R5bGVNZWRpYS5oICovOyB9OworCQkxMDc4MTE4
QzE0RTEzRDE5MDA3RjdDOTggLyogUHVibGljVVJMTWFuZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTA3ODExOEIxNEUxM0QxOTAwN0Y3Qzk4IC8q
IFB1YmxpY1VSTE1hbmVnZXIuaCAqLzsgfTsKIAkJMTQwMjY0NUUwQUZEQzE5QjAwNTkxOUUyIC8q
IExvZ2dpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01hYy5tbSAqLzsgfTsKIAkJ
MTQwM0I5OTcwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwM0I5OTUwOUVCMTNBRjAwNzk3QzdGIC8q
IERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwM0I5OTYwOUVCMTNBRjAw
Nzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgKi87IH07CkBAIC02OTc3LDYgKzY5NzgsNyBAQAogCQkw
RkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZU1lZGlhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZGNTAyNkYxMDJCQTk2QTAwNjZGMzlBIC8qIFN0eWxlTWVkaWEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVNZWRpYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkY1MDI3MDEwMkJBOTZBMDA2NkYzOUEgLyogU3R5bGVNZWRpYS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3R5bGVNZWRpYS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTEwNzgxMThCMTRFMTNEMTkwMDdGN0M5OCAvKiBQdWJsaWNVUkxNYW5l
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1YmxpY1VSTE1hbmVnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMjY0NUQwQUZEQzE5QjAwNTkxOUUy
IC8qIExvZ2dpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTG9nZ2luZ01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwM0I5MEMw
OUVCMTI0NTAwNzk3QzdGIC8qIERPTVdpbmRvdy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RE9NV2luZG93LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwM0I5OTUwOUVC
MTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTk0LDYg
KzE2NTk2LDcgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTEwNzgxMThCMTRFMTNEMTkw
MDdGN0M5OCAvKiBQdWJsaWNVUkxNYW5lZ2VyLmggKi8sCiAJCQkJNDk0ODRGQUUxMDJDRjAxRTAw
MTg3REQzIC8qIGNhbnZhcyAqLywKIAkJCQk5N0MxRjU1MTEyMjg1NTg4MDBFREU2MTYgLyogcGFy
c2VyICovLAogCQkJCTQxNTBGOUVEMTJCNkUwOTkwMDA4Qzg2MCAvKiBzaGFkb3cgKi8sCkBAIC0y
NDE0OCw2ICsyNDE1MSw3IEBACiAJCQkJMUFBQUREQkYxNERDNjQwNzAwQUY2NEIzIC8qIFNjcm9s
bGluZ1RyZWVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQURERTQxNERDOEM4RjAwQUY2
NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFBRERFOTE0
REM4REY4MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5vZGVNYWMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTEwNzgxMThDMTRFMTNEMTkwMDdGN0M5OCAvKiBQdWJsaWNVUkxNYW5lZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDEwNjkxNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRmlsZVRocmVhZC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTEyNiw2ICsxMjcsMTAgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6flNjcmlwdEV4ZWN1dGlvbgogICAgICAgICBtX2ZpbGVUaHJlYWQgPSAwOwogICAgIH0KICNl
bmRpZgorI2lmIEVOQUJMRShCTE9CKQorICAgIGlmIChtX3B1YmxpY1VSTE1hbmFnZXIpCisgICAg
ICAgIG1fcHVibGljVVJMTWFuYWdlci0+Y29udGV4dERlc3Ryb3llZCgpOworI2VuZGlmCiB9CiAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpAQCAtMzg1LDYgKzM5MCwxNSBAQCBGaWxlVGhyZWFk
KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpmaWxlCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShC
TE9CKQorUHVibGljVVJMTWFuYWdlciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHVibGljVVJM
TWFuYWdlcigpCit7CisgICAgaWYgKCFtX3B1YmxpY1VSTE1hbmFnZXIpCisgICAgICAgIG1fcHVi
bGljVVJMTWFuYWdlciA9IFB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZSgpOworICAgIHJldHVybiAq
bV9wdWJsaWNVUkxNYW5hZ2VyOworfQorI2VuZGlmCisKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lcklu
dGVydmFsKQogewogICAgIGlmIChtaW5pbXVtVGltZXJJbnRlcnZhbCgpICE9IG9sZE1pbmltdW1U
aW1lckludGVydmFsKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgJKHJldmlzaW9uIDEwNjkxNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKICNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01Myw2ICs1NCw5IEBAIGNsYXNzIEV2ZW50UXVldWU7CiBj
bGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogCisjaWYgRU5BQkxFKEJMT0Ip
CitjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOworI2VuZGlmCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOwpAQCAt
MTAzLDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQWN0aXZlRE9N
T2JqZWN0cygpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogCisj
aWYgRU5BQkxFKEJMT0IpCisgICAgUHVibGljVVJMTWFuYWdlciYgcHVibGljVVJMTWFuYWdlcigp
OworI2VuZGlmCiAgICAgdm9pZCBkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2Jq
ZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUFjdGl2ZURP
TU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIApAQCAtMjA1LDYgKzIxMiw5IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50OwogICAgIGNsYXNzIFBlbmRpbmdFeGNl
cHRpb247CiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlvbj4gPiA+IG1f
cGVuZGluZ0V4Y2VwdGlvbnM7CisjaWYgRU5BQkxFKEJMT0IpCisgICAgT3duUHRyPFB1YmxpY1VS
TE1hbmFnZXI+IG1fcHVibGljVVJMTWFuYWdlcjsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCShyZXZpc2lvbiAxMDY5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMzAsMTUgQEAKIAogI2luY2x1ZGUgIkRPTVVS
TC5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgog
I2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHVibGlj
VVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnku
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtNDMsMzcgKzQ4LDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NVVJMOjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi17Ci19Ci0KLURPTVVSTDo6fkRPTVVSTCgpCi17
Ci19Ci0KLXZvaWQgRE9NVVJMOjpjb250ZXh0RGVzdHJveWVkKCkKLXsKLSAgICBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotCi0gICAgSGFzaFNldDxTdHJp
bmc+OjppdGVyYXRvciBwdWJsaWNCbG9iVVJMc0VuZCA9IG1fcHVibGljQmxvYlVSTHMuZW5kKCk7
Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY0Jsb2JV
UkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljQmxvYlVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsICppdGVyKSk7Ci0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8
U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljU3RyZWFtVVJMc0VuZCA9IG1fcHVibGljU3RyZWFtVVJM
cy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVi
bGljU3RyZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHB1YmxpY1N0cmVhbVVSTHNFbmQ7ICsraXRl
cikKLSAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVk
aWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7Ci0jZW5kaWYKLX0KLQog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwo
TWVkaWFTdHJlYW0qIHN0cmVhbSkKK1N0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNZWRpYVN0cmVhbSog
c3RyZWFtKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0p
CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVi
bGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
S1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtODEsNDYgKzYyLDQ4IEBAIFN0cmluZyBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS5yZWdpc3Rlck1lZGlh
U3RyZWFtVVJMKHB1YmxpY1VSTCwgc3RyZWFtKTsKLSAgICBtX3B1YmxpY1N0cmVhbVVSTHMuYWRk
KHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGlj
VVJMTWFuYWdlcigpLnN0cmVhbVVSTHMoKS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAg
IHJldHVybiBwdWJsaWNVUkwuc3RyaW5nKCk7CiB9CiAjZW5kaWYKIAotU3RyaW5nIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKEJsb2IqIGJsb2IpCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiog
YmxvYikKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxvYikKKyAg
ICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2IpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAotICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJM
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBw
dWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChwdWJsaWNVUkwsIGJsb2ItPnVybCgpKTsKLSAgICBtX3B1YmxpY0Jsb2JVUkxz
LmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1
YmxpY1VSTE1hbmFnZXIoKS5ibG9iVVJMcygpLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwogCiAg
ICAgcmV0dXJuIHB1YmxpY1VSTC5zdHJpbmcoKTsKIH0KIAotdm9pZCBET01VUkw6OnJldm9rZU9i
amVjdFVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgRE9NVVJMOjpyZXZva2VPYmpl
Y3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAK
ICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0cmluZyk7CiAKLSAgICBpZiAobV9wdWJsaWNCbG9i
VVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CisgICAgSGFzaFNldDxTdHJpbmc+JiBibG9i
VVJMcyA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5ibG9iVVJM
cygpOworICAgIGlmIChibG9iVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAgICAgICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0gICAgICAg
IG1fcHVibGljQmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CisgICAgICAgIGJsb2JVUkxz
LnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgaWYgKG1fcHVibGljU3RyZWFtVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7Cisg
ICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxzID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cHVibGljVVJMTWFuYWdlcigpLnN0cmVhbVVSTHMoKTsKKyAgICBpZiAoc3RyZWFtVVJMcy5jb250
YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgb2YgdGhp
cyBhc3NlcnRpb24gYmVsb3cuIFJhaXNlIGEgc3BlYyBxdWVzdGlvbiBpZiByZXF1aXJlZC4KICAg
ICAgICAgLy8gU2luY2UgV2ViV29ya2VycyBjYW5ub3Qgb2J0YWluIFN0cmVhbSBvYmplY3RzLCB3
ZSBzaG91bGQgYmUgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0
ZXJNZWRpYVN0cmVhbVVSTCh1cmwpOwotICAgICAgICBtX3B1YmxpY1N0cmVhbVVSTHMucmVtb3Zl
KHVybC5zdHJpbmcoKSk7CisgICAgICAgIHN0cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7
CiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDEwNjkx
NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHkgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw5ICsyNyw3IEBACiAjaWZu
ZGVmIERPTVVSTF9oCiAjZGVmaW5lIERPTVVSTF9oCiAKLSNpZiBFTkFCTEUoQkxPQikKLQotI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KQEAgLTQwLDMwICszOSwyMiBAQCBjbGFzcyBCbG9iOwogY2xhc3MgTWVk
aWFTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBET01VUkwg
OiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBET01VUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9Ci0gICAgfkRPTVVS
TCgpOwotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0
VVJMKE1lZGlhU3RyZWFtKik7Ci0jZW5kaWYKLSAgICBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKEJs
b2IqKTsKLSAgICB2b2lkIHJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbmcmKTsKK2NsYXNzIERP
TVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4gewogCi1wcml2YXRlOgotICAgIGV4cGxp
Y2l0IERPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJM
KTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyNpZiBFTkFCTEUo
QkxPQikKKyAgICBzdGF0aWMgdm9pZCBjb250ZXh0RGVzdHJveWVkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxzOworICAgIHN0
YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9i
Kik7CisgICAgc3RhdGljIHZvaWQgcmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX3B1YmxpY1N0cmVhbVVSTHM7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVP
YmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtKik7CisjZW5kaWYK
ICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxF
KEJMT0IpCi0KICNlbmRpZiAvLyBET01VUkxfaApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9E
T01VUkwuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAko
cmV2aXNpb24gMTA2OTE3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9y
b2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
MTUgKzI3LDE1IEBACiBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29u
ZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1
Y3RvciwKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAgIEpTR2VuZXJh
dGVUb0pTLAogICAgICAgICBKU05vU3RhdGljVGFibGVzCiAgICAgXSBET01VUkwgewogI2lmIGRl
ZmluZWQoRU5BQkxFX01FRElBX1NUUkVBTSkgJiYgRU5BQkxFX01FRElBX1NUUkVBTQotICAgICAg
ICBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RV
UkwoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKTsKKyAgICAgICAgc3RhdGljIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LENvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJp
bmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CiAjZW5kaWYKLSAgICAg
ICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0
VVJMKGluIEJsb2IgYmxvYik7Ci0gICAgICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGluIERPTVN0
cmluZyB1cmwpOworICAgICAgICBzdGF0aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RV
UkwoaW4gQmxvYiBibG9iKTsKKyAgICAgICAgc3RhdGljIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKICAgICB9
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBNb3Rvcm9sYSBN
b2JpbGl0eSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQdWJsaWNVUkxNYW5hZ2VyX2gKKyNkZWZpbmUgUHVi
bGljVVJMTWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoQkxPQikKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRl
ICJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2Vy
IHsKKworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFB1YmxpY1VSTE1hbmFnZXI+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBQdWJsaWNVUkxNYW5hZ2VyKTsgfQorICAgIHZv
aWQgY29udGV4dERlc3Ryb3llZCgpCisgICAgeworICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0
ZXJhdG9yIGJsb2JVUkxzRW5kID0gbV9ibG9iVVJMcy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNo
U2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX2Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0g
YmxvYlVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOworCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBz
dHJlYW1VUkxzRW5kID0gbV9zdHJlYW1VUkxzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8
U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fc3RyZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHN0
cmVhbVVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJl
Z2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAq
aXRlcikpOworI2VuZGlmCisgICAgfQorCisgICAgSGFzaFNldDxTdHJpbmc+JiBibG9iVVJMcygp
IHsgcmV0dXJuIG1fYmxvYlVSTHM7IH0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIEhh
c2hTZXQ8U3RyaW5nPiYgc3RyZWFtVVJMcygpIHsgcmV0dXJuIG1fc3RyZWFtVVJMczsgfQorI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgSGFzaFNldDxTdHJpbmc+IG1fYmxvYlVSTHM7CisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9zdHJlYW1VUkxzOworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBCTE9CCisjZW5k
aWYgLy8gUFVCTElDVVJMTUFOQUdFUl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CShyZXZpc2lvbiAxMDY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4OTcsMTUgKzE4OTcsNiBAQCB2b2lkIERPTVdpbmRvdzo6c2hv
d01vZGFsRGlhbG9nKGNvbnN0IFN0CiAgICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkt
PnJ1bk1vZGFsKCk7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLURPTVVSTCogRE9NV2luZG93Ojp3
ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlmICghbV9kb21VUkwgJiYgaXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShRVU9UQSkKIFN0b3JhZ2VJbmZvKiBET01XaW5kb3c6Ondl
YmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAko
cmV2aXNpb24gMTA2OTE3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUxLDEwICszNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6cmVmOwogICAgICAgICB1c2luZyBSZWZD
b3VudGVkPERPTVdpbmRvdz46OmRlcmVmOwogCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgICAgIERP
TVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZGV2aWNl
bW90aW9uKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkZXZpY2Vv
cmllbnRhdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAx
MDY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTc4Miw3ICs3ODIsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPUJMT0JdIFdlYktpdEJsb2JCdWlsZGVyQ29uc3RydWN0b3IgV2ViS2l0
QmxvYkJ1aWxkZXI7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1C
TE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJM
T0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1FV
T1RBKSAmJiBFTkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJs
ZWRBdFJ1bnRpbWU9UXVvdGFdIFN0b3JhZ2VJbmZvIHdlYmtpdFN0b3JhZ2VJbmZvOwpJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiAxMDY5MTcp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNzcsMTUgKzM3Nyw2IEBAIEV2ZW50VGFyZ2V0RGF0YSogV29ya2VyQ29udGV4dDo6
ZW5zdXJlRXYKICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwogfQogCi0jaWYgRU5BQkxF
KEJMT0IpCi1ET01VUkwqIFdvcmtlckNvbnRleHQ6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2RvbVVSTCkKLSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0K
LSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogdm9pZCBXb3JrZXJDb250ZXh0Ojp3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQ
dHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCShyZXZpc2lvbiAxMDY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDEwICsxMzEsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25z
dDsKIAotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICBET01VUkwqIHdlYmtpdFVSTCgpIGNvbnN0
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIGVudW0gRmlsZVN5
c3RlbVR5cGUgewogICAgICAgICAgICAgVEVNUE9SQVJZLApJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiAxMDY5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyAr
MTAxLDcgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1dGUgRmlsZVJlYWRlclN5
bmNDb25zdHJ1Y3RvciBGaWxlUmVhZGVyU3luYzsKICNlbmRpZgogCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAg
YXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7
CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVN
CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDY5MTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMi0wNyAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0
dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJl
dm9rZU9iamVjdFVSTCB0byBzdGF0aWMgKENsYXNzKSBtZXRob2RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSb2xsb3V0IEZpeDogQWRkZWQgdGVzdCB0
byBjaGVjayBpZiBjcmVhdGVPYmplY3RVUkwgJiByZXZva2VPYmplY3RVUkwgYXJlIHN0YXRpYyBm
dW5jdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1k
b211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
RE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sOiBBZGRlZC4KKwog
MjAxMi0wMi0wNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAog
ICAgICAgICBSZXdyaXRlIFNWRyB0ZXN0cyB0byBtYWtlIGV4dGVuc2l2ZSB1c2Ugb2YgZGlzcGxh
eSgpIGluIHJlcGFpbnQgdGVzdHMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9j
aGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1m
dW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMg
YW5kIHByb3BlcnRpZXMgb2Ygd2Via2l0VVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyAnY3JlYXRlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyAn
cmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyB1cmwuY3JlYXRlT2Jq
ZWN0VVJMIGlzIHVuZGVmaW5lZC4KK1BBU1MgdXJsLnJldm9rZU9iamVjdFVSTCBpcyB1bmRlZmlu
ZWQuCitQQVNTIHdpbmRvdy53ZWJraXRVUkwuY3JlYXRlT2JqZWN0VVJMIGlzIGRlZmluZWQuCitQ
QVNTIHdpbmRvdy53ZWJraXRVUkwucmV2b2tlT2JqZWN0VVJMIGlzIGRlZmluZWQuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0
YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBpbnN0
YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuIik7CisKK3ZhciB1
cmwgPSBuZXcgd2Via2l0VVJMOworCitzaG91bGRCZVRydWUoIidjcmVhdGVPYmplY3RVUkwnIGlu
IHdlYmtpdFVSTCIpOworc2hvdWxkQmVUcnVlKCIncmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRV
UkwiKTsKKworc2hvdWxkQmVVbmRlZmluZWQoInVybC5jcmVhdGVPYmplY3RVUkwiKTsKK3Nob3Vs
ZEJlVW5kZWZpbmVkKCJ1cmwucmV2b2tlT2JqZWN0VVJMIik7CisKK3Nob3VsZEJlRGVmaW5lZCgi
d2luZG93LndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwiKTsKK3Nob3VsZEJlRGVmaW5lZCgid2lu
ZG93LndlYmtpdFVSTC5yZXZva2VPYmplY3RVUkwiKTsKKworCis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="127404"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125825</attachid>
            <date>2012-02-07 05:30:04 -0800</date>
            <delta_ts>2012-02-08 04:13:35 -0800</delta_ts>
            <desc>Patch with rebaseline</desc>
            <filename>74386_fix.patch</filename>
            <type>text/plain</type>
            <size>31112</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTA3ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
Y3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIHRvIHN0YXRpYyAoQ2xhc3MpIG1ldGhv
ZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
Y3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIGZyb20gRE9NVVJMIGltcGxlbWVudGF0
aW9uIHRvCisgICAgICAgIHN0YXRpYyBtZXRob2RzIGFzIHBlciBzcGVjcyAtIGh0dHA6Ly93d3cu
dzMub3JnL1RSL0ZpbGVBUEkvI2NyZWF0aW5nLXJldm9raW5nCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCisgICAg
ICAgIEFscmVhZHkgRXhpc3Rpbmc6CisgICAgICAgICAgICBmYXN0L2ZpbGVzL3Jldm9rZS1ibG9i
LXVybC5odG1sCisgICAgICAgICAgICBmYXN0L2RvbS93aW5kb3ctZG9tdXJsLWNyYXNoLmh0bWwK
KyAgICAgICAgICAgIGZhc3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8taW1nLmh0bWwKKyAgICAg
ICAgICAgIGZhc3QvZmlsZXMvY3JlYXRlLWJsb2ItdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAg
IGZhc3QvZmlsZXMvd29ya2Vycy9pbmxpbmUtd29ya2VyLXZpYS1ibG9iLXVybC5odG1sCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpmaWxlVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHVi
bGljVVJMTWFuYWdlcik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6Cisg
ICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01VUkw6OmNyZWF0ZU9iamVjdFVSTCk6IENoYW5nZWQgdG8gc3RhdGljLgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpyZXZva2VPYmplY3RVUkwpOiBkaXR0by4KKyAgICAgICAg
KiBodG1sL0RPTVVSTC5oOgorICAgICAgICAoRE9NVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5pZGw6CisgICAgICAgICogaHRt
bC9QdWJsaWNVUkxNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChQdWJsaWNVUkxNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVz
dHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmJsb2JVUkxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OnN0cmVhbVVSTHMpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmNwcDogUmVtb3ZlZCBvYmplY3QgaW5pdGlhbGl6YXRpb24gZm9y
IERPTVVSTC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
IGRpdHRvLgorICAgICAgICAoRE9NV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5p
ZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAoV29ya2Vy
Q29udGV4dCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDoKKwogMjAxMi0w
Mi0wNiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBkb24ndCBtYXJrIG9iamVjdCBpcyBxdWVyaWFibGUgaWYgaXQgaXMgb25s
eSByZWFjaGFibGUgYnkgaW50ZXJuYWwgcmVmZXJlbmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwNjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNTYsNiArMjI1Niw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VS
TE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDY5
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xODgw
LDYgKzE4ODAsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJz
ZXIuaCBcCiAgICAgaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaCBcCiAgICAgaHRtbC9QbHVnaW5E
b2N1bWVudC5oIFwKKyAgICBodG1sL1B1YmxpY1VSTE1hbmFnZXIuaCBcCiAgICAgaHRtbC9TdGVw
UmFuZ2UuaCBcCiAgICAgaHRtbC9UZXh0RG9jdW1lbnQuaCBcCiAgICAgaHRtbC9UZXh0VHJhY2su
aCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDY5MzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTUzNzgsNiArNTM3OCw3IEBACiAg
ICAgICAgICAgICAnaHRtbC9QYXNzd29yZElucHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1s
L1BsdWdpbkRvY3VtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9QbHVnaW5Eb2N1bWVudC5o
JywKKyAgICAgICAgICAgICdodG1sL1B1YmxpY1VSTE1hbmFnZXIuaCcsCiAgICAgICAgICAgICAn
aHRtbC9SYWRpb0lucHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvUmFkaW9JbnB1dFR5
cGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAnLApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEw
NjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC02MDQ5NCw2ICs2MDQ5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFB1YmxpY1VSTE1hbmFnZXIuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxSYWRpb0lucHV0VHlwZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTA2OTMwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksNiArMjc5LDcgQEAKIAkJMEZGNTAyNkEx
MDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNTAyNjgxMDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5
bGVNZWRpYS5oICovOyB9OwogCQkwRkY1MDI3MTEwMkJBOTZBMDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY1
MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgKi87IH07CiAJCTBGRjUwMjcy
MTAyQkE5NkEwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY1MDI2RjEwMkJBOTZBMDA2NkYzOUEgLyogU3R5bGVN
ZWRpYS5oICovOyB9OworCQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTBG
QjA4NEExNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCAqLzsgfTsKIAkJMTQw
MjY0NUUwQUZEQzE5QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyog
TG9nZ2luZ01hYy5tbSAqLzsgfTsKIAkJMTQwM0I5OTcwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdp
bmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQw
M0I5OTUwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3RiAv
KiBET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQwM0I5OTYwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgKi87IH07CkBA
IC02OTc3LDYgKzY5NzgsNyBAQAogCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVN
ZWRpYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZU1lZGlh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNTAyNkYxMDJCQTk2QTAwNjZG
MzlBIC8qIFN0eWxlTWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5
bGVNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY1MDI3MDEwMkJBOTZB
MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3R5bGVN
ZWRpYS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTEwRkIwODRBMTRFMTVDN0Uw
MEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1YmxpY1VSTE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQwMjY0NUQwQUZEQzE5QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9nZ2luZ01hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQwM0I5MEMwOUVCMTI0NTAwNzk3QzdGIC8qIERPTVdpbmRvdy5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NV2luZG93LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTQwM0I5OTUwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE2OTMxLDYgKzE2OTMzLDcgQEAKIAkJCQlGNTVCM0Q5NjEyNTFGMTJE
MDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCAqLywKIAkJCQk5NzIwNUFCOTEyMzkyOTI3
MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuY3BwICovLAogCQkJCTk3MjA1QUJBMTIzOTI5Mjcw
MEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oICovLAorCQkJCTEwRkIwODRBMTRFMTVDN0UwMEEz
REI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggKi8sCiAJCQkJRjU1QjNEOTcxMjUxRjEyRDAwM0VG
MjY5IC8qIFJhZGlvSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q5ODEyNTFGMTJEMDAzRUYy
NjkgLyogUmFkaW9JbnB1dFR5cGUuaCAqLywKIAkJCQlGNTVCM0Q5OTEyNTFGMTJEMDAzRUYyNjkg
LyogUmFuZ2VJbnB1dFR5cGUuY3BwICovLApAQCAtMjQxNDgsNiArMjQxNTEsNyBAQAogCQkJCTFB
QUFEREJGMTREQzY0MDcwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQUFEREU0MTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQURERTkxNERDOERGODAwQUY2NEIzIC8qIFNjcm9sbGlu
Z1RyZWVOb2RlTWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RC
OTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCShyZXZpc2lvbiAxMDY5MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIkZpbGVUaHJlYWQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xMjYsNiAr
MTI3LDEwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb24KICAgICAg
ICAgbV9maWxlVGhyZWFkID0gMDsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoQkxPQikKKyAg
ICBpZiAobV9wdWJsaWNVUkxNYW5hZ2VyKQorICAgICAgICBtX3B1YmxpY1VSTE1hbmFnZXItPmNv
bnRleHREZXN0cm95ZWQoKTsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
QEAgLTM4NSw2ICszOTAsMTUgQEAgRmlsZVRocmVhZCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
ZmlsZQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQkxPQikKK1B1YmxpY1VSTE1hbmFnZXImIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnB1YmxpY1VSTE1hbmFnZXIoKQoreworICAgIGlmICghbV9w
dWJsaWNVUkxNYW5hZ2VyKQorICAgICAgICBtX3B1YmxpY1VSTE1hbmFnZXIgPSBQdWJsaWNVUkxN
YW5hZ2VyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fcHVibGljVVJMTWFuYWdlcjsKK30KKyNl
bmRpZgorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFkanVzdE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkKIHsKICAgICBpZiAobWluaW11
bVRpbWVySW50ZXJ2YWwoKSAhPSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkgewpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiAxMDY5
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNs
dWRlICJTZWN1cml0eUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNTMs
NiArNTQsOSBAQCBjbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBN
ZXNzYWdlUG9ydDsKIAorI2lmIEVOQUJMRShCTE9CKQorY2xhc3MgUHVibGljVVJMTWFuYWdlcjsK
KyNlbmRpZgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNz
IERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKQEAgLTEwMyw2ICsxMDcsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorI2lmIEVOQUJMRShCTE9CKQorICAgIFB1Ymxp
Y1VSTE1hbmFnZXImIHB1YmxpY1VSTE1hbmFnZXIoKTsKKyNlbmRpZgogICAgIHZvaWQgZGlkQ3Jl
YXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCosIHZvaWQqIHVwY2FzdFBvaW50ZXIp
OwogICAgIHZvaWQgd2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kik7
CiAKQEAgLTIwNSw2ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbkRpc3BhdGNoRXJy
b3JFdmVudDsKICAgICBjbGFzcyBQZW5kaW5nRXhjZXB0aW9uOwogICAgIE93blB0cjxWZWN0b3I8
T3duUHRyPFBlbmRpbmdFeGNlcHRpb24+ID4gPiBtX3BlbmRpbmdFeGNlcHRpb25zOworI2lmIEVO
QUJMRShCTE9CKQorICAgIE93blB0cjxQdWJsaWNVUkxNYW5hZ2VyPiBtX3B1YmxpY1VSTE1hbmFn
ZXI7CisjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgUmVmUHRyPERhdGFi
YXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFkOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9E
T01VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAko
cmV2aXNpb24gMTA2OTMwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9y
b2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
MTEgKzMwLDE1IEBACiAKICNpbmNsdWRlICJET01VUkwuaCIKIAorI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKQEAgLTQzLDM3ICs0OCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTVVS
TDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
Ci0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQotewotfQotCi1ET01VUkw6On5ET01VUkwoKQotewotfQotCi12b2lkIERPTVVSTDo6Y29udGV4
dERlc3Ryb3llZCgpCi17Ci0gICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHRE
ZXN0cm95ZWQoKTsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljQmxvYlVS
THNFbmQgPSBtX3B1YmxpY0Jsb2JVUkxzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+
OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNCbG9iVVJMcy5iZWdpbigpOyBpdGVyICE9IHB1Ymxp
Y0Jsb2JVUkxzRW5kOyArK2l0ZXIpCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOwotCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHB1YmxpY1N0
cmVhbVVSTHNFbmQgPSBtX3B1YmxpY1N0cmVhbVVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0
PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY1N0cmVhbVVSTHMuYmVnaW4oKTsgaXRl
ciAhPSBwdWJsaWNTdHJlYW1VUkxzRW5kOyArK2l0ZXIpCi0gICAgICAgIE1lZGlhU3RyZWFtUmVn
aXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCAqaXRlcikpOwotI2VuZGlmCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
U3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKiBzdHJlYW0pCitTdHJp
bmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgTWVkaWFTdHJlYW0qIHN0cmVhbSkKIHsKLSAgICBpZiAoIW1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCB8fCAhc3RyZWFtKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJM
IHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6
Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkp
OwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKQEAgLTgxLDQ2ICs2Miw0OCBAQCBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVk
aWFTdHJlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIE1lZGlhU3RyZWFtUmVn
aXN0cnk6OnJlZ2lzdHJ5KCkucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChwdWJsaWNVUkwsIHN0cmVh
bSk7Ci0gICAgbV9wdWJsaWNTdHJlYW1VUkxzLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOworICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5zdHJlYW1VUkxzKCku
YWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0cmluZygp
OwogfQogI2VuZGlmCiAKLVN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChCbG9iKiBibG9i
KQorU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IpCiB7Ci0gICAgaWYgKCFtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2IpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0IHx8ICFibG9iKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJMIHB1Ymxp
Y1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRl
UHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
IGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwocHVibGljVVJMLCBibG9i
LT51cmwoKSk7Ci0gICAgbV9wdWJsaWNCbG9iVVJMcy5hZGQocHVibGljVVJMLnN0cmluZygpKTsK
KyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCkuYmxvYlVSTHMo
KS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3RyaW5n
KCk7CiB9CiAKLXZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCit2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewot
ICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxT
dHJpbmcpOwogCi0gICAgaWYgKG1fcHVibGljQmxvYlVSTHMuY29udGFpbnModXJsLnN0cmluZygp
KSkgeworICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCkuYmxvYlVSTHMoKTsKKyAgICBpZiAoYmxvYlVSTHMuY29u
dGFpbnModXJsLnN0cmluZygpKSkgewogICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgICAgICBtX3B1YmxpY0Jsb2JVUkxzLnJlbW92ZSh1
cmwuc3RyaW5nKCkpOworICAgICAgICBibG9iVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGlmIChtX3B1YmxpY1N0cmVhbVVS
THMuY29udGFpbnModXJsLnN0cmluZygpKSkgeworICAgIEhhc2hTZXQ8U3RyaW5nPiYgc3RyZWFt
VVJMcyA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5zdHJlYW1V
UkxzKCk7CisgICAgaWYgKHN0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgewogICAg
ICAgICAvLyBGSVhNRTogbWFrZSBzdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIGJlbG93LiBSYWlzZSBh
IHNwZWMgcXVlc3Rpb24gaWYgcmVxdWlyZWQuCiAgICAgICAgIC8vIFNpbmNlIFdlYldvcmtlcnMg
Y2Fubm90IG9idGFpbiBTdHJlYW0gb2JqZWN0cywgd2Ugc2hvdWxkIGJlIG9uIHRoZSBtYWluIHRo
cmVhZC4KICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgTWVkaWFTdHJl
YW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwodXJsKTsKLSAg
ICAgICAgbV9wdWJsaWNTdHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgICAgICBz
dHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KICNlbmRpZgogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVVSTC5oCShyZXZpc2lvbiAxMDY5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsOSArMjcsNyBAQAogI2lmbmRlZiBET01VUkxfaAogI2RlZmluZSBET01V
UkxfaAogCi0jaWYgRU5BQkxFKEJMT0IpCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00MCwzMCAr
MzksMjIgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NVVJM
PiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpKTsgfQotICAgIH5ET01VUkwoKTsKLQotI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSopOwotI2VuZGlm
Ci0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChCbG9iKik7Ci0gICAgdm9pZCByZXZva2VPYmpl
Y3RVUkwoY29uc3QgU3RyaW5nJik7CitjbGFzcyBET01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxE
T01VUkw+IHsKIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBj
b250ZXh0RGVzdHJveWVkKCk7CisjaWYgRU5BQkxFKEJMT0IpCisgICAgc3RhdGljIHZvaWQgY29u
dGV4dERlc3Ryb3llZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICBIYXNoU2V0PFN0
cmluZz4gbV9wdWJsaWNCbG9iVVJMczsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVS
TChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiopOworICAgIHN0YXRpYyB2b2lkIHJldm9r
ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJik7CiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJsaWNTdHJlYW1V
UkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBNZWRpYVN0cmVhbSopOworI2VuZGlmCiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9CKQotCiAjZW5kaWYgLy8gRE9NVVJM
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHJldmlzaW9uIDEwNjkzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDE1ICsyNywxNSBAQAogbW9kdWxlIGh0bWwg
ewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUJMT0IsCi0gICAgICAgIE9t
aXRDb25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3IsCiAgICAgICAgIEdlbmVyYXRlTmF0
aXZlQ29udmVydGVyLAogICAgICAgICBKU0dlbmVyYXRlVG9KUywKICAgICAgICAgSlNOb1N0YXRp
Y1RhYmxlcwogICAgIF0gRE9NVVJMIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJFQU0p
ICYmIEVOQUJMRV9NRURJQV9TVFJFQU0KLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5k
ZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7
CisgICAgICAgIHN0YXRpYyBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCxDb252ZXJ0
TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRp
YVN0cmVhbSBzdHJlYW0pOwogI2VuZGlmCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVu
ZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAg
ICB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICAgc3RhdGlj
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LENvbnZlcnROdWxsU3RyaW5nVG89VW5k
ZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIEJsb2IgYmxvYik7CisgICAgICAg
IHN0YXRpYyBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCByZXZva2VPYmpl
Y3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvUHVibGljVVJMTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvUHVibGljVVJMTWFuYWdlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9QdWJsaWNVUkxNYW5hZ2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
UHVibGljVVJMTWFuYWdlcl9oCisjZGVmaW5lIFB1YmxpY1VSTE1hbmFnZXJfaAorCisjaWYgRU5B
QkxFKEJMT0IpCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKKworY2xhc3MgUHVibGljVVJMTWFuYWdlciB7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxQdWJsaWNVUkxNYW5hZ2VyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgUHVibGljVVJMTWFuYWdlcik7IH0KKyAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKQorICAg
IHsKKyAgICAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBibG9iVVJMc0VuZCA9IG1fYmxv
YlVSTHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVy
ID0gbV9ibG9iVVJMcy5iZWdpbigpOyBpdGVyICE9IGJsb2JVUkxzRW5kOyArK2l0ZXIpCisgICAg
ICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChLVVJMKFBh
cnNlZFVSTFN0cmluZywgKml0ZXIpKTsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAg
ICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3Igc3RyZWFtVVJMc0VuZCA9IG1fc3RyZWFtVVJM
cy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3N0cmVhbVVSTHMuYmVnaW4oKTsgaXRlciAhPSBzdHJlYW1VUkxzRW5kOyArK2l0ZXIpCisgICAg
ICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0
cmVhbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMoKSB7IHJldHVybiBtX2Jsb2JVUkxzOyB9Cisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMo
KSB7IHJldHVybiBtX3N0cmVhbVVSTHM7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX2Jsb2JVUkxzOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFz
aFNldDxTdHJpbmc+IG1fc3RyZWFtVVJMczsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gQkxPQgorI2VuZGlmIC8vIFBVQkxJQ1VSTE1BTkFHRVJfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTA2OTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODk3LDE1
ICsxODk3LDYgQEAgdm9pZCBET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhjb25zdCBTdAogICAg
IGRpYWxvZ0ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5ydW5Nb2RhbCgpOwogfQogCi0jaWYgRU5B
QkxFKEJMT0IpCi1ET01VUkwqIERPTVdpbmRvdzo6d2Via2l0VVJMKCkgY29uc3QKLXsKLSAgICBp
ZiAoIW1fZG9tVVJMICYmIGlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQotICAgICAgICBt
X2RvbVVSTCA9IERPTVVSTDo6Y3JlYXRlKHRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
Ci0gICAgcmV0dXJuIG1fZG9tVVJMLmdldCgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoUVVP
VEEpCiBTdG9yYWdlSW5mbyogRE9NV2luZG93Ojp3ZWJraXRTdG9yYWdlSW5mbygpIGNvbnN0CiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDEwNjkzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MSwxMCArMzUx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1c2luZyBSZWZDb3VudGVkPERPTVdp
bmRvdz46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxET01XaW5kb3c+OjpkZXJlZjsK
IAotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICBET01VUkwqIHdlYmtpdFVSTCgpIGNvbnN0Owot
I2VuZGlmCi0KICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRldmljZW1vdGlvbik7CiAgICAgICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZGV2aWNlb3JpZW50YXRpb24pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMTA2OTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03ODIsNyArNzgyLDcgQEAgbW9k
dWxlIHdpbmRvdyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBXZWJL
aXRCbG9iQnVpbGRlckNvbnN0cnVjdG9yIFdlYktpdEJsb2JCdWlsZGVyOwogCi0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAg
ICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkxDb25zdHJ1Y3RvciB3ZWJr
aXRVUkw7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9RVU9UQSkgJiYgRU5BQkxFX1FVT1RBCiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPVF1b3RhXSBTdG9yYWdl
SW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA2OTMwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc3LDE1ICszNzcsNiBAQCBF
dmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRleHQ6OmVuc3VyZUV2CiAgICAgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVOQUJMRShCTE9CKQotRE9NVVJMKiBXb3JrZXJDb250
ZXh0Ojp3ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlmICghbV9kb21VUkwpCi0gICAgICAgIG1f
ZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
LSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKIHZvaWQgV29ya2VyQ29udGV4dDo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW50
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gMTA2
OTMwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSwxMCArMTMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAg
ICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQogICAgICAgICBlbnVtIEZpbGVTeXN0ZW1UeXBlIHsKICAgICAgICAgICAgIFRF
TVBPUkFSWSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAko
cmV2aXNpb24gMTA2OTMwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIG1vZHVsZSB0aHJlYWRzIHsK
ICAgICAgICAgYXR0cmlidXRlIEZpbGVSZWFkZXJTeW5jQ29uc3RydWN0b3IgRmlsZVJlYWRlclN5
bmM7CiAjZW5kaWYKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJM
T0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxP
Ql0gRE9NVVJMQ29uc3RydWN0b3Igd2Via2l0VVJMOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfRklM
RV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZU1RFTQogICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBURU1QT1JBUlkgPSAwOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2OTMwKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDIt
MDcgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAg
ICAgTWlncmF0ZSBjcmVhdGVPYmplY3RVUkwgJiByZXZva2VPYmplY3RVUkwgdG8gc3RhdGljIChD
bGFzcykgbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc0Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgdGVzdCB0byBjaGVjayBpZiBjcmVhdGVPYmplY3RVUkwgJiByZXZva2VPYmpl
Y3RVUkwgYXJlIHN0YXRpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9u
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9kb20vcHJvdG90eXBl
LWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0OiBHVEsgUmViYXNlbGluZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDogZGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9kb20vY29uc3RydWN0ZWQtb2JqZWN0cy1w
cm90b3R5cGVzLWV4cGVjdGVkLnR4dDogUXQgUmViYXNlbGluZS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9xdC9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBlY3RlZC50eHQ6IGRpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBl
Y3RlZC50eHQ6IGRpdHRvLgorCiAyMDEyLTAyLTA2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRvbid0IG1hcmsgb2JqZWN0
IGlzIHF1ZXJpYWJsZSBpZiBpdCBpcyBvbmx5IHJlYWNoYWJsZSBieSBpbnRlcm5hbCByZWZlcmVu
Y2UKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRv
bXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWlu
c3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTUgQEAKK1Rlc3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMgb2Yg
d2Via2l0VVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnY3JlYXRl
T2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyAncmV2b2tlT2JqZWN0VVJMJyBp
biB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyB1cmwuY3JlYXRlT2JqZWN0VVJMIGlzIHVuZGVmaW5l
ZC4KK1BBU1MgdXJsLnJldm9rZU9iamVjdFVSTCBpcyB1bmRlZmluZWQuCitQQVNTIHdpbmRvdy53
ZWJraXRVUkwuY3JlYXRlT2JqZWN0VVJMIGlzIGRlZmluZWQuCitQQVNTIHdpbmRvdy53ZWJraXRV
UkwucmV2b2tlT2JqZWN0VVJMIGlzIGRlZmluZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5j
dGlvbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9j
aGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBh
bmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuIik7CisKK3ZhciB1cmwgPSBuZXcgd2Via2l0VVJM
OworCitzaG91bGRCZVRydWUoIidjcmVhdGVPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworc2hv
dWxkQmVUcnVlKCIncmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKKworc2hvdWxkQmVV
bmRlZmluZWQoInVybC5jcmVhdGVPYmplY3RVUkwiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwu
cmV2b2tlT2JqZWN0VVJMIik7CisKK3Nob3VsZEJlRGVmaW5lZCgid2luZG93LndlYmtpdFVSTC5j
cmVhdGVPYmplY3RVUkwiKTsKK3Nob3VsZEJlRGVmaW5lZCgid2luZG93LndlYmtpdFVSTC5yZXZv
a2VPYmplY3RVUkwiKTsKKworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2Ut
Mi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zh
c3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2
OTMwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhl
cml0YW5jZS0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCw3IEBA
IE5ldmVyIGZvdW5kIENsaXBib2FyZAogTmV2ZXIgZm91bmQgRE9NUGFyc2VyCiBOZXZlciBmb3Vu
ZCBET01TZXR0YWJsZVRva2VuTGlzdAogTmV2ZXIgZm91bmQgRE9NU3RyaW5nTGlzdAorTmV2ZXIg
Zm91bmQgRE9NVVJMCiBOZXZlciBmb3VuZCBEb2N1bWVudAogTmV2ZXIgZm91bmQgRG9jdW1lbnRG
cmFnbWVudAogTmV2ZXIgZm91bmQgRG9jdW1lbnRUeXBlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0
b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2OTMwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTMzMyw2ICszMzMsNyBAQCBQQVNTIFhQYXRoRXhjZXB0aW9uLnRvU3RyaW5nKCkg
aXMgJ1tvYmplCiBQQVNTIFhQYXRoUmVzdWx0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgWFBhdGhS
ZXN1bHRDb25zdHJ1Y3Rvcl0nCiBQQVNTIFhTTFRQcm9jZXNzb3IudG9TdHJpbmcoKSBpcyAnW29i
amVjdCBYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3JdJwogRkFJTCB3ZWJraXRQZWVyQ29ubmVjdGlv
bi50b1N0cmluZygpIHNob3VsZCBiZSBbb2JqZWN0IHdlYmtpdFBlZXJDb25uZWN0aW9uQ29uc3Ry
dWN0b3JdLiBXYXMgW29iamVjdCBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yXS4KK0ZBSUwgd2Vi
a2l0VVJMLnRvU3RyaW5nKCkgc2hvdWxkIGJlIFtvYmplY3Qgd2Via2l0VVJMQ29uc3RydWN0b3Jd
LiBXYXMgW29iamVjdCBET01VUkxDb25zdHJ1Y3Rvcl0uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2Zhc3QvZG9tL2NvbnN0cnVjdGVkLW9iamVjdHMtcHJvdG90eXBlcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9kb20vY29uc3RydWN0ZWQt
b2JqZWN0cy1wcm90b3R5cGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2OTMwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9kb20vY29uc3RydWN0ZWQtb2JqZWN0cy1wcm90b3R5
cGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBQQVNTIChu
ZXcgaW5uZXIuWFBhdGhFdmFsdWF0b3IoKSkuaXNJbm5lCiBQQVNTIChuZXcgaW5uZXIuWFBhdGhF
dmFsdWF0b3IoKSkuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIChuZXcgaW5uZXIu
WFNMVFByb2Nlc3NvcigpKS5pc0lubmVyIGlzIHRydWUKIFBBU1MgKG5ldyBpbm5lci5YU0xUUHJv
Y2Vzc29yKCkpLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyAobmV3IGlubmVyLndl
YmtpdFVSTCgpKS5pc0lubmVyIGlzIHRydWUKK1BBU1MgKG5ldyBpbm5lci53ZWJraXRVUkwoKSku
Y29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3Qv
ZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDEwNjkzMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMjQwLDYgKzI0MCw3IEBAIE5ldmVyIGZvdW5kIENsaXBib2FyZAogTmV2ZXIgZm91
bmQgRE9NUGFyc2VyCiBOZXZlciBmb3VuZCBET01TZXR0YWJsZVRva2VuTGlzdAogTmV2ZXIgZm91
bmQgRE9NU3RyaW5nTGlzdAorTmV2ZXIgZm91bmQgRE9NVVJMCiBOZXZlciBmb3VuZCBEb2N1bWVu
dAogTmV2ZXIgZm91bmQgRG9jdW1lbnRGcmFnbWVudAogTmV2ZXIgZm91bmQgRG9jdW1lbnRUeXBl
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3Rv
cnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zh
c3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwNjkzMCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw2ICszMTUsNyBAQCBQQVNTIFhQYXRo
RXZhbHVhdG9yLnRvU3RyaW5nKCkgaXMgJ1tvYmplCiBQQVNTIFhQYXRoRXhjZXB0aW9uLnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QgWFBhdGhFeGNlcHRpb25Db25zdHJ1Y3Rvcl0nCiBQQVNTIFhQYXRo
UmVzdWx0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgWFBhdGhSZXN1bHRDb25zdHJ1Y3Rvcl0nCiBQ
QVNTIFhTTFRQcm9jZXNzb3IudG9TdHJpbmcoKSBpcyAnW29iamVjdCBYU0xUUHJvY2Vzc29yQ29u
c3RydWN0b3JdJworRkFJTCB3ZWJraXRVUkwudG9TdHJpbmcoKSBzaG91bGQgYmUgW29iamVjdCB3
ZWJraXRVUkxDb25zdHJ1Y3Rvcl0uIFdhcyBbb2JqZWN0IERPTVVSTENvbnN0cnVjdG9yXS4KIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126051</attachid>
            <date>2012-02-08 04:13:35 -0800</date>
            <delta_ts>2012-02-08 06:39:36 -0800</delta_ts>
            <desc>Fixed patch</desc>
            <filename>74386_fix_2.patch</filename>
            <type>text/plain</type>
            <size>30937</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTA3ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
Y3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIHRvIHN0YXRpYyAoQ2xhc3MpIG1ldGhv
ZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
Y3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIGZyb20gRE9NVVJMIGltcGxlbWVudGF0
aW9uIHRvCisgICAgICAgIHN0YXRpYyBtZXRob2RzIGFzIHBlciBzcGVjcyAtIGh0dHA6Ly93d3cu
dzMub3JnL1RSL0ZpbGVBUEkvI2NyZWF0aW5nLXJldm9raW5nCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCisgICAg
ICAgIEFscmVhZHkgRXhpc3Rpbmc6CisgICAgICAgICAgICBmYXN0L2ZpbGVzL3Jldm9rZS1ibG9i
LXVybC5odG1sCisgICAgICAgICAgICBmYXN0L2RvbS93aW5kb3ctZG9tdXJsLWNyYXNoLmh0bWwK
KyAgICAgICAgICAgIGZhc3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8taW1nLmh0bWwKKyAgICAg
ICAgICAgIGZhc3QvZmlsZXMvY3JlYXRlLWJsb2ItdXJsLWNyYXNoLmh0bWwKKyAgICAgICAgICAg
IGZhc3QvZmlsZXMvd29ya2Vycy9pbmxpbmUtd29ya2VyLXZpYS1ibG9iLXVybC5odG1sCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpmaWxlVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHVi
bGljVVJMTWFuYWdlcik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6Cisg
ICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01VUkw6OmNyZWF0ZU9iamVjdFVSTCk6IENoYW5nZWQgdG8gc3RhdGljLgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpyZXZva2VPYmplY3RVUkwpOiBkaXR0by4KKyAgICAgICAg
KiBodG1sL0RPTVVSTC5oOgorICAgICAgICAoRE9NVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5pZGw6CisgICAgICAgICogaHRt
bC9QdWJsaWNVUkxNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChQdWJsaWNVUkxNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjb250ZXh0RGVz
dHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmJsb2JVUkxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OnN0cmVhbVVSTHMpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmNwcDogUmVtb3ZlZCBvYmplY3QgaW5pdGlhbGl6YXRpb24gZm9y
IERPTVVSTC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
IGRpdHRvLgorICAgICAgICAoRE9NV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5p
ZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAoV29ya2Vy
Q29udGV4dCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDoKKwogMjAxMi0w
Mi0wOCAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXSBVc2luZyBzdHJpbmcgbWV0aG9kIGluc3RlYWQgb2YgY2hhciogb3BlcmF0aW9uIGluIHRo
ZSBwbGF0Zm9ybUxhbmd1YWdlKCkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDEwNzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTIyNTYsNiArMjI1Niw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDcwNjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xODgwLDYgKzE4ODAsNyBA
QCBIRUFERVJTICs9IFwKICAgICBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBcCiAgICAg
aHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaCBcCiAgICAgaHRtbC9QbHVnaW5Eb2N1bWVudC5oIFwK
KyAgICBodG1sL1B1YmxpY1VSTE1hbmFnZXIuaCBcCiAgICAgaHRtbC9TdGVwUmFuZ2UuaCBcCiAg
ICAgaHRtbC9UZXh0RG9jdW1lbnQuaCBcCiAgICAgaHRtbC9UZXh0VHJhY2suaCBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDcwNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTUzNzUsNiArNTM3NSw3IEBACiAgICAgICAgICAgICAn
aHRtbC9QYXNzd29yZElucHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9QbHVnaW5Eb2N1bWVudC5oJywKKyAgICAgICAg
ICAgICdodG1sL1B1YmxpY1VSTE1hbmFnZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9SYWRpb0lu
cHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvUmFkaW9JbnB1dFR5cGUuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNzA2NSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC02MDQ5NCw2ICs2MDQ5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFB1YmxpY1VSTE1hbmFnZXIuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxSYWRp
b0lucHV0VHlwZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA3MDY1
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzksNiArMjc5LDcgQEAKIAkJMEZGNTAyNkExMDJCQTk0MzAwNjZG
MzlBIC8qIEpTU3R5bGVNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNTAyNjgxMDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5oICov
OyB9OwogCQkwRkY1MDI3MTEwMkJBOTZBMDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY1MDI2RTEwMkJBOTY2
MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgKi87IH07CiAJCTBGRjUwMjcyMTAyQkE5NkEwMDY2
RjM5QSAvKiBTdHlsZU1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkY1MDI2RjEwMkJBOTZBMDA2NkYzOUEgLyogU3R5bGVNZWRpYS5oICovOyB9
OworCQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTBGQjA4NEExNEUxNUM3
RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCAqLzsgfTsKIAkJMTQwMjY0NUUwQUZEQzE5
QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01hYy5t
bSAqLzsgfTsKIAkJMTQwM0I5OTcwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwM0I5OTUwOUVCMTNB
RjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwM0I5
OTYwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgKi87IH07CkBAIC02OTgwLDYgKzY5
ODEsNyBAQAogCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZU1lZGlhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNTAyNkYxMDJCQTk2QTAwNjZGMzlBIC8qIFN0eWxl
TWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVNZWRpYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY1MDI3MDEwMkJBOTZBMDA2NkYzOUEgLyog
U3R5bGVNZWRpYS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3R5bGVNZWRpYS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTEwRkIwODRBMTRFMTVDN0UwMEEzREI5OCAvKiBQ
dWJsaWNVUkxNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1Ymxp
Y1VSTE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMjY0NUQwQUZE
QzE5QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTG9nZ2luZ01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQwM0I5MEMwOUVCMTI0NTAwNzk3QzdGIC8qIERPTVdpbmRvdy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRE9NV2luZG93LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQwM0I5OTUwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE2OTQxLDYgKzE2OTQzLDcgQEAKIAkJCQlGNTVCM0Q5NjEyNTFGMTJEMDAzRUYyNjkgLyog
UGFzc3dvcmRJbnB1dFR5cGUuaCAqLywKIAkJCQk5NzIwNUFCOTEyMzkyOTI3MDBCMTczODAgLyog
UGx1Z2luRG9jdW1lbnQuY3BwICovLAogCQkJCTk3MjA1QUJBMTIzOTI5MjcwMEIxNzM4MCAvKiBQ
bHVnaW5Eb2N1bWVudC5oICovLAorCQkJCTEwRkIwODRBMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJs
aWNVUkxNYW5hZ2VyLmggKi8sCiAJCQkJRjU1QjNEOTcxMjUxRjEyRDAwM0VGMjY5IC8qIFJhZGlv
SW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q5ODEyNTFGMTJEMDAzRUYyNjkgLyogUmFkaW9J
bnB1dFR5cGUuaCAqLywKIAkJCQlGNTVCM0Q5OTEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1
dFR5cGUuY3BwICovLApAQCAtMjQxNTcsNiArMjQxNjAsNyBAQAogCQkJCTFBQUFEREJGMTREQzY0
MDcwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QUFEREU0MTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBQURERTkxNERDOERGODAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlTWFj
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTggLyogUHVibGlj
VVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NDg1ODAxNEUwMkQ1MTAwNkFFMDVB
IC8qIEluc3BlY3Rvckhpc3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gMTA3MDY1KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJG
aWxlVGhyZWFkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJQdWJsaWNV
UkxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTI2LDYgKzEyNywxMCBA
QCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uCiAgICAgICAgIG1fZmls
ZVRocmVhZCA9IDA7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEJMT0IpCisgICAgaWYgKG1f
cHVibGljVVJMTWFuYWdlcikKKyAgICAgICAgbV9wdWJsaWNVUkxNYW5hZ2VyLT5jb250ZXh0RGVz
dHJveWVkKCk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC0zODUs
NiArMzkwLDE1IEBAIEZpbGVUaHJlYWQqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZpbGUKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKEJMT0IpCitQdWJsaWNVUkxNYW5hZ2VyJiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpwdWJsaWNVUkxNYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fcHVibGljVVJM
TWFuYWdlcikKKyAgICAgICAgbV9wdWJsaWNVUkxNYW5hZ2VyID0gUHVibGljVVJMTWFuYWdlcjo6
Y3JlYXRlKCk7CisgICAgcmV0dXJuICptX3B1YmxpY1VSTE1hbmFnZXI7Cit9CisjZW5kaWYKKwog
dm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChk
b3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpCiB7CiAgICAgaWYgKG1pbmltdW1UaW1lcklu
dGVydmFsKCkgIT0gb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNpb24gMTA3MDY1KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNiArNTMsOSBAQCBjbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRXZlbnRUYXJnZXQ7
CiBjbGFzcyBNZXNzYWdlUG9ydDsKIAorI2lmIEVOQUJMRShCTE9CKQorY2xhc3MgUHVibGljVVJM
TWFuYWdlcjsKKyNlbmRpZgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiBjbGFzcyBEYXRhYmFz
ZTsKIGNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKQEAgLTEwMyw2ICsxMDYsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorI2lmIEVOQUJMRShCTE9CKQor
ICAgIFB1YmxpY1VSTE1hbmFnZXImIHB1YmxpY1VSTE1hbmFnZXIoKTsKKyNlbmRpZgogICAgIHZv
aWQgZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCosIHZvaWQqIHVwY2Fz
dFBvaW50ZXIpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9N
T2JqZWN0Kik7CiAKQEAgLTIwNSw2ICsyMTEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbkRp
c3BhdGNoRXJyb3JFdmVudDsKICAgICBjbGFzcyBQZW5kaW5nRXhjZXB0aW9uOwogICAgIE93blB0
cjxWZWN0b3I8T3duUHRyPFBlbmRpbmdFeGNlcHRpb24+ID4gPiBtX3BlbmRpbmdFeGNlcHRpb25z
OworI2lmIEVOQUJMRShCTE9CKQorICAgIE93blB0cjxQdWJsaWNVUkxNYW5hZ2VyPiBtX3B1Ymxp
Y1VSTE1hbmFnZXI7CisjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgUmVm
UHRyPERhdGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFkOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9ET01VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
VVJMLmNwcAkocmV2aXNpb24gMTA3MDY1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksMTEgKzMwLDE1IEBACiAKICNpbmNsdWRlICJET01VUkwuaCIKIAorI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJCbG9iVVJM
LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKQEAgLTQzLDM3ICs0OCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLURPTVVSTDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQotewotfQotCi1ET01VUkw6On5ET01VUkwoKQotewotfQotCi12b2lkIERPTVVS
TDo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6
OmNvbnRleHREZXN0cm95ZWQoKTsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVi
bGljQmxvYlVSTHNFbmQgPSBtX3B1YmxpY0Jsb2JVUkxzLmVuZCgpOwotICAgIGZvciAoSGFzaFNl
dDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNCbG9iVVJMcy5iZWdpbigpOyBpdGVy
ICE9IHB1YmxpY0Jsb2JVUkxzRW5kOyArK2l0ZXIpCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOwot
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9y
IHB1YmxpY1N0cmVhbVVSTHNFbmQgPSBtX3B1YmxpY1N0cmVhbVVSTHMuZW5kKCk7Ci0gICAgZm9y
IChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY1N0cmVhbVVSTHMuYmVn
aW4oKTsgaXRlciAhPSBwdWJsaWNTdHJlYW1VUkxzRW5kOyArK2l0ZXIpCi0gICAgICAgIE1lZGlh
U3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOwotI2VuZGlmCi19Ci0KICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKiBzdHJl
YW0pCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWVkaWFTdHJlYW0qIHN0cmVhbSkKIHsKLSAgICBp
ZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQorICAgIGlmICghc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0g
QmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5
T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKQEAgLTgxLDQ2ICs2Miw0OCBAQCBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoTWVkaWFTdHJlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIE1lZGlh
U3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChwdWJsaWNV
UkwsIHN0cmVhbSk7Ci0gICAgbV9wdWJsaWNTdHJlYW1VUkxzLmFkZChwdWJsaWNVUkwuc3RyaW5n
KCkpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5zdHJl
YW1VUkxzKCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJM
LnN0cmluZygpOwogfQogI2VuZGlmCiAKLVN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChC
bG9iKiBibG9iKQorU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IpCiB7Ci0gICAgaWYg
KCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2IpCisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0IHx8ICFibG9iKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBL
VVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVS
TDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCkpOwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwocHVibGlj
VVJMLCBibG9iLT51cmwoKSk7Ci0gICAgbV9wdWJsaWNCbG9iVVJMcy5hZGQocHVibGljVVJMLnN0
cmluZygpKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCku
YmxvYlVSTHMoKS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNV
Ukwuc3RyaW5nKCk7CiB9CiAKLXZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCit2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGlmICghc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgS1VSTCB1cmwoS1VS
TCgpLCB1cmxTdHJpbmcpOwogCi0gICAgaWYgKG1fcHVibGljQmxvYlVSTHMuY29udGFpbnModXJs
LnN0cmluZygpKSkgeworICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCkuYmxvYlVSTHMoKTsKKyAgICBpZiAoYmxv
YlVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgewogICAgICAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgICAgICBtX3B1YmxpY0Jsb2JVUkxz
LnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgICAgICBibG9iVVJMcy5yZW1vdmUodXJsLnN0cmlu
ZygpKTsKICAgICB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGlmIChtX3B1Ymxp
Y1N0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgeworICAgIEhhc2hTZXQ8U3RyaW5n
PiYgc3RyZWFtVVJMcyA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIo
KS5zdHJlYW1VUkxzKCk7CisgICAgaWYgKHN0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygp
KSkgewogICAgICAgICAvLyBGSVhNRTogbWFrZSBzdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIGJlbG93
LiBSYWlzZSBhIHNwZWMgcXVlc3Rpb24gaWYgcmVxdWlyZWQuCiAgICAgICAgIC8vIFNpbmNlIFdl
YldvcmtlcnMgY2Fubm90IG9idGFpbiBTdHJlYW0gb2JqZWN0cywgd2Ugc2hvdWxkIGJlIG9uIHRo
ZSBtYWluIHRocmVhZC4KICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
TWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwo
dXJsKTsKLSAgICAgICAgbV9wdWJsaWNTdHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwor
ICAgICAgICBzdHJlYW1VUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KICNlbmRpZgog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCShyZXZpc2lvbiAxMDcwNjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVVSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjcsNyBAQAogI2lmbmRlZiBET01VUkxfaAogI2Rl
ZmluZSBET01VUkxfaAogCi0jaWYgRU5BQkxFKEJMT0IpCi0KLSNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC00MCwzMCArMzksMjIgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50
ZWQ8RE9NVVJMPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJM
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQotICAgIH5ET01VUkwoKTsKLQotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSop
OwotI2VuZGlmCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChCbG9iKik7Ci0gICAgdm9pZCBy
ZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJik7CitjbGFzcyBET01VUkwgOiBwdWJsaWMgUmVm
Q291bnRlZDxET01VUkw+IHsKIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVS
TD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTCk7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisjaWYgRU5BQkxFKEJMT0IpCisgICAgc3RhdGlj
IHZvaWQgY29udGV4dERlc3Ryb3llZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICBI
YXNoU2V0PFN0cmluZz4gbV9wdWJsaWNCbG9iVVJMczsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0
ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiopOworICAgIHN0YXRpYyB2
b2lkIHJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
Jik7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJs
aWNTdHJlYW1VUkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbSopOworI2VuZGlmCiAjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9CKQotCiAjZW5kaWYg
Ly8gRE9NVVJMX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHJldmlzaW9uIDEwNzA2NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDE1ICsyNywxNSBAQAogbW9k
dWxlIGh0bWwgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUJMT0IsCi0g
ICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3IsCiAgICAgICAgIEpT
R2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKICAgICAgICAgSlNHZW5lcmF0ZVRvSlMsCiAgICAgICAg
IEpTTm9TdGF0aWNUYWJsZXMKICAgICBdIERPTVVSTCB7CiAjaWYgZGVmaW5lZChFTkFCTEVfTUVE
SUFfU1RSRUFNKSAmJiBFTkFCTEVfTUVESUFfU1RSRUFNCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0
cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVh
bSBzdHJlYW0pOworICAgICAgICBzdGF0aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RV
UkwoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKTsKICNlbmRpZgotICAgICAgICBbQ29udmVydE51bGxT
dHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9i
KTsKLSAgICAgICAgdm9pZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CisgICAg
ICAgIHN0YXRpYyBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCxDb252ZXJ0TnVsbFN0
cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2Ip
OworICAgICAgICBzdGF0aWMgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQg
cmV2b2tlT2JqZWN0VVJMKGluIERPTVN0cmluZyB1cmwpOwogICAgIH07CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFB1YmxpY1VSTE1hbmFnZXJfaAorI2RlZmluZSBQdWJsaWNVUkxNYW5hZ2VyX2gK
KworI2lmIEVOQUJMRShCTE9CKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVn
aXN0cnkuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXIgeworCitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8UHVibGljVVJMTWFuYWdlcj4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IFB1YmxpY1VSTE1hbmFnZXIpOyB9CisgICAgdm9pZCBjb250ZXh0RGVzdHJv
eWVkKCkKKyAgICB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgYmxvYlVSTHNF
bmQgPSBtX2Jsb2JVUkxzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRl
cmF0b3IgaXRlciA9IG1fYmxvYlVSTHMuYmVnaW4oKTsgaXRlciAhPSBibG9iVVJMc0VuZDsgKytp
dGVyKQorICAgICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JV
UkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHN0cmVhbVVSTHNFbmQgPSBt
X3N0cmVhbVVSTHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRv
ciBpdGVyID0gbV9zdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gc3RyZWFtVVJMc0VuZDsgKytp
dGVyKQorICAgICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lz
dGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzKCkgeyByZXR1cm4gbV9ibG9i
VVJMczsgfQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+JiBz
dHJlYW1VUkxzKCkgeyByZXR1cm4gbV9zdHJlYW1VUkxzOyB9CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBIYXNoU2V0PFN0cmluZz4gbV9ibG9iVVJMczsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3N0cmVhbVVSTHM7CisjZW5kaWYKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJMT0IKKyNlbmRpZiAvLyBQVUJMSUNVUkxN
QU5BR0VSX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDEwNzA2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg5NywxNSArMTg5Nyw2IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29u
c3QgU3QKICAgICBkaWFsb2dGcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+cnVuTW9kYWwoKTsKIH0K
IAotI2lmIEVOQUJMRShCTE9CKQotRE9NVVJMKiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX2RvbVVSTCAmJiBpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkK
LSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYg
RU5BQkxFKFFVT1RBKQogU3RvcmFnZUluZm8qIERPTVdpbmRvdzo6d2Via2l0U3RvcmFnZUluZm8o
KSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAxMDcwNjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTEsMTAgKzM1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdXNpbmcgUmVmQ291
bnRlZDxET01XaW5kb3c+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93
Pjo6ZGVyZWY7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwo
KSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkZXZpY2Vtb3Rpb24pOwogICAgICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRldmljZW9yaWVudGF0aW9uKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDEwNzA2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzgyLDcgKzc4
Miw3IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9
QkxPQl0gV2ViS2l0QmxvYkJ1aWxkZXJDb25zdHJ1Y3RvciBXZWJLaXRCbG9iQnVpbGRlcjsKIAot
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJr
aXRVUkw7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMQ29uc3Ry
dWN0b3Igd2Via2l0VVJMOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfUVVPVEEpICYmIEVOQUJMRV9R
VU9UQQogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1RdW90
YV0gU3RvcmFnZUluZm8gd2Via2l0U3RvcmFnZUluZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDEwNzA2NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NywxNSAr
Mzc3LDYgQEAgRXZlbnRUYXJnZXREYXRhKiBXb3JrZXJDb250ZXh0OjplbnN1cmVFdgogICAgIHJl
dHVybiAmbV9ldmVudFRhcmdldERhdGE7CiB9CiAKLSNpZiBFTkFCTEUoQkxPQikKLURPTVVSTCog
V29ya2VyQ29udGV4dDo6d2Via2l0VVJMKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZG9tVVJMKQot
ICAgICAgICBtX2RvbVVSTCA9IERPTVVSTDo6Y3JlYXRlKHRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7Ci0gICAgcmV0dXJuIG1fZG9tVVJMLmdldCgpOwotfQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCiB2b2lkIFdvcmtlckNvbnRleHQ6OndlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJl
dmlzaW9uIDEwNzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OwogCi0jaWYgRU5BQkxF
KEJMT0IpCi0gICAgICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAgICAgZW51bSBGaWxlU3lzdGVtVHlwZSB7CiAgICAg
ICAgICAgICBURU1QT1JBUlksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5pZGwJKHJldmlzaW9uIDEwNzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBtb2R1bGUg
dGhyZWFkcyB7CiAgICAgICAgIGF0dHJpYnV0ZSBGaWxlUmVhZGVyU3luY0NvbnN0cnVjdG9yIEZp
bGVSZWFkZXJTeW5jOwogI2VuZGlmCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25k
aXRpb25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRp
dGlvbmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQo
RU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KICAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzA2NSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTAyLTA3ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29t
PgorCisgICAgICAgIE1pZ3JhdGUgY3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMIHRv
IHN0YXRpYyAoQ2xhc3MpIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgdG8gY2hlY2sgaWYgY3JlYXRlT2JqZWN0VVJMICYg
cmV2b2tlT2JqZWN0VVJMIGFyZSBzdGF0aWMgZnVuY3Rpb25zLgorCisgICAgICAgICogZmFzdC9k
b20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVy
bC1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dDogR1RLIFJlYmFzZWxpbmUuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3Rl
ZC50eHQ6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvZG9tL2NvbnN0cnVjdGVk
LW9iamVjdHMtcHJvdG90eXBlcy1leHBlY3RlZC50eHQ6IFF0IFJlYmFzZWxpbmUuCisgICAgICAg
ICogcGxhdGZvcm0vcXQvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQu
dHh0OiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1
Y3RvcnMtZXhwZWN0ZWQudHh0OiBkaXR0by4KKwogMjAxMi0wMi0wOCAgS2VudGFybyBIYXJhICA8
aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gU2tpcCBodHRwL3Rl
c3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1wdXQuaHRtbCBpbiBxdCBhbmQgZ3RrLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJs
LWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFu
Y2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNSBAQAorVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBvZiB3ZWJr
aXRVUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICdjcmVhdGVPYmpl
Y3RVUkwnIGluIHdlYmtpdFVSTCBpcyB0cnVlCitQQVNTICdyZXZva2VPYmplY3RVUkwnIGluIHdl
YmtpdFVSTCBpcyB0cnVlCitQQVNTIHVybC5jcmVhdGVPYmplY3RVUkwgaXMgdW5kZWZpbmVkLgor
UEFTUyB1cmwucmV2b2tlT2JqZWN0VVJMIGlzIHVuZGVmaW5lZC4KK1BBU1Mgd2luZG93LndlYmtp
dFVSTC5jcmVhdGVPYmplY3RVUkwgaXMgZGVmaW5lZC4KK1BBU1Mgd2luZG93LndlYmtpdFVSTC5y
ZXZva2VPYmplY3RVUkwgaXMgZGVmaW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9u
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNr
LWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGluc3RhbmNlb2YgZnVuY3Rpb25zIGFuZCBw
cm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJraXRVUkw7CisK
K3Nob3VsZEJlVHJ1ZSgiJ2NyZWF0ZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRC
ZVRydWUoIidyZXZva2VPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworCitzaG91bGRCZVVuZGVm
aW5lZCgidXJsLmNyZWF0ZU9iamVjdFVSTCIpOworc2hvdWxkQmVVbmRlZmluZWQoInVybC5yZXZv
a2VPYmplY3RVUkwiKTsKKworc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cud2Via2l0VVJMLmNyZWF0
ZU9iamVjdFVSTCIpOworc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cud2Via2l0VVJMLnJldm9rZU9i
amVjdFVSTCIpOworCisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9k
b20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDcwNjUp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRh
bmNlLTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQwLDcgQEAgTmV2
ZXIgZm91bmQgQ2xpcGJvYXJkCiBOZXZlciBmb3VuZCBET01QYXJzZXIKIE5ldmVyIGZvdW5kIERP
TVNldHRhYmxlVG9rZW5MaXN0CiBOZXZlciBmb3VuZCBET01TdHJpbmdMaXN0CitOZXZlciBmb3Vu
ZCBET01VUkwKIE5ldmVyIGZvdW5kIERvY3VtZW50CiBOZXZlciBmb3VuZCBEb2N1bWVudEZyYWdt
ZW50CiBOZXZlciBmb3VuZCBEb2N1bWVudFR5cGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDcwNjUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMzMzLDYgKzMzMyw3IEBAIFBBU1MgWFBhdGhFeGNlcHRpb24udG9TdHJpbmcoKSBpcyAn
W29iamUKIFBBU1MgWFBhdGhSZXN1bHQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBYUGF0aFJlc3Vs
dENvbnN0cnVjdG9yXScKIFBBU1MgWFNMVFByb2Nlc3Nvci50b1N0cmluZygpIGlzICdbb2JqZWN0
IFhTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvcl0nCiBGQUlMIHdlYmtpdFBlZXJDb25uZWN0aW9uLnRv
U3RyaW5nKCkgc2hvdWxkIGJlIFtvYmplY3Qgd2Via2l0UGVlckNvbm5lY3Rpb25Db25zdHJ1Y3Rv
cl0uIFdhcyBbb2JqZWN0IFBlZXJDb25uZWN0aW9uQ29uc3RydWN0b3JdLgorRkFJTCB3ZWJraXRV
UkwudG9TdHJpbmcoKSBzaG91bGQgYmUgW29iamVjdCB3ZWJraXRVUkxDb25zdHJ1Y3Rvcl0uIFdh
cyBbb2JqZWN0IERPTVVSTENvbnN0cnVjdG9yXS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9kb20vY29uc3RydWN0ZWQtb2JqZWN0cy1wcm90b3R5cGVzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2RvbS9jb25zdHJ1Y3RlZC1vYmpl
Y3RzLXByb3RvdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDcwNjUpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2RvbS9jb25zdHJ1Y3RlZC1vYmplY3RzLXByb3RvdHlwZXMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIFBBU1MgKG5ldyBp
bm5lci5YUGF0aEV2YWx1YXRvcigpKS5pc0lubmUKIFBBU1MgKG5ldyBpbm5lci5YUGF0aEV2YWx1
YXRvcigpKS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgKG5ldyBpbm5lci5YU0xU
UHJvY2Vzc29yKCkpLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyAobmV3IGlubmVyLlhTTFRQcm9jZXNz
b3IoKSkuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCitQQVNTIChuZXcgaW5uZXIud2Via2l0
VVJMKCkpLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyAobmV3IGlubmVyLndlYmtpdFVSTCgpKS5jb25z
dHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9kb20v
cHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTA3MDY1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0yNDAsNiArMjQwLDcgQEAgTmV2ZXIgZm91bmQgQ2xpcGJvYXJkCiBOZXZlciBmb3VuZCBE
T01QYXJzZXIKIE5ldmVyIGZvdW5kIERPTVNldHRhYmxlVG9rZW5MaXN0CiBOZXZlciBmb3VuZCBE
T01TdHJpbmdMaXN0CitOZXZlciBmb3VuZCBET01VUkwKIE5ldmVyIGZvdW5kIERvY3VtZW50CiBO
ZXZlciBmb3VuZCBEb2N1bWVudEZyYWdtZW50CiBOZXZlciBmb3VuZCBEb2N1bWVudFR5cGUKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9q
cy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA3MDY1KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDYgKzMxNSw3IEBAIFBBU1MgWFBhdGhFdmFs
dWF0b3IudG9TdHJpbmcoKSBpcyAnW29iamUKIFBBU1MgWFBhdGhFeGNlcHRpb24udG9TdHJpbmco
KSBpcyAnW29iamVjdCBYUGF0aEV4Y2VwdGlvbkNvbnN0cnVjdG9yXScKIFBBU1MgWFBhdGhSZXN1
bHQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBYUGF0aFJlc3VsdENvbnN0cnVjdG9yXScKIFBBU1Mg
WFNMVFByb2Nlc3Nvci50b1N0cmluZygpIGlzICdbb2JqZWN0IFhTTFRQcm9jZXNzb3JDb25zdHJ1
Y3Rvcl0nCitGQUlMIHdlYmtpdFVSTC50b1N0cmluZygpIHNob3VsZCBiZSBbb2JqZWN0IHdlYmtp
dFVSTENvbnN0cnVjdG9yXS4gV2FzIFtvYmplY3QgRE9NVVJMQ29uc3RydWN0b3JdLgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>