<?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>31265</bug_id>
          
          <creation_ts>2009-11-09 11:20:35 -0800</creation_ts>
          <short_desc>Find a new home for setUseSecureKeyboardEntry (and Mac implementation)</short_desc>
          <delta_ts>2010-03-08 11:22:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stuart Morgan">stuartmorgan</reporter>
          <assigned_to name="Stuart Morgan">stuartmorgan</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>mrowe</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>161659</commentid>
    <comment_count>0</comment_count>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2009-11-09 11:20:35 -0800</bug_when>
    <thetext>In order to give Chromium access to the secure text entry code, it was moved to Frame.cpp, which isn&apos;t ideal. From bug 31083 comment 6:
&gt; Clearly all the ports that don&apos;t compile on Mac OS X don&apos;t want this code.
&gt; Since Mac is taken to mean the native Mac WebKit, we may just need a filename
&gt; suffix that means anything running on the Mac platform, which could include Qt
&gt; or GTK or Chromium when compiling on Mac OS X.
&gt; 
&gt; One of the cleanest ways to refactor this would be to move the code into
&gt; WebCore/platform and just call it from Frame or SelectionController, since it&apos;s
&gt; definitely a bunch of &quot;talking to the underlying platform&quot; code just inline
&gt; there because it was written *so* long ago.
&gt; 
&gt; Side note: If we are touching this anyway, it would be good to move it to
&gt; SelectionController. As you can see in Frame.h, this is supposed to be moved
&gt; out of the Frame class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161815</commentid>
    <comment_count>1</comment_count>
      <attachid>42810</attachid>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2009-11-09 15:22:01 -0800</bug_when>
    <thetext>Created attachment 42810
Incremental improvement

This does most of what was requested, if I understood correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161817</commentid>
    <comment_count>2</comment_count>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2009-11-09 15:22:25 -0800</bug_when>
    <thetext>I can do a second patch to create a new file suffix for &quot;everything on the Mac&quot;, but I wanted to get the easy stuff done now. Before I actually make a patch that adds a new file convention though, there should be buy-in on what that should be (what suffix, and what exactly should it mean? Should there be a corresponding PLATFORM?). Is the mailing list the best place to bring that up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161825</commentid>
    <comment_count>3</comment_count>
      <attachid>42810</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-09 16:29:55 -0800</bug_when>
    <thetext>Comment on attachment 42810
Incremental improvement

&gt; +    void updateSecureKeyboardEntryIfActive();
&gt; +    void setUseSecureKeyboardEntry(bool enable);

Since if you take my advice below it will only be used within the SelectionController class, setUseSecureKeyboardEntry should be private rather than public.

&gt;      if (m_doc &amp;&amp; selection()-&gt;isFocusedAndActive())
&gt; -        setUseSecureKeyboardEntry(m_doc-&gt;useSecureKeyboardEntryWhenActive());
&gt; +        selection()-&gt;setUseSecureKeyboardEntry(m_doc-&gt;useSecureKeyboardEntryWhenActive());

This should call updateSecureKeyboardEntryIfActive instead.

Even the null check of the document could be done inside updateSecureKeyboardEntryIfActive, I think.

&gt; +#include &quot;SecureTextInput.h&quot;

You need to include &quot;config.h&quot; first in any .cpp file.

&gt; +#if PLATFORM(MAC) || (PLATFORM(CHROMIUM) &amp;&amp; PLATFORM(DARWIN))
&gt; +#import &lt;Carbon/Carbon.h&gt;
&gt; +#endif

PLATFORM(MAC) doesn&apos;t need this include due to the prefix header file for WebCore. Does Chromium really need it?

&gt; +#if PLATFORM(MAC) || (PLATFORM(CHROMIUM) &amp;&amp; PLATFORM(DARWIN))
&gt; +const short enableRomanKeyboardsOnly = -23;
&gt; +void enableSecureTextInput()

I think we should stick this Tiger-only constant, enableRomanKeyboardsOnly, inside an #ifdef with a bit of whitespace around it. No need to crowd it next to the function the way it was before.

&gt; +{
&gt; +    if (IsSecureEventInputEnabled())
&gt; +        return;
&gt; +    EnableSecureEventInput();
&gt; +#ifdef BUILDING_ON_TIGER
&gt; +    KeyScript(enableRomanKeyboardsOnly);
&gt; +#else
&gt; +    // WebKit substitutes nil for input context when in password field, which corresponds to null TSMDocument. So, there is
&gt; +    // no need to call TSMGetActiveDocument(), which may return an incorrect result when selection hasn&apos;t been yet updated
&gt; +    // after focusing a node.
&gt; +    CFArrayRef inputSources = TISCreateASCIICapableInputSourceList();
&gt; +    TSMSetDocumentProperty(0, kTSMDocumentEnabledInputSourcesPropertyTag, sizeof(CFArrayRef), &amp;inputSources);
&gt; +    CFRelease(inputSources);
&gt; +#endif
&gt; +}
&gt; +
&gt; +void disableSecureTextInput()
&gt; +{
&gt; +    if (!IsSecureEventInputEnabled())
&gt; +        return;
&gt; +    DisableSecureEventInput();
&gt; +#ifdef BUILDING_ON_TIGER
&gt; +    KeyScript(smKeyEnableKybds);
&gt; +#else
&gt; +    TSMRemoveDocumentProperty(0, kTSMDocumentEnabledInputSourcesPropertyTag);
&gt; +#endif
&gt; +}
&gt; +#endif
&gt; +
&gt; +} // namespace WebCore

It&apos;s wrong to take code originally written by an Apple engineer in 2006, put it in a new source file, and label that file with Copyright 2009 Google. Please fix that.

&gt; Property changes on: WebCore/platform/SecureTextInput.cpp
&gt; ___________________________________________________________________
&gt; Added: svn:eol-style
&gt;    + LF

Other source files have eol-style set to native, not LF. You should try to be consistent with the others, or perhaps we should change our default.

&gt; +#if !(PLATFORM(MAC) || (PLATFORM(CHROMIUM) &amp;&amp; PLATFORM(DARWIN)))
&gt; +    inline void enableSecureTextInput() { }
&gt; +    inline void disableSecureTextInput() { }
&gt; +#endif

Since this condition is already in this header, we might want to define something so we don&apos;t have to repeat the condition inside the .cpp file as well.

&gt; Property changes on: WebCore/platform/SecureTextInput.h
&gt; ___________________________________________________________________
&gt; Added: svn:eol-style
&gt;    + LF

Other source files have eol-style set to native, not LF. You should try to be consistent with the others, or perhaps we should change our default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161826</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-09 16:30:04 -0800</bug_when>
    <thetext>Thanks for taking this on, by the way!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162194</commentid>
    <comment_count>5</comment_count>
      <attachid>42890</attachid>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2009-11-10 13:34:02 -0800</bug_when>
    <thetext>Created attachment 42890
Incremental improvement, v2

Addresses review comments (sorry for the WebKit-n00b mistakes!)

Two questions:
- This uses the FrameMac.cpp copyright block used for the moved code (except with the date changed to 2006, since as you said the code predates that file). I&apos;ve also noticed some hybrid copyrights that list both Apple, with one date, and Google, with another, but wasn&apos;t sure when that was called for; since the non-moved code here was negligible I asume it doesn&apos;t need that, but let me know if there&apos;s a convention I should follow.
- Regarding the Carbon include, build-webkit --debug fails for me, choking on all the Carbon symbols in that file, if I don&apos;t include it, so it does seem to be necessary for PLATFORM(MAC). Is there something I have configured wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162649</commentid>
    <comment_count>6</comment_count>
      <attachid>42890</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-11 13:20:26 -0800</bug_when>
    <thetext>Comment on attachment 42890
Incremental improvement, v2

&gt; +    void setUseSecureKeyboardEntry(bool enable);

Normally we&apos;d leave out the argument when it doesn&apos;t make things any clearer. I would leave it out here.

&gt; -    m_doc = newDoc;
&gt; -    if (m_doc &amp;&amp; selection()-&gt;isFocusedAndActive())
&gt; -        setUseSecureKeyboardEntry(m_doc-&gt;useSecureKeyboardEntryWhenActive());
&gt; +    selection()-&gt;updateSecureKeyboardEntryIfActive();
&gt;  
&gt; +    m_doc = newDoc;

Doesn’t this need to be in the other order? Can updateSecureKeyboardEntryIfActive do the right thing if m_doc is not set to the new document?

&gt; + * Copyright (C) 2006 Apple Inc. All rights reserved.

Better. Could list any other years where substantial changes were made to the code, since they count as publication dates. I think 2006, 2007 would be right, but maybe there are interesting 2008 and 2009 changes.

Ideally this would have the newer version of the license: the one in WebCore/LICENSE-APPLE.

&gt; +    // Once enableSecureTextInput is called, secure text input mode in set

&quot;is set&quot;, not &quot;in set&quot;.

review- because of the ordering issue in Frame::setDocument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168143</commentid>
    <comment_count>7</comment_count>
      <attachid>44177</attachid>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2009-12-02 13:25:19 -0800</bug_when>
    <thetext>Created attachment 44177
Incremental improvement, v3

Addresses review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168262</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-02 21:11:48 -0800</bug_when>
    <thetext>Attachment 44177 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/SecureTextInput.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168283</commentid>
    <comment_count>9</comment_count>
      <attachid>44177</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-02 21:34:25 -0800</bug_when>
    <thetext>Comment on attachment 44177
Incremental improvement, v3

Would you mind fixing the namespace indent style issue since this is a new file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168420</commentid>
    <comment_count>10</comment_count>
      <attachid>44244</attachid>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2009-12-03 08:55:36 -0800</bug_when>
    <thetext>Created attachment 44244
Incremental improvement, v4

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175361</commentid>
    <comment_count>11</comment_count>
      <attachid>44244</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-28 18:21:03 -0800</bug_when>
    <thetext>Comment on attachment 44244
Incremental improvement, v4

&gt; #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) &amp;&amp; PLATFORM(DARWIN))
&gt; #define USES_CARBON_SECURE_INPUT_MODE 1
&gt; #endif

I think the right way to do this is to make a WTF-style USE macro as in Platform.h, so at the use site it&apos;s #if USE(CARBON_SECURE_INPUT_MODE)

r- to consider this suggestion. Otherwise looks ok to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191132</commentid>
    <comment_count>12</comment_count>
      <attachid>48920</attachid>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2010-02-17 11:57:39 -0800</bug_when>
    <thetext>Created attachment 48920
Incremental improvement, v5

Switched to USE(CARBON_SECURE_INPUT_MODE), and updated for bitrot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191135</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-17 12:02:55 -0800</bug_when>
    <thetext>Attachment 48920 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/SecureTextInput.cpp:70:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191164</commentid>
    <comment_count>14</comment_count>
      <attachid>48927</attachid>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2010-02-17 12:55:05 -0800</bug_when>
    <thetext>Created attachment 48927
v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191166</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-17 13:01:51 -0800</bug_when>
    <thetext>Attachment 48927 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/SecureTextInput.cpp:70:  One space before end of line comments  [whitespace/comments] [5]
WebCore/platform/SecureTextInput.cpp:72:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191237</commentid>
    <comment_count>16</comment_count>
      <attachid>48927</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-17 14:49:00 -0800</bug_when>
    <thetext>Comment on attachment 48927
v6

Why would these want to be free functions instead of at least static class functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191246</commentid>
    <comment_count>17</comment_count>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2010-02-17 15:10:40 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Why would these want to be free functions instead of at least static class
&gt; functions?

For the same reason that SuddenTermination.h, which I modelled this on since it&apos;s conceptually very similar, doesn&apos;t use a class. You&apos;d have to ask Darin why that is, but I would guess it&apos;s because there&apos;s no particular reason to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191247</commentid>
    <comment_count>18</comment_count>
      <attachid>48942</attachid>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2010-02-17 15:11:34 -0800</bug_when>
    <thetext>Created attachment 48942
v7

Sigh; trying again since I misunderstood the style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196601</commentid>
    <comment_count>19</comment_count>
      <attachid>48942</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-05 13:04:50 -0800</bug_when>
    <thetext>Comment on attachment 48942
v7

This patch does not apply.  Please click on one of the purple bubbles to see why.  It&apos;s more difficult to review patches which do not apply because the reviewers don&apos;t get to see the EWS results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197179</commentid>
    <comment_count>20</comment_count>
      <attachid>50224</attachid>
    <who name="Stuart Morgan">stuartmorgan</who>
    <bug_when>2010-03-08 08:19:33 -0800</bug_when>
    <thetext>Created attachment 50224
v7, respun

The last version failed to apply because someone touched the project file in the window between me spinning the patch and the bot processing it. Hopefully I&apos;ll get luckier this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197253</commentid>
    <comment_count>21</comment_count>
      <attachid>50224</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-08 11:22:51 -0800</bug_when>
    <thetext>Comment on attachment 50224
v7, respun

Clearing flags on attachment: 50224

Committed r55673: &lt;http://trac.webkit.org/changeset/55673&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197254</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-08 11:22:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42810</attachid>
            <date>2009-11-09 15:22:01 -0800</date>
            <delta_ts>2009-11-10 13:34:02 -0800</delta_ts>
            <desc>Incremental improvement</desc>
            <filename>31265.patch</filename>
            <type>text/plain</type>
            <size>17821</size>
            <attacher name="Stuart Morgan">stuartmorgan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDY5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMTEtMDkgIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgdGhlIGRldGFpbHMgb2Ygc2VjdXJlIHRleHQgbW9kZSBpbnRvIFdlYkNvcmUv
cGxhdGZvcm0uCisgICAgICAgIE1vdmUgdGhlIGhpZ2hlci1sZXZlbCBsb2dpYyBmb3Igc2VjdXJl
IHRleHQgbW9kZSBmcm9tIEZyYW1lCisgICAgICAgIHRvIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjY1CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzOiBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUpOgorICAgICAgICAqIGVk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25Db250cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3Vy
ZUtleWJvYXJkRW50cnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNl
dERvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2VjdXJlVGV4dElucHV0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVTZWN1
cmVUZXh0SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCk6
CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZW5hYmxlU2VjdXJlVGV4dElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2Fi
bGVTZWN1cmVUZXh0SW5wdXQpOgorCiAyMDA5LTExLTA5ICBOb3JiZXJ0IExlc2VyICA8bm9yYmVy
dC5sZXNlckBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTA2NzIpCisrKyBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjc1Niw2ICsyNzU2LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Nl
YXJjaFBvcHVwTWVudS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgnLApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDUwNjcyKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTY1Myw2ICs2NTMsOCBAQAogCQkzMUMwRkY0RTBFNENFRkREMDA3RDZG
RTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ4MEU0Q0VGREQwMDdENkZFNSAv
KiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oICovOyB9OwogCQkzMzE0QUNFQjEw
ODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAvKiBK
U0V4Y2VwdGlvbkJhc2UuY3BwICovOyB9OwogCQkzMzE0QUNFQzEwODkyMDg2MDAwRjBFNTYgLyog
SlNFeGNlcHRpb25CYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi87
IH07CisJCTMzM0FFMkUxMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzQUUyREYxMEE4
Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi87IH07CisJCTMzM0FFMkUyMTBB
OENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0FFMkUwMTBBOENFRUUwMDEyNERENyAvKiBTZWN1
cmVUZXh0SW5wdXQuaCAqLzsgfTsKIAkJMzM1MDNDOUExMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlm
aWNhdGlvblByZXNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvblByZXNlbnRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMz
NTAzQ0EzMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0M5RjEwMTc5QUQ3MDAzQjQ3
RTEgLyogSlNOb3RpZmljYXRpb24uY3BwICovOyB9OwogCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3
RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5o
ICovOyB9OwpAQCAtNTg3MCw2ICs1ODcyLDggQEAKIAkJMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1
IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4
Y2VwdGlvbkJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
eGNlcHRpb25CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRUEx
MDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzMzQUUyREYxMEE4Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNBRTJFMDEwQThDRUVFMDAxMjRERDcgLyog
U2VjdXJlVGV4dElucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3Vy
ZVRleHRJbnB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5
Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBO
b3RpZmljYXRpb24uaWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyog
Tm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNh
dGlvbi5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlv
blByZXNlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IE5vdGlmaWNhdGlv
blByZXNlbnRlci5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODkxLDYgKzE0ODk1LDggQEAKIAkJ
CQlCQzI0NDFDMzBFOEI2NUQwMDA1NTMyMEYgLyogU2Nyb2xsVmlldy5jcHAgKi8sCiAJCQkJQkM2
RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLywKIAkJCQlBQjcxNzA4ODBC
MzExODA4MDAxNzEyM0UgLyogU2VhcmNoUG9wdXBNZW51LmggKi8sCisJCQkJMzMzQUUyREYxMEE4
Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi8sCisJCQkJMzMzQUUyRTAxMEE4
Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5oICovLAogCQkJCTFBNEE5NTRCMEI0RURD
Q0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwICovLAogCQkJCTFBNEE5NTRDMEI0RURDQ0Iw
MDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCAqLywKIAkJCQk5MzMwOUVBMDA5OUVCNzhDMDA1NkU1
ODEgLyogU2hhcmVkVGltZXIuaCAqLywKQEAgLTE4MDk5LDYgKzE4MTA1LDcgQEAKIAkJCQkxNDc5
RkFGMDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NzlGQUYyMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDc5RkFGNDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVRleHQuaCBp
biBIZWFkZXJzICovLAorCQkJCTMzM0FFMkUyMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0
SW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAyMzksNiArMjAyNDYsNyBAQAogCQkJCTE0NzlG
QUVGMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDc5RkFGMTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDc5RkFGMzEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzMzQUUyRTExMEE4Q0VFRTAwMTI0REQ3IC8qIFNlY3Vy
ZVRleHRJbnB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUw
NjcyKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMw
LDcgKzQyMzAsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5CiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgbV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hl
bkFjdGl2ZSA9IHVzZXNTZWN1cmVLZXlib2FyZDsKLSAgICBtX2ZyYW1lLT51cGRhdGVTZWN1cmVL
ZXlib2FyZEVudHJ5SWZBY3RpdmUoKTsKKyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dXBkYXRl
U2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnVzZVNl
Y3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUwNjcyKQorKysgV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAi
aHRtbGVkaXRpbmcuaCIKQEAgLTEyNzYsNyArMTI3Nyw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJv
bGxlcjo6Zm9jdXNlZE9yQWN0aXYKIAogICAgIC8vIFNlY3VyZSBrZXlib2FyZCBlbnRyeSBpcyBz
ZXQgYnkgdGhlIGFjdGl2ZSBmcmFtZS4KICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXNl
U2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSkKLSAgICAgICAgbV9mcmFtZS0+c2V0VXNl
U2VjdXJlS2V5Ym9hcmRFbnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKKyAgICAgICAgc2V0VXNlU2Vj
dXJlS2V5Ym9hcmRFbnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25D
b250cm9sbGVyOjpwYWdlQWN0aXZhdGlvbkNoYW5nZWQoKQpAQCAtMTI4NCw2ICsxMjg1LDIwIEBA
IHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFnZUFjdGl2YXRpb24KICAgICBmb2N1c2VkT3JB
Y3RpdmVTdGF0ZUNoYW5nZWQoKTsKIH0KIAordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjp1cGRh
dGVTZWN1cmVLZXlib2FyZEVudHJ5SWZBY3RpdmUoKQoreworICAgIGlmIChpc0ZvY3VzZWRBbmRB
Y3RpdmUoKSkKKyAgICAgICAgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShtX2ZyYW1lLT5kb2N1
bWVudCgpLT51c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKK30KKwordm9pZCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wgZW5hYmxl
KQoreworICAgIGlmIChlbmFibGUpCisgICAgICAgIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpOwor
ICAgIGVsc2UKKyAgICAgICAgZGlzYWJsZVNlY3VyZVRleHRJbnB1dCgpOworfQorCiB2b2lkIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OnNldEZvY3VzZWQoYm9vbCBmbGFnKQogewogICAgIGlmIChtX2Zv
Y3VzZWQgPT0gZmxhZykKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAko
cmV2aXNpb24gNTA2NzIpCisrKyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNG
b2N1c2VkQW5kQWN0aXZlKCkgY29uc3Q7CiAgICAgdm9pZCBwYWdlQWN0aXZhdGlvbkNoYW5nZWQo
KTsKIAorICAgIHZvaWQgdXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CisgICAg
dm9pZCBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wgZW5hYmxlKTsKKwogI2lmbmRlZiBO
REVCVUcKICAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdDsKICAgICB2b2lkIHNob3dUcmVlRm9yVGhpcygpIGNvbnN0OwpJbmRleDog
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCShyZXZpc2lvbiA1MDY3MikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDEwICs4Miw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShEQVJXSU4pKQotI2ltcG9ydCA8
Q2FyYm9uL0NhcmJvbi5oPgotI2VuZGlmCi0KICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9N
V2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKQEAgLTI4Miw3ICsyNzgs
NyBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVmUHRyPERvY3VtCiAKICAgICBtX2Rv
YyA9IG5ld0RvYzsKICAgICBpZiAobV9kb2MgJiYgc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFj
dGl2ZSgpKQotICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1fZG9jLT51c2VTZWN1
cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKKyAgICAgICAgc2VsZWN0aW9uKCktPnNldFVz
ZVNlY3VyZUtleWJvYXJkRW50cnkobV9kb2MtPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0
aXZlKCkpOwogCiAgICAgaWYgKG1fZG9jICYmICFtX2RvYy0+YXR0YWNoZWQoKSkKICAgICAgICAg
bV9kb2MtPmF0dGFjaCgpOwpAQCAtOTE5LDQzICs5MTUsNiBAQCBib29sIEZyYW1lOjppc0NvbnRl
bnRFZGl0YWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jLT5pbkRlc2lnbk1vZGUoKTsKIH0K
IAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShE
QVJXSU4pKQotY29uc3Qgc2hvcnQgZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5ID0gLTIzOwotI2Vu
ZGlmCi12b2lkIEZyYW1lOjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wgZW5hYmxlKQot
ewotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShE
QVJXSU4pKQotICAgIGlmIChlbmFibGUgPT0gSXNTZWN1cmVFdmVudElucHV0RW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVuYWJsZSkgewotICAgICAgICBFbmFibGVTZWN1cmVF
dmVudElucHV0KCk7Ci0jaWZkZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICAgICAgS2V5U2NyaXB0
KGVuYWJsZVJvbWFuS2V5Ym9hcmRzT25seSk7Ci0jZWxzZQotICAgICAgICAvLyBXZWJLaXQgc3Vi
c3RpdHV0ZXMgbmlsIGZvciBpbnB1dCBjb250ZXh0IHdoZW4gaW4gcGFzc3dvcmQgZmllbGQsIHdo
aWNoIGNvcnJlc3BvbmRzIHRvIG51bGwgVFNNRG9jdW1lbnQuIFNvLCB0aGVyZSBpcwotICAgICAg
ICAvLyBubyBuZWVkIHRvIGNhbGwgVFNNR2V0QWN0aXZlRG9jdW1lbnQoKSwgd2hpY2ggbWF5IHJl
dHVybiBhbiBpbmNvcnJlY3QgcmVzdWx0IHdoZW4gc2VsZWN0aW9uIGhhc24ndCBiZWVuIHlldCB1
cGRhdGVkCi0gICAgICAgIC8vIGFmdGVyIGZvY3VzaW5nIGEgbm9kZS4KLSAgICAgICAgQ0ZBcnJh
eVJlZiBpbnB1dFNvdXJjZXMgPSBUSVNDcmVhdGVBU0NJSUNhcGFibGVJbnB1dFNvdXJjZUxpc3Qo
KTsKLSAgICAgICAgVFNNU2V0RG9jdW1lbnRQcm9wZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVk
SW5wdXRTb3VyY2VzUHJvcGVydHlUYWcsIHNpemVvZihDRkFycmF5UmVmKSwgJmlucHV0U291cmNl
cyk7Ci0gICAgICAgIENGUmVsZWFzZShpbnB1dFNvdXJjZXMpOwotI2VuZGlmCi0gICAgfSBlbHNl
IHsKLSAgICAgICAgRGlzYWJsZVNlY3VyZUV2ZW50SW5wdXQoKTsKLSNpZmRlZiBCVUlMRElOR19P
Tl9USUdFUgotICAgICAgICBLZXlTY3JpcHQoc21LZXlFbmFibGVLeWJkcyk7Ci0jZWxzZQotICAg
ICAgICBUU01SZW1vdmVEb2N1bWVudFByb3BlcnR5KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJbnB1
dFNvdXJjZXNQcm9wZXJ0eVRhZyk7Ci0jZW5kaWYKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBG
cmFtZTo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCkKLXsKLSAgICBpZiAoc2Vs
ZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQotICAgICAgICBzZXRVc2VTZWN1cmVLZXli
b2FyZEVudHJ5KG1fZG9jLT51c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKLX0K
LQogQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gKkZyYW1lOjp0eXBpbmdTdHlsZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fdHlwaW5nU3R5bGUuZ2V0KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gNTA2
NzIpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDggKzI2
Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzQ29udGVudEVkaXRh
YmxlKCkgY29uc3Q7IC8vIGlmIHRydWUsIGV2ZXJ5dGhpbmcgaW4gZnJhbWUgaXMgZWRpdGFibGUK
IAotICAgICAgICB2b2lkIHVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwotCiAg
ICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiB0eXBpbmdTdHlsZSgpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldFR5cGluZ1N0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKik7
CiAgICAgICAgIHZvaWQgY2xlYXJUeXBpbmdTdHlsZSgpOwpAQCAtMjgxLDggKzI3OSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb24oY29uc3QgU2Ny
b2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgYm9v
bCByZXZlYWxFeHRlbnQgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRnJvbU5v
bmUoKTsKIAotICAgICAgICB2b2lkIHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCk7Ci0K
ICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGNhcmV0QmxpbmtUaW1lckZpcmVkKFRpbWVyPEZy
YW1lPiopOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKKworI2lm
IFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShEQVJXSU4p
KQorI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9S
TShEQVJXSU4pKQorY29uc3Qgc2hvcnQgZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5ID0gLTIzOwor
dm9pZCBlbmFibGVTZWN1cmVUZXh0SW5wdXQoKQoreworICAgIGlmIChJc1NlY3VyZUV2ZW50SW5w
dXRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBFbmFibGVTZWN1cmVFdmVudElucHV0
KCk7CisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBLZXlTY3JpcHQoZW5hYmxlUm9tYW5L
ZXlib2FyZHNPbmx5KTsKKyNlbHNlCisgICAgLy8gV2ViS2l0IHN1YnN0aXR1dGVzIG5pbCBmb3Ig
aW5wdXQgY29udGV4dCB3aGVuIGluIHBhc3N3b3JkIGZpZWxkLCB3aGljaCBjb3JyZXNwb25kcyB0
byBudWxsIFRTTURvY3VtZW50LiBTbywgdGhlcmUgaXMKKyAgICAvLyBubyBuZWVkIHRvIGNhbGwg
VFNNR2V0QWN0aXZlRG9jdW1lbnQoKSwgd2hpY2ggbWF5IHJldHVybiBhbiBpbmNvcnJlY3QgcmVz
dWx0IHdoZW4gc2VsZWN0aW9uIGhhc24ndCBiZWVuIHlldCB1cGRhdGVkCisgICAgLy8gYWZ0ZXIg
Zm9jdXNpbmcgYSBub2RlLgorICAgIENGQXJyYXlSZWYgaW5wdXRTb3VyY2VzID0gVElTQ3JlYXRl
QVNDSUlDYXBhYmxlSW5wdXRTb3VyY2VMaXN0KCk7CisgICAgVFNNU2V0RG9jdW1lbnRQcm9wZXJ0
eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlUYWcsIHNpemVvZihD
RkFycmF5UmVmKSwgJmlucHV0U291cmNlcyk7CisgICAgQ0ZSZWxlYXNlKGlucHV0U291cmNlcyk7
CisjZW5kaWYKK30KKwordm9pZCBkaXNhYmxlU2VjdXJlVGV4dElucHV0KCkKK3sKKyAgICBpZiAo
IUlzU2VjdXJlRXZlbnRJbnB1dEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIERpc2Fi
bGVTZWN1cmVFdmVudElucHV0KCk7CisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBLZXlT
Y3JpcHQoc21LZXlFbmFibGVLeWJkcyk7CisjZWxzZQorICAgIFRTTVJlbW92ZURvY3VtZW50UHJv
cGVydHkoMCwga1RTTURvY3VtZW50RW5hYmxlZElucHV0U291cmNlc1Byb3BlcnR5VGFnKTsKKyNl
bmRpZgorfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3Vy
ZVRleHRJbnB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElu
cHV0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2VjdXJlVGV4dElucHV0
X2gKKyNkZWZpbmUgU2VjdXJlVGV4dElucHV0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICAvLyBPbmNlIGVuYWJsZVNlY3VyZVRleHRJ
bnB1dCBpcyBjYWxsZWQsIHNlY3VyZSB0ZXh0IGlucHV0IG1vZGUgaW4gc2V0CisgICAgLy8gdW50
aWwgZGlzYWJsZVNlY3VyZVRleHRJbnB1dCBoYXMgYmVlbiBjYWxsZWQuCisgICAgdm9pZCBlbmFi
bGVTZWN1cmVUZXh0SW5wdXQoKTsKKyAgICB2b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKTsK
KworI2lmICEoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JN
KERBUldJTikpKQorICAgIGlubGluZSB2b2lkIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpIHsgfQor
ICAgIGlubGluZSB2b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKSB7IH0KKyNlbmRpZgorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTZWN1cmVUZXh0SW5wdXRfaAoKUHJv
cGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>
<flag name="review"
          id="24398"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42890</attachid>
            <date>2009-11-10 13:34:02 -0800</date>
            <delta_ts>2009-12-02 13:25:19 -0800</delta_ts>
            <desc>Incremental improvement, v2</desc>
            <filename>31265-v2.patch</filename>
            <type>text/plain</type>
            <size>18170</size>
            <attacher name="Stuart Morgan">stuartmorgan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDY5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMTEtMDkgIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgdGhlIGRldGFpbHMgb2Ygc2VjdXJlIHRleHQgbW9kZSBpbnRvIFdlYkNvcmUv
cGxhdGZvcm0uCisgICAgICAgIE1vdmUgdGhlIGhpZ2hlci1sZXZlbCBsb2dpYyBmb3Igc2VjdXJl
IHRleHQgbW9kZSBmcm9tIEZyYW1lCisgICAgICAgIHRvIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjY1CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzOiBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUpOgorICAgICAgICAqIGVk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25Db250cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3Vy
ZUtleWJvYXJkRW50cnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNl
dERvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2VjdXJlVGV4dElucHV0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVTZWN1
cmVUZXh0SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCk6
CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZW5hYmxlU2VjdXJlVGV4dElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2Fi
bGVTZWN1cmVUZXh0SW5wdXQpOgorCiAyMDA5LTExLTA5ICBOb3JiZXJ0IExlc2VyICA8bm9yYmVy
dC5sZXNlckBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTA2NzIpCisrKyBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjc1Niw2ICsyNzU2LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Nl
YXJjaFBvcHVwTWVudS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgnLApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDUwNjcyKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTY1Myw2ICs2NTMsOCBAQAogCQkzMUMwRkY0RTBFNENFRkREMDA3RDZG
RTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ4MEU0Q0VGREQwMDdENkZFNSAv
KiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oICovOyB9OwogCQkzMzE0QUNFQjEw
ODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAvKiBK
U0V4Y2VwdGlvbkJhc2UuY3BwICovOyB9OwogCQkzMzE0QUNFQzEwODkyMDg2MDAwRjBFNTYgLyog
SlNFeGNlcHRpb25CYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi87
IH07CisJCTMzM0FFMkUxMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzQUUyREYxMEE4
Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi87IH07CisJCTMzM0FFMkUyMTBB
OENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0FFMkUwMTBBOENFRUUwMDEyNERENyAvKiBTZWN1
cmVUZXh0SW5wdXQuaCAqLzsgfTsKIAkJMzM1MDNDOUExMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlm
aWNhdGlvblByZXNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvblByZXNlbnRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMz
NTAzQ0EzMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0M5RjEwMTc5QUQ3MDAzQjQ3
RTEgLyogSlNOb3RpZmljYXRpb24uY3BwICovOyB9OwogCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3
RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5o
ICovOyB9OwpAQCAtNTg3MCw2ICs1ODcyLDggQEAKIAkJMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1
IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4
Y2VwdGlvbkJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
eGNlcHRpb25CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRUEx
MDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzMzQUUyREYxMEE4Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNBRTJFMDEwQThDRUVFMDAxMjRERDcgLyog
U2VjdXJlVGV4dElucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3Vy
ZVRleHRJbnB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5
Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBO
b3RpZmljYXRpb24uaWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyog
Tm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNh
dGlvbi5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlv
blByZXNlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IE5vdGlmaWNhdGlv
blByZXNlbnRlci5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODkxLDYgKzE0ODk1LDggQEAKIAkJ
CQlCQzI0NDFDMzBFOEI2NUQwMDA1NTMyMEYgLyogU2Nyb2xsVmlldy5jcHAgKi8sCiAJCQkJQkM2
RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLywKIAkJCQlBQjcxNzA4ODBC
MzExODA4MDAxNzEyM0UgLyogU2VhcmNoUG9wdXBNZW51LmggKi8sCisJCQkJMzMzQUUyREYxMEE4
Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi8sCisJCQkJMzMzQUUyRTAxMEE4
Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5oICovLAogCQkJCTFBNEE5NTRCMEI0RURD
Q0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwICovLAogCQkJCTFBNEE5NTRDMEI0RURDQ0Iw
MDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCAqLywKIAkJCQk5MzMwOUVBMDA5OUVCNzhDMDA1NkU1
ODEgLyogU2hhcmVkVGltZXIuaCAqLywKQEAgLTE4MDk5LDYgKzE4MTA1LDcgQEAKIAkJCQkxNDc5
RkFGMDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NzlGQUYyMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDc5RkFGNDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVRleHQuaCBp
biBIZWFkZXJzICovLAorCQkJCTMzM0FFMkUyMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0
SW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAyMzksNiArMjAyNDYsNyBAQAogCQkJCTE0NzlG
QUVGMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDc5RkFGMTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDc5RkFGMzEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzMzQUUyRTExMEE4Q0VFRTAwMTI0REQ3IC8qIFNlY3Vy
ZVRleHRJbnB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUw
NjcyKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMw
LDcgKzQyMzAsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5CiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgbV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hl
bkFjdGl2ZSA9IHVzZXNTZWN1cmVLZXlib2FyZDsKLSAgICBtX2ZyYW1lLT51cGRhdGVTZWN1cmVL
ZXlib2FyZEVudHJ5SWZBY3RpdmUoKTsKKyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dXBkYXRl
U2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnVzZVNl
Y3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUwNjcyKQorKysgV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAi
aHRtbGVkaXRpbmcuaCIKQEAgLTEyNzYsNyArMTI3Nyw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJv
bGxlcjo6Zm9jdXNlZE9yQWN0aXYKIAogICAgIC8vIFNlY3VyZSBrZXlib2FyZCBlbnRyeSBpcyBz
ZXQgYnkgdGhlIGFjdGl2ZSBmcmFtZS4KICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXNl
U2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSkKLSAgICAgICAgbV9mcmFtZS0+c2V0VXNl
U2VjdXJlS2V5Ym9hcmRFbnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKKyAgICAgICAgc2V0VXNlU2Vj
dXJlS2V5Ym9hcmRFbnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25D
b250cm9sbGVyOjpwYWdlQWN0aXZhdGlvbkNoYW5nZWQoKQpAQCAtMTI4NCw2ICsxMjg1LDIwIEBA
IHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFnZUFjdGl2YXRpb24KICAgICBmb2N1c2VkT3JB
Y3RpdmVTdGF0ZUNoYW5nZWQoKTsKIH0KIAordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjp1cGRh
dGVTZWN1cmVLZXlib2FyZEVudHJ5SWZBY3RpdmUoKQoreworICAgIGlmIChtX2ZyYW1lLT5kb2N1
bWVudCgpICYmIGlzRm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgICAgICBzZXRVc2VTZWN1cmVLZXli
b2FyZEVudHJ5KG1fZnJhbWUtPmRvY3VtZW50KCktPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVu
QWN0aXZlKCkpOworfQorCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3VyZUtl
eWJvYXJkRW50cnkoYm9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgZW5h
YmxlU2VjdXJlVGV4dElucHV0KCk7CisgICAgZWxzZQorICAgICAgICBkaXNhYmxlU2VjdXJlVGV4
dElucHV0KCk7Cit9CisKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29s
IGZsYWcpCiB7CiAgICAgaWYgKG1fZm9jdXNlZCA9PSBmbGFnKQpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiA1MDY3MikKKysrIFdlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZvY3VzZWRBbmRBY3RpdmUoKSBjb25zdDsKICAgICB2b2lk
IHBhZ2VBY3RpdmF0aW9uQ2hhbmdlZCgpOwogCisgICAgdm9pZCB1cGRhdGVTZWN1cmVLZXlib2Fy
ZEVudHJ5SWZBY3RpdmUoKTsKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGZvcm1hdEZvckRl
YnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICAgICB2b2lkIHNo
b3dUcmVlRm9yVGhpcygpIGNvbnN0OwpAQCAtMTU5LDYgKzE2MSw4IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsUmVjdChjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7CiAKKyAgICB2b2lkIHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCBlbmFibGUp
OworCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgaW50IG1feFBvc0ZvclZlcnRpY2FsQXJyb3dO
YXZpZ2F0aW9uOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDUwNjcyKQorKysgV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDYgQEAKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JN
KERBUldJTikpCi0jaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+Ci0jZW5kaWYKLQogI2lmIFVTRShK
U0MpCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9v
dC5oIgpAQCAtMjgwLDEwICsyNzYsOSBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVm
UHRyPERvY3VtCiAgICAgICAgIG1fZG9jLT5kZXRhY2goKTsKICAgICB9CiAKLSAgICBtX2RvYyA9
IG5ld0RvYzsKLSAgICBpZiAobV9kb2MgJiYgc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2
ZSgpKQotICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1fZG9jLT51c2VTZWN1cmVL
ZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKKyAgICBzZWxlY3Rpb24oKS0+dXBkYXRlU2VjdXJl
S2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CiAKKyAgICBtX2RvYyA9IG5ld0RvYzsKICAgICBpZiAo
bV9kb2MgJiYgIW1fZG9jLT5hdHRhY2hlZCgpKQogICAgICAgICBtX2RvYy0+YXR0YWNoKCk7CiAK
QEAgLTkxOSw0MyArOTE0LDYgQEAgYm9vbCBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUoKSBjb25z
dAogICAgIHJldHVybiBtX2RvYy0+aW5EZXNpZ25Nb2RlKCk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oREFSV0lOKSkKLWNvbnN0IHNo
b3J0IGVuYWJsZVJvbWFuS2V5Ym9hcmRzT25seSA9IC0yMzsKLSNlbmRpZgotdm9pZCBGcmFtZTo6
c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShib29sIGVuYWJsZSkKLXsKLSNpZiBQTEFURk9STShN
QUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oREFSV0lOKSkKLSAgICBpZiAo
ZW5hYmxlID09IElzU2VjdXJlRXZlbnRJbnB1dEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChlbmFibGUpIHsKLSAgICAgICAgRW5hYmxlU2VjdXJlRXZlbnRJbnB1dCgpOwotI2lm
ZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAgICAgIEtleVNjcmlwdChlbmFibGVSb21hbktleWJv
YXJkc09ubHkpOwotI2Vsc2UKLSAgICAgICAgLy8gV2ViS2l0IHN1YnN0aXR1dGVzIG5pbCBmb3Ig
aW5wdXQgY29udGV4dCB3aGVuIGluIHBhc3N3b3JkIGZpZWxkLCB3aGljaCBjb3JyZXNwb25kcyB0
byBudWxsIFRTTURvY3VtZW50LiBTbywgdGhlcmUgaXMKLSAgICAgICAgLy8gbm8gbmVlZCB0byBj
YWxsIFRTTUdldEFjdGl2ZURvY3VtZW50KCksIHdoaWNoIG1heSByZXR1cm4gYW4gaW5jb3JyZWN0
IHJlc3VsdCB3aGVuIHNlbGVjdGlvbiBoYXNuJ3QgYmVlbiB5ZXQgdXBkYXRlZAotICAgICAgICAv
LyBhZnRlciBmb2N1c2luZyBhIG5vZGUuCi0gICAgICAgIENGQXJyYXlSZWYgaW5wdXRTb3VyY2Vz
ID0gVElTQ3JlYXRlQVNDSUlDYXBhYmxlSW5wdXRTb3VyY2VMaXN0KCk7Ci0gICAgICAgIFRTTVNl
dERvY3VtZW50UHJvcGVydHkoMCwga1RTTURvY3VtZW50RW5hYmxlZElucHV0U291cmNlc1Byb3Bl
cnR5VGFnLCBzaXplb2YoQ0ZBcnJheVJlZiksICZpbnB1dFNvdXJjZXMpOwotICAgICAgICBDRlJl
bGVhc2UoaW5wdXRTb3VyY2VzKTsKLSNlbmRpZgotICAgIH0gZWxzZSB7Ci0gICAgICAgIERpc2Fi
bGVTZWN1cmVFdmVudElucHV0KCk7Ci0jaWZkZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICAgICAg
S2V5U2NyaXB0KHNtS2V5RW5hYmxlS3liZHMpOwotI2Vsc2UKLSAgICAgICAgVFNNUmVtb3ZlRG9j
dW1lbnRQcm9wZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlU
YWcpOwotI2VuZGlmCi0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQgRnJhbWU6OnVwZGF0ZVNlY3Vy
ZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpCi17Ci0gICAgaWYgKHNlbGVjdGlvbigpLT5pc0ZvY3Vz
ZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShtX2RvYy0+
dXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSk7Ci19Ci0KIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uICpGcmFtZTo6dHlwaW5nU3R5bGUoKSBjb25zdAogewogICAgIHJldHVybiBt
X3R5cGluZ1N0eWxlLmdldCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDUwNjcyKQorKysgV2ViQ29yZS9w
YWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw4ICsyNjcsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OyAvLyBp
ZiB0cnVlLCBldmVyeXRoaW5nIGluIGZyYW1lIGlzIGVkaXRhYmxlCiAKLSAgICAgICAgdm9pZCB1
cGRhdGVTZWN1cmVLZXlib2FyZEVudHJ5SWZBY3RpdmUoKTsKLQogICAgICAgICBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiogdHlwaW5nU3R5bGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRU
eXBpbmdTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopOwogICAgICAgICB2b2lkIGNs
ZWFyVHlwaW5nU3R5bGUoKTsKQEAgLTI4MSw4ICsyNzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgcmV2ZWFsU2VsZWN0aW9uKGNvbnN0IFNjcm9sbEFsaWdubWVudCYgPSBT
Y3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIGJvb2wgcmV2ZWFsRXh0ZW50ID0g
ZmFsc2UpOwogICAgICAgICB2b2lkIHNldFNlbGVjdGlvbkZyb21Ob25lKCk7CiAKLSAgICAgICAg
dm9pZCBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wpOwotCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBjYXJldEJsaW5rVGltZXJGaXJlZChUaW1lcjxGcmFtZT4qKTsKIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlY3VyZVRleHRJbnB1dC5oIgorCisj
aWZkZWYgVVNFU19DQVJCT05fU0VDVVJFX0lOUFVUX01PREUKKyNpbXBvcnQgPENhcmJvbi9DYXJi
b24uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZmRlZiBVU0VTX0NBUkJP
Tl9TRUNVUkVfSU5QVVRfTU9ERQorCisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKK2NvbnN0IHNo
b3J0IGVuYWJsZVJvbWFuS2V5Ym9hcmRzT25seSA9IC0yMzsKKyNlbmRpZgorCit2b2lkIGVuYWJs
ZVNlY3VyZVRleHRJbnB1dCgpCit7CisgICAgaWYgKElzU2VjdXJlRXZlbnRJbnB1dEVuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIEVuYWJsZVNlY3VyZUV2ZW50SW5wdXQoKTsKKyNpZmRl
ZiBCVUlMRElOR19PTl9USUdFUgorICAgIEtleVNjcmlwdChlbmFibGVSb21hbktleWJvYXJkc09u
bHkpOworI2Vsc2UKKyAgICAvLyBXZWJLaXQgc3Vic3RpdHV0ZXMgbmlsIGZvciBpbnB1dCBjb250
ZXh0IHdoZW4gaW4gcGFzc3dvcmQgZmllbGQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIG51bGwgVFNN
RG9jdW1lbnQuIFNvLCB0aGVyZSBpcworICAgIC8vIG5vIG5lZWQgdG8gY2FsbCBUU01HZXRBY3Rp
dmVEb2N1bWVudCgpLCB3aGljaCBtYXkgcmV0dXJuIGFuIGluY29ycmVjdCByZXN1bHQgd2hlbiBz
ZWxlY3Rpb24gaGFzbid0IGJlZW4geWV0IHVwZGF0ZWQKKyAgICAvLyBhZnRlciBmb2N1c2luZyBh
IG5vZGUuCisgICAgQ0ZBcnJheVJlZiBpbnB1dFNvdXJjZXMgPSBUSVNDcmVhdGVBU0NJSUNhcGFi
bGVJbnB1dFNvdXJjZUxpc3QoKTsKKyAgICBUU01TZXREb2N1bWVudFByb3BlcnR5KDAsIGtUU01E
b2N1bWVudEVuYWJsZWRJbnB1dFNvdXJjZXNQcm9wZXJ0eVRhZywgc2l6ZW9mKENGQXJyYXlSZWYp
LCAmaW5wdXRTb3VyY2VzKTsKKyAgICBDRlJlbGVhc2UoaW5wdXRTb3VyY2VzKTsKKyNlbmRpZgor
fQorCit2b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKQoreworICAgIGlmICghSXNTZWN1cmVF
dmVudElucHV0RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgRGlzYWJsZVNlY3VyZUV2
ZW50SW5wdXQoKTsKKyNpZmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIEtleVNjcmlwdChzbUtl
eUVuYWJsZUt5YmRzKTsKKyNlbHNlCisgICAgVFNNUmVtb3ZlRG9jdW1lbnRQcm9wZXJ0eSgwLCBr
VFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlUYWcpOworI2VuZGlmCit9CisK
KyNlbmRpZiAgLy8gVVNFU19DQVJCT05fU0VDVVJFX0lOUFVUX01PREUKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVU
ZXh0SW5wdXQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUK
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
IAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU2VjdXJlVGV4dElucHV0X2gKKyNkZWZpbmUgU2VjdXJlVGV4dElucHV0
X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgUExBVEZPUk0oTUFDKSB8fCAo
UExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERBUldJTikpCisjZGVmaW5lIFVTRVNfQ0FS
Qk9OX1NFQ1VSRV9JTlBVVF9NT0RFIDEKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyAgICAvLyBPbmNlIGVuYWJsZVNlY3VyZVRleHRJbnB1dCBpcyBjYWxsZWQsIHNlY3VyZSB0ZXh0
IGlucHV0IG1vZGUgaW4gc2V0CisgICAgLy8gdW50aWwgZGlzYWJsZVNlY3VyZVRleHRJbnB1dCBo
YXMgYmVlbiBjYWxsZWQuCisgICAgdm9pZCBlbmFibGVTZWN1cmVUZXh0SW5wdXQoKTsKKyAgICB2
b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKTsKKworI2lmbmRlZiBVU0VTX0NBUkJPTl9TRUNV
UkVfSU5QVVRfTU9ERQorICAgIGlubGluZSB2b2lkIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpIHsg
fQorICAgIGlubGluZSB2b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKSB7IH0KKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTZWN1cmVUZXh0SW5wdXRfaAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgo=
</data>
<flag name="review"
          id="24513"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44177</attachid>
            <date>2009-12-02 13:25:19 -0800</date>
            <delta_ts>2009-12-03 08:55:36 -0800</delta_ts>
            <desc>Incremental improvement, v3</desc>
            <filename>31265-v3.patch</filename>
            <type>text/plain</type>
            <size>17913</size>
            <attacher name="Stuart Morgan">stuartmorgan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTYxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMTItMDIgIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgdGhlIGRldGFpbHMgb2Ygc2VjdXJlIHRleHQgbW9kZSBpbnRvIFdlYkNvcmUv
cGxhdGZvcm0uCisgICAgICAgIE1vdmUgdGhlIGhpZ2hlci1sZXZlbCBsb2dpYyBmb3Igc2VjdXJl
IHRleHQgbW9kZSBmcm9tIEZyYW1lCisgICAgICAgIHRvIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjY1CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzOiBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUpOgorICAgICAgICAqIGVk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25Db250cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3Vy
ZUtleWJvYXJkRW50cnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNl
dERvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2VjdXJlVGV4dElucHV0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVTZWN1
cmVUZXh0SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCk6
CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZW5hYmxlU2VjdXJlVGV4dElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2Fi
bGVTZWN1cmVUZXh0SW5wdXQpOgorCiAyMDA5LTEyLTAyICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDUxNjEwKQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI3
NzcsNiArMjc3Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vU2VjdXJlVGV4dElucHV0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TaGFyZWRUaW1lci5oJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1MTYxMCkKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NjAsNiArNjYw
LDggQEAKIAkJMzFDMEZGNEUwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25F
dmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50
SW50ZXJuYWwuaCAqLzsgfTsKIAkJMzMxNEFDRUIxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0
aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLzsgfTsK
IAkJMzMxNEFDRUMxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxNEFDRUExMDg5MjA4NjAw
MEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovOyB9OworCQkzMzNBRTJFMTEwQThDRUVFMDAx
MjRERDcgLyogU2VjdXJlVGV4dElucHV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0FFMkRGMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0
SW5wdXQuY3BwICovOyB9OworCQkzMzNBRTJFMjEwQThDRUVFMDAxMjRERDcgLyogU2VjdXJlVGV4
dElucHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MzNBRTJFMDEwQThDRUVFMDAxMjRERDcgLyogU2VjdXJlVGV4dElucHV0LmggKi87IH07CiAJCTMz
NTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25QcmVzZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQzk5MTAxNzlBNzQw
MDNCNDdFMSAvKiBOb3RpZmljYXRpb25QcmVzZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzUwM0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyog
SlNOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzM1MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCAq
LzsgfTsKIAkJMzM1MDNDQTQxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NBMDEwMTc5
QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLzsgfTsKQEAgLTU5MDUsNiArNTkwNyw4
IEBACiAJCTMxQzBGRjQ4MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZl
bnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRU
cmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2Vw
dGlvbkJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeGNlcHRpb25C
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0FFMkRGMTBBOENFRUUwMDEy
NERENyAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2VjdXJlVGV4dElucHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzMzQUUyRTAxMEE4Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uLmlkbDsgcGF0aCA9IG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb24uaDsgcGF0aCA9IG5vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQzk5
MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25QcmVzZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IG5hbWUgPSBOb3RpZmljYXRpb25QcmVzZW50ZXIuaDsgcGF0aCA9IG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDk4NCw2ICsxNDk4OCw4IEBACiAJCQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBG
IC8qIFNjcm9sbFZpZXcuY3BwICovLAogCQkJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBT
Y3JvbGxWaWV3LmggKi8sCiAJCQkJQUI3MTcwODgwQjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBv
cHVwTWVudS5oICovLAorCQkJCTMzM0FFMkRGMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0
SW5wdXQuY3BwICovLAorCQkJCTMzM0FFMkUwMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0
SW5wdXQuaCAqLywKIAkJCQkxQTRBOTU0QjBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVy
LmNwcCAqLywKIAkJCQkxQTRBOTU0QzBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmgg
Ki8sCiAJCQkJOTMzMDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8sCkBA
IC0xODIwOCw2ICsxODIxNCw3IEBACiAJCQkJN0EwRTc2RkExMEJGMDhFRDAwQTAyNzZFIC8qIElu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwRTc3MEYxMEMwMEE4ODAw
QTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0Ew
RTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMzNBRTJFMjEwQThDRUVFMDAxMjRERDcgLyogU2VjdXJlVGV4dElucHV0
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMzU5LDYgKzIwMzY2LDcgQEAKIAkJCQk3QTBFNzZGOTEw
QkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdBMEU3NzBFMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwRTc3MUUxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMzM0FFMkUxMTBBOENFRUUw
MDEyNERENyAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA1MTYxMCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDI1OCw3ICs0MjU4LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VXNlU2VjdXJl
S2V5Ym9hcmRFbnRyeQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIG1fdXNlU2VjdXJl
S2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUgPSB1c2VzU2VjdXJlS2V5Ym9hcmQ7Ci0gICAgbV9mcmFt
ZS0+dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CisgICAgbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwogfQogCiBib29s
IERvY3VtZW50Ojp1c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpIGNvbnN0CkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1MTYxMCkK
KysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2VjdXJlVGV4dElu
cHV0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFu
ZC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCkBAIC0xMjc5LDcgKzEyODAsNyBAQCB2b2lk
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OmZvY3VzZWRPckFjdGl2CiAKICAgICAvLyBTZWN1cmUga2V5
Ym9hcmQgZW50cnkgaXMgc2V0IGJ5IHRoZSBhY3RpdmUgZnJhbWUuCiAgICAgaWYgKG1fZnJhbWUt
PmRvY3VtZW50KCktPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkpCi0gICAgICAg
IG1fZnJhbWUtPnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYWN0aXZlQW5kRm9jdXNlZCk7Cisg
ICAgICAgIHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYWN0aXZlQW5kRm9jdXNlZCk7CiB9CiAK
IHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFnZUFjdGl2YXRpb25DaGFuZ2VkKCkKQEAgLTEy
ODcsNiArMTI4OCwyMCBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnBhZ2VBY3RpdmF0aW9u
CiAgICAgZm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgU2VsZWN0aW9u
Q29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCkKK3sKKyAgICBp
ZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBpc0ZvY3VzZWRBbmRBY3RpdmUoKSkKKyAgICAgICAg
c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShtX2ZyYW1lLT5kb2N1bWVudCgpLT51c2VTZWN1cmVL
ZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKK30KKwordm9pZCBTZWxlY3Rpb25Db250cm9sbGVy
OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wgZW5hYmxlKQoreworICAgIGlmIChlbmFi
bGUpCisgICAgICAgIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpOworICAgIGVsc2UKKyAgICAgICAg
ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCgpOworfQorCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OnNldEZvY3VzZWQoYm9vbCBmbGFnKQogewogICAgIGlmIChtX2ZvY3VzZWQgPT0gZmxhZykKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNTE2MTApCisr
KyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjQsNiArMTI0LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNGb2N1c2VkQW5kQWN0aXZlKCkg
Y29uc3Q7CiAgICAgdm9pZCBwYWdlQWN0aXZhdGlvbkNoYW5nZWQoKTsKIAorICAgIHZvaWQgdXBk
YXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAg
dm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29u
c3Q7CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKQEAgLTE1OSw2ICsxNjEsOCBA
QCBwcml2YXRlOgogICAgIAogICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZHNGb3JMb2NhbFJlY3Qo
Y29uc3QgSW50UmVjdCYpIGNvbnN0OwogCisgICAgdm9pZCBzZXRVc2VTZWN1cmVLZXlib2FyZEVu
dHJ5KGJvb2wpOworCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgaW50IG1feFBvc0ZvclZlcnRp
Y2FsQXJyb3dOYXZpZ2F0aW9uOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDUxNjEwKQorKysgV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDYgQEAKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYm
IFBMQVRGT1JNKERBUldJTikpCi0jaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+Ci0jZW5kaWYKLQog
I2lmIFVTRShKU0MpCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgInJ1
bnRpbWVfcm9vdC5oIgpAQCAtMjgxLDggKzI3Nyw3IEBAIHZvaWQgRnJhbWU6OnNldERvY3VtZW50
KFBhc3NSZWZQdHI8RG9jdW0KICAgICB9CiAKICAgICBtX2RvYyA9IG5ld0RvYzsKLSAgICBpZiAo
bV9kb2MgJiYgc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQotICAgICAgICBzZXRV
c2VTZWN1cmVLZXlib2FyZEVudHJ5KG1fZG9jLT51c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFj
dGl2ZSgpKTsKKyAgICBzZWxlY3Rpb24oKS0+dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0
aXZlKCk7CiAKICAgICBpZiAobV9kb2MgJiYgIW1fZG9jLT5hdHRhY2hlZCgpKQogICAgICAgICBt
X2RvYy0+YXR0YWNoKCk7CkBAIC05MTgsNDMgKzkxMyw2IEBAIGJvb2wgRnJhbWU6OmlzQ29udGVu
dEVkaXRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbV9kb2MtPmluRGVzaWduTW9kZSgpOwogfQog
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERB
UldJTikpCi1jb25zdCBzaG9ydCBlbmFibGVSb21hbktleWJvYXJkc09ubHkgPSAtMjM7Ci0jZW5k
aWYKLXZvaWQgRnJhbWU6OnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCBlbmFibGUpCi17
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERB
UldJTikpCi0gICAgaWYgKGVuYWJsZSA9PSBJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpZiAoZW5hYmxlKSB7Ci0gICAgICAgIEVuYWJsZVNlY3VyZUV2
ZW50SW5wdXQoKTsKLSNpZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgICAgICBLZXlTY3JpcHQo
ZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5KTsKLSNlbHNlCi0gICAgICAgIC8vIFdlYktpdCBzdWJz
dGl0dXRlcyBuaWwgZm9yIGlucHV0IGNvbnRleHQgd2hlbiBpbiBwYXNzd29yZCBmaWVsZCwgd2hp
Y2ggY29ycmVzcG9uZHMgdG8gbnVsbCBUU01Eb2N1bWVudC4gU28sIHRoZXJlIGlzCi0gICAgICAg
IC8vIG5vIG5lZWQgdG8gY2FsbCBUU01HZXRBY3RpdmVEb2N1bWVudCgpLCB3aGljaCBtYXkgcmV0
dXJuIGFuIGluY29ycmVjdCByZXN1bHQgd2hlbiBzZWxlY3Rpb24gaGFzbid0IGJlZW4geWV0IHVw
ZGF0ZWQKLSAgICAgICAgLy8gYWZ0ZXIgZm9jdXNpbmcgYSBub2RlLgotICAgICAgICBDRkFycmF5
UmVmIGlucHV0U291cmNlcyA9IFRJU0NyZWF0ZUFTQ0lJQ2FwYWJsZUlucHV0U291cmNlTGlzdCgp
OwotICAgICAgICBUU01TZXREb2N1bWVudFByb3BlcnR5KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJ
bnB1dFNvdXJjZXNQcm9wZXJ0eVRhZywgc2l6ZW9mKENGQXJyYXlSZWYpLCAmaW5wdXRTb3VyY2Vz
KTsKLSAgICAgICAgQ0ZSZWxlYXNlKGlucHV0U291cmNlcyk7Ci0jZW5kaWYKLSAgICB9IGVsc2Ug
ewotICAgICAgICBEaXNhYmxlU2VjdXJlRXZlbnRJbnB1dCgpOwotI2lmZGVmIEJVSUxESU5HX09O
X1RJR0VSCi0gICAgICAgIEtleVNjcmlwdChzbUtleUVuYWJsZUt5YmRzKTsKLSNlbHNlCi0gICAg
ICAgIFRTTVJlbW92ZURvY3VtZW50UHJvcGVydHkoMCwga1RTTURvY3VtZW50RW5hYmxlZElucHV0
U291cmNlc1Byb3BlcnR5VGFnKTsKLSNlbmRpZgotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIEZy
YW1lOjp1cGRhdGVTZWN1cmVLZXlib2FyZEVudHJ5SWZBY3RpdmUoKQotewotICAgIGlmIChzZWxl
Y3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkpCi0gICAgICAgIHNldFVzZVNlY3VyZUtleWJv
YXJkRW50cnkobV9kb2MtPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkpOwotfQot
CiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAqRnJhbWU6OnR5cGluZ1N0eWxlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV90eXBpbmdTdHlsZS5nZXQoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9G
cmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA1MTYx
MCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsOCArMjY3
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNDb250ZW50RWRpdGFi
bGUoKSBjb25zdDsgLy8gaWYgdHJ1ZSwgZXZlcnl0aGluZyBpbiBmcmFtZSBpcyBlZGl0YWJsZQog
Ci0gICAgICAgIHZvaWQgdXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7Ci0KICAg
ICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHR5cGluZ1N0eWxlKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0VHlwaW5nU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qKTsK
ICAgICAgICAgdm9pZCBjbGVhclR5cGluZ1N0eWxlKCk7CkBAIC0yODIsOCArMjgwLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJldmVhbFNlbGVjdGlvbihjb25zdCBTY3Jv
bGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBib29s
IHJldmVhbEV4dGVudCA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25Gcm9tTm9u
ZSgpOwogCi0gICAgICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShib29sKTsKLQog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FyZXRCbGlua1RpbWVyRmlyZWQoVGltZXI8RnJh
bWU+Kik7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKKworI2lmZGVmIFVTRVNfQ0FSQk9OX1NFQ1VSRV9J
TlBVVF9NT0RFCisjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisjaWZkZWYgVVNFU19DQVJCT05fU0VDVVJFX0lOUFVUX01PREUKKworI2lm
ZGVmIEJVSUxESU5HX09OX1RJR0VSCitjb25zdCBzaG9ydCBlbmFibGVSb21hbktleWJvYXJkc09u
bHkgPSAtMjM7CisjZW5kaWYKKwordm9pZCBlbmFibGVTZWN1cmVUZXh0SW5wdXQoKQoreworICAg
IGlmIChJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBF
bmFibGVTZWN1cmVFdmVudElucHV0KCk7CisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBL
ZXlTY3JpcHQoZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5KTsKKyNlbHNlCisgICAgLy8gV2ViS2l0
IHN1YnN0aXR1dGVzIG5pbCBmb3IgaW5wdXQgY29udGV4dCB3aGVuIGluIHBhc3N3b3JkIGZpZWxk
LCB3aGljaCBjb3JyZXNwb25kcyB0byBudWxsIFRTTURvY3VtZW50LiBTbywgdGhlcmUgaXMKKyAg
ICAvLyBubyBuZWVkIHRvIGNhbGwgVFNNR2V0QWN0aXZlRG9jdW1lbnQoKSwgd2hpY2ggbWF5IHJl
dHVybiBhbiBpbmNvcnJlY3QgcmVzdWx0IHdoZW4gc2VsZWN0aW9uIGhhc24ndCBiZWVuIHlldCB1
cGRhdGVkCisgICAgLy8gYWZ0ZXIgZm9jdXNpbmcgYSBub2RlLgorICAgIENGQXJyYXlSZWYgaW5w
dXRTb3VyY2VzID0gVElTQ3JlYXRlQVNDSUlDYXBhYmxlSW5wdXRTb3VyY2VMaXN0KCk7CisgICAg
VFNNU2V0RG9jdW1lbnRQcm9wZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2Vz
UHJvcGVydHlUYWcsIHNpemVvZihDRkFycmF5UmVmKSwgJmlucHV0U291cmNlcyk7CisgICAgQ0ZS
ZWxlYXNlKGlucHV0U291cmNlcyk7CisjZW5kaWYKK30KKwordm9pZCBkaXNhYmxlU2VjdXJlVGV4
dElucHV0KCkKK3sKKyAgICBpZiAoIUlzU2VjdXJlRXZlbnRJbnB1dEVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIERpc2FibGVTZWN1cmVFdmVudElucHV0KCk7CisjaWZkZWYgQlVJTERJ
TkdfT05fVElHRVIKKyAgICBLZXlTY3JpcHQoc21LZXlFbmFibGVLeWJkcyk7CisjZWxzZQorICAg
IFRTTVJlbW92ZURvY3VtZW50UHJvcGVydHkoMCwga1RTTURvY3VtZW50RW5hYmxlZElucHV0U291
cmNlc1Byb3BlcnR5VGFnKTsKKyNlbmRpZgorfQorCisjZW5kaWYgIC8vIFVTRVNfQ0FSQk9OX1NF
Q1VSRV9JTlBVVF9NT0RFCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9T
ZWN1cmVUZXh0SW5wdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRl
eHRJbnB1dC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5w
dXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNlY3VyZVRleHRJbnB1
dF9oCisjZGVmaW5lIFNlY3VyZVRleHRJbnB1dF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKworI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9S
TShEQVJXSU4pKQorI2RlZmluZSBVU0VTX0NBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSAxCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgLy8gT25jZSBlbmFibGVTZWN1cmVUZXh0
SW5wdXQgaXMgY2FsbGVkLCBzZWN1cmUgdGV4dCBpbnB1dCBtb2RlIGlzIHNldAorICAgIC8vIHVu
dGlsIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQgaGFzIGJlZW4gY2FsbGVkLgorICAgIHZvaWQgZW5h
YmxlU2VjdXJlVGV4dElucHV0KCk7CisgICAgdm9pZCBkaXNhYmxlU2VjdXJlVGV4dElucHV0KCk7
CisKKyNpZm5kZWYgVVNFU19DQVJCT05fU0VDVVJFX0lOUFVUX01PREUKKyAgICBpbmxpbmUgdm9p
ZCBlbmFibGVTZWN1cmVUZXh0SW5wdXQoKSB7IH0KKyAgICBpbmxpbmUgdm9pZCBkaXNhYmxlU2Vj
dXJlVGV4dElucHV0KCkgeyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gU2VjdXJlVGV4dElucHV0X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUv
cGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44244</attachid>
            <date>2009-12-03 08:55:36 -0800</date>
            <delta_ts>2010-02-17 11:57:39 -0800</delta_ts>
            <desc>Incremental improvement, v4</desc>
            <filename>31265-v4.patch</filename>
            <type>text/plain</type>
            <size>17889</size>
            <attacher name="Stuart Morgan">stuartmorgan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTYxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMTItMDIgIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgdGhlIGRldGFpbHMgb2Ygc2VjdXJlIHRleHQgbW9kZSBpbnRvIFdlYkNvcmUv
cGxhdGZvcm0uCisgICAgICAgIE1vdmUgdGhlIGhpZ2hlci1sZXZlbCBsb2dpYyBmb3Igc2VjdXJl
IHRleHQgbW9kZSBmcm9tIEZyYW1lCisgICAgICAgIHRvIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjY1CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzOiBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUpOgorICAgICAgICAqIGVk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25Db250cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3Vy
ZUtleWJvYXJkRW50cnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNl
dERvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2VjdXJlVGV4dElucHV0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVTZWN1
cmVUZXh0SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCk6
CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZW5hYmxlU2VjdXJlVGV4dElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2Fi
bGVTZWN1cmVUZXh0SW5wdXQpOgorCiAyMDA5LTEyLTAyICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDUxNjEwKQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI3
NzcsNiArMjc3Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vU2VjdXJlVGV4dElucHV0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TaGFyZWRUaW1lci5oJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1MTYxMCkKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NjAsNiArNjYw
LDggQEAKIAkJMzFDMEZGNEUwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25F
dmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50
SW50ZXJuYWwuaCAqLzsgfTsKIAkJMzMxNEFDRUIxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0
aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLzsgfTsK
IAkJMzMxNEFDRUMxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxNEFDRUExMDg5MjA4NjAw
MEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovOyB9OworCQkzMzNBRTJFMTEwQThDRUVFMDAx
MjRERDcgLyogU2VjdXJlVGV4dElucHV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0FFMkRGMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0
SW5wdXQuY3BwICovOyB9OworCQkzMzNBRTJFMjEwQThDRUVFMDAxMjRERDcgLyogU2VjdXJlVGV4
dElucHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MzNBRTJFMDEwQThDRUVFMDAxMjRERDcgLyogU2VjdXJlVGV4dElucHV0LmggKi87IH07CiAJCTMz
NTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25QcmVzZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQzk5MTAxNzlBNzQw
MDNCNDdFMSAvKiBOb3RpZmljYXRpb25QcmVzZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzUwM0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyog
SlNOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzM1MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCAq
LzsgfTsKIAkJMzM1MDNDQTQxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NBMDEwMTc5
QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLzsgfTsKQEAgLTU5MDUsNiArNTkwNyw4
IEBACiAJCTMxQzBGRjQ4MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZl
bnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRU
cmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2Vw
dGlvbkJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeGNlcHRpb25C
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0FFMkRGMTBBOENFRUUwMDEy
NERENyAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2VjdXJlVGV4dElucHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzMzQUUyRTAxMEE4Q0VFRTAwMTI0REQ3IC8qIFNlY3VyZVRleHRJbnB1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uLmlkbDsgcGF0aCA9IG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb24uaDsgcGF0aCA9IG5vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQzk5
MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25QcmVzZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IG5hbWUgPSBOb3RpZmljYXRpb25QcmVzZW50ZXIuaDsgcGF0aCA9IG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDk4NCw2ICsxNDk4OCw4IEBACiAJCQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBG
IC8qIFNjcm9sbFZpZXcuY3BwICovLAogCQkJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBT
Y3JvbGxWaWV3LmggKi8sCiAJCQkJQUI3MTcwODgwQjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBv
cHVwTWVudS5oICovLAorCQkJCTMzM0FFMkRGMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0
SW5wdXQuY3BwICovLAorCQkJCTMzM0FFMkUwMTBBOENFRUUwMDEyNERENyAvKiBTZWN1cmVUZXh0
SW5wdXQuaCAqLywKIAkJCQkxQTRBOTU0QjBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVy
LmNwcCAqLywKIAkJCQkxQTRBOTU0QzBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmgg
Ki8sCiAJCQkJOTMzMDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8sCkBA
IC0xODIwOCw2ICsxODIxNCw3IEBACiAJCQkJN0EwRTc2RkExMEJGMDhFRDAwQTAyNzZFIC8qIElu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwRTc3MEYxMEMwMEE4ODAw
QTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0Ew
RTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMzNBRTJFMjEwQThDRUVFMDAxMjRERDcgLyogU2VjdXJlVGV4dElucHV0
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMzU5LDYgKzIwMzY2LDcgQEAKIAkJCQk3QTBFNzZGOTEw
QkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdBMEU3NzBFMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwRTc3MUUxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMzM0FFMkUxMTBBOENFRUUw
MDEyNERENyAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA1MTYxMCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDI1OCw3ICs0MjU4LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VXNlU2VjdXJl
S2V5Ym9hcmRFbnRyeQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIG1fdXNlU2VjdXJl
S2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUgPSB1c2VzU2VjdXJlS2V5Ym9hcmQ7Ci0gICAgbV9mcmFt
ZS0+dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CisgICAgbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwogfQogCiBib29s
IERvY3VtZW50Ojp1c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpIGNvbnN0CkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1MTYxMCkK
KysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2VjdXJlVGV4dElu
cHV0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFu
ZC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCkBAIC0xMjc5LDcgKzEyODAsNyBAQCB2b2lk
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OmZvY3VzZWRPckFjdGl2CiAKICAgICAvLyBTZWN1cmUga2V5
Ym9hcmQgZW50cnkgaXMgc2V0IGJ5IHRoZSBhY3RpdmUgZnJhbWUuCiAgICAgaWYgKG1fZnJhbWUt
PmRvY3VtZW50KCktPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkpCi0gICAgICAg
IG1fZnJhbWUtPnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYWN0aXZlQW5kRm9jdXNlZCk7Cisg
ICAgICAgIHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYWN0aXZlQW5kRm9jdXNlZCk7CiB9CiAK
IHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFnZUFjdGl2YXRpb25DaGFuZ2VkKCkKQEAgLTEy
ODcsNiArMTI4OCwyMCBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnBhZ2VBY3RpdmF0aW9u
CiAgICAgZm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgU2VsZWN0aW9u
Q29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCkKK3sKKyAgICBp
ZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBpc0ZvY3VzZWRBbmRBY3RpdmUoKSkKKyAgICAgICAg
c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShtX2ZyYW1lLT5kb2N1bWVudCgpLT51c2VTZWN1cmVL
ZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKK30KKwordm9pZCBTZWxlY3Rpb25Db250cm9sbGVy
OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wgZW5hYmxlKQoreworICAgIGlmIChlbmFi
bGUpCisgICAgICAgIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpOworICAgIGVsc2UKKyAgICAgICAg
ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCgpOworfQorCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OnNldEZvY3VzZWQoYm9vbCBmbGFnKQogewogICAgIGlmIChtX2ZvY3VzZWQgPT0gZmxhZykKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNTE2MTApCisr
KyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjQsNiArMTI0LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNGb2N1c2VkQW5kQWN0aXZlKCkg
Y29uc3Q7CiAgICAgdm9pZCBwYWdlQWN0aXZhdGlvbkNoYW5nZWQoKTsKIAorICAgIHZvaWQgdXBk
YXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAg
dm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29u
c3Q7CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKQEAgLTE1OSw2ICsxNjEsOCBA
QCBwcml2YXRlOgogICAgIAogICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZHNGb3JMb2NhbFJlY3Qo
Y29uc3QgSW50UmVjdCYpIGNvbnN0OwogCisgICAgdm9pZCBzZXRVc2VTZWN1cmVLZXlib2FyZEVu
dHJ5KGJvb2wpOworCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgaW50IG1feFBvc0ZvclZlcnRp
Y2FsQXJyb3dOYXZpZ2F0aW9uOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDUxNjEwKQorKysgV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDYgQEAKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYm
IFBMQVRGT1JNKERBUldJTikpCi0jaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+Ci0jZW5kaWYKLQog
I2lmIFVTRShKU0MpCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgInJ1
bnRpbWVfcm9vdC5oIgpAQCAtMjgxLDggKzI3Nyw3IEBAIHZvaWQgRnJhbWU6OnNldERvY3VtZW50
KFBhc3NSZWZQdHI8RG9jdW0KICAgICB9CiAKICAgICBtX2RvYyA9IG5ld0RvYzsKLSAgICBpZiAo
bV9kb2MgJiYgc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQotICAgICAgICBzZXRV
c2VTZWN1cmVLZXlib2FyZEVudHJ5KG1fZG9jLT51c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFj
dGl2ZSgpKTsKKyAgICBzZWxlY3Rpb24oKS0+dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0
aXZlKCk7CiAKICAgICBpZiAobV9kb2MgJiYgIW1fZG9jLT5hdHRhY2hlZCgpKQogICAgICAgICBt
X2RvYy0+YXR0YWNoKCk7CkBAIC05MTgsNDMgKzkxMyw2IEBAIGJvb2wgRnJhbWU6OmlzQ29udGVu
dEVkaXRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbV9kb2MtPmluRGVzaWduTW9kZSgpOwogfQog
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERB
UldJTikpCi1jb25zdCBzaG9ydCBlbmFibGVSb21hbktleWJvYXJkc09ubHkgPSAtMjM7Ci0jZW5k
aWYKLXZvaWQgRnJhbWU6OnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCBlbmFibGUpCi17
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERB
UldJTikpCi0gICAgaWYgKGVuYWJsZSA9PSBJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpZiAoZW5hYmxlKSB7Ci0gICAgICAgIEVuYWJsZVNlY3VyZUV2
ZW50SW5wdXQoKTsKLSNpZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgICAgICBLZXlTY3JpcHQo
ZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5KTsKLSNlbHNlCi0gICAgICAgIC8vIFdlYktpdCBzdWJz
dGl0dXRlcyBuaWwgZm9yIGlucHV0IGNvbnRleHQgd2hlbiBpbiBwYXNzd29yZCBmaWVsZCwgd2hp
Y2ggY29ycmVzcG9uZHMgdG8gbnVsbCBUU01Eb2N1bWVudC4gU28sIHRoZXJlIGlzCi0gICAgICAg
IC8vIG5vIG5lZWQgdG8gY2FsbCBUU01HZXRBY3RpdmVEb2N1bWVudCgpLCB3aGljaCBtYXkgcmV0
dXJuIGFuIGluY29ycmVjdCByZXN1bHQgd2hlbiBzZWxlY3Rpb24gaGFzbid0IGJlZW4geWV0IHVw
ZGF0ZWQKLSAgICAgICAgLy8gYWZ0ZXIgZm9jdXNpbmcgYSBub2RlLgotICAgICAgICBDRkFycmF5
UmVmIGlucHV0U291cmNlcyA9IFRJU0NyZWF0ZUFTQ0lJQ2FwYWJsZUlucHV0U291cmNlTGlzdCgp
OwotICAgICAgICBUU01TZXREb2N1bWVudFByb3BlcnR5KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJ
bnB1dFNvdXJjZXNQcm9wZXJ0eVRhZywgc2l6ZW9mKENGQXJyYXlSZWYpLCAmaW5wdXRTb3VyY2Vz
KTsKLSAgICAgICAgQ0ZSZWxlYXNlKGlucHV0U291cmNlcyk7Ci0jZW5kaWYKLSAgICB9IGVsc2Ug
ewotICAgICAgICBEaXNhYmxlU2VjdXJlRXZlbnRJbnB1dCgpOwotI2lmZGVmIEJVSUxESU5HX09O
X1RJR0VSCi0gICAgICAgIEtleVNjcmlwdChzbUtleUVuYWJsZUt5YmRzKTsKLSNlbHNlCi0gICAg
ICAgIFRTTVJlbW92ZURvY3VtZW50UHJvcGVydHkoMCwga1RTTURvY3VtZW50RW5hYmxlZElucHV0
U291cmNlc1Byb3BlcnR5VGFnKTsKLSNlbmRpZgotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIEZy
YW1lOjp1cGRhdGVTZWN1cmVLZXlib2FyZEVudHJ5SWZBY3RpdmUoKQotewotICAgIGlmIChzZWxl
Y3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkpCi0gICAgICAgIHNldFVzZVNlY3VyZUtleWJv
YXJkRW50cnkobV9kb2MtPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkpOwotfQot
CiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAqRnJhbWU6OnR5cGluZ1N0eWxlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV90eXBpbmdTdHlsZS5nZXQoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9G
cmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA1MTYx
MCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsOCArMjY3
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNDb250ZW50RWRpdGFi
bGUoKSBjb25zdDsgLy8gaWYgdHJ1ZSwgZXZlcnl0aGluZyBpbiBmcmFtZSBpcyBlZGl0YWJsZQog
Ci0gICAgICAgIHZvaWQgdXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKCk7Ci0KICAg
ICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHR5cGluZ1N0eWxlKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0VHlwaW5nU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qKTsK
ICAgICAgICAgdm9pZCBjbGVhclR5cGluZ1N0eWxlKCk7CkBAIC0yODIsOCArMjgwLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJldmVhbFNlbGVjdGlvbihjb25zdCBTY3Jv
bGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBib29s
IHJldmVhbEV4dGVudCA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25Gcm9tTm9u
ZSgpOwogCi0gICAgICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShib29sKTsKLQog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FyZXRCbGlua1RpbWVyRmlyZWQoVGltZXI8RnJh
bWU+Kik7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKKworI2lmZGVmIFVTRVNfQ0FSQk9OX1NFQ1VSRV9J
TlBVVF9NT0RFCisjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisjaWZkZWYgVVNFU19DQVJCT05fU0VDVVJFX0lOUFVUX01PREUKKworI2lm
ZGVmIEJVSUxESU5HX09OX1RJR0VSCitjb25zdCBzaG9ydCBlbmFibGVSb21hbktleWJvYXJkc09u
bHkgPSAtMjM7CisjZW5kaWYKKwordm9pZCBlbmFibGVTZWN1cmVUZXh0SW5wdXQoKQoreworICAg
IGlmIChJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBF
bmFibGVTZWN1cmVFdmVudElucHV0KCk7CisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBL
ZXlTY3JpcHQoZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5KTsKKyNlbHNlCisgICAgLy8gV2ViS2l0
IHN1YnN0aXR1dGVzIG5pbCBmb3IgaW5wdXQgY29udGV4dCB3aGVuIGluIHBhc3N3b3JkIGZpZWxk
LCB3aGljaCBjb3JyZXNwb25kcyB0byBudWxsIFRTTURvY3VtZW50LiBTbywgdGhlcmUgaXMKKyAg
ICAvLyBubyBuZWVkIHRvIGNhbGwgVFNNR2V0QWN0aXZlRG9jdW1lbnQoKSwgd2hpY2ggbWF5IHJl
dHVybiBhbiBpbmNvcnJlY3QgcmVzdWx0IHdoZW4gc2VsZWN0aW9uIGhhc24ndCBiZWVuIHlldCB1
cGRhdGVkCisgICAgLy8gYWZ0ZXIgZm9jdXNpbmcgYSBub2RlLgorICAgIENGQXJyYXlSZWYgaW5w
dXRTb3VyY2VzID0gVElTQ3JlYXRlQVNDSUlDYXBhYmxlSW5wdXRTb3VyY2VMaXN0KCk7CisgICAg
VFNNU2V0RG9jdW1lbnRQcm9wZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2Vz
UHJvcGVydHlUYWcsIHNpemVvZihDRkFycmF5UmVmKSwgJmlucHV0U291cmNlcyk7CisgICAgQ0ZS
ZWxlYXNlKGlucHV0U291cmNlcyk7CisjZW5kaWYKK30KKwordm9pZCBkaXNhYmxlU2VjdXJlVGV4
dElucHV0KCkKK3sKKyAgICBpZiAoIUlzU2VjdXJlRXZlbnRJbnB1dEVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIERpc2FibGVTZWN1cmVFdmVudElucHV0KCk7CisjaWZkZWYgQlVJTERJ
TkdfT05fVElHRVIKKyAgICBLZXlTY3JpcHQoc21LZXlFbmFibGVLeWJkcyk7CisjZWxzZQorICAg
IFRTTVJlbW92ZURvY3VtZW50UHJvcGVydHkoMCwga1RTTURvY3VtZW50RW5hYmxlZElucHV0U291
cmNlc1Byb3BlcnR5VGFnKTsKKyNlbmRpZgorfQorCisjZW5kaWYgIC8vIFVTRVNfQ0FSQk9OX1NF
Q1VSRV9JTlBVVF9NT0RFCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9T
ZWN1cmVUZXh0SW5wdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRl
eHRJbnB1dC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5w
dXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNlY3VyZVRleHRJbnB1
dF9oCisjZGVmaW5lIFNlY3VyZVRleHRJbnB1dF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKworI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9S
TShEQVJXSU4pKQorI2RlZmluZSBVU0VTX0NBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSAxCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBPbmNlIGVuYWJsZVNlY3VyZVRleHRJbnB1
dCBpcyBjYWxsZWQsIHNlY3VyZSB0ZXh0IGlucHV0IG1vZGUgaXMgc2V0IHVudGlsCisvLyBkaXNh
YmxlU2VjdXJlVGV4dElucHV0IGhhcyBiZWVuIGNhbGxlZC4KK3ZvaWQgZW5hYmxlU2VjdXJlVGV4
dElucHV0KCk7Cit2b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKTsKKworI2lmbmRlZiBVU0VT
X0NBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERQoraW5saW5lIHZvaWQgZW5hYmxlU2VjdXJlVGV4dElu
cHV0KCkgeyB9CitpbmxpbmUgdm9pZCBkaXNhYmxlU2VjdXJlVGV4dElucHV0KCkgeyB9CisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2VjdXJlVGV4dElucHV0
X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0
LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
</data>
<flag name="review"
          id="26045"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48920</attachid>
            <date>2010-02-17 11:57:39 -0800</date>
            <delta_ts>2010-02-17 12:55:05 -0800</delta_ts>
            <desc>Incremental improvement, v5</desc>
            <filename>31265-v5.patch</filename>
            <type>text/plain</type>
            <size>18890</size>
            <attacher name="Stuart Morgan">stuartmorgan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU0OTA1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDItMTcgIFN0dWFydCBN
b3JnYW4gIDxzdHVhcnRtb3JnYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IFVTRSBkZWZpbml0aW9uIGZv
ciBzZWN1cmUgdGV4dCBtb2RlIG9uIHRoZSBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI2NQorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisKIDIwMTAtMDItMTcgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiA1NDg5OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NjIsMTAgKzU2MiwxNSBAQAogI2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIg
MQogI2VuZGlmIC8qIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElQSE9ORSkgKi8KIAorI2lm
IFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgV1RGX1VTRV9DQVJCT05fU0VDVVJFX0lOUFVUX01PREUg
MQorI2VuZGlmCisKICNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQogI2RlZmlu
ZSBXVEZfUExBVEZPUk1fQ0YgMQogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKICNkZWZpbmUg
SEFWRV9QVEhSRUFEX1JXTE9DSyAxCisjZGVmaW5lIFdURl9VU0VfQ0FSQk9OX1NFQ1VSRV9JTlBV
VF9NT0RFIDEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpICYmIE9TKERBUldJTikKSW5kZXg6
IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1NDkwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMTAtMDItMTcgIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmUgdGhlIGRldGFpbHMgb2Ygc2VjdXJlIHRleHQgbW9kZSBpbnRvIFdlYkNvcmUvcGxhdGZv
cm0uCisgICAgICAgIE1vdmUgdGhlIGhpZ2hlci1sZXZlbCBsb2dpYyBmb3Igc2VjdXJlIHRleHQg
bW9kZSBmcm9tIEZyYW1lCisgICAgICAgIHRvIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjY1CisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzOiBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUpOgorICAgICAgICAqIGVkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250
cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3VyZUtleWJv
YXJkRW50cnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3Vt
ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJl
VGV4dElucHV0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVTZWN1cmVUZXh0
SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCk6CisgICAg
ICAgICogcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZW5hYmxlU2VjdXJlVGV4dElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVTZWN1
cmVUZXh0SW5wdXQpOgorCiAyMDEwLTAyLTE3ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gNTQ4OTgpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjg0
MCw2ICsyODQwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9TZWN1cmVUZXh0SW5wdXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU0ODk4KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw2ICs2Nzgs
OCBAQAogCQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBDQTUx
MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovOyB9OwogCQkzMzkw
Q0E1NjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5
NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggKi87IH07CiAJCTMzOTBDQTU4MEZGQzE1N0IwMDky
MTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNh
dGlvbkNvbnRlbnRzLmggKi87IH07CisJCTMzQzBDQ0Q0MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1
cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi87
IH07CisJCTMzQzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQzBDQ0QzMTEyQzVF
NjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsKIAkJMzcxRjRGNDAwRDI1QjlB
RjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFGNEY0MTBE
MjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRh
LmNwcCAqLzsgfTsKIAkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFG
NEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLzsgfTsKQEAgLTYw
MDksNiArNjAxMSw4IEBACiAJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRp
b25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9u
Q2VudGVyLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90
aWZpY2F0aW9uQ2VudGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25D
ZW50ZXIuaWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyog
Tm90aWZpY2F0aW9uQ29udGVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Tm90aWZpY2F0aW9uQ29udGVudHMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q29udGVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNDMENDRDIxMTJDNUU2
MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzM0MwQ0NEMzExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyZVRleHRJbnB1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnRE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1
IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlZ21lbnRlZEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIy
NCw2ICsxNTIyOCw4IEBACiAJCQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZp
ZXcuY3BwICovLAogCQkJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3Lmgg
Ki8sCiAJCQkJQUI3MTcwODgwQjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBvcHVwTWVudS5oICov
LAorCQkJCTMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICov
LAorCQkJCTMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLywK
IAkJCQkxQTRBOTU0QjBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKIAkJ
CQkxQTRBOTU0QzBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi8sCiAJCQkJOTMz
MDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8sCkBAIC0xODUzMCw2ICsx
ODUzNiw3IEBACiAJCQkJOTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUYyQTMyMkMxMTI1QTBBMjAwM0MzMDU2IC8q
IEphdmFTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjJBMzIyRTExMjVBMEEy
MDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
M0MwQ0NENTExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTIwNzExLDYgKzIwNzE4LDcgQEAKIAkJCQk3NkZGMTdFMzExMjM1NjczMDAxRDYxQjUg
LyogUGx1Z2luVmlld05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUYyQTMyMkIxMTI1QTBB
MjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlG
MkEzMjJEMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzNDMENDRDQxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU0ODk4KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzY5LDcgKzQzNjks
NyBAQCB2b2lkIERvY3VtZW50OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgbV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSA9
IHVzZXNTZWN1cmVLZXlib2FyZDsKLSAgICBtX2ZyYW1lLT51cGRhdGVTZWN1cmVLZXlib2FyZEVu
dHJ5SWZBY3RpdmUoKTsKKyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dXBkYXRlU2VjdXJlS2V5
Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnVzZVNlY3VyZUtleWJv
YXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU0ODk4KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQu
aCIKQEAgLTEyODQsNyArMTI4NSw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNl
ZE9yQWN0aXYKIAogICAgIC8vIFNlY3VyZSBrZXlib2FyZCBlbnRyeSBpcyBzZXQgYnkgdGhlIGFj
dGl2ZSBmcmFtZS4KICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXNlU2VjdXJlS2V5Ym9h
cmRFbnRyeVdoZW5BY3RpdmUoKSkKLSAgICAgICAgbV9mcmFtZS0+c2V0VXNlU2VjdXJlS2V5Ym9h
cmRFbnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKKyAgICAgICAgc2V0VXNlU2VjdXJlS2V5Ym9hcmRF
bnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpw
YWdlQWN0aXZhdGlvbkNoYW5nZWQoKQpAQCAtMTI5Miw2ICsxMjkzLDIwIEBAIHZvaWQgU2VsZWN0
aW9uQ29udHJvbGxlcjo6cGFnZUFjdGl2YXRpb24KICAgICBmb2N1c2VkT3JBY3RpdmVTdGF0ZUNo
YW5nZWQoKTsKIH0KIAordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjp1cGRhdGVTZWN1cmVLZXli
b2FyZEVudHJ5SWZBY3RpdmUoKQoreworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIGlz
Rm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkpOwor
fQorCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnko
Ym9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgZW5hYmxlU2VjdXJlVGV4
dElucHV0KCk7CisgICAgZWxzZQorICAgICAgICBkaXNhYmxlU2VjdXJlVGV4dElucHV0KCk7Cit9
CisKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZsYWcpCiB7CiAg
ICAgaWYgKG1fZm9jdXNlZCA9PSBmbGFnKQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5oCShyZXZpc2lvbiA1NDg5OCkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gUGFpbnRpbmcuCiAgICAgdm9pZCB1cGRhdGVBcHBlYXJhbmNlKCk7CiAKKyAgICB2b2lk
IHVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOworCiAjaWZuZGVmIE5ERUJVRwog
ICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0OwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CkBAIC0xNjMsNiArMTY1
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2FyZXRCbGlua1RpbWVyRmlyZWQoVGltZXI8U2Vs
ZWN0aW9uQ29udHJvbGxlcj4qKTsKIAorICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eShib29sKTsKKwogICAgIEZyYW1lKiBtX2ZyYW1lOwogCiAgICAgaW50IG1feFBvc0ZvclZlcnRp
Y2FsQXJyb3dOYXZpZ2F0aW9uOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA1NDg5OCkKKysrIFdlYkNv
cmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDEwICs4NCw2IEBACiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBP
UyhEQVJXSU4pKQotI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgotI2VuZGlmCi0KICNpZiBVU0Uo
SlNDKQogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jv
b3QuaCIKQEAgLTI4MSw4ICsyNzcsNyBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVm
UHRyPERvY3VtCiAgICAgfQogCiAgICAgbV9kb2MgPSBuZXdEb2M7Ci0gICAgaWYgKG1fZG9jICYm
IHNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgc2V0VXNlU2VjdXJl
S2V5Ym9hcmRFbnRyeShtX2RvYy0+dXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSk7
CisgICAgc2VsZWN0aW9uKCktPnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwog
CiAgICAgaWYgKG1fZG9jICYmICFtX2RvYy0+YXR0YWNoZWQoKSkKICAgICAgICAgbV9kb2MtPmF0
dGFjaCgpOwpAQCAtODQ2LDQzICs4NDEsNiBAQCBib29sIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJs
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jLT5pbkRlc2lnbk1vZGUoKTsKIH0KIAotI2lmIFBM
QVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQotY29uc3Qg
c2hvcnQgZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5ID0gLTIzOwotI2VuZGlmCi12b2lkIEZyYW1l
OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wgZW5hYmxlKQotewotI2lmIFBMQVRGT1JN
KE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQotICAgIGlmIChlbmFi
bGUgPT0gSXNTZWN1cmVFdmVudElucHV0RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKGVuYWJsZSkgewotICAgICAgICBFbmFibGVTZWN1cmVFdmVudElucHV0KCk7Ci0jaWZkZWYg
QlVJTERJTkdfT05fVElHRVIKLSAgICAgICAgS2V5U2NyaXB0KGVuYWJsZVJvbWFuS2V5Ym9hcmRz
T25seSk7Ci0jZWxzZQotICAgICAgICAvLyBXZWJLaXQgc3Vic3RpdHV0ZXMgbmlsIGZvciBpbnB1
dCBjb250ZXh0IHdoZW4gaW4gcGFzc3dvcmQgZmllbGQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIG51
bGwgVFNNRG9jdW1lbnQuIFNvLCB0aGVyZSBpcwotICAgICAgICAvLyBubyBuZWVkIHRvIGNhbGwg
VFNNR2V0QWN0aXZlRG9jdW1lbnQoKSwgd2hpY2ggbWF5IHJldHVybiBhbiBpbmNvcnJlY3QgcmVz
dWx0IHdoZW4gc2VsZWN0aW9uIGhhc24ndCBiZWVuIHlldCB1cGRhdGVkCi0gICAgICAgIC8vIGFm
dGVyIGZvY3VzaW5nIGEgbm9kZS4KLSAgICAgICAgQ0ZBcnJheVJlZiBpbnB1dFNvdXJjZXMgPSBU
SVNDcmVhdGVBU0NJSUNhcGFibGVJbnB1dFNvdXJjZUxpc3QoKTsKLSAgICAgICAgVFNNU2V0RG9j
dW1lbnRQcm9wZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlU
YWcsIHNpemVvZihDRkFycmF5UmVmKSwgJmlucHV0U291cmNlcyk7Ci0gICAgICAgIENGUmVsZWFz
ZShpbnB1dFNvdXJjZXMpOwotI2VuZGlmCi0gICAgfSBlbHNlIHsKLSAgICAgICAgRGlzYWJsZVNl
Y3VyZUV2ZW50SW5wdXQoKTsKLSNpZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgICAgICBLZXlT
Y3JpcHQoc21LZXlFbmFibGVLeWJkcyk7Ci0jZWxzZQotICAgICAgICBUU01SZW1vdmVEb2N1bWVu
dFByb3BlcnR5KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJbnB1dFNvdXJjZXNQcm9wZXJ0eVRhZyk7
Ci0jZW5kaWYKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBGcmFtZTo6dXBkYXRlU2VjdXJlS2V5
Ym9hcmRFbnRyeUlmQWN0aXZlKCkKLXsKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFu
ZEFjdGl2ZSgpKQotICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1fZG9jLT51c2VT
ZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKLX0KLQogQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24gKkZyYW1lOjp0eXBpbmdTdHlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlw
aW5nU3R5bGUuZ2V0KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gNTQ4OTgpCisrKyBXZWJDb3JlL3BhZ2Uv
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDggKzI0MSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7IC8vIGlmIHRy
dWUsIGV2ZXJ5dGhpbmcgaW4gZnJhbWUgaXMgZWRpdGFibGUKIAotICAgICAgICB2b2lkIHVwZGF0
ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwotCiAgICAgICAgIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiB0eXBpbmdTdHlsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFR5cGlu
Z1N0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKik7CiAgICAgICAgIHZvaWQgY2xlYXJU
eXBpbmdTdHlsZSgpOwpAQCAtMjU2LDggKzI1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9s
bEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgYm9vbCByZXZlYWxFeHRlbnQgPSBmYWxz
ZSk7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKIAotICAgICAgICB2b2lk
IHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCk7Ci0KICAgICAgICAgU2VsZWN0aW9uQ29u
dHJvbGxlciogZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0OwogCiAgICAgICAgIFN0cmluZyBz
ZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVDZWxs
RWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlY3VyZVRl
eHRJbnB1dC5oIgorCisjaWYgVVNFKENBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSkKKyNpbXBvcnQg
PENhcmJvbi9DYXJib24uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBV
U0UoQ0FSQk9OX1NFQ1VSRV9JTlBVVF9NT0RFKQorCisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIK
K2NvbnN0IHNob3J0IGVuYWJsZVJvbWFuS2V5Ym9hcmRzT25seSA9IC0yMzsKKyNlbmRpZgorCit2
b2lkIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpCit7CisgICAgaWYgKElzU2VjdXJlRXZlbnRJbnB1
dEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEVuYWJsZVNlY3VyZUV2ZW50SW5wdXQo
KTsKKyNpZmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIEtleVNjcmlwdChlbmFibGVSb21hbktl
eWJvYXJkc09ubHkpOworI2Vsc2UKKyAgICAvLyBXZWJLaXQgc3Vic3RpdHV0ZXMgbmlsIGZvciBp
bnB1dCBjb250ZXh0IHdoZW4gaW4gcGFzc3dvcmQgZmllbGQsIHdoaWNoIGNvcnJlc3BvbmRzIHRv
IG51bGwgVFNNRG9jdW1lbnQuIFNvLCB0aGVyZSBpcworICAgIC8vIG5vIG5lZWQgdG8gY2FsbCBU
U01HZXRBY3RpdmVEb2N1bWVudCgpLCB3aGljaCBtYXkgcmV0dXJuIGFuIGluY29ycmVjdCByZXN1
bHQgd2hlbiBzZWxlY3Rpb24gaGFzbid0IGJlZW4geWV0IHVwZGF0ZWQKKyAgICAvLyBhZnRlciBm
b2N1c2luZyBhIG5vZGUuCisgICAgQ0ZBcnJheVJlZiBpbnB1dFNvdXJjZXMgPSBUSVNDcmVhdGVB
U0NJSUNhcGFibGVJbnB1dFNvdXJjZUxpc3QoKTsKKyAgICBUU01TZXREb2N1bWVudFByb3BlcnR5
KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJbnB1dFNvdXJjZXNQcm9wZXJ0eVRhZywgc2l6ZW9mKENG
QXJyYXlSZWYpLCAmaW5wdXRTb3VyY2VzKTsKKyAgICBDRlJlbGVhc2UoaW5wdXRTb3VyY2VzKTsK
KyNlbmRpZgorfQorCit2b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKQoreworICAgIGlmICgh
SXNTZWN1cmVFdmVudElucHV0RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgRGlzYWJs
ZVNlY3VyZUV2ZW50SW5wdXQoKTsKKyNpZmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIEtleVNj
cmlwdChzbUtleUVuYWJsZUt5YmRzKTsKKyNlbHNlCisgICAgVFNNUmVtb3ZlRG9jdW1lbnRQcm9w
ZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlUYWcpOworI2Vu
ZGlmCit9CisKKyNlbmRpZiAgLy8gVVNFKENBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSkKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9wbGF0Zm9y
bS9TZWN1cmVUZXh0SW5wdXQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBuYXRpdmUKCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgU2VjdXJlVGV4dElucHV0X2gKKyNkZWZpbmUgU2VjdXJlVGV4
dElucHV0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKy8vIE9uY2UgZW5hYmxlU2VjdXJlVGV4dElucHV0IGlzIGNhbGxlZCwgc2VjdXJlIHRl
eHQgaW5wdXQgbW9kZSBpcyBzZXQgdW50aWwKKy8vIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQgaGFz
IGJlZW4gY2FsbGVkLgordm9pZCBlbmFibGVTZWN1cmVUZXh0SW5wdXQoKTsKK3ZvaWQgZGlzYWJs
ZVNlY3VyZVRleHRJbnB1dCgpOworCisjaWYgIVVTRShDQVJCT05fU0VDVVJFX0lOUFVUX01PREUp
CitpbmxpbmUgdm9pZCBlbmFibGVTZWN1cmVUZXh0SW5wdXQoKSB7IH0KK2lubGluZSB2b2lkIGRp
c2FibGVTZWN1cmVUZXh0SW5wdXQoKSB7IH0KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBTZWN1cmVUZXh0SW5wdXRfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjog
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48927</attachid>
            <date>2010-02-17 12:55:05 -0800</date>
            <delta_ts>2010-02-17 15:11:34 -0800</delta_ts>
            <desc>v6</desc>
            <filename>31265-v6.patch</filename>
            <type>text/plain</type>
            <size>18891</size>
            <attacher name="Stuart Morgan">stuartmorgan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU0OTA1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDItMTcgIFN0dWFydCBN
b3JnYW4gIDxzdHVhcnRtb3JnYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IFVTRSBkZWZpbml0aW9uIGZv
ciBzZWN1cmUgdGV4dCBtb2RlIG9uIHRoZSBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI2NQorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisKIDIwMTAtMDItMTcgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiA1NDg5OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NjIsMTAgKzU2MiwxNSBAQAogI2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIg
MQogI2VuZGlmIC8qIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElQSE9ORSkgKi8KIAorI2lm
IFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgV1RGX1VTRV9DQVJCT05fU0VDVVJFX0lOUFVUX01PREUg
MQorI2VuZGlmCisKICNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQogI2RlZmlu
ZSBXVEZfUExBVEZPUk1fQ0YgMQogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKICNkZWZpbmUg
SEFWRV9QVEhSRUFEX1JXTE9DSyAxCisjZGVmaW5lIFdURl9VU0VfQ0FSQk9OX1NFQ1VSRV9JTlBV
VF9NT0RFIDEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpICYmIE9TKERBUldJTikKSW5kZXg6
IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1NDkwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMTAtMDItMTcgIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmUgdGhlIGRldGFpbHMgb2Ygc2VjdXJlIHRleHQgbW9kZSBpbnRvIFdlYkNvcmUvcGxhdGZv
cm0uCisgICAgICAgIE1vdmUgdGhlIGhpZ2hlci1sZXZlbCBsb2dpYyBmb3Igc2VjdXJlIHRleHQg
bW9kZSBmcm9tIEZyYW1lCisgICAgICAgIHRvIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjY1CisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzOiBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUpOgorICAgICAgICAqIGVkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250
cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3VyZUtleWJv
YXJkRW50cnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3Vt
ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJl
VGV4dElucHV0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVTZWN1cmVUZXh0
SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCk6CisgICAg
ICAgICogcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZW5hYmxlU2VjdXJlVGV4dElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVTZWN1
cmVUZXh0SW5wdXQpOgorCiAyMDEwLTAyLTE3ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gNTQ4OTgpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjg0
MCw2ICsyODQwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9TZWN1cmVUZXh0SW5wdXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU0ODk4KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw2ICs2Nzgs
OCBAQAogCQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBDQTUx
MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovOyB9OwogCQkzMzkw
Q0E1NjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5
NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggKi87IH07CiAJCTMzOTBDQTU4MEZGQzE1N0IwMDky
MTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNh
dGlvbkNvbnRlbnRzLmggKi87IH07CisJCTMzQzBDQ0Q0MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1
cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi87
IH07CisJCTMzQzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQzBDQ0QzMTEyQzVF
NjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsKIAkJMzcxRjRGNDAwRDI1QjlB
RjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFGNEY0MTBE
MjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRh
LmNwcCAqLzsgfTsKIAkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFG
NEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLzsgfTsKQEAgLTYw
MDksNiArNjAxMSw4IEBACiAJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRp
b25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9u
Q2VudGVyLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90
aWZpY2F0aW9uQ2VudGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25D
ZW50ZXIuaWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyog
Tm90aWZpY2F0aW9uQ29udGVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Tm90aWZpY2F0aW9uQ29udGVudHMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q29udGVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNDMENDRDIxMTJDNUU2
MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzM0MwQ0NEMzExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyZVRleHRJbnB1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnRE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1
IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlZ21lbnRlZEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIy
NCw2ICsxNTIyOCw4IEBACiAJCQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZp
ZXcuY3BwICovLAogCQkJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3Lmgg
Ki8sCiAJCQkJQUI3MTcwODgwQjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBvcHVwTWVudS5oICov
LAorCQkJCTMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICov
LAorCQkJCTMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLywK
IAkJCQkxQTRBOTU0QjBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKIAkJ
CQkxQTRBOTU0QzBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi8sCiAJCQkJOTMz
MDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8sCkBAIC0xODUzMCw2ICsx
ODUzNiw3IEBACiAJCQkJOTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUYyQTMyMkMxMTI1QTBBMjAwM0MzMDU2IC8q
IEphdmFTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjJBMzIyRTExMjVBMEEy
MDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
M0MwQ0NENTExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTIwNzExLDYgKzIwNzE4LDcgQEAKIAkJCQk3NkZGMTdFMzExMjM1NjczMDAxRDYxQjUg
LyogUGx1Z2luVmlld05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUYyQTMyMkIxMTI1QTBB
MjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlG
MkEzMjJEMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzNDMENDRDQxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU0ODk4KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzY5LDcgKzQzNjks
NyBAQCB2b2lkIERvY3VtZW50OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgbV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSA9
IHVzZXNTZWN1cmVLZXlib2FyZDsKLSAgICBtX2ZyYW1lLT51cGRhdGVTZWN1cmVLZXlib2FyZEVu
dHJ5SWZBY3RpdmUoKTsKKyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dXBkYXRlU2VjdXJlS2V5
Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnVzZVNlY3VyZUtleWJv
YXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU0ODk4KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQu
aCIKQEAgLTEyODQsNyArMTI4NSw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNl
ZE9yQWN0aXYKIAogICAgIC8vIFNlY3VyZSBrZXlib2FyZCBlbnRyeSBpcyBzZXQgYnkgdGhlIGFj
dGl2ZSBmcmFtZS4KICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXNlU2VjdXJlS2V5Ym9h
cmRFbnRyeVdoZW5BY3RpdmUoKSkKLSAgICAgICAgbV9mcmFtZS0+c2V0VXNlU2VjdXJlS2V5Ym9h
cmRFbnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKKyAgICAgICAgc2V0VXNlU2VjdXJlS2V5Ym9hcmRF
bnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpw
YWdlQWN0aXZhdGlvbkNoYW5nZWQoKQpAQCAtMTI5Miw2ICsxMjkzLDIwIEBAIHZvaWQgU2VsZWN0
aW9uQ29udHJvbGxlcjo6cGFnZUFjdGl2YXRpb24KICAgICBmb2N1c2VkT3JBY3RpdmVTdGF0ZUNo
YW5nZWQoKTsKIH0KIAordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjp1cGRhdGVTZWN1cmVLZXli
b2FyZEVudHJ5SWZBY3RpdmUoKQoreworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIGlz
Rm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkpOwor
fQorCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnko
Ym9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgZW5hYmxlU2VjdXJlVGV4
dElucHV0KCk7CisgICAgZWxzZQorICAgICAgICBkaXNhYmxlU2VjdXJlVGV4dElucHV0KCk7Cit9
CisKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZsYWcpCiB7CiAg
ICAgaWYgKG1fZm9jdXNlZCA9PSBmbGFnKQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5oCShyZXZpc2lvbiA1NDg5OCkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gUGFpbnRpbmcuCiAgICAgdm9pZCB1cGRhdGVBcHBlYXJhbmNlKCk7CiAKKyAgICB2b2lk
IHVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOworCiAjaWZuZGVmIE5ERUJVRwog
ICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0OwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CkBAIC0xNjMsNiArMTY1
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2FyZXRCbGlua1RpbWVyRmlyZWQoVGltZXI8U2Vs
ZWN0aW9uQ29udHJvbGxlcj4qKTsKIAorICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eShib29sKTsKKwogICAgIEZyYW1lKiBtX2ZyYW1lOwogCiAgICAgaW50IG1feFBvc0ZvclZlcnRp
Y2FsQXJyb3dOYXZpZ2F0aW9uOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA1NDg5OCkKKysrIFdlYkNv
cmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDEwICs4NCw2IEBACiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBP
UyhEQVJXSU4pKQotI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgotI2VuZGlmCi0KICNpZiBVU0Uo
SlNDKQogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jv
b3QuaCIKQEAgLTI4MSw4ICsyNzcsNyBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVm
UHRyPERvY3VtCiAgICAgfQogCiAgICAgbV9kb2MgPSBuZXdEb2M7Ci0gICAgaWYgKG1fZG9jICYm
IHNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgc2V0VXNlU2VjdXJl
S2V5Ym9hcmRFbnRyeShtX2RvYy0+dXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSk7
CisgICAgc2VsZWN0aW9uKCktPnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwog
CiAgICAgaWYgKG1fZG9jICYmICFtX2RvYy0+YXR0YWNoZWQoKSkKICAgICAgICAgbV9kb2MtPmF0
dGFjaCgpOwpAQCAtODQ2LDQzICs4NDEsNiBAQCBib29sIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJs
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jLT5pbkRlc2lnbk1vZGUoKTsKIH0KIAotI2lmIFBM
QVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQotY29uc3Qg
c2hvcnQgZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5ID0gLTIzOwotI2VuZGlmCi12b2lkIEZyYW1l
OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wgZW5hYmxlKQotewotI2lmIFBMQVRGT1JN
KE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQotICAgIGlmIChlbmFi
bGUgPT0gSXNTZWN1cmVFdmVudElucHV0RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKGVuYWJsZSkgewotICAgICAgICBFbmFibGVTZWN1cmVFdmVudElucHV0KCk7Ci0jaWZkZWYg
QlVJTERJTkdfT05fVElHRVIKLSAgICAgICAgS2V5U2NyaXB0KGVuYWJsZVJvbWFuS2V5Ym9hcmRz
T25seSk7Ci0jZWxzZQotICAgICAgICAvLyBXZWJLaXQgc3Vic3RpdHV0ZXMgbmlsIGZvciBpbnB1
dCBjb250ZXh0IHdoZW4gaW4gcGFzc3dvcmQgZmllbGQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIG51
bGwgVFNNRG9jdW1lbnQuIFNvLCB0aGVyZSBpcwotICAgICAgICAvLyBubyBuZWVkIHRvIGNhbGwg
VFNNR2V0QWN0aXZlRG9jdW1lbnQoKSwgd2hpY2ggbWF5IHJldHVybiBhbiBpbmNvcnJlY3QgcmVz
dWx0IHdoZW4gc2VsZWN0aW9uIGhhc24ndCBiZWVuIHlldCB1cGRhdGVkCi0gICAgICAgIC8vIGFm
dGVyIGZvY3VzaW5nIGEgbm9kZS4KLSAgICAgICAgQ0ZBcnJheVJlZiBpbnB1dFNvdXJjZXMgPSBU
SVNDcmVhdGVBU0NJSUNhcGFibGVJbnB1dFNvdXJjZUxpc3QoKTsKLSAgICAgICAgVFNNU2V0RG9j
dW1lbnRQcm9wZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlU
YWcsIHNpemVvZihDRkFycmF5UmVmKSwgJmlucHV0U291cmNlcyk7Ci0gICAgICAgIENGUmVsZWFz
ZShpbnB1dFNvdXJjZXMpOwotI2VuZGlmCi0gICAgfSBlbHNlIHsKLSAgICAgICAgRGlzYWJsZVNl
Y3VyZUV2ZW50SW5wdXQoKTsKLSNpZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgICAgICBLZXlT
Y3JpcHQoc21LZXlFbmFibGVLeWJkcyk7Ci0jZWxzZQotICAgICAgICBUU01SZW1vdmVEb2N1bWVu
dFByb3BlcnR5KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJbnB1dFNvdXJjZXNQcm9wZXJ0eVRhZyk7
Ci0jZW5kaWYKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBGcmFtZTo6dXBkYXRlU2VjdXJlS2V5
Ym9hcmRFbnRyeUlmQWN0aXZlKCkKLXsKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFu
ZEFjdGl2ZSgpKQotICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1fZG9jLT51c2VT
ZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKLX0KLQogQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24gKkZyYW1lOjp0eXBpbmdTdHlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlw
aW5nU3R5bGUuZ2V0KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gNTQ4OTgpCisrKyBXZWJDb3JlL3BhZ2Uv
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDggKzI0MSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7IC8vIGlmIHRy
dWUsIGV2ZXJ5dGhpbmcgaW4gZnJhbWUgaXMgZWRpdGFibGUKIAotICAgICAgICB2b2lkIHVwZGF0
ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwotCiAgICAgICAgIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiB0eXBpbmdTdHlsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFR5cGlu
Z1N0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKik7CiAgICAgICAgIHZvaWQgY2xlYXJU
eXBpbmdTdHlsZSgpOwpAQCAtMjU2LDggKzI1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9s
bEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgYm9vbCByZXZlYWxFeHRlbnQgPSBmYWxz
ZSk7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKIAotICAgICAgICB2b2lk
IHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCk7Ci0KICAgICAgICAgU2VsZWN0aW9uQ29u
dHJvbGxlciogZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0OwogCiAgICAgICAgIFN0cmluZyBz
ZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVDZWxs
RWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlY3VyZVRl
eHRJbnB1dC5oIgorCisjaWYgVVNFKENBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSkKKyNpbXBvcnQg
PENhcmJvbi9DYXJib24uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBV
U0UoQ0FSQk9OX1NFQ1VSRV9JTlBVVF9NT0RFKQorCisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIK
K2NvbnN0IHNob3J0IGVuYWJsZVJvbWFuS2V5Ym9hcmRzT25seSA9IC0yMzsKKyNlbmRpZgorCit2
b2lkIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpCit7CisgICAgaWYgKElzU2VjdXJlRXZlbnRJbnB1
dEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEVuYWJsZVNlY3VyZUV2ZW50SW5wdXQo
KTsKKyNpZmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIEtleVNjcmlwdChlbmFibGVSb21hbktl
eWJvYXJkc09ubHkpOworI2Vsc2UKKyAgICAvLyBXZWJLaXQgc3Vic3RpdHV0ZXMgbmlsIGZvciBp
bnB1dCBjb250ZXh0IHdoZW4gaW4gcGFzc3dvcmQgZmllbGQsIHdoaWNoIGNvcnJlc3BvbmRzIHRv
IG51bGwgVFNNRG9jdW1lbnQuIFNvLCB0aGVyZSBpcworICAgIC8vIG5vIG5lZWQgdG8gY2FsbCBU
U01HZXRBY3RpdmVEb2N1bWVudCgpLCB3aGljaCBtYXkgcmV0dXJuIGFuIGluY29ycmVjdCByZXN1
bHQgd2hlbiBzZWxlY3Rpb24gaGFzbid0IGJlZW4geWV0IHVwZGF0ZWQKKyAgICAvLyBhZnRlciBm
b2N1c2luZyBhIG5vZGUuCisgICAgQ0ZBcnJheVJlZiBpbnB1dFNvdXJjZXMgPSBUSVNDcmVhdGVB
U0NJSUNhcGFibGVJbnB1dFNvdXJjZUxpc3QoKTsKKyAgICBUU01TZXREb2N1bWVudFByb3BlcnR5
KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJbnB1dFNvdXJjZXNQcm9wZXJ0eVRhZywgc2l6ZW9mKENG
QXJyYXlSZWYpLCAmaW5wdXRTb3VyY2VzKTsKKyAgICBDRlJlbGVhc2UoaW5wdXRTb3VyY2VzKTsK
KyNlbmRpZgorfQorCit2b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKQoreworICAgIGlmICgh
SXNTZWN1cmVFdmVudElucHV0RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgRGlzYWJs
ZVNlY3VyZUV2ZW50SW5wdXQoKTsKKyNpZmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIEtleVNj
cmlwdChzbUtleUVuYWJsZUt5YmRzKTsKKyNlbHNlCisgICAgVFNNUmVtb3ZlRG9jdW1lbnRQcm9w
ZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlUYWcpOworI2Vu
ZGlmCit9CisKKyNlbmRpZiAgLy8gVVNFKENBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSkKKworfSAg
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvcGxhdGZv
cm0vU2VjdXJlVGV4dElucHV0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgbmF0aXZlCgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNlY3VyZVRleHRJbnB1dF9oCisjZGVmaW5lIFNlY3VyZVRl
eHRJbnB1dF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBPbmNlIGVuYWJsZVNlY3VyZVRleHRJbnB1dCBpcyBjYWxsZWQsIHNlY3VyZSB0
ZXh0IGlucHV0IG1vZGUgaXMgc2V0IHVudGlsCisvLyBkaXNhYmxlU2VjdXJlVGV4dElucHV0IGhh
cyBiZWVuIGNhbGxlZC4KK3ZvaWQgZW5hYmxlU2VjdXJlVGV4dElucHV0KCk7Cit2b2lkIGRpc2Fi
bGVTZWN1cmVUZXh0SW5wdXQoKTsKKworI2lmICFVU0UoQ0FSQk9OX1NFQ1VSRV9JTlBVVF9NT0RF
KQoraW5saW5lIHZvaWQgZW5hYmxlU2VjdXJlVGV4dElucHV0KCkgeyB9CitpbmxpbmUgdm9pZCBk
aXNhYmxlU2VjdXJlVGV4dElucHV0KCkgeyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gU2VjdXJlVGV4dElucHV0X2gKClByb3BlcnR5IGNoYW5nZXMgb246
IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmgKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48942</attachid>
            <date>2010-02-17 15:11:34 -0800</date>
            <delta_ts>2010-03-08 08:19:33 -0800</delta_ts>
            <desc>v7</desc>
            <filename>31265-v7.patch</filename>
            <type>text/plain</type>
            <size>18889</size>
            <attacher name="Stuart Morgan">stuartmorgan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU0OTA1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDItMTcgIFN0dWFydCBN
b3JnYW4gIDxzdHVhcnRtb3JnYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IFVTRSBkZWZpbml0aW9uIGZv
ciBzZWN1cmUgdGV4dCBtb2RlIG9uIHRoZSBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI2NQorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisKIDIwMTAtMDItMTcgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiA1NDg5OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NjIsMTAgKzU2MiwxNSBAQAogI2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIg
MQogI2VuZGlmIC8qIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElQSE9ORSkgKi8KIAorI2lm
IFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgV1RGX1VTRV9DQVJCT05fU0VDVVJFX0lOUFVUX01PREUg
MQorI2VuZGlmCisKICNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQogI2RlZmlu
ZSBXVEZfUExBVEZPUk1fQ0YgMQogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKICNkZWZpbmUg
SEFWRV9QVEhSRUFEX1JXTE9DSyAxCisjZGVmaW5lIFdURl9VU0VfQ0FSQk9OX1NFQ1VSRV9JTlBV
VF9NT0RFIDEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpICYmIE9TKERBUldJTikKSW5kZXg6
IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1NDkwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMTAtMDItMTcgIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmUgdGhlIGRldGFpbHMgb2Ygc2VjdXJlIHRleHQgbW9kZSBpbnRvIFdlYkNvcmUvcGxhdGZv
cm0uCisgICAgICAgIE1vdmUgdGhlIGhpZ2hlci1sZXZlbCBsb2dpYyBmb3Igc2VjdXJlIHRleHQg
bW9kZSBmcm9tIEZyYW1lCisgICAgICAgIHRvIFNlbGVjdGlvbkNvbnRyb2xsZXIuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjY1CisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzOiBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUpOgorICAgICAgICAqIGVkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250
cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6dXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3VyZUtleWJv
YXJkRW50cnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3Vt
ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJl
VGV4dElucHV0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVTZWN1cmVUZXh0
SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZVNlY3VyZVRleHRJbnB1dCk6CisgICAg
ICAgICogcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZW5hYmxlU2VjdXJlVGV4dElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVTZWN1
cmVUZXh0SW5wdXQpOgorCiAyMDEwLTAyLTE3ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gNTQ4OTgpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjg0
MCw2ICsyODQwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9TZWN1cmVUZXh0SW5wdXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU0ODk4KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw2ICs2Nzgs
OCBAQAogCQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBDQTUx
MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovOyB9OwogCQkzMzkw
Q0E1NjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5
NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggKi87IH07CiAJCTMzOTBDQTU4MEZGQzE1N0IwMDky
MTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNh
dGlvbkNvbnRlbnRzLmggKi87IH07CisJCTMzQzBDQ0Q0MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1
cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi87
IH07CisJCTMzQzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQzBDQ0QzMTEyQzVF
NjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsKIAkJMzcxRjRGNDAwRDI1QjlB
RjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFGNEY0MTBE
MjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRh
LmNwcCAqLzsgfTsKIAkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFG
NEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLzsgfTsKQEAgLTYw
MDksNiArNjAxMSw4IEBACiAJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRp
b25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9u
Q2VudGVyLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90
aWZpY2F0aW9uQ2VudGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25D
ZW50ZXIuaWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyog
Tm90aWZpY2F0aW9uQ29udGVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Tm90aWZpY2F0aW9uQ29udGVudHMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q29udGVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNDMENDRDIxMTJDNUU2
MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzM0MwQ0NEMzExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyZVRleHRJbnB1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnRE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1
IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlZ21lbnRlZEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIy
NCw2ICsxNTIyOCw4IEBACiAJCQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZp
ZXcuY3BwICovLAogCQkJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3Lmgg
Ki8sCiAJCQkJQUI3MTcwODgwQjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBvcHVwTWVudS5oICov
LAorCQkJCTMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICov
LAorCQkJCTMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLywK
IAkJCQkxQTRBOTU0QjBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKIAkJ
CQkxQTRBOTU0QzBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi8sCiAJCQkJOTMz
MDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8sCkBAIC0xODUzMCw2ICsx
ODUzNiw3IEBACiAJCQkJOTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUYyQTMyMkMxMTI1QTBBMjAwM0MzMDU2IC8q
IEphdmFTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjJBMzIyRTExMjVBMEEy
MDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
M0MwQ0NENTExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTIwNzExLDYgKzIwNzE4LDcgQEAKIAkJCQk3NkZGMTdFMzExMjM1NjczMDAxRDYxQjUg
LyogUGx1Z2luVmlld05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUYyQTMyMkIxMTI1QTBB
MjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlG
MkEzMjJEMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzNDMENDRDQxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU0ODk4KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzY5LDcgKzQzNjks
NyBAQCB2b2lkIERvY3VtZW50OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgbV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSA9
IHVzZXNTZWN1cmVLZXlib2FyZDsKLSAgICBtX2ZyYW1lLT51cGRhdGVTZWN1cmVLZXlib2FyZEVu
dHJ5SWZBY3RpdmUoKTsKKyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dXBkYXRlU2VjdXJlS2V5
Ym9hcmRFbnRyeUlmQWN0aXZlKCk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnVzZVNlY3VyZUtleWJv
YXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU0ODk4KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQu
aCIKQEAgLTEyODQsNyArMTI4NSw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNl
ZE9yQWN0aXYKIAogICAgIC8vIFNlY3VyZSBrZXlib2FyZCBlbnRyeSBpcyBzZXQgYnkgdGhlIGFj
dGl2ZSBmcmFtZS4KICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXNlU2VjdXJlS2V5Ym9h
cmRFbnRyeVdoZW5BY3RpdmUoKSkKLSAgICAgICAgbV9mcmFtZS0+c2V0VXNlU2VjdXJlS2V5Ym9h
cmRFbnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKKyAgICAgICAgc2V0VXNlU2VjdXJlS2V5Ym9hcmRF
bnRyeShhY3RpdmVBbmRGb2N1c2VkKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpw
YWdlQWN0aXZhdGlvbkNoYW5nZWQoKQpAQCAtMTI5Miw2ICsxMjkzLDIwIEBAIHZvaWQgU2VsZWN0
aW9uQ29udHJvbGxlcjo6cGFnZUFjdGl2YXRpb24KICAgICBmb2N1c2VkT3JBY3RpdmVTdGF0ZUNo
YW5nZWQoKTsKIH0KIAordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjp1cGRhdGVTZWN1cmVLZXli
b2FyZEVudHJ5SWZBY3RpdmUoKQoreworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIGlz
Rm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkpOwor
fQorCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnko
Ym9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgZW5hYmxlU2VjdXJlVGV4
dElucHV0KCk7CisgICAgZWxzZQorICAgICAgICBkaXNhYmxlU2VjdXJlVGV4dElucHV0KCk7Cit9
CisKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZsYWcpCiB7CiAg
ICAgaWYgKG1fZm9jdXNlZCA9PSBmbGFnKQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5oCShyZXZpc2lvbiA1NDg5OCkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gUGFpbnRpbmcuCiAgICAgdm9pZCB1cGRhdGVBcHBlYXJhbmNlKCk7CiAKKyAgICB2b2lk
IHVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOworCiAjaWZuZGVmIE5ERUJVRwog
ICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0OwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CkBAIC0xNjMsNiArMTY1
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2FyZXRCbGlua1RpbWVyRmlyZWQoVGltZXI8U2Vs
ZWN0aW9uQ29udHJvbGxlcj4qKTsKIAorICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eShib29sKTsKKwogICAgIEZyYW1lKiBtX2ZyYW1lOwogCiAgICAgaW50IG1feFBvc0ZvclZlcnRp
Y2FsQXJyb3dOYXZpZ2F0aW9uOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA1NDg5OCkKKysrIFdlYkNv
cmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDEwICs4NCw2IEBACiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBP
UyhEQVJXSU4pKQotI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgotI2VuZGlmCi0KICNpZiBVU0Uo
SlNDKQogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jv
b3QuaCIKQEAgLTI4MSw4ICsyNzcsNyBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVm
UHRyPERvY3VtCiAgICAgfQogCiAgICAgbV9kb2MgPSBuZXdEb2M7Ci0gICAgaWYgKG1fZG9jICYm
IHNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgc2V0VXNlU2VjdXJl
S2V5Ym9hcmRFbnRyeShtX2RvYy0+dXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSk7
CisgICAgc2VsZWN0aW9uKCktPnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwog
CiAgICAgaWYgKG1fZG9jICYmICFtX2RvYy0+YXR0YWNoZWQoKSkKICAgICAgICAgbV9kb2MtPmF0
dGFjaCgpOwpAQCAtODQ2LDQzICs4NDEsNiBAQCBib29sIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJs
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jLT5pbkRlc2lnbk1vZGUoKTsKIH0KIAotI2lmIFBM
QVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQotY29uc3Qg
c2hvcnQgZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5ID0gLTIzOwotI2VuZGlmCi12b2lkIEZyYW1l
OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KGJvb2wgZW5hYmxlKQotewotI2lmIFBMQVRGT1JN
KE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQotICAgIGlmIChlbmFi
bGUgPT0gSXNTZWN1cmVFdmVudElucHV0RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKGVuYWJsZSkgewotICAgICAgICBFbmFibGVTZWN1cmVFdmVudElucHV0KCk7Ci0jaWZkZWYg
QlVJTERJTkdfT05fVElHRVIKLSAgICAgICAgS2V5U2NyaXB0KGVuYWJsZVJvbWFuS2V5Ym9hcmRz
T25seSk7Ci0jZWxzZQotICAgICAgICAvLyBXZWJLaXQgc3Vic3RpdHV0ZXMgbmlsIGZvciBpbnB1
dCBjb250ZXh0IHdoZW4gaW4gcGFzc3dvcmQgZmllbGQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIG51
bGwgVFNNRG9jdW1lbnQuIFNvLCB0aGVyZSBpcwotICAgICAgICAvLyBubyBuZWVkIHRvIGNhbGwg
VFNNR2V0QWN0aXZlRG9jdW1lbnQoKSwgd2hpY2ggbWF5IHJldHVybiBhbiBpbmNvcnJlY3QgcmVz
dWx0IHdoZW4gc2VsZWN0aW9uIGhhc24ndCBiZWVuIHlldCB1cGRhdGVkCi0gICAgICAgIC8vIGFm
dGVyIGZvY3VzaW5nIGEgbm9kZS4KLSAgICAgICAgQ0ZBcnJheVJlZiBpbnB1dFNvdXJjZXMgPSBU
SVNDcmVhdGVBU0NJSUNhcGFibGVJbnB1dFNvdXJjZUxpc3QoKTsKLSAgICAgICAgVFNNU2V0RG9j
dW1lbnRQcm9wZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlU
YWcsIHNpemVvZihDRkFycmF5UmVmKSwgJmlucHV0U291cmNlcyk7Ci0gICAgICAgIENGUmVsZWFz
ZShpbnB1dFNvdXJjZXMpOwotI2VuZGlmCi0gICAgfSBlbHNlIHsKLSAgICAgICAgRGlzYWJsZVNl
Y3VyZUV2ZW50SW5wdXQoKTsKLSNpZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgICAgICBLZXlT
Y3JpcHQoc21LZXlFbmFibGVLeWJkcyk7Ci0jZWxzZQotICAgICAgICBUU01SZW1vdmVEb2N1bWVu
dFByb3BlcnR5KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJbnB1dFNvdXJjZXNQcm9wZXJ0eVRhZyk7
Ci0jZW5kaWYKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBGcmFtZTo6dXBkYXRlU2VjdXJlS2V5
Ym9hcmRFbnRyeUlmQWN0aXZlKCkKLXsKLSAgICBpZiAoc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFu
ZEFjdGl2ZSgpKQotICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1fZG9jLT51c2VT
ZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKLX0KLQogQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24gKkZyYW1lOjp0eXBpbmdTdHlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlw
aW5nU3R5bGUuZ2V0KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gNTQ4OTgpCisrKyBXZWJDb3JlL3BhZ2Uv
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDggKzI0MSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7IC8vIGlmIHRy
dWUsIGV2ZXJ5dGhpbmcgaW4gZnJhbWUgaXMgZWRpdGFibGUKIAotICAgICAgICB2b2lkIHVwZGF0
ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwotCiAgICAgICAgIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiB0eXBpbmdTdHlsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFR5cGlu
Z1N0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKik7CiAgICAgICAgIHZvaWQgY2xlYXJU
eXBpbmdTdHlsZSgpOwpAQCAtMjU2LDggKzI1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9s
bEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgYm9vbCByZXZlYWxFeHRlbnQgPSBmYWxz
ZSk7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKIAotICAgICAgICB2b2lk
IHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCk7Ci0KICAgICAgICAgU2VsZWN0aW9uQ29u
dHJvbGxlciogZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0OwogCiAgICAgICAgIFN0cmluZyBz
ZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVDZWxs
RWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlY3VyZVRl
eHRJbnB1dC5oIgorCisjaWYgVVNFKENBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSkKKyNpbXBvcnQg
PENhcmJvbi9DYXJib24uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBV
U0UoQ0FSQk9OX1NFQ1VSRV9JTlBVVF9NT0RFKQorCisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIK
K2NvbnN0IHNob3J0IGVuYWJsZVJvbWFuS2V5Ym9hcmRzT25seSA9IC0yMzsKKyNlbmRpZgorCit2
b2lkIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpCit7CisgICAgaWYgKElzU2VjdXJlRXZlbnRJbnB1
dEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEVuYWJsZVNlY3VyZUV2ZW50SW5wdXQo
KTsKKyNpZmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIEtleVNjcmlwdChlbmFibGVSb21hbktl
eWJvYXJkc09ubHkpOworI2Vsc2UKKyAgICAvLyBXZWJLaXQgc3Vic3RpdHV0ZXMgbmlsIGZvciBp
bnB1dCBjb250ZXh0IHdoZW4gaW4gcGFzc3dvcmQgZmllbGQsIHdoaWNoIGNvcnJlc3BvbmRzIHRv
IG51bGwgVFNNRG9jdW1lbnQuIFNvLCB0aGVyZSBpcworICAgIC8vIG5vIG5lZWQgdG8gY2FsbCBU
U01HZXRBY3RpdmVEb2N1bWVudCgpLCB3aGljaCBtYXkgcmV0dXJuIGFuIGluY29ycmVjdCByZXN1
bHQgd2hlbiBzZWxlY3Rpb24gaGFzbid0IGJlZW4geWV0IHVwZGF0ZWQKKyAgICAvLyBhZnRlciBm
b2N1c2luZyBhIG5vZGUuCisgICAgQ0ZBcnJheVJlZiBpbnB1dFNvdXJjZXMgPSBUSVNDcmVhdGVB
U0NJSUNhcGFibGVJbnB1dFNvdXJjZUxpc3QoKTsKKyAgICBUU01TZXREb2N1bWVudFByb3BlcnR5
KDAsIGtUU01Eb2N1bWVudEVuYWJsZWRJbnB1dFNvdXJjZXNQcm9wZXJ0eVRhZywgc2l6ZW9mKENG
QXJyYXlSZWYpLCAmaW5wdXRTb3VyY2VzKTsKKyAgICBDRlJlbGVhc2UoaW5wdXRTb3VyY2VzKTsK
KyNlbmRpZgorfQorCit2b2lkIGRpc2FibGVTZWN1cmVUZXh0SW5wdXQoKQoreworICAgIGlmICgh
SXNTZWN1cmVFdmVudElucHV0RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgRGlzYWJs
ZVNlY3VyZUV2ZW50SW5wdXQoKTsKKyNpZmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIEtleVNj
cmlwdChzbUtleUVuYWJsZUt5YmRzKTsKKyNlbHNlCisgICAgVFNNUmVtb3ZlRG9jdW1lbnRQcm9w
ZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlUYWcpOworI2Vu
ZGlmCit9CisKKyNlbmRpZiAvLyBVU0UoQ0FSQk9OX1NFQ1VSRV9JTlBVVF9NT0RFKQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL3BsYXRmb3Jt
L1NlY3VyZVRleHRJbnB1dC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTZWN1cmVUZXh0SW5wdXRfaAorI2RlZmluZSBTZWN1cmVUZXh0
SW5wdXRfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLy8gT25jZSBlbmFibGVTZWN1cmVUZXh0SW5wdXQgaXMgY2FsbGVkLCBzZWN1cmUgdGV4
dCBpbnB1dCBtb2RlIGlzIHNldCB1bnRpbAorLy8gZGlzYWJsZVNlY3VyZVRleHRJbnB1dCBoYXMg
YmVlbiBjYWxsZWQuCit2b2lkIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpOwordm9pZCBkaXNhYmxl
U2VjdXJlVGV4dElucHV0KCk7CisKKyNpZiAhVVNFKENBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSkK
K2lubGluZSB2b2lkIGVuYWJsZVNlY3VyZVRleHRJbnB1dCgpIHsgfQoraW5saW5lIHZvaWQgZGlz
YWJsZVNlY3VyZVRleHRJbnB1dCgpIHsgfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFNlY3VyZVRleHRJbnB1dF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBX
ZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5oCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKICAgKyBuYXRpdmUKCg==
</data>
<flag name="review"
          id="31679"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50224</attachid>
            <date>2010-03-08 08:19:33 -0800</date>
            <delta_ts>2010-03-08 11:22:51 -0800</delta_ts>
            <desc>v7, respun</desc>
            <filename>31265v7-respin.patch</filename>
            <type>text/plain</type>
            <size>18945</size>
            <attacher name="Stuart Morgan">stuartmorgan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA1NTY2NSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzksMTAgKzU3OSwxNSBAQAog
I2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIgMQogI2VuZGlmIC8qIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKElQSE9ORSkgKi8KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgV1RGX1VT
RV9DQVJCT05fU0VDVVJFX0lOUFVUX01PREUgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoREFSV0lOKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0YgMQogI2RlZmluZSBX
VEZfVVNFX1BUSFJFQURTIDEKICNkZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCisjZGVmaW5l
IFdURl9VU0VfQ0FSQk9OX1NFQ1VSRV9JTlBVVF9NT0RFIDEKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oUVQpICYmIE9TKERBUldJTikKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1NjY1KQorKysg
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDMtMDggIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEg
bmV3IFVTRSBkZWZpbml0aW9uIGZvciBzZWN1cmUgdGV4dCBtb2RlIG9uIHRoZSBNYWMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI2NQorCisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTAtMDMtMDcgIEplZHJ6ZWogTm93YWNraSAgPGpl
ZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4uCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NTY2NSkKKysrIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4MCw3ICs0MzgwLDcgQEAKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICBtX3VzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZl
ID0gdXNlc1NlY3VyZUtleWJvYXJkOwotICAgIG1fZnJhbWUtPnVwZGF0ZVNlY3VyZUtleWJvYXJk
RW50cnlJZkFjdGl2ZSgpOworICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT51cGRhdGVTZWN1cmVL
ZXlib2FyZEVudHJ5SWZBY3RpdmUoKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6dXNlU2VjdXJlS2V5
Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSBjb25zdApJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5oCShyZXZpc2lvbiA1NTY2NSkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsOCBAQAogICAgIC8v
IFBhaW50aW5nLgogICAgIHZvaWQgdXBkYXRlQXBwZWFyYW5jZSgpOwogCisgICAgdm9pZCB1cGRh
dGVTZWN1cmVLZXlib2FyZEVudHJ5SWZBY3RpdmUoKTsKKwogI2lmbmRlZiBOREVCVUcKICAgICB2
b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25z
dDsKICAgICB2b2lkIHNob3dUcmVlRm9yVGhpcygpIGNvbnN0OwpAQCAtMTY3LDYgKzE2OSw4IEBA
CiAKICAgICB2b2lkIGNhcmV0QmxpbmtUaW1lckZpcmVkKFRpbWVyPFNlbGVjdGlvbkNvbnRyb2xs
ZXI+Kik7CiAKKyAgICB2b2lkIHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCk7CisKICAg
ICBGcmFtZSogbV9mcmFtZTsKIAogICAgIGludCBtX3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdh
dGlvbjsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDU1NjY1KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJT
ZWN1cmVUZXh0SW5wdXQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKQEAgLTEzMTEsNyArMTMxMiw3
IEBACiAKICAgICAvLyBTZWN1cmUga2V5Ym9hcmQgZW50cnkgaXMgc2V0IGJ5IHRoZSBhY3RpdmUg
ZnJhbWUuCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPnVzZVNlY3VyZUtleWJvYXJkRW50
cnlXaGVuQWN0aXZlKCkpCi0gICAgICAgIG1fZnJhbWUtPnNldFVzZVNlY3VyZUtleWJvYXJkRW50
cnkoYWN0aXZlQW5kRm9jdXNlZCk7CisgICAgICAgIHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnko
YWN0aXZlQW5kRm9jdXNlZCk7CiB9CiAKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFnZUFj
dGl2YXRpb25DaGFuZ2VkKCkKQEAgLTEzMTksNiArMTMyMCwyMCBAQAogICAgIGZvY3VzZWRPckFj
dGl2ZVN0YXRlQ2hhbmdlZCgpOwogfQogCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnVwZGF0
ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpCit7CisgICAgaWYgKG1fZnJhbWUtPmRvY3Vt
ZW50KCkgJiYgaXNGb2N1c2VkQW5kQWN0aXZlKCkpCisgICAgICAgIHNldFVzZVNlY3VyZUtleWJv
YXJkRW50cnkobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5B
Y3RpdmUoKSk7Cit9CisKK3ZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0VXNlU2VjdXJlS2V5
Ym9hcmRFbnRyeShib29sIGVuYWJsZSkKK3sKKyAgICBpZiAoZW5hYmxlKQorICAgICAgICBlbmFi
bGVTZWN1cmVUZXh0SW5wdXQoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2FibGVTZWN1cmVUZXh0
SW5wdXQoKTsKK30KKwogdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRGb2N1c2VkKGJvb2wg
ZmxhZykKIHsKICAgICBpZiAobV9mb2N1c2VkID09IGZsYWcpCkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNTU2NjUpCisr
KyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEw
LTAzLTA4ICBTdHVhcnQgTW9yZ2FuICA8c3R1YXJ0bW9yZ2FuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBkZXRh
aWxzIG9mIHNlY3VyZSB0ZXh0IG1vZGUgaW50byBXZWJDb3JlL3BsYXRmb3JtLgorICAgICAgICBN
b3ZlIHRoZSBoaWdoZXItbGV2ZWwgbG9naWMgZm9yIHNlY3VyZSB0ZXh0IG1vZGUgZnJvbSBGcmFt
ZQorICAgICAgICB0byBTZWxlY3Rpb25Db250cm9sbGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI2NQorCisgICAgICAgIE5vIG5ldyB0ZXN0
czogbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVzZVNlY3VyZUtl
eWJvYXJkRW50cnlXaGVuQWN0aXZlKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNl
ZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRy
b2xsZXI6OnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KToKKyAg
ICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXREb2N1bWVudCk6CisgICAgICAg
ICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlU2VjdXJlVGV4dElucHV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc2FibGVTZWN1cmVUZXh0SW5wdXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1NlY3VyZVRleHRJbnB1dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZVNlY3Vy
ZVRleHRJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNhYmxlU2VjdXJlVGV4dElucHV0KToK
KwogMjAxMC0wMy0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDU1
NjY1KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTAg
Kzg0LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0o
Q0hST01JVU0pICYmIE9TKERBUldJTikpCi0jaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+Ci0jZW5k
aWYKLQogI2lmIFVTRShKU0MpCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1
ZGUgInJ1bnRpbWVfcm9vdC5oIgpAQCAtMjgxLDggKzI3Nyw3IEBACiAgICAgfQogCiAgICAgbV9k
b2MgPSBuZXdEb2M7Ci0gICAgaWYgKG1fZG9jICYmIHNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRB
Y3RpdmUoKSkKLSAgICAgICAgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShtX2RvYy0+dXNlU2Vj
dXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSk7CisgICAgc2VsZWN0aW9uKCktPnVwZGF0ZVNl
Y3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwogCiAgICAgaWYgKG1fZG9jICYmICFtX2RvYy0+
YXR0YWNoZWQoKSkKICAgICAgICAgbV9kb2MtPmF0dGFjaCgpOwpAQCAtODQyLDQzICs4MzcsNiBA
QAogICAgIHJldHVybiBtX2RvYy0+aW5EZXNpZ25Nb2RlKCk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKLWNvbnN0IHNob3J0IGVu
YWJsZVJvbWFuS2V5Ym9hcmRzT25seSA9IC0yMzsKLSNlbmRpZgotdm9pZCBGcmFtZTo6c2V0VXNl
U2VjdXJlS2V5Ym9hcmRFbnRyeShib29sIGVuYWJsZSkKLXsKLSNpZiBQTEFURk9STShNQUMpIHx8
IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKLSAgICBpZiAoZW5hYmxlID09IElz
U2VjdXJlRXZlbnRJbnB1dEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChlbmFi
bGUpIHsKLSAgICAgICAgRW5hYmxlU2VjdXJlRXZlbnRJbnB1dCgpOwotI2lmZGVmIEJVSUxESU5H
X09OX1RJR0VSCi0gICAgICAgIEtleVNjcmlwdChlbmFibGVSb21hbktleWJvYXJkc09ubHkpOwot
I2Vsc2UKLSAgICAgICAgLy8gV2ViS2l0IHN1YnN0aXR1dGVzIG5pbCBmb3IgaW5wdXQgY29udGV4
dCB3aGVuIGluIHBhc3N3b3JkIGZpZWxkLCB3aGljaCBjb3JyZXNwb25kcyB0byBudWxsIFRTTURv
Y3VtZW50LiBTbywgdGhlcmUgaXMKLSAgICAgICAgLy8gbm8gbmVlZCB0byBjYWxsIFRTTUdldEFj
dGl2ZURvY3VtZW50KCksIHdoaWNoIG1heSByZXR1cm4gYW4gaW5jb3JyZWN0IHJlc3VsdCB3aGVu
IHNlbGVjdGlvbiBoYXNuJ3QgYmVlbiB5ZXQgdXBkYXRlZAotICAgICAgICAvLyBhZnRlciBmb2N1
c2luZyBhIG5vZGUuCi0gICAgICAgIENGQXJyYXlSZWYgaW5wdXRTb3VyY2VzID0gVElTQ3JlYXRl
QVNDSUlDYXBhYmxlSW5wdXRTb3VyY2VMaXN0KCk7Ci0gICAgICAgIFRTTVNldERvY3VtZW50UHJv
cGVydHkoMCwga1RTTURvY3VtZW50RW5hYmxlZElucHV0U291cmNlc1Byb3BlcnR5VGFnLCBzaXpl
b2YoQ0ZBcnJheVJlZiksICZpbnB1dFNvdXJjZXMpOwotICAgICAgICBDRlJlbGVhc2UoaW5wdXRT
b3VyY2VzKTsKLSNlbmRpZgotICAgIH0gZWxzZSB7Ci0gICAgICAgIERpc2FibGVTZWN1cmVFdmVu
dElucHV0KCk7Ci0jaWZkZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICAgICAgS2V5U2NyaXB0KHNt
S2V5RW5hYmxlS3liZHMpOwotI2Vsc2UKLSAgICAgICAgVFNNUmVtb3ZlRG9jdW1lbnRQcm9wZXJ0
eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2VzUHJvcGVydHlUYWcpOwotI2VuZGlm
Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQgRnJhbWU6OnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50
cnlJZkFjdGl2ZSgpCi17Ci0gICAgaWYgKHNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUo
KSkKLSAgICAgICAgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeShtX2RvYy0+dXNlU2VjdXJlS2V5
Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSk7Ci19Ci0KIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
ICpGcmFtZTo6dHlwaW5nU3R5bGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3R5cGluZ1N0eWxl
LmdldCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDU1NjY1KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NCw4ICsyNDQsNiBAQAogCiAgICAgICAgIGJvb2wgaXNDb250
ZW50RWRpdGFibGUoKSBjb25zdDsgLy8gaWYgdHJ1ZSwgZXZlcnl0aGluZyBpbiBmcmFtZSBpcyBl
ZGl0YWJsZQogCi0gICAgICAgIHZvaWQgdXBkYXRlU2VjdXJlS2V5Ym9hcmRFbnRyeUlmQWN0aXZl
KCk7Ci0KICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHR5cGluZ1N0eWxlKCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VHlwaW5nU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qKTsKICAgICAgICAgdm9pZCBjbGVhclR5cGluZ1N0eWxlKCk7CkBAIC0yNTksOCArMjU3
LDYgQEAKICAgICAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50
JiA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgYm9vbCByZXZlYWxFeHRl
bnQgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKIAotICAg
ICAgICB2b2lkIHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCk7Ci0KICAgICAgICAgU2Vs
ZWN0aW9uQ29udHJvbGxlciogZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0OwogCiAgICAgICAg
IFN0cmluZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1M
VGFibGVDZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwp
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNlY3VyZVRleHRJbnB1dF9oCisjZGVmaW5lIFNlY3VyZVRleHRJbnB1dF9o
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBPbmNlIGVuYWJsZVNlY3VyZVRleHRJbnB1dCBpcyBjYWxsZWQsIHNlY3VyZSB0ZXh0IGlucHV0
IG1vZGUgaXMgc2V0IHVudGlsCisvLyBkaXNhYmxlU2VjdXJlVGV4dElucHV0IGhhcyBiZWVuIGNh
bGxlZC4KK3ZvaWQgZW5hYmxlU2VjdXJlVGV4dElucHV0KCk7Cit2b2lkIGRpc2FibGVTZWN1cmVU
ZXh0SW5wdXQoKTsKKworI2lmICFVU0UoQ0FSQk9OX1NFQ1VSRV9JTlBVVF9NT0RFKQoraW5saW5l
IHZvaWQgZW5hYmxlU2VjdXJlVGV4dElucHV0KCkgeyB9CitpbmxpbmUgdm9pZCBkaXNhYmxlU2Vj
dXJlVGV4dElucHV0KCkgeyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gU2VjdXJlVGV4dElucHV0X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUv
cGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyZVRleHRJbnB1dC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTZWN1cmVUZXh0SW5wdXQuaCIKKworI2lmIFVTRShDQVJCT05fU0VDVVJF
X0lOUFVUX01PREUpCisjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENBUkJPTl9TRUNVUkVfSU5QVVRfTU9ERSkKKworI2lm
ZGVmIEJVSUxESU5HX09OX1RJR0VSCitjb25zdCBzaG9ydCBlbmFibGVSb21hbktleWJvYXJkc09u
bHkgPSAtMjM7CisjZW5kaWYKKwordm9pZCBlbmFibGVTZWN1cmVUZXh0SW5wdXQoKQoreworICAg
IGlmIChJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBF
bmFibGVTZWN1cmVFdmVudElucHV0KCk7CisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBL
ZXlTY3JpcHQoZW5hYmxlUm9tYW5LZXlib2FyZHNPbmx5KTsKKyNlbHNlCisgICAgLy8gV2ViS2l0
IHN1YnN0aXR1dGVzIG5pbCBmb3IgaW5wdXQgY29udGV4dCB3aGVuIGluIHBhc3N3b3JkIGZpZWxk
LCB3aGljaCBjb3JyZXNwb25kcyB0byBudWxsIFRTTURvY3VtZW50LiBTbywgdGhlcmUgaXMKKyAg
ICAvLyBubyBuZWVkIHRvIGNhbGwgVFNNR2V0QWN0aXZlRG9jdW1lbnQoKSwgd2hpY2ggbWF5IHJl
dHVybiBhbiBpbmNvcnJlY3QgcmVzdWx0IHdoZW4gc2VsZWN0aW9uIGhhc24ndCBiZWVuIHlldCB1
cGRhdGVkCisgICAgLy8gYWZ0ZXIgZm9jdXNpbmcgYSBub2RlLgorICAgIENGQXJyYXlSZWYgaW5w
dXRTb3VyY2VzID0gVElTQ3JlYXRlQVNDSUlDYXBhYmxlSW5wdXRTb3VyY2VMaXN0KCk7CisgICAg
VFNNU2V0RG9jdW1lbnRQcm9wZXJ0eSgwLCBrVFNNRG9jdW1lbnRFbmFibGVkSW5wdXRTb3VyY2Vz
UHJvcGVydHlUYWcsIHNpemVvZihDRkFycmF5UmVmKSwgJmlucHV0U291cmNlcyk7CisgICAgQ0ZS
ZWxlYXNlKGlucHV0U291cmNlcyk7CisjZW5kaWYKK30KKwordm9pZCBkaXNhYmxlU2VjdXJlVGV4
dElucHV0KCkKK3sKKyAgICBpZiAoIUlzU2VjdXJlRXZlbnRJbnB1dEVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIERpc2FibGVTZWN1cmVFdmVudElucHV0KCk7CisjaWZkZWYgQlVJTERJ
TkdfT05fVElHRVIKKyAgICBLZXlTY3JpcHQoc21LZXlFbmFibGVLeWJkcyk7CisjZWxzZQorICAg
IFRTTVJlbW92ZURvY3VtZW50UHJvcGVydHkoMCwga1RTTURvY3VtZW50RW5hYmxlZElucHV0U291
cmNlc1Byb3BlcnR5VGFnKTsKKyNlbmRpZgorfQorCisjZW5kaWYgLy8gVVNFKENBUkJPTl9TRUNV
UkVfSU5QVVRfTU9ERSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuY3BwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTU2NjUpCisr
KyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjg2MCw2ICsyODYwLDgg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9TZWN1cmVUZXh0SW5wdXQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TZWN1cmVUZXh0
SW5wdXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1NoYXJlZFRpbWVyLmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDU1NjY1KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY4MCw2ICs2ODAsOCBAQAogCQkzMzkw
Q0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBDQTUxMEZGQzE1N0IwMDky
MTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovOyB9OwogCQkzMzkwQ0E1NjBGRkMxNTdC
MDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZp
Y2F0aW9uQ2VudGVyLmggKi87IH07CiAJCTMzOTBDQTU4MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3Rp
ZmljYXRpb25Db250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRz
LmggKi87IH07CisJCTMzQzBDQ0Q0MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNDMEND
RDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi87IH07CisJCTMzQzBD
Q0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAv
KiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsKIAkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8q
IEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFGNEY0MTBEMjVCOUFGMDBFQ0Uw
RDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLzsgfTsK
IAkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0Yz
MDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLzsgfTsKQEAgLTYwNTEsNiArNjA1Myw4
IEBACiAJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVyLmg7IHBh
dGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2Vu
dGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuaWRsOyBw
YXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9u
Q29udGVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9u
Q29udGVudHMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8q
IFNlY3VyZVRleHRJbnB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTZWN1cmVUZXh0SW5wdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzM0Mw
Q0NEMzExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyZVRleHRJbnB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRl
ZEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlZ21lbnRlZEZv
bnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTMxOSw2ICsxNTMyMyw4
IEBACiAJCQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwICovLAog
CQkJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggKi8sCiAJCQkJQUI3
MTcwODgwQjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBvcHVwTWVudS5oICovLAorCQkJCTMzQzBD
Q0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICovLAorCQkJCTMzQzBD
Q0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLywKIAkJCQkxQTRBOTU0
QjBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKIAkJCQkxQTRBOTU0QzBC
NEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi8sCiAJCQkJOTMzMDlFQTAwOTlFQjc4
QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8sCkBAIC0xODY0NSw2ICsxODY1MSw3IEBACiAJ
CQkJOTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOUYyQTMyMkMxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQ
cm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjJBMzIyRTExMjVBMEEyMDAzQzMwNTYgLyog
SmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0MwQ0NENTExMkM1
RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUZE
NEE4QjExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxNjk4MDNEMTEzMzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMDg0Niw2ICsyMDg1Myw3IEBACiAJCQkJNzZGRjE3
RTMxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdOb25lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTlGMkEzMjJCMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5RjJBMzIyRDExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFBy
b2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMzQzBDQ0Q0MTEyQzVFNjIwMENFMDU3
RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkUyMUM2QzAxMTI2
MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTZFMjFDNkMyMTEyNjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRENHLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxNjk4MDQ5MTEzMzY0NDcwMDg5NDExNSAvKiBDUnVudGltZU9iamVj
dC5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>