<?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>59834</bug_id>
          
          <creation_ts>2011-04-29 14:50:17 -0700</creation_ts>
          <short_desc>WebCore should have QuotedPrintable encoding capabilities</short_desc>
          <delta_ts>2011-05-05 20:38:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>7168</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jay Civelli">jcivelli</reporter>
          <assigned_to name="Jay Civelli">jcivelli</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>395535</commentid>
    <comment_count>0</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-04-29 14:50:17 -0700</bug_when>
    <thetext>WebCore should have QuotedPrintable encoding capabilities, that is required for MHTML support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396413</commentid>
    <comment_count>1</comment_count>
      <attachid>91930</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-02 09:39:11 -0700</bug_when>
    <thetext>Created attachment 91930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396417</commentid>
    <comment_count>2</comment_count>
      <attachid>91931</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-02 09:48:02 -0700</bug_when>
    <thetext>Created attachment 91931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396475</commentid>
    <comment_count>3</comment_count>
      <attachid>91931</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-02 10:59:07 -0700</bug_when>
    <thetext>Comment on attachment 91931
Patch

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

As Adam mentioned in bug 7168, this should be discussed on webkit-dev first. It is not obvious to me if there is any value in supporting MHTML now.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:34
&gt; +#include &lt;wtf/text/CString.h&gt;

CString isn&apos;t used in this file, as far as I can see.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:39
&gt; +static const int maxCharPerLine = 76;

Plz don&apos;t abbr.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:45
&gt; +static int hexDigitValue(char c)

Why not use the existing toASCIIHexValue()? I see that you want a check instead of assertion, but it&apos;s still not good to add copy/pasted code, and returning a failure in a magic value is not right.

Also, this should be marked inline.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:55
&gt; +// Returns the length in characters of the EOL found at index, 0 if there isn&apos;t one.
&gt; +static int isEOL(const char* input, unsigned index, unsigned length)

This function name is obviously wrong, it doesn&apos;t even return a boolean like an &quot;is&quot; function should.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:79
&gt; +String quotedPrintableEncode(const char* input, unsigned length)

I can see how it is necessary to decode this atrocity to support reading MHTML files created by other browsers, but can we avoid encoding like that? Are any other encoding forms supported in MHTML?

There are many lengths in this function, so I think that the argument needs a better name.

The types seem wrong. Ultimately, the source in Unicode, and encoding output is ASCII, but types are exact opposite of that (see the question about decoding routine though).

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:82
&gt; +    // The number of characters in the current line.Ve

Garbage at the end.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:83
&gt; +    int charCount = 0;

As a count, this should be unsigned.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:88
&gt; +        // Whether this character can be inserted without encoding.
&gt; +        bool asIs = false;

You could say the same in the variable name.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:96
&gt; +        if (!asIs &amp;&amp; (c == &apos;\t&apos; || c == &apos; &apos;) &amp;&amp; !lastChar &amp;&amp; !isEOL(input, i + 1, length))
&gt; +            asIs = true;

Is it really that only ASCII characters are encoded as is? It seems like a practical problem that non-ASCII text would be exploded in size.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:102
&gt; +            if (eolLen &gt; 0) {
&gt; +            result.append(eol);

Bad indentation.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:114
&gt; +            result.append(&apos;=&apos;);
&gt; +        result.append(eol);
&gt; +            charCount = 0;

Bad indentation.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:141
&gt; +bool quotedPrintableDecode(const char* data, unsigned len, Vector&lt;char&gt;&amp; out)

Please don&apos;t abbreviate; again, there are many different lengths here, and a better name is needed for the argument.

How does MHTML encode non-ASCII characters - is it actually a post-processing step after creating a byte stream?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:148
&gt; +    for (unsigned i = 0; i &lt; len; i++) {

Style nit: we prefer prefix increment and decrement when it doesn&apos;t matter.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:158
&gt; +            // Unfinished = sequence, append as is.
&gt; +            success = false;

Are we really interested in a failure like this? Is there anything the caller can reasonably do, other than ignore the returned boolean value?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:173
&gt; +            success = false;

Ditto.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:181
&gt; +        char r = static_cast&lt;char&gt;(((i1 &lt;&lt; 4) &amp; 0xF0) | (i2 &amp; 0x0F));

Please don&apos;t abbreviate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396825</commentid>
    <comment_count>4</comment_count>
      <attachid>91931</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-02 17:33:34 -0700</bug_when>
    <thetext>Comment on attachment 91931
Patch

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

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:34
&gt;&gt; +#include &lt;wtf/text/CString.h&gt;
&gt; 
&gt; CString isn&apos;t used in this file, as far as I can see.

It&apos;s needed ny line 71 (String.ascii() returns a CString).

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:39
&gt;&gt; +static const int maxCharPerLine = 76;
&gt; 
&gt; Plz don&apos;t abbr.

K

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:45
&gt;&gt; +static int hexDigitValue(char c)
&gt; 
&gt; Why not use the existing toASCIIHexValue()? I see that you want a check instead of assertion, but it&apos;s still not good to add copy/pasted code, and returning a failure in a magic value is not right.
&gt; 
&gt; Also, this should be marked inline.

Removed that function in favor of toASCIIHexValue().

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:55
&gt;&gt; +static int isEOL(const char* input, unsigned index, unsigned length)
&gt; 
&gt; This function name is obviously wrong, it doesn&apos;t even return a boolean like an &quot;is&quot; function should.

Renamed eolLengthAtIndex.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:79
&gt;&gt; +String quotedPrintableEncode(const char* input, unsigned length)
&gt; 
&gt; I can see how it is necessary to decode this atrocity to support reading MHTML files created by other browsers, but can we avoid encoding like that? Are any other encoding forms supported in MHTML?
&gt; 
&gt; There are many lengths in this function, so I think that the argument needs a better name.
&gt; 
&gt; The types seem wrong. Ultimately, the source in Unicode, and encoding output is ASCII, but types are exact opposite of that (see the question about decoding routine though).

There are fortunately more encoding available in the MHTML specs, including a binary type that let&apos;s you include a resource as is. Some initial experimentations seemed to indicate that IE does not like it though. We&apos;ll have to worry about it when I get to the CL where I build the actual MHTML file. At which point I may end up removing the encoding part in this file.
Changed the length arg name.
I took inspiration from Base64.h for the APIs and different types.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:82
&gt;&gt; +    // The number of characters in the current line.Ve
&gt; 
&gt; Garbage at the end.

Garbage removed.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:83
&gt;&gt; +    int charCount = 0;
&gt; 
&gt; As a count, this should be unsigned.

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:88
&gt;&gt; +        bool asIs = false;
&gt; 
&gt; You could say the same in the variable name.

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:96
&gt;&gt; +            asIs = true;
&gt; 
&gt; Is it really that only ASCII characters are encoded as is? It seems like a practical problem that non-ASCII text would be exploded in size.

Yes, that&apos;s per the specs http://tools.ietf.org/html/rfc2045#section-6.7
We might be able to use a different encoding mechanism for MHTML generation (see comment above).

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:102
&gt;&gt; +            result.append(eol);
&gt; 
&gt; Bad indentation.

Fixed.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:114
&gt;&gt; +            charCount = 0;
&gt; 
&gt; Bad indentation.

Fixed.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:141
&gt;&gt; +bool quotedPrintableDecode(const char* data, unsigned len, Vector&lt;char&gt;&amp; out)
&gt; 
&gt; Please don&apos;t abbreviate; again, there are many different lengths here, and a better name is needed for the argument.
&gt; 
&gt; How does MHTML encode non-ASCII characters - is it actually a post-processing step after creating a byte stream?

Changed parameter name.
The MIME type header contains the charset that should be used for the decoded bytes.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:148
&gt;&gt; +    for (unsigned i = 0; i &lt; len; i++) {
&gt; 
&gt; Style nit: we prefer prefix increment and decrement when it doesn&apos;t matter.

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:158
&gt;&gt; +            success = false;
&gt; 
&gt; Are we really interested in a failure like this? Is there anything the caller can reasonably do, other than ignore the returned boolean value?

Yeah, I was trying to get inspiration from the Base64 code, but since I do not have a policy parameter for failure the returned value is not that helpful.
Removed.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:181
&gt;&gt; +        char r = static_cast&lt;char&gt;(((i1 &lt;&lt; 4) &amp; 0xF0) | (i2 &amp; 0x0F));
&gt; 
&gt; Please don&apos;t abbreviate.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396826</commentid>
    <comment_count>5</comment_count>
      <attachid>92016</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-02 17:33:52 -0700</bug_when>
    <thetext>Created attachment 92016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396939</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-02 21:12:51 -0700</bug_when>
    <thetext>&gt; It&apos;s needed ny line 71 (String.ascii() returns a CString).

I see, missed that one (I didn&apos;t closely review encoding functions in general). Ugh, so this function loses information without saying a word :-(

&gt; I took inspiration from Base64.h for the APIs and different types.

I don&apos;t immediately have a suggestion, but using String for 8-bit data streams seems unfortunate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396945</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-02 21:31:35 -0700</bug_when>
    <thetext>&gt; Ugh, so this function loses information without saying a word :-(

In particular, it replaces line feeds and tabs with question marks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397411</commentid>
    <comment_count>8</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-03 14:53:29 -0700</bug_when>
    <thetext>You are right, it&apos;s a pretty bad API. I removed the String methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397413</commentid>
    <comment_count>9</comment_count>
      <attachid>92138</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-03 14:54:24 -0700</bug_when>
    <thetext>Created attachment 92138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398422</commentid>
    <comment_count>10</comment_count>
      <attachid>92138</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-04 17:10:04 -0700</bug_when>
    <thetext>Comment on attachment 92138
Patch

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

This looks good.  I just have an epic number of naming nits.  For some reason WebKit is supper excited about name variables and functions with names that explain their meaning.  The general thought process is that names are more valuable than comments.  If you find yourself writing a comment to explain what a variable or function means, then you should try deleting that comment and changing the name to contain the information you should have put in the comment.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:39
&gt; +static const int lineMaximumSize = 76;

lineMaximumSize =&gt; maximumLineLength

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:43
&gt; +static const char eol[] = &quot;\r\n&quot;;

crlfLineEnding ?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:46
&gt; +// Returns the length in characters of the EOL found at index, 0 if there isn&apos;t one.
&gt; +static int eolLengthAtIndex(const char* input, unsigned index, unsigned length)

I&apos;d remove the comment and change the name to something that explains what the function does:

lengthOfLineEndingAtIndex

Also, unsigned should probably be size_t, right?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:47
&gt; +{

Can you add an assert that index &lt; length ?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:65
&gt; +String quotedPrintableEncode(const char* input, unsigned length)

unsigned =&gt; size_t (that&apos;s what in.size() returns, right?)

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:69
&gt; +    // The number of characters in the current line.
&gt; +    unsigned charCount = 0;

I&apos;d remove the comment and rename charCount -&gt; currentLineLength

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:71
&gt; +        bool lastChar = (i == length - 1);

lastChar =&gt; isLastCharacter.  (lastChar would be the last character itself)

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:84
&gt; +            int eolLen = eolLengthAtIndex(input, i, length);

eolLen  =&gt; lengthOfLineEnding

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:94
&gt; +        unsigned minCharsNeeded = requiresEncoding ? lineMaximumSize - 4 : lineMaximumSize - 2;

It would be helpful to name these constants.  Also minCharsNeeded should be renamed to something that doesn&apos;t use abbreviations.  I&apos;m not really sure what it does, so it&apos;s hard for me to recommend a name.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:105
&gt; +            result.append(hexTable[static_cast&lt;int&gt;((c &gt;&gt; 4) &amp; 0xF)]);
&gt; +            result.append(hexTable[static_cast&lt;int&gt;(c &amp; 0x0F)]);

I think we already have code that does this bit munging.  Maybe toASCIIHexValue in ASCIIType.h?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:120
&gt; +void quotedPrintableDecode(const char* data, unsigned dataLength, Vector&lt;char&gt;&amp; out)

Shouldn&apos;t this take a string as input?  It seems odd that it&apos;s not the opposite of encode.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:126
&gt; +    for (unsigned i = 0; i &lt; dataLength; ++i) {

unsigned =&gt; size_t

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:127
&gt; +        char character1 = data[i];

character1 =&gt; currentCharacter

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:129
&gt; +            // Regular character, append as is.

No need for this comment.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:140
&gt; +        char character2 = data[++i];
&gt; +        char character3 = data[++i];

character2 =&gt; upperCharacter
character3 =&gt; lowerCharacter

Those are sort of lame name suggestions, but something with words is better than using numerals.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:142
&gt; +            // Soft line break, ignored.

I&apos;d remove this comment as well.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:156
&gt; +        char decodedCharacter = static_cast&lt;char&gt;(((i1 &lt;&lt; 4) &amp; 0xF0) | (i2 &amp; 0x0F));

We must have code that does this assembly already, in which case you can call it without creating these local variables with tricky names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398785</commentid>
    <comment_count>11</comment_count>
      <attachid>92138</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-05 09:47:04 -0700</bug_when>
    <thetext>Comment on attachment 92138
Patch

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

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:39
&gt;&gt; +static const int lineMaximumSize = 76;
&gt; 
&gt; lineMaximumSize =&gt; maximumLineLength

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:43
&gt;&gt; +static const char eol[] = &quot;\r\n&quot;;
&gt; 
&gt; crlfLineEnding ?

OK.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:46
&gt;&gt; +static int eolLengthAtIndex(const char* input, unsigned index, unsigned length)
&gt; 
&gt; I&apos;d remove the comment and change the name to something that explains what the function does:
&gt; 
&gt; lengthOfLineEndingAtIndex
&gt; 
&gt; Also, unsigned should probably be size_t, right?

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:47
&gt;&gt; +{
&gt; 
&gt; Can you add an assert that index &lt; length ?

OK.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:65
&gt;&gt; +String quotedPrintableEncode(const char* input, unsigned length)
&gt; 
&gt; unsigned =&gt; size_t (that&apos;s what in.size() returns, right?)

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:69
&gt;&gt; +    unsigned charCount = 0;
&gt; 
&gt; I&apos;d remove the comment and rename charCount -&gt; currentLineLength

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:71
&gt;&gt; +        bool lastChar = (i == length - 1);
&gt; 
&gt; lastChar =&gt; isLastCharacter.  (lastChar would be the last character itself)

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:84
&gt;&gt; +            int eolLen = eolLengthAtIndex(input, i, length);
&gt; 
&gt; eolLen  =&gt; lengthOfLineEnding

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:94
&gt;&gt; +        unsigned minCharsNeeded = requiresEncoding ? lineMaximumSize - 4 : lineMaximumSize - 2;
&gt; 
&gt; It would be helpful to name these constants.  Also minCharsNeeded should be renamed to something that doesn&apos;t use abbreviations.  I&apos;m not really sure what it does, so it&apos;s hard for me to recommend a name.

Named constants and fixed local var name.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:105
&gt;&gt; +            result.append(hexTable[static_cast&lt;int&gt;(c &amp; 0x0F)]);
&gt; 
&gt; I think we already have code that does this bit munging.  Maybe toASCIIHexValue in ASCIIType.h?

I believe i&apos;d still have to do the bit work with ASCIIHexValue and then still use my hexTable. Surprisingly I could not find any method in that file or any other file that does that.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:120
&gt;&gt; +void quotedPrintableDecode(const char* data, unsigned dataLength, Vector&lt;char&gt;&amp; out)
&gt; 
&gt; Shouldn&apos;t this take a string as input?  It seems odd that it&apos;s not the opposite of encode.

I used to have one such API in my previous patch (I took inspiration from the Base64 API), but as Aleksey pointed out, it needs to call String::ascii() on it. At which point any non ASCII character is silently transformed to a &apos;?&apos;
So it felt like a bad API. If you feel the symmetry is important between the encode/decode, I could resurrect the method that takes a String and make the decode return false if not all characters are ASCII?

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:126
&gt;&gt; +    for (unsigned i = 0; i &lt; dataLength; ++i) {
&gt; 
&gt; unsigned =&gt; size_t

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:127
&gt;&gt; +        char character1 = data[i];
&gt; 
&gt; character1 =&gt; currentCharacter

OK.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:129
&gt;&gt; +            // Regular character, append as is.
&gt; 
&gt; No need for this comment.

Removed.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:140
&gt;&gt; +        char character3 = data[++i];
&gt; 
&gt; character2 =&gt; upperCharacter
&gt; character3 =&gt; lowerCharacter
&gt; 
&gt; Those are sort of lame name suggestions, but something with words is better than using numerals.

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:142
&gt;&gt; +            // Soft line break, ignored.
&gt; 
&gt; I&apos;d remove this comment as well.

Removed.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:156
&gt;&gt; +        char decodedCharacter = static_cast&lt;char&gt;(((i1 &lt;&lt; 4) &amp; 0xF0) | (i2 &amp; 0x0F));
&gt; 
&gt; We must have code that does this assembly already, in which case you can call it without creating these local variables with tricky names.

Grepped the code, no luck.
Improved names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398791</commentid>
    <comment_count>12</comment_count>
      <attachid>92429</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-05 09:52:33 -0700</bug_when>
    <thetext>Created attachment 92429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398797</commentid>
    <comment_count>13</comment_count>
      <attachid>92429</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-05 10:15:31 -0700</bug_when>
    <thetext>Comment on attachment 92429
Patch

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

Looks good to me. Adam, would you like to take another look?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:47
&gt; +static size_t lengthOfLineEndingAtIndex(const char* input, size_t length, size_t index)

Maybe length -&gt; lineLength?

Functions like this always make me wonder what should happen with malformed line endings (LFCR? CRLFCR?). Not sure if it&apos;s something to be worried about at this stage though.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:55
&gt; +            return 1; // Single CR (Commodore and Old Macs).

I don&apos;t think that mentioning Commodore will be of any help to anyone reading this code. Also, &quot;Classic Mac OS&quot; is a more common term than &quot;Old&quot;.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:62
&gt; +String quotedPrintableEncode(const Vector&lt;char&gt;&amp; in)

I&apos;m still not sure of types here. The result is a 7-bit data buffer, do we really need a String?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:86
&gt; +            if (lengthOfLineEnding &gt; 0) {

No need to compare to zero, just &quot;if (lengthOfLineEnding)&quot; would be it per WebKit coding style.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:106
&gt; +            result.append(hexTable[static_cast&lt;int&gt;((currentCharacter &gt;&gt; 4) &amp; 0xF)]);
&gt; +            result.append(hexTable[static_cast&lt;int&gt;(currentCharacter &amp; 0xF)]);

Why &quot;int&quot;? This is an index into a table.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:142
&gt; +        if (upperCharacter == &apos;\r&apos; &amp;&amp; lowerCharacter == &apos;\n&apos;)
&gt; +            continue;

What does IE do with malformed sources (e.g. a single CR as soft line ending)?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:154
&gt; +        char decodedCharacter = static_cast&lt;char&gt;(((upperValue &lt;&lt; 4) &amp; 0xF0) | (lowerValue &amp; 0x0F));

I&apos;m not sure if this masking is helpful. toASCIIHexValue returns a sane value already (although its implementation and return type look strange to me).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398814</commentid>
    <comment_count>14</comment_count>
      <attachid>92429</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-05 10:33:18 -0700</bug_when>
    <thetext>Comment on attachment 92429
Patch

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

This patch is in good shape.  Please address Alexey&apos;s comments and consider moving the hex bit mashing into WTF before landing.  I&apos;m happy to take a look at an updated patch, but you can also use your judgement if you feel like you&apos;ve addressed all the comments from this iteration.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:96
&gt; +        if (!isLastCharacter &amp;&amp; currentLineLength &gt; maximumLineLengthToFitCharacter) {

The !isLastCharacter branch confuses me slightly here.  Does that mean we can exceed the maximumLineLength on the last character of the buffer?  For example, what if we currently have 76 characters in the line and we have an last character that requires encoding.  That would seem to push us up to 79 characters.  Maybe that&apos;s ok because we&apos;re aiming for &lt; 80 ?

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:105
&gt; +            result.append(hexTable[static_cast&lt;int&gt;((currentCharacter &gt;&gt; 4) &amp; 0xF)]);

If these functions don&apos;t exist in ASCIIType.h, maybe it would make senes to add them there?  They seem more general purpose than this file.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:154
&gt;&gt; +        int upperValue = toASCIIHexValue(upperCharacter);
&gt;&gt; +        int lowerValue = toASCIIHexValue(lowerCharacter);
&gt;&gt; +        char decodedCharacter = static_cast&lt;char&gt;(((upperValue &lt;&lt; 4) &amp; 0xF0) | (lowerValue &amp; 0x0F));
&gt; 
&gt; I&apos;m not sure if this masking is helpful. toASCIIHexValue returns a sane value already (although its implementation and return type look strange to me).

Same with this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398821</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-05 10:40:25 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; toASCIIHexValue returns a sane value already (although its implementation and return type look strange to me)

It’s implementation may look a bit strange because of how it uses &quot;&amp; 0xF&quot; to handle both lowercase and uppercase hex without adding a branch. There may be a more elegant way to do it.

What return type would you prefer to int? Maybe signed or unsigned char? Maybe something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398836</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-05 10:59:16 -0700</bug_when>
    <thetext>&gt; It’s implementation may look a bit strange because of how it uses &quot;&amp; 0xF&quot; to handle both lowercase and uppercase hex without adding a branch. There may be a more elegant way to do it.

I think that it&apos;s fine as is. The feeling came from spending too much effort figuring out whether precedence was right, so a few more parentheses would have made it easier to me.

&gt; What return type would you prefer to int? Maybe signed or unsigned char? Maybe something else?

Perhaps uint8_t? Character types seem wrong because it&apos;s not a character that is returned, and unsigned int would be frightening to convert to signed int where needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399126</commentid>
    <comment_count>17</comment_count>
      <attachid>92429</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-05 15:56:46 -0700</bug_when>
    <thetext>Comment on attachment 92429
Patch

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

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:47
&gt;&gt; +static size_t lengthOfLineEndingAtIndex(const char* input, size_t length, size_t index)
&gt; 
&gt; Maybe length -&gt; lineLength?
&gt; 
&gt; Functions like this always make me wonder what should happen with malformed line endings (LFCR? CRLFCR?). Not sure if it&apos;s something to be worried about at this stage though.

It&apos;s actually the input length, renamed.
I am not too worried with malformed line endings, worst case scenario they would create more empty lines in the encoded result.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:55
&gt;&gt; +            return 1; // Single CR (Commodore and Old Macs).
&gt; 
&gt; I don&apos;t think that mentioning Commodore will be of any help to anyone reading this code. Also, &quot;Classic Mac OS&quot; is a more common term than &quot;Old&quot;.

I thought mentioning Commodore in my code would make it look totally more old-school :-)
I removed the Commodore and renamed to &quot;Classic Mac OS&quot;.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:62
&gt;&gt; +String quotedPrintableEncode(const Vector&lt;char&gt;&amp; in)
&gt; 
&gt; I&apos;m still not sure of types here. The result is a 7-bit data buffer, do we really need a String?

I was initially trying to match the Base64 API, buts it is not a good API, so I should probably not.
I changed the API to take a Vector&lt;char&gt;&amp; out instead.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:86
&gt;&gt; +            if (lengthOfLineEnding &gt; 0) {
&gt; 
&gt; No need to compare to zero, just &quot;if (lengthOfLineEnding)&quot; would be it per WebKit coding style.

Done.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:96
&gt;&gt; +        if (!isLastCharacter &amp;&amp; currentLineLength &gt; maximumLineLengthToFitCharacter) {
&gt; 
&gt; The !isLastCharacter branch confuses me slightly here.  Does that mean we can exceed the maximumLineLength on the last character of the buffer?  For example, what if we currently have 76 characters in the line and we have an last character that requires encoding.  That would seem to push us up to 79 characters.  Maybe that&apos;s ok because we&apos;re aiming for &lt; 80 ?

Ah! Good catch. I fixed the code (and added a test case to my unit-tests, I&apos;ll land that in a different CL).

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:105
&gt;&gt; +            result.append(hexTable[static_cast&lt;int&gt;((currentCharacter &gt;&gt; 4) &amp; 0xF)]);
&gt; 
&gt; If these functions don&apos;t exist in ASCIIType.h, maybe it would make senes to add them there?  They seem more general purpose than this file.

OK, I moved this method to ASCIICType.h.

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:106
&gt;&gt; +            result.append(hexTable[static_cast&lt;int&gt;(currentCharacter &amp; 0xF)]);
&gt; 
&gt; Why &quot;int&quot;? This is an index into a table.

Method has been moved to ASCIICType.h

&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:142
&gt;&gt; +            continue;
&gt; 
&gt; What does IE do with malformed sources (e.g. a single CR as soft line ending)?

Unfortunately, my IE does not want to load MHTML files anymore for some reason  so I cannot test :-(

&gt;&gt;&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:154
&gt;&gt;&gt; +        char decodedCharacter = static_cast&lt;char&gt;(((upperValue &lt;&lt; 4) &amp; 0xF0) | (lowerValue &amp; 0x0F));
&gt;&gt; 
&gt;&gt; I&apos;m not sure if this masking is helpful. toASCIIHexValue returns a sane value already (although its implementation and return type look strange to me).
&gt; 
&gt; Same with this function.

Moved the method to ASCIICType,h, removed the superfluous masking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399127</commentid>
    <comment_count>18</comment_count>
      <attachid>92486</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-05 15:57:25 -0700</bug_when>
    <thetext>Created attachment 92486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399130</commentid>
    <comment_count>19</comment_count>
      <attachid>92488</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-05 16:00:26 -0700</bug_when>
    <thetext>Created attachment 92488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399149</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-05 16:18:25 -0700</bug_when>
    <thetext>&gt; Unfortunately, my IE does not want to load MHTML files anymore for some reason  so I cannot test :-(

Ugh. I hope they didn&apos;t disable it permanently?

We&apos;ll need a lot of testing for upcoming patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399157</commentid>
    <comment_count>21</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-05 16:24:20 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; Unfortunately, my IE does not want to load MHTML files anymore for some reason  so I cannot test :-(
&gt; 
&gt; Ugh. I hope they didn&apos;t disable it permanently?
&gt; 
&gt; We&apos;ll need a lot of testing for upcoming patches.

It is still enabled (the option to generate the MHTML is there), but somehow my IE here at work, chokes when loading the MHTML it itself generated. It used to work in the exact same IE, I might have screwed up my IE somehow (not clear how). I&apos;ll try on my home PC tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399164</commentid>
    <comment_count>22</comment_count>
      <attachid>92493</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-05 16:34:07 -0700</bug_when>
    <thetext>Created attachment 92493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399166</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-05 16:36:36 -0700</bug_when>
    <thetext>Attachment 92493 did not pass style-queue:

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

Source/JavaScriptCore/wtf/ASCIICType.h:149:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/wtf/ASCIICType.h:157:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/wtf/ASCIICType.h:158:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399198</commentid>
    <comment_count>24</comment_count>
      <attachid>92493</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-05 17:02:47 -0700</bug_when>
    <thetext>Comment on attachment 92493
Patch

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

Lets rock and roll.

&gt; Source/WebCore/platform/text/QuotedPrintable.cpp:97
&gt; +        if (currentLineLength + lengthOfEncodedCharacter &gt; maximumLineLength) {

Note: No integer overflow problem here because these values are all bounded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399274</commentid>
    <comment_count>25</comment_count>
      <attachid>92493</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-05 18:38:12 -0700</bug_when>
    <thetext>Comment on attachment 92493
Patch

Clearing flags on attachment: 92493

Committed r85909: &lt;http://trac.webkit.org/changeset/85909&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399275</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-05 18:38:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399310</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-05 20:38:02 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 92493:

java/lc3/JavaObject/JavaObjectToByte-006.html bug 60333 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91930</attachid>
            <date>2011-05-02 09:39:11 -0700</date>
            <delta_ts>2011-05-02 09:47:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59834-20110502093910.patch</filename>
            <type>text/plain</type>
            <size>18322</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzNTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggN2U0YmY5
NDI4YzAxYWY2ZDRlNDlkZGYxYmU5MTI4ZjFmMTZiYTE3MS4uZWE2MTFiMmNhZDliZDQwNDJkMzRl
NDE0NWI0NjBiNTc0M2FjMzA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjcsOSArMTE2
NywxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5j
cHAKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcAorICAgIHBsYXRmb3JtL3RleHQv
SHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcAogICAgIHBs
YXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0h5
cGhlbmF0aW9uLmNwcAorICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAg
IHBsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9T
ZWdtZW50ZWRTdHJpbmcuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNWQ4OTgyY2I0YzYxYzJkNWQ1ZDYwNzljZjM0ZmU0OGI0YWI0NTg1Ni4uOWZkOTFiMmU2
NWRlM2Y0Y2EzMDdiMmJhYzQ3Y2EyN2NlNDczNjk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDExLTA1LTAyICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcXVv
dGVkLXByaW50YWJsZSBlbmNvZGluZy9kZWNvZGluZyBjYXBhYmlsaXRpZXMuCisgICAgICAgIFRo
aXMgaXMgbmVlZGVkIGZvciBNSFRNTCBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MzQKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmg6IEFkZGVkLgorCiAyMDExLTA0
LTI5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0
XSBVbnJldmlld2VkIGJ1aWxkZml4IGFmdGVyIHI4NTM0My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IGZkNGU3YjQ3MDRjNjVhYzliMTU2YjkxNDE4Y2M2MjBiYjQ4YTYxYTAuLmEx
MWU0ZWNmNGNiZmNjZTVmY2I1N2I5Nzc0YzdhZTJlYzdmNjIzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMjYyNiw2ICsyNjI2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJlck5vbmUuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BhcnNlclV0aWxpdGllcy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5nLmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvUmVndWxhckV4cHJlc3Npb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9TZWdtZW50ZWRTdHJpbmcuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMGM1MGFmOWI1MmY2
NDlmMTAyZWM2YTVjNWIyYTM1MzQ5ZGI4NWY1Li44ZjdhZmFhNzA2YTY1ZWEyYzQ3NTJlYzFmMGRk
ZDAzZjc2MDZlNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00ODkyLDYgKzQ4OTIsOCBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVySUNVLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vdGV4dC9QYXJzZXJVdGlsaXRpZXMuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9R
dW90ZWRQcmludGFibGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJF
eHByZXNzaW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJp
bmcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCAzZDhmYjM2ZTVmNWNjMTVmNDg2ZjExYTc2NzJlODM2ZjVjZTFhZTk1Li5hMGRl
MjQ5YmJkYWJkY2VkOTE3NTliZWE2MTc1NGZmODIxMGFkZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
OTQ2LDYgKzk0Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvQmlkaUNvbnRl
eHQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCisgICAgcGxhdGZvcm0vdGV4dC9RdW90
ZWRQcmludGFibGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXAogICAgIHBs
YXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5LmNwcCBcCkBAIC0yMDMyLDYgKzIwMzMsNyBAQCBIRUFERVJTICs9IFwK
ICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250
ZXh0LmggXAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uaCBcCisgICAgcGxhdGZvcm0v
dGV4dC9RdW90ZWRQcmludGFibGUuaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNR
dC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmggXAogICAgIHBsYXRm
b3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhZjUzYTUzOTYzMjhlMzQ1NjgzOTA2NDkwNzUzNGMy
ZGM0MjBhNDc0Li4wMDZhNGI0ZmJhOWE0MmU3MWZkZDljNjQyZWU4Yjc3MjViMGQ2M2Q3IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzA0NjQs
NiArMzA0NjQsMTQgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFBsYXRm
b3JtU3RyaW5nLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50YWJsZS5jcHAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxG
aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50YWJsZS5oIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxS
ZWd1bGFyRXhwcmVzc2lvbi5jcHAiCiAJCQkJCT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMDg3NGVkNzRkZjRhYjY1MWRlMmU3
Mzc0MTQ1NTU0Njg5MjA1YTFhLi5jOWUxMTE1NDc3ZDc0MDNiZDk4ZmEzNzUzYmQyOTliMjU0YTM4
OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC03ODUsNiArNzg1LDggQEAKIAkJMzcxRjUxQTIwRDI2MkZBMDAwRUNFMEQ1IC8q
IENTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3MUY1MUEwMEQyNjJGQTAwMEVDRTBENSAvKiBDU1NTZWdtZW50ZWRG
b250RmFjZS5jcHAgKi87IH07CiAJCTM3MUY1M0U5MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmlj
b2RlUmFuZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzcxRjUzRTcwRDI3MDRGOTAwRUNFMEQ1IC8qIENTU1VuaWNvZGVSYW5nZVZhbHVlLmgg
Ki87IH07CiAJCTM3MUY1M0VBMEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFG
NTNFODBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwICovOyB9Owor
CQkzNzIwMUY0MjEzNkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MjAxRjQwMTM2RjExODEw
MENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuY3BwICovOyB9OworCQkzNzIwMUY0MzEzNkYxMTgx
MDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzIwMUY0MTEzNkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJp
bnRhYmxlLmggKi87IH07CiAJCTM3MjAyMTk5MTA2MjEzQzYwMEYyNUM0QiAvKiBGb250U21vb3Ro
aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzcyMDIxOTgxMDYyMTNDNjAwRjI1QzRCIC8qIEZvbnRTbW9vdGhpbmdNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcyQzAwQzQxMjk2MTFG
MTAwNUM5NTc1IC8qIFRleHRCb3VuZGFyaWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MkMwMEMzMTI5NjExRjEwMDVDOTU3NSAvKiBUZXh0Qm91
bmRhcmllcy5jcHAgKi87IH07CiAJCTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcy
QzAwRDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTcyMTUsNiArNzIxNyw4IEBACiAJCTM3
MUY1MUEwMEQyNjJGQTAwMEVDRTBENSAvKiBDU1NTZWdtZW50ZWRGb250RmFjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NTZWdtZW50ZWRGb250RmFjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY1M0U3MEQyNzA0RjkwMEVDRTBENSAv
KiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzFGNTNFODBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzIwMUY0MDEzNkYxMTgxMDBDQkVFOUMg
LyogUXVvdGVkUHJpbnRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFF1b3RlZFByaW50YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3
MjAxRjQxMTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGVkUHJpbnRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM3MjAyMTk4MTA2MjEzQzYwMEYyNUM0QiAvKiBGb250U21vb3RoaW5nTW9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U21vb3RoaW5nTW9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzJDMDBDMzEyOTYxMUYxMDA1Qzk1NzUg
LyogVGV4dEJvdW5kYXJpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGV4dEJvdW5kYXJpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzJD
MDBEODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3NzA4LDYgKzE3NzEyLDggQEAKIAkJCQlGNTE0MkM2ODEyM0YxMkIwMDBGNUJENEMgLyog
TG9jYWxpemVkTnVtYmVyLmggKi8sCiAJCQkJQkM3NkFDMTEwREQ3QUQ1QzAwNDE1RjM0IC8qIFBh
cnNlclV0aWxpdGllcy5oICovLAogCQkJCUIyQzNEOUZCMEQwMDZDMUQwMEVGNkYyNiAvKiBQbGF0
Zm9ybVN0cmluZy5oICovLAorCQkJCTM3MjAxRjQwMTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQ
cmludGFibGUuY3BwICovLAorCQkJCTM3MjAxRjQxMTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQ
cmludGFibGUuaCAqLywKIAkJCQlCMkMzRDlGQzBEMDA2QzFEMDBFRjZGMjYgLyogUmVndWxhckV4
cHJlc3Npb24uY3BwICovLAogCQkJCUIyQzNEOUZEMEQwMDZDMUQwMEVGNkYyNiAvKiBSZWd1bGFy
RXhwcmVzc2lvbi5oICovLAogCQkJCUIyQzNEOUZFMEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50
ZWRTdHJpbmcuY3BwICovLApAQCAtMjI2OTUsNiArMjI3MDEsNyBAQAogCQkJCTkzRjE5OUVEMDgy
NDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJF
NTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzNzIwMUY0MzEzNkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIyNzU0LDcgKzIyNzYxLDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJ
CQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdp
b24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJl
Z2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTI1MzU0LDYgKzI1MzYwLDcgQEAKIAkJCQk5M0Yx
OUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmls
dGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3MjAxRjQyMTM2RjExODEwMENCRUU5QyAvKiBR
dW90ZWRQcmludGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODcyOWY5MjI5YTlm
YjIzZGVlNDk0NjdlYWM3MWFlZjBkZjA1NTg2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcApAQCAtMCwwICsxLDE4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdW90ZWRQcmludGFibGUuaCIKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGludCBtYXhDaGFy
UGVyTGluZSA9IDc2OworCitzdGF0aWMgY29uc3QgY2hhciBoZXhUYWJsZVtdID0gIjAxMjM0NTY3
ODlBQkNERUYiOworCitzdGF0aWMgY29uc3QgY2hhciBlb2xbXSA9ICJcclxuIjsKKworc3RhdGlj
IGludCBoZXhEaWdpdFZhbHVlKGNoYXIgYykKK3sKKyAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChj
KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChjIDwgJ0EnKQorICAgICAgICByZXR1cm4g
YyAtICcwJzsKKyAgICByZXR1cm4gKGMgLSAnQScgKyAxMCkgJiAweEY7IC8vIGhhbmRsZSBib3Ro
IHVwcGVyIGFuZCBsb3dlciBjYXNlIHdpdGhvdXQgYSBicmFuY2gKK30KKworLy8gUmV0dXJucyB0
aGUgbGVuZ3RoIGluIGNoYXJhY3RlcnMgb2YgdGhlIEVPTCBmb3VuZCBhdCBpbmRleCwgMCBpZiB0
aGVyZSBpc24ndCBvbmUuCitzdGF0aWMgaW50IGlzRU9MKGNvbnN0IGNoYXIqIGlucHV0LCB1bnNp
Z25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChpbnB1dFtpbmRleF0gPT0g
J1xuJykKKyAgICAgICAgcmV0dXJuIDE7IC8vIFNpbmdsZSBMRi4KKworICAgIGlmIChpbnB1dFtp
bmRleF0gPT0gJ1xyJykgeworICAgICAgICBpZiAoKGluZGV4ICsgMSkgPT0gbGVuZ3RoIHx8IGlu
cHV0W2luZGV4ICsgMV0gIT0gJ1xuJykKKyAgICAgICAgICAgIHJldHVybiAxOyAvLyBTaW5nbGUg
Q1IgKENvbW1vZG9yZSBhbmQgT2xkIE1hY3MpLgorICAgICAgICByZXR1cm4gMjsgLy8gQ1ItTEYu
CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK1N0cmluZyBxdW90ZWRQcmludGFibGVFbmNv
ZGUoY29uc3QgU3RyaW5nJiBpbikKK3sKKyAgICByZXR1cm4gcXVvdGVkUHJpbnRhYmxlRW5jb2Rl
KGluLmFzY2lpKCkuZGF0YSgpLCBpbi5sZW5ndGgoKSk7Cit9CisKK1N0cmluZyBxdW90ZWRQcmlu
dGFibGVFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbikKK3sKKyAgICByZXR1cm4gcXVvdGVk
UHJpbnRhYmxlRW5jb2RlKGluLmRhdGEoKSwgaW4uc2l6ZSgpKTsKK30KKworU3RyaW5nIHF1b3Rl
ZFByaW50YWJsZUVuY29kZShjb25zdCBjaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIC8vIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVy
cyBpbiB0aGUgY3VycmVudCBsaW5lLlZlCisgICAgaW50IGNoYXJDb3VudCA9IDA7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGJvb2wgbGFzdENo
YXIgPSAoaSA9PSBsZW5ndGggLSAxKTsKKyAgICAgICAgY2hhciBjID0gaW5wdXRbaV07CisgICAg
ICAgIC8vIFdoZXRoZXIgdGhpcyBjaGFyYWN0ZXIgY2FuIGJlIGluc2VydGVkIHdpdGhvdXQgZW5j
b2RpbmcuCisgICAgICAgIGJvb2wgYXNJcyA9IGZhbHNlOworICAgICAgICAvLyBBbGwgcHJpbnRh
YmxlIEFTQ0lJIGNoYXJhY3RlcnMgY2FuIGJlIGluY2x1ZGVkIGFzIGlzIChidXQgZm9yID0pLgor
ICAgICAgICBpZiAoYyA+PSAnIScgJiYgYyA8PSAnficgJiYgYyAhPSAnPScpCisgICAgICAgICAg
ICBhc0lzID0gdHJ1ZTsKKworICAgICAgICAvLyBTcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMgY2Fu
IGJlIGluY2x1ZGVkIGFzIGlzIGlmIHRoZXkgZG9uJ3QgYXBwZWFyIGF0CisgICAgICAgIC8vIHRo
ZSBlbmQgb2YgYSBsaW5lIG9yIGF0IHRoZW4gZW5kIG9mIHRoZSBpbnB1dC4KKyAgICAgICAgaWYg
KCFhc0lzICYmIChjID09ICdcdCcgfHwgYyA9PSAnICcpICYmICFsYXN0Q2hhciAmJiAhaXNFT0wo
aW5wdXQsIGkgKyAxLCBsZW5ndGgpKQorICAgICAgICAgICAgYXNJcyA9IHRydWU7CisKKyAgICAg
ICAgLy8gRW5kIG9mIGxpbmUgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBDUi1MRiBzZXF1ZW5jZXMu
CisgICAgICAgIGlmICghbGFzdENoYXIpIHsKKyAgICAgICAgICAgIGludCBlb2xMZW4gPSBpc0VP
TChpbnB1dCwgaSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChlb2xMZW4gPiAwKSB7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGVvbCk7CisgICAgICAgICAgICBjaGFyQ291bnQgPSAwOwor
ICAgICAgICAgICAgaSArPSAoZW9sTGVuIC0gMSk7IC8vIC0xIGJlY2F1c2Ugd2UnbGwgKysgaW4g
dGhlIGZvcigpIGFib3ZlLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEluc2VydCBhIHNvZnQgbGluZSBicmVhayBpZiBuZWNlc3Nhcnku
CisgICAgICAgIGludCBtaW5DaGFyc05lZWRlZCA9IGFzSXMgPyBtYXhDaGFyUGVyTGluZSAtIDIg
OiBtYXhDaGFyUGVyTGluZSAtIDQ7CisgICAgICAgIGlmICghbGFzdENoYXIgJiYgY2hhckNvdW50
ID4gbWluQ2hhcnNOZWVkZWQpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJz0nKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChlb2wpOworICAgICAgICAgICAgY2hhckNvdW50ID0gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIEZpbmFsbHksIGluc2VydCB0aGUgYWN0dWFsIGNoYXJhY3Rl
cihzKS4KKyAgICAgICAgaWYgKGFzSXMpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYyk7
CisgICAgICAgICAgICBjaGFyQ291bnQrKzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4VGFibGVb
c3RhdGljX2Nhc3Q8aW50PigoYyA+PiA0KSAmIDB4RildKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoaGV4VGFibGVbc3RhdGljX2Nhc3Q8aW50PihjICYgMHgwRildKTsKKyAgICAgICAgICAg
IGNoYXJDb3VudCArPSAzOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQudG9T
dHJpbmcoKTsKK30KKworYm9vbCBxdW90ZWRQcmludGFibGVEZWNvZGUoY29uc3QgU3RyaW5nJiBp
biwgVmVjdG9yPGNoYXI+JiBvdXQpCit7CisgICAgcmV0dXJuIHF1b3RlZFByaW50YWJsZURlY29k
ZShpbi5hc2NpaSgpLmRhdGEoKSwgaW4ubGVuZ3RoKCksIG91dCk7Cit9CisKK2Jvb2wgcXVvdGVk
UHJpbnRhYmxlRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0
KQoreworICAgIHJldHVybiBxdW90ZWRQcmludGFibGVEZWNvZGUoaW4uZGF0YSgpLCBpbi5zaXpl
KCksIG91dCk7Cit9CisKK2Jvb2wgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0IGNoYXIqIGRh
dGEsIHVuc2lnbmVkIGxlbiwgVmVjdG9yPGNoYXI+JiBvdXQpCit7CisgICAgb3V0LmNsZWFyKCk7
CisgICAgaWYgKCFsZW4pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBzdWNjZXNz
ID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAg
ICAgY2hhciBjID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKGMgIT0gJz0nKSB7CisgICAgICAgICAg
ICAvLyBSZWd1bGFyIGNoYXJhY3RlciwgYXBwZW5kIGFzIGlzLgorICAgICAgICAgICAgb3V0LmFw
cGVuZChjKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8vIFdl
IGFyZSBkZWFsaW5nIHdpdGggYSAnPXh4JyBzZXF1ZW5jZS4KKyAgICAgICAgaWYgKGxlbiAtIGkg
PCAzKSB7CisgICAgICAgICAgICAvLyBVbmZpbmlzaGVkID0gc2VxdWVuY2UsIGFwcGVuZCBhcyBp
cy4KKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIG91dC5hcHBlbmQo
Yyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjaGFyIGMyID0g
ZGF0YVsrK2ldOworICAgICAgICBjaGFyIGMzID0gZGF0YVsrK2ldOworICAgICAgICBpZiAoYzIg
PT0gJ1xyJyAmJiBjMyA9PSAnXG4nKSB7CisgICAgICAgICAgICAvLyBTb2Z0IGxpbmUgYnJlYWss
IGlnbm9yZWQuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlu
dCBpMSA9IGhleERpZ2l0VmFsdWUoYzIpOworICAgICAgICBpbnQgaTIgPSBoZXhEaWdpdFZhbHVl
KGMzKTsKKyAgICAgICAgaWYgKGkxID09IC0xIHx8IGkyID09IC0xKSB7CisgICAgICAgICAgICAv
LyBJbnZhbGlkIHNlcXVlbmNlLCA9IGZvbGxvd2VkIGJ5IG5vbiBoZXggZGlnaXRzLgorICAgICAg
ICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgLy8gSnVzdCBpbnNlcnQgdGhlIGNo
YXJzIGFzIGlzLgorICAgICAgICAgICAgb3V0LmFwcGVuZCgnPScpOworICAgICAgICAgICAgb3V0
LmFwcGVuZChjMik7CisgICAgICAgICAgICBvdXQuYXBwZW5kKGMzKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgY2hhciByID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
KChpMSA8PCA0KSAmIDB4RjApIHwgKGkyICYgMHgwRikpOworICAgICAgICBvdXQuYXBwZW5kKHIp
OworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NTgzNzlmYWY3
ODIwNWY4YWNhMDhmMWRhMTlkOWU0MTMwYmI1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUXVvdGVkUHJpbnRhYmxlX2gKKyNkZWZpbmUgUXVvdGVkUHJpbnRhYmxlX2gKKworI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0
IFN0cmluZyYpOworU3RyaW5nIHF1b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBWZWN0b3I8Y2hh
cj4mKTsKK1N0cmluZyBxdW90ZWRQcmludGFibGVFbmNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVk
KTsKKworYm9vbCBxdW90ZWRQcmludGFibGVEZWNvZGUoY29uc3QgU3RyaW5nJiwgVmVjdG9yPGNo
YXI+Jik7Citib29sIHF1b3RlZFByaW50YWJsZURlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mLCBW
ZWN0b3I8Y2hhcj4mKTsKK2Jvb2wgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0IGNoYXIqLCB1
bnNpZ25lZCwgVmVjdG9yPGNoYXI+Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFF1b3RlZFByaW50YWJsZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91931</attachid>
            <date>2011-05-02 09:48:02 -0700</date>
            <delta_ts>2011-05-02 17:33:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59834-20110502094801.patch</filename>
            <type>text/plain</type>
            <size>18349</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQy
ZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uNjgwNmM2MmQyOTc0ZWI0NTljNmFk
MmFhYWZlZTUzNWU0N2UxNGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjcsMTAgKzEx
NjcsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0
L0h5cGhlbmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKICAgICBw
bGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcAor
ICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQv
UmVndWxhckV4cHJlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5NzVjMGU1
OWMxYTVjMDk4ZWJkZDM0OTNiZTc0OTZkYzAwOTcwYi4uNzUxZTNjMWIzZTU3N2Q2ODU1MjdhYmU2
MjA1ZDY2ZmI0N2IwODA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA1LTAy
ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcXVvdGVkLXByaW50YWJsZSBl
bmNvZGluZy9kZWNvZGluZyBjYXBhYmlsaXRpZXMuCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGZv
ciBNSFRNTCBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTk4MzQKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvUXVvdGVkUHJpbnRhYmxlLmg6IEFkZGVkLgorCiAyMDExLTA1LTAyICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxN2YyYTVmOGEz
ODk4ODBjN2RmNWYxZDI5ZTk2MmJjODAyMmFhNDA0Li43MTlhOWUyMWY5YWM4Zjk4ZDg4NWEyNjNm
ZGZjZjVkMmY1Yjk2YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2Mjgs
NiArMjYyOCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9QYXJzZXJVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybVN0cmluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3Rl
ZFByaW50YWJsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Np
b24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggNTkwZWJjMjU5MWU5MzdjYTUwZTZkMjhiZjRmOTU4ZmZiNzk2
MGUwMi4uMDE1NmNjMmI4MjVhMWQxNDRmMmU2ZGVmNDMyZWMwNWQxMjIwMTc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNDg5NCw2ICs0ODk0LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L0xvY2FsaXplZE51bWJlcklDVS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUGFyc2Vy
VXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxl
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjE1YzNmZWUzYjA3
YjU4ZjlmMTZiMzc5OTk3ZWEwYzUzYWZmYTc2NS4uYWUxODFjZjIxNDMwNDFhMDlkZjU0MDI0M2Yx
MmYxYzU2YWY5NmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk0Niw2ICs5NDYsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyTm9uZS5jcHAgXAorICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBc
CiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCkBAIC0yMDMz
LDYgKzIwMzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL3RleHQvSHlw
aGVuYXRpb24uaCBcCisgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBcCiAgICAg
cGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3Vs
YXJFeHByZXNzaW9uLmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjYzM0
OTMyYWE1ZmI5ZTUxYjE4YWYxNjhjY2Y4Nzg2YzYxYTAzMDExLi40ZDcxYzhiZmFiMGI2YTgxMzcw
MmVmYzk0Y2EwNzA4ZmZhODUzMzYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzA0ODAsNiArMzA0ODAsMTQgQEAKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFBsYXRmb3JtU3RyaW5nLmgiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0
XFF1b3RlZFByaW50YWJsZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50
YWJsZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxSZWd1bGFyRXhwcmVzc2lvbi5jcHAiCiAJCQkJCT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjNDk2MDRmMjk4ZjRlMmM1MjEzNzk4YTE3MTc2MzdmOGY4YzM1ZDBiLi40Yzg3NTNkZmFl
YjJjYjY5OWM5ZWM1OTNhMmE2NmQzNWNkYTIwNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03ODUsNiArNzg1LDggQEAKIAkJ
MzcxRjUxQTIwRDI2MkZBMDAwRUNFMEQ1IC8qIENTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY1MUEwMEQyNjJG
QTAwMEVDRTBENSAvKiBDU1NTZWdtZW50ZWRGb250RmFjZS5jcHAgKi87IH07CiAJCTM3MUY1M0U5
MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjUzRTcwRDI3MDRGOTAwRUNFMEQ1
IC8qIENTU1VuaWNvZGVSYW5nZVZhbHVlLmggKi87IH07CiAJCTM3MUY1M0VBMEQyNzA0RjkwMEVD
RTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNTNFODBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NTVW5p
Y29kZVJhbmdlVmFsdWUuY3BwICovOyB9OworCQkzNzIwMUY0MjEzNkYxMTgxMDBDQkVFOUMgLyog
UXVvdGVkUHJpbnRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3MjAxRjQwMTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuY3Bw
ICovOyB9OworCQkzNzIwMUY0MzEzNkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzIwMUY0MTEz
NkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmggKi87IH07CiAJCTM3MjAyMTk5MTA2
MjEzQzYwMEYyNUM0QiAvKiBGb250U21vb3RoaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcyMDIxOTgxMDYyMTNDNjAwRjI1QzRCIC8qIEZv
bnRTbW9vdGhpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzcyQzAwQzQxMjk2MTFGMTAwNUM5NTc1IC8qIFRleHRCb3VuZGFyaWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MkMwMEMz
MTI5NjExRjEwMDVDOTU3NSAvKiBUZXh0Qm91bmRhcmllcy5jcHAgKi87IH07CiAJCTM3MkMwMEQ5
MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcyQzAwRDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRP
cHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTcyMTcsNiArNzIxOSw4IEBACiAJCTM3MUY1MUEwMEQyNjJGQTAwMEVDRTBENSAvKiBDU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDU1NTZWdtZW50ZWRGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3MUY1M0U3MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNTNFODBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NT
VW5pY29kZVJhbmdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzNzIwMUY0MDEzNkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1b3RlZFByaW50YWJsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3MjAxRjQxMTM2RjExODEwMENCRUU5QyAvKiBRdW90
ZWRQcmludGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGVkUHJp
bnRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MjAyMTk4MTA2MjEzQzYw
MEYyNUM0QiAvKiBGb250U21vb3RoaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250U21vb3RoaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzJDMDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJvdW5kYXJpZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzJDMDBEODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9w
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZE9wdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NzEyLDYgKzE3NzE2LDggQEAKIAkJCQlG
NTE0MkM2ODEyM0YxMkIwMDBGNUJENEMgLyogTG9jYWxpemVkTnVtYmVyLmggKi8sCiAJCQkJQkM3
NkFDMTEwREQ3QUQ1QzAwNDE1RjM0IC8qIFBhcnNlclV0aWxpdGllcy5oICovLAogCQkJCUIyQzNE
OUZCMEQwMDZDMUQwMEVGNkYyNiAvKiBQbGF0Zm9ybVN0cmluZy5oICovLAorCQkJCTM3MjAxRjQw
MTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuY3BwICovLAorCQkJCTM3MjAxRjQx
MTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuaCAqLywKIAkJCQlCMkMzRDlGQzBE
MDA2QzFEMDBFRjZGMjYgLyogUmVndWxhckV4cHJlc3Npb24uY3BwICovLAogCQkJCUIyQzNEOUZE
MEQwMDZDMUQwMEVGNkYyNiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5oICovLAogCQkJCUIyQzNEOUZF
MEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwICovLApAQCAtMjI3MDIsNiAr
MjI3MDgsNyBAQAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVu
aWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzNzIwMUY0MzEzNkYxMTgxMDBDQkVF
OUMgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNzYxLDcgKzIyNzY4
LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29k
ZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZv
ckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTI1
MzYyLDYgKzI1MzY4LDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUw
RTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3
MjAxRjQyMTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODcyOWY5MjI5YTlmYjIzZGVlNDk0NjdlYWM3MWFlZjBkZjA1NTg2ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmNwcApAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJRdW90ZWRQcmludGFibGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIGNvbnN0IGludCBtYXhDaGFyUGVyTGluZSA9IDc2OworCitzdGF0aWMgY29uc3Qg
Y2hhciBoZXhUYWJsZVtdID0gIjAxMjM0NTY3ODlBQkNERUYiOworCitzdGF0aWMgY29uc3QgY2hh
ciBlb2xbXSA9ICJcclxuIjsKKworc3RhdGljIGludCBoZXhEaWdpdFZhbHVlKGNoYXIgYykKK3sK
KyAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChjKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlm
IChjIDwgJ0EnKQorICAgICAgICByZXR1cm4gYyAtICcwJzsKKyAgICByZXR1cm4gKGMgLSAnQScg
KyAxMCkgJiAweEY7IC8vIGhhbmRsZSBib3RoIHVwcGVyIGFuZCBsb3dlciBjYXNlIHdpdGhvdXQg
YSBicmFuY2gKK30KKworLy8gUmV0dXJucyB0aGUgbGVuZ3RoIGluIGNoYXJhY3RlcnMgb2YgdGhl
IEVPTCBmb3VuZCBhdCBpbmRleCwgMCBpZiB0aGVyZSBpc24ndCBvbmUuCitzdGF0aWMgaW50IGlz
RU9MKGNvbnN0IGNoYXIqIGlucHV0LCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIGlmIChpbnB1dFtpbmRleF0gPT0gJ1xuJykKKyAgICAgICAgcmV0dXJuIDE7IC8vIFNp
bmdsZSBMRi4KKworICAgIGlmIChpbnB1dFtpbmRleF0gPT0gJ1xyJykgeworICAgICAgICBpZiAo
KGluZGV4ICsgMSkgPT0gbGVuZ3RoIHx8IGlucHV0W2luZGV4ICsgMV0gIT0gJ1xuJykKKyAgICAg
ICAgICAgIHJldHVybiAxOyAvLyBTaW5nbGUgQ1IgKENvbW1vZG9yZSBhbmQgT2xkIE1hY3MpLgor
ICAgICAgICByZXR1cm4gMjsgLy8gQ1ItTEYuCisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK
K1N0cmluZyBxdW90ZWRQcmludGFibGVFbmNvZGUoY29uc3QgU3RyaW5nJiBpbikKK3sKKyAgICBy
ZXR1cm4gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGluLmFzY2lpKCkuZGF0YSgpLCBpbi5sZW5ndGgo
KSk7Cit9CisKK1N0cmluZyBxdW90ZWRQcmludGFibGVFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+
JiBpbikKK3sKKyAgICByZXR1cm4gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGluLmRhdGEoKSwgaW4u
c2l6ZSgpKTsKK30KKworU3RyaW5nIHF1b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBjaGFyKiBp
bnB1dCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAg
IC8vIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgY3VycmVudCBsaW5lLlZlCisgICAg
aW50IGNoYXJDb3VudCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIGJvb2wgbGFzdENoYXIgPSAoaSA9PSBsZW5ndGggLSAxKTsKKyAgICAg
ICAgY2hhciBjID0gaW5wdXRbaV07CisgICAgICAgIC8vIFdoZXRoZXIgdGhpcyBjaGFyYWN0ZXIg
Y2FuIGJlIGluc2VydGVkIHdpdGhvdXQgZW5jb2RpbmcuCisgICAgICAgIGJvb2wgYXNJcyA9IGZh
bHNlOworICAgICAgICAvLyBBbGwgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMgY2FuIGJlIGlu
Y2x1ZGVkIGFzIGlzIChidXQgZm9yID0pLgorICAgICAgICBpZiAoYyA+PSAnIScgJiYgYyA8PSAn
ficgJiYgYyAhPSAnPScpCisgICAgICAgICAgICBhc0lzID0gdHJ1ZTsKKworICAgICAgICAvLyBT
cGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMgY2FuIGJlIGluY2x1ZGVkIGFzIGlzIGlmIHRoZXkgZG9u
J3QgYXBwZWFyIGF0CisgICAgICAgIC8vIHRoZSBlbmQgb2YgYSBsaW5lIG9yIGF0IHRoZW4gZW5k
IG9mIHRoZSBpbnB1dC4KKyAgICAgICAgaWYgKCFhc0lzICYmIChjID09ICdcdCcgfHwgYyA9PSAn
ICcpICYmICFsYXN0Q2hhciAmJiAhaXNFT0woaW5wdXQsIGkgKyAxLCBsZW5ndGgpKQorICAgICAg
ICAgICAgYXNJcyA9IHRydWU7CisKKyAgICAgICAgLy8gRW5kIG9mIGxpbmUgc2hvdWxkIGJlIGNv
bnZlcnRlZCB0byBDUi1MRiBzZXF1ZW5jZXMuCisgICAgICAgIGlmICghbGFzdENoYXIpIHsKKyAg
ICAgICAgICAgIGludCBlb2xMZW4gPSBpc0VPTChpbnB1dCwgaSwgbGVuZ3RoKTsKKyAgICAgICAg
ICAgIGlmIChlb2xMZW4gPiAwKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGVvbCk7Cisg
ICAgICAgICAgICBjaGFyQ291bnQgPSAwOworICAgICAgICAgICAgaSArPSAoZW9sTGVuIC0gMSk7
IC8vIC0xIGJlY2F1c2Ugd2UnbGwgKysgaW4gdGhlIGZvcigpIGFib3ZlLgorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEluc2VydCBhIHNv
ZnQgbGluZSBicmVhayBpZiBuZWNlc3NhcnkuCisgICAgICAgIGludCBtaW5DaGFyc05lZWRlZCA9
IGFzSXMgPyBtYXhDaGFyUGVyTGluZSAtIDIgOiBtYXhDaGFyUGVyTGluZSAtIDQ7CisgICAgICAg
IGlmICghbGFzdENoYXIgJiYgY2hhckNvdW50ID4gbWluQ2hhcnNOZWVkZWQpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJz0nKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChlb2wpOworICAg
ICAgICAgICAgY2hhckNvdW50ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbmFsbHks
IGluc2VydCB0aGUgYWN0dWFsIGNoYXJhY3RlcihzKS4KKyAgICAgICAgaWYgKGFzSXMpIHsKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYyk7CisgICAgICAgICAgICBjaGFyQ291bnQrKzsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJz0nKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoaGV4VGFibGVbc3RhdGljX2Nhc3Q8aW50PigoYyA+PiA0KSAmIDB4
RildKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4VGFibGVbc3RhdGljX2Nhc3Q8aW50
PihjICYgMHgwRildKTsKKyAgICAgICAgICAgIGNoYXJDb3VudCArPSAzOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKworYm9vbCBxdW90ZWRQcmlu
dGFibGVEZWNvZGUoY29uc3QgU3RyaW5nJiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQpCit7CisgICAg
cmV0dXJuIHF1b3RlZFByaW50YWJsZURlY29kZShpbi5hc2NpaSgpLmRhdGEoKSwgaW4ubGVuZ3Ro
KCksIG91dCk7Cit9CisKK2Jvb2wgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0IFZlY3Rvcjxj
aGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0KQoreworICAgIHJldHVybiBxdW90ZWRQcmludGFi
bGVEZWNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCksIG91dCk7Cit9CisKK2Jvb2wgcXVvdGVkUHJp
bnRhYmxlRGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgVmVjdG9yPGNoYXI+
JiBvdXQpCit7CisgICAgb3V0LmNsZWFyKCk7CisgICAgaWYgKCFsZW4pCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgY2hhciBjID0gZGF0YVtpXTsKKyAgICAgICAg
aWYgKGMgIT0gJz0nKSB7CisgICAgICAgICAgICAvLyBSZWd1bGFyIGNoYXJhY3RlciwgYXBwZW5k
IGFzIGlzLgorICAgICAgICAgICAgb3V0LmFwcGVuZChjKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIC8vIFdlIGFyZSBkZWFsaW5nIHdpdGggYSAnPXh4JyBzZXF1
ZW5jZS4KKyAgICAgICAgaWYgKGxlbiAtIGkgPCAzKSB7CisgICAgICAgICAgICAvLyBVbmZpbmlz
aGVkID0gc2VxdWVuY2UsIGFwcGVuZCBhcyBpcy4KKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICAgICAgICAgIG91dC5hcHBlbmQoYyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICBjaGFyIGMyID0gZGF0YVsrK2ldOworICAgICAgICBjaGFyIGMzID0g
ZGF0YVsrK2ldOworICAgICAgICBpZiAoYzIgPT0gJ1xyJyAmJiBjMyA9PSAnXG4nKSB7CisgICAg
ICAgICAgICAvLyBTb2Z0IGxpbmUgYnJlYWssIGlnbm9yZWQuCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBpMSA9IGhleERpZ2l0VmFsdWUoYzIpOworICAg
ICAgICBpbnQgaTIgPSBoZXhEaWdpdFZhbHVlKGMzKTsKKyAgICAgICAgaWYgKGkxID09IC0xIHx8
IGkyID09IC0xKSB7CisgICAgICAgICAgICAvLyBJbnZhbGlkIHNlcXVlbmNlLCA9IGZvbGxvd2Vk
IGJ5IG5vbiBoZXggZGlnaXRzLgorICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAg
ICAgICAgLy8gSnVzdCBpbnNlcnQgdGhlIGNoYXJzIGFzIGlzLgorICAgICAgICAgICAgb3V0LmFw
cGVuZCgnPScpOworICAgICAgICAgICAgb3V0LmFwcGVuZChjMik7CisgICAgICAgICAgICBvdXQu
YXBwZW5kKGMzKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Y2hhciByID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChpMSA8PCA0KSAmIDB4RjApIHwgKGkyICYgMHgw
RikpOworICAgICAgICBvdXQuYXBwZW5kKHIpOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQ
cmludGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWY0NTgzNzlmYWY3ODIwNWY4YWNhMDhmMWRhMTlkOWU0MTMwYmI1Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUXVvdGVkUHJpbnRhYmxlX2gKKyNkZWZp
bmUgUXVvdGVkUHJpbnRhYmxlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcg
cXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIHF1b3RlZFByaW50
YWJsZUVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKK1N0cmluZyBxdW90ZWRQcmludGFibGVF
bmNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKworYm9vbCBxdW90ZWRQcmludGFibGVEZWNv
ZGUoY29uc3QgU3RyaW5nJiwgVmVjdG9yPGNoYXI+Jik7Citib29sIHF1b3RlZFByaW50YWJsZURl
Y29kZShjb25zdCBWZWN0b3I8Y2hhcj4mLCBWZWN0b3I8Y2hhcj4mKTsKK2Jvb2wgcXVvdGVkUHJp
bnRhYmxlRGVjb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgVmVjdG9yPGNoYXI+Jik7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFF1b3RlZFByaW50YWJsZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92016</attachid>
            <date>2011-05-02 17:33:52 -0700</date>
            <delta_ts>2011-05-03 14:54:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59834-20110502173351.patch</filename>
            <type>text/plain</type>
            <size>18244</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQy
ZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uNjgwNmM2MmQyOTc0ZWI0NTljNmFk
MmFhYWZlZTUzNWU0N2UxNGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjcsMTAgKzEx
NjcsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0
L0h5cGhlbmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKICAgICBw
bGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcAor
ICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQv
UmVndWxhckV4cHJlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5NzVjMGU1
OWMxYTVjMDk4ZWJkZDM0OTNiZTc0OTZkYzAwOTcwYi4uNzUxZTNjMWIzZTU3N2Q2ODU1MjdhYmU2
MjA1ZDY2ZmI0N2IwODA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA1LTAy
ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcXVvdGVkLXByaW50YWJsZSBl
bmNvZGluZy9kZWNvZGluZyBjYXBhYmlsaXRpZXMuCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGZv
ciBNSFRNTCBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTk4MzQKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvUXVvdGVkUHJpbnRhYmxlLmg6IEFkZGVkLgorCiAyMDExLTA1LTAyICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxN2YyYTVmOGEz
ODk4ODBjN2RmNWYxZDI5ZTk2MmJjODAyMmFhNDA0Li43MTlhOWUyMWY5YWM4Zjk4ZDg4NWEyNjNm
ZGZjZjVkMmY1Yjk2YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2Mjgs
NiArMjYyOCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9QYXJzZXJVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybVN0cmluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3Rl
ZFByaW50YWJsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Np
b24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggNTkwZWJjMjU5MWU5MzdjYTUwZTZkMjhiZjRmOTU4ZmZiNzk2
MGUwMi4uMDE1NmNjMmI4MjVhMWQxNDRmMmU2ZGVmNDMyZWMwNWQxMjIwMTc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNDg5NCw2ICs0ODk0LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L0xvY2FsaXplZE51bWJlcklDVS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUGFyc2Vy
VXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxl
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjE1YzNmZWUzYjA3
YjU4ZjlmMTZiMzc5OTk3ZWEwYzUzYWZmYTc2NS4uYWUxODFjZjIxNDMwNDFhMDlkZjU0MDI0M2Yx
MmYxYzU2YWY5NmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk0Niw2ICs5NDYsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyTm9uZS5jcHAgXAorICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBc
CiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCkBAIC0yMDMz
LDYgKzIwMzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL3RleHQvSHlw
aGVuYXRpb24uaCBcCisgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBcCiAgICAg
cGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3Vs
YXJFeHByZXNzaW9uLmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjYzM0
OTMyYWE1ZmI5ZTUxYjE4YWYxNjhjY2Y4Nzg2YzYxYTAzMDExLi40ZDcxYzhiZmFiMGI2YTgxMzcw
MmVmYzk0Y2EwNzA4ZmZhODUzMzYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzA0ODAsNiArMzA0ODAsMTQgQEAKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFBsYXRmb3JtU3RyaW5nLmgiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0
XFF1b3RlZFByaW50YWJsZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50
YWJsZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxSZWd1bGFyRXhwcmVzc2lvbi5jcHAiCiAJCQkJCT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjNDk2MDRmMjk4ZjRlMmM1MjEzNzk4YTE3MTc2MzdmOGY4YzM1ZDBiLi40Yzg3NTNkZmFl
YjJjYjY5OWM5ZWM1OTNhMmE2NmQzNWNkYTIwNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03ODUsNiArNzg1LDggQEAKIAkJ
MzcxRjUxQTIwRDI2MkZBMDAwRUNFMEQ1IC8qIENTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY1MUEwMEQyNjJG
QTAwMEVDRTBENSAvKiBDU1NTZWdtZW50ZWRGb250RmFjZS5jcHAgKi87IH07CiAJCTM3MUY1M0U5
MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjUzRTcwRDI3MDRGOTAwRUNFMEQ1
IC8qIENTU1VuaWNvZGVSYW5nZVZhbHVlLmggKi87IH07CiAJCTM3MUY1M0VBMEQyNzA0RjkwMEVD
RTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNTNFODBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NTVW5p
Y29kZVJhbmdlVmFsdWUuY3BwICovOyB9OworCQkzNzIwMUY0MjEzNkYxMTgxMDBDQkVFOUMgLyog
UXVvdGVkUHJpbnRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3MjAxRjQwMTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuY3Bw
ICovOyB9OworCQkzNzIwMUY0MzEzNkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzIwMUY0MTEz
NkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmggKi87IH07CiAJCTM3MjAyMTk5MTA2
MjEzQzYwMEYyNUM0QiAvKiBGb250U21vb3RoaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcyMDIxOTgxMDYyMTNDNjAwRjI1QzRCIC8qIEZv
bnRTbW9vdGhpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzcyQzAwQzQxMjk2MTFGMTAwNUM5NTc1IC8qIFRleHRCb3VuZGFyaWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MkMwMEMz
MTI5NjExRjEwMDVDOTU3NSAvKiBUZXh0Qm91bmRhcmllcy5jcHAgKi87IH07CiAJCTM3MkMwMEQ5
MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcyQzAwRDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRP
cHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTcyMTcsNiArNzIxOSw4IEBACiAJCTM3MUY1MUEwMEQyNjJGQTAwMEVDRTBENSAvKiBDU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDU1NTZWdtZW50ZWRGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3MUY1M0U3MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNTNFODBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NT
VW5pY29kZVJhbmdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzNzIwMUY0MDEzNkYxMTgxMDBDQkVFOUMgLyogUXVvdGVkUHJpbnRhYmxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1b3RlZFByaW50YWJsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3MjAxRjQxMTM2RjExODEwMENCRUU5QyAvKiBRdW90
ZWRQcmludGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVvdGVkUHJp
bnRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MjAyMTk4MTA2MjEzQzYw
MEYyNUM0QiAvKiBGb250U21vb3RoaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250U21vb3RoaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzJDMDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJvdW5kYXJpZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzJDMDBEODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9w
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZE9wdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NzEyLDYgKzE3NzE2LDggQEAKIAkJCQlG
NTE0MkM2ODEyM0YxMkIwMDBGNUJENEMgLyogTG9jYWxpemVkTnVtYmVyLmggKi8sCiAJCQkJQkM3
NkFDMTEwREQ3QUQ1QzAwNDE1RjM0IC8qIFBhcnNlclV0aWxpdGllcy5oICovLAogCQkJCUIyQzNE
OUZCMEQwMDZDMUQwMEVGNkYyNiAvKiBQbGF0Zm9ybVN0cmluZy5oICovLAorCQkJCTM3MjAxRjQw
MTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuY3BwICovLAorCQkJCTM3MjAxRjQx
MTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuaCAqLywKIAkJCQlCMkMzRDlGQzBE
MDA2QzFEMDBFRjZGMjYgLyogUmVndWxhckV4cHJlc3Npb24uY3BwICovLAogCQkJCUIyQzNEOUZE
MEQwMDZDMUQwMEVGNkYyNiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5oICovLAogCQkJCUIyQzNEOUZF
MEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwICovLApAQCAtMjI3MDIsNiAr
MjI3MDgsNyBAQAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVu
aWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzNzIwMUY0MzEzNkYxMTgxMDBDQkVF
OUMgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNzYxLDcgKzIyNzY4
LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29k
ZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZv
ckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTI1
MzYyLDYgKzI1MzY4LDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUw
RTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3
MjAxRjQyMTM2RjExODEwMENCRUU5QyAvKiBRdW90ZWRQcmludGFibGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGM1NTMwNDI3YTRhOWY1ZGEyNGQ4N2MwYTE0NTM0MjcxYjM4M2I3MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJRdW90ZWRQcmludGFibGUuaCIKKworI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgaW50IGxpbmVNYXhp
bXVtU2l6ZSA9IDc2OworCitzdGF0aWMgY29uc3QgY2hhciBoZXhUYWJsZVtdID0gIjAxMjM0NTY3
ODlBQkNERUYiOworCitzdGF0aWMgY29uc3QgY2hhciBlb2xbXSA9ICJcclxuIjsKKworLy8gUmV0
dXJucyB0aGUgbGVuZ3RoIGluIGNoYXJhY3RlcnMgb2YgdGhlIEVPTCBmb3VuZCBhdCBpbmRleCwg
MCBpZiB0aGVyZSBpc24ndCBvbmUuCitzdGF0aWMgaW50IGVvbExlbmd0aEF0SW5kZXgoY29uc3Qg
Y2hhciogaW5wdXQsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYg
KGlucHV0W2luZGV4XSA9PSAnXG4nKQorICAgICAgICByZXR1cm4gMTsgLy8gU2luZ2xlIExGLgor
CisgICAgaWYgKGlucHV0W2luZGV4XSA9PSAnXHInKSB7CisgICAgICAgIGlmICgoaW5kZXggKyAx
KSA9PSBsZW5ndGggfHwgaW5wdXRbaW5kZXggKyAxXSAhPSAnXG4nKQorICAgICAgICAgICAgcmV0
dXJuIDE7IC8vIFNpbmdsZSBDUiAoQ29tbW9kb3JlIGFuZCBPbGQgTWFjcykuCisgICAgICAgIHJl
dHVybiAyOyAvLyBDUi1MRi4KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworU3RyaW5nIHF1
b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBTdHJpbmcmIGluKQoreworICAgIHJldHVybiBxdW90
ZWRQcmludGFibGVFbmNvZGUoaW4uYXNjaWkoKS5kYXRhKCksIGluLmxlbmd0aCgpKTsKK30KKwor
U3RyaW5nIHF1b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluKQorewor
ICAgIHJldHVybiBxdW90ZWRQcmludGFibGVFbmNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCkpOwor
fQorCitTdHJpbmcgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0IGNoYXIqIGlucHV0LCB1bnNp
Z25lZCBsZW5ndGgpCit7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgLy8gVGhlIG51
bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBjdXJyZW50IGxpbmUuCisgICAgdW5zaWduZWQgY2hh
ckNvdW50ID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgYm9vbCBsYXN0Q2hhciA9IChpID09IGxlbmd0aCAtIDEpOworICAgICAgICBjaGFy
IGMgPSBpbnB1dFtpXTsKKyAgICAgICAgYm9vbCByZXF1aXJlc0VuY29kaW5nID0gZmFsc2U7Cisg
ICAgICAgIC8vIEFsbCBub24tcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMgYW5kID0gcmVxdWly
ZSBlbmNvZGluZy4KKyAgICAgICAgaWYgKChjIDwgJyAnIHx8IGMgPiAnficgfHwgYyA9PSAnPScp
ICYmIGMgIT0gJ1x0JykKKyAgICAgICAgICAgIHJlcXVpcmVzRW5jb2RpbmcgPSB0cnVlOworCisg
ICAgICAgIC8vIFNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycyBoYXZlIHRvIGJlIGVuY29kZWQgaWYg
dGhleSBhcHBlYXIgYXQgdGhlIGVuZCBvZiBhIGxpbmUuCisgICAgICAgIGlmICghcmVxdWlyZXNF
bmNvZGluZyAmJiAoYyA9PSAnXHQnIHx8IGMgPT0gJyAnKSAmJiAobGFzdENoYXIgfHwgZW9sTGVu
Z3RoQXRJbmRleChpbnB1dCwgaSArIDEsIGxlbmd0aCkpKQorICAgICAgICAgICAgcmVxdWlyZXNF
bmNvZGluZyA9IHRydWU7CisKKyAgICAgICAgLy8gRW5kIG9mIGxpbmUgc2hvdWxkIGJlIGNvbnZl
cnRlZCB0byBDUi1MRiBzZXF1ZW5jZXMuCisgICAgICAgIGlmICghbGFzdENoYXIpIHsKKyAgICAg
ICAgICAgIGludCBlb2xMZW4gPSBlb2xMZW5ndGhBdEluZGV4KGlucHV0LCBpLCBsZW5ndGgpOwor
ICAgICAgICAgICAgaWYgKGVvbExlbiA+IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGVvbCk7CisgICAgICAgICAgICAgICAgY2hhckNvdW50ID0gMDsKKyAgICAgICAgICAgICAg
ICBpICs9IChlb2xMZW4gLSAxKTsgLy8gLTEgYmVjYXVzZSB3ZSdsbCArKyBpbiB0aGUgZm9yKCkg
YWJvdmUuCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICAvLyBJbnNlcnQgYSBzb2Z0IGxpbmUgYnJlYWsgaWYgbmVjZXNzYXJ5Lgor
ICAgICAgICB1bnNpZ25lZCBtaW5DaGFyc05lZWRlZCA9IHJlcXVpcmVzRW5jb2RpbmcgPyBsaW5l
TWF4aW11bVNpemUgLSA0IDogbGluZU1heGltdW1TaXplIC0gMjsKKyAgICAgICAgaWYgKCFsYXN0
Q2hhciAmJiBjaGFyQ291bnQgPiBtaW5DaGFyc05lZWRlZCkgeworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnPScpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChlb2wpOworICAgICAgICAg
ICAgY2hhckNvdW50ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbmFsbHksIGluc2Vy
dCB0aGUgYWN0dWFsIGNoYXJhY3RlcihzKS4KKyAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2Rpbmcp
IHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoaGV4VGFibGVbc3RhdGljX2Nhc3Q8aW50PigoYyA+PiA0KSAmIDB4RildKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4VGFibGVbc3RhdGljX2Nhc3Q8aW50PihjICYgMHgwRild
KTsKKyAgICAgICAgICAgIGNoYXJDb3VudCArPSAzOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChjKTsKKyAgICAgICAgICAgIGNoYXJDb3VudCsrOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKwordm9pZCBxdW90
ZWRQcmludGFibGVEZWNvZGUoY29uc3QgU3RyaW5nJiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQpCit7
CisgICAgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGluLmFzY2lpKCkuZGF0YSgpLCBpbi5sZW5ndGgo
KSwgb3V0KTsKK30KKwordm9pZCBxdW90ZWRQcmludGFibGVEZWNvZGUoY29uc3QgVmVjdG9yPGNo
YXI+JiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQpCit7CisgICAgcXVvdGVkUHJpbnRhYmxlRGVjb2Rl
KGluLmRhdGEoKSwgaW4uc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIHF1b3RlZFByaW50YWJsZURl
Y29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBkYXRhTGVuZ3RoLCBWZWN0b3I8Y2hhcj4m
IG91dCkKK3sKKyAgICBvdXQuY2xlYXIoKTsKKyAgICBpZiAoIWRhdGFMZW5ndGgpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgY2hhciBjaGFyYWN0ZXIxID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKGNoYXJh
Y3RlcjEgIT0gJz0nKSB7CisgICAgICAgICAgICAvLyBSZWd1bGFyIGNoYXJhY3RlciwgYXBwZW5k
IGFzIGlzLgorICAgICAgICAgICAgb3V0LmFwcGVuZChjaGFyYWN0ZXIxKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8vIFdlIGFyZSBkZWFsaW5nIHdpdGggYSAn
PXh4JyBzZXF1ZW5jZS4KKyAgICAgICAgaWYgKGRhdGFMZW5ndGggLSBpIDwgMykgeworICAgICAg
ICAgICAgLy8gVW5maW5pc2hlZCA9IHNlcXVlbmNlLCBhcHBlbmQgYXMgaXMuCisgICAgICAgICAg
ICBvdXQuYXBwZW5kKGNoYXJhY3RlcjEpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgY2hhciBjaGFyYWN0ZXIyID0gZGF0YVsrK2ldOworICAgICAgICBjaGFyIGNo
YXJhY3RlcjMgPSBkYXRhWysraV07CisgICAgICAgIGlmIChjaGFyYWN0ZXIyID09ICdccicgJiYg
Y2hhcmFjdGVyMyA9PSAnXG4nKSB7CisgICAgICAgICAgICAvLyBTb2Z0IGxpbmUgYnJlYWssIGln
bm9yZWQuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
aXNBU0NJSUhleERpZ2l0KGNoYXJhY3RlcjIpIHx8ICFpc0FTQ0lJSGV4RGlnaXQoY2hhcmFjdGVy
MykpIHsKKyAgICAgICAgICAgIC8vIEludmFsaWQgc2VxdWVuY2UsID0gZm9sbG93ZWQgYnkgbm9u
IGhleCBkaWdpdHMsIGp1c3QgaW5zZXJ0IHRoZSBjaGFycyBhcyBpcy4KKyAgICAgICAgICAgIG91
dC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIG91dC5hcHBlbmQoY2hhcmFjdGVyMik7CisgICAg
ICAgICAgICBvdXQuYXBwZW5kKGNoYXJhY3RlcjMpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICBpbnQgaTEgPSB0b0FTQ0lJSGV4VmFsdWUoY2hhcmFjdGVyMik7
CisgICAgICAgIGludCBpMiA9IHRvQVNDSUlIZXhWYWx1ZShjaGFyYWN0ZXIzKTsKKyAgICAgICAg
Y2hhciBkZWNvZGVkQ2hhcmFjdGVyID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChpMSA8PCA0KSAmIDB4
RjApIHwgKGkyICYgMHgwRikpOworICAgICAgICBvdXQuYXBwZW5kKGRlY29kZWRDaGFyYWN0ZXIp
OworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9RdW90ZWRQcmludGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVk
UHJpbnRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE1ZmVhZWNhNTdiOTg2ZjRmN2YwZjQ3YzllNTQzYmRi
ODk0ZjVlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
UXVvdGVkUHJpbnRhYmxlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUXVvdGVkUHJpbnRhYmxl
X2gKKyNkZWZpbmUgUXVvdGVkUHJpbnRhYmxlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitTdHJpbmcgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIHF1
b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKK1N0cmluZyBxdW90ZWRQ
cmludGFibGVFbmNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKwordm9pZCBxdW90ZWRQcmlu
dGFibGVEZWNvZGUoY29uc3QgU3RyaW5nJiwgVmVjdG9yPGNoYXI+Jik7Cit2b2lkIHF1b3RlZFBy
aW50YWJsZURlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mLCBWZWN0b3I8Y2hhcj4mKTsKK3ZvaWQg
cXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgVmVjdG9yPGNoYXI+
Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFF1b3RlZFByaW50YWJs
ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92138</attachid>
            <date>2011-05-03 14:54:24 -0700</date>
            <delta_ts>2011-05-05 09:52:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59834-20110503145423.patch</filename>
            <type>text/plain</type>
            <size>17533</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQy
ZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uNjgwNmM2MmQyOTc0ZWI0NTljNmFk
MmFhYWZlZTUzNWU0N2UxNGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjcsMTAgKzEx
NjcsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0
L0h5cGhlbmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKICAgICBw
bGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcAor
ICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQv
UmVndWxhckV4cHJlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5NzVjMGU1
OWMxYTVjMDk4ZWJkZDM0OTNiZTc0OTZkYzAwOTcwYi4uNzUxZTNjMWIzZTU3N2Q2ODU1MjdhYmU2
MjA1ZDY2ZmI0N2IwODA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA1LTAy
ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcXVvdGVkLXByaW50YWJsZSBl
bmNvZGluZy9kZWNvZGluZyBjYXBhYmlsaXRpZXMuCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGZv
ciBNSFRNTCBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTk4MzQKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvUXVvdGVkUHJpbnRhYmxlLmg6IEFkZGVkLgorCiAyMDExLTA1LTAyICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxN2YyYTVmOGEz
ODk4ODBjN2RmNWYxZDI5ZTk2MmJjODAyMmFhNDA0Li43MTlhOWUyMWY5YWM4Zjk4ZDg4NWEyNjNm
ZGZjZjVkMmY1Yjk2YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2Mjgs
NiArMjYyOCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9QYXJzZXJVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybVN0cmluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3Rl
ZFByaW50YWJsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Np
b24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggNTkwZWJjMjU5MWU5MzdjYTUwZTZkMjhiZjRmOTU4ZmZiNzk2
MGUwMi4uMDE1NmNjMmI4MjVhMWQxNDRmMmU2ZGVmNDMyZWMwNWQxMjIwMTc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNDg5NCw2ICs0ODk0LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L0xvY2FsaXplZE51bWJlcklDVS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUGFyc2Vy
VXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxl
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjE1YzNmZWUzYjA3
YjU4ZjlmMTZiMzc5OTk3ZWEwYzUzYWZmYTc2NS4uYWUxODFjZjIxNDMwNDFhMDlkZjU0MDI0M2Yx
MmYxYzU2YWY5NmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk0Niw2ICs5NDYsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyTm9uZS5jcHAgXAorICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBc
CiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCkBAIC0yMDMz
LDYgKzIwMzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL3RleHQvSHlw
aGVuYXRpb24uaCBcCisgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBcCiAgICAg
cGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3Vs
YXJFeHByZXNzaW9uLmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjYzM0
OTMyYWE1ZmI5ZTUxYjE4YWYxNjhjY2Y4Nzg2YzYxYTAzMDExLi40ZDcxYzhiZmFiMGI2YTgxMzcw
MmVmYzk0Y2EwNzA4ZmZhODUzMzYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzA0ODAsNiArMzA0ODAsMTQgQEAKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFBsYXRmb3JtU3RyaW5nLmgiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0
XFF1b3RlZFByaW50YWJsZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50
YWJsZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxSZWd1bGFyRXhwcmVzc2lvbi5jcHAiCiAJCQkJCT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjNDk2MDRmMjk4ZjRlMmM1MjEzNzk4YTE3MTc2MzdmOGY4YzM1ZDBiLi5kMTk5OWQ4OWM3
NGMyNjdkNGUwZGNmNTg3YWE2YzgxNmI2MTQ1NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OTIsNiArNzkyLDggQEAKIAkJ
Mzc1Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkg
LyogSHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc1Q0QyM0IxMTlENDRFQTAwQTJBODU5IC8qIEh5
cGhlbmF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0aW9uTWFjLm1tICovOyB9
OwogCQkzNzc0QUJBNTBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJB
MzBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzc3NURCOTAxMzcwQjAz
QzAwREJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc1REI4RTEzNzBCMDNDMDBEQkJGQkIgLyogUXVvdGVk
UHJpbnRhYmxlLmNwcCAqLzsgfTsKKwkJMzc3NURCOTExMzcwQjAzQzAwREJCRkJCIC8qIFF1b3Rl
ZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc3NURCOEYxMzcwQjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5oICovOyB9Owog
CQkzNzdDNENERjEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3QzRDREQxMDE0RTlG
NjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLzsgfTsKIAkJMzc3QzRDRTAxMDE0
RTlGNjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3QzRDREUxMDE0RTlGNjAwQjlBRTQyIC8q
IFBsYWNlaG9sZGVyRG9jdW1lbnQuY3BwICovOyB9OwogCQkzNzg0QzM0QjBFMTFBQTM0MDA3RDhE
NDggLyogRm9udFRyYWl0c01hc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3ODRDMzRBMEUxMUFBMzQwMDdEOEQ0OCAvKiBGb250VHJhaXRzTWFzay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MjI0
LDYgKzcyMjYsOCBAQAogCQkzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhl
bmF0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSHlw
aGVuYXRpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZB
MjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3NzVEQjhFMTM3MEIwM0MwMERCQkZCQiAvKiBRdW90ZWRQ
cmludGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVvdGVk
UHJpbnRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc3NURCOEYxMzcw
QjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBRdW90ZWRQcmludGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzc3QzRDREQxMDE0RTlGNjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhY2Vob2xkZXJEb2N1bWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzdDNENERTEwMTRFOUY2MDBCOUFFNDIgLyogUGxh
Y2Vob2xkZXJEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGFjZWhvbGRlckRvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mzc4NEMzNEEwRTExQUEzNDAwN0Q4RDQ4IC8qIEZvbnRUcmFpdHNNYXNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRUcmFpdHNNYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNzcxMiw2ICsxNzcxNiw4IEBACiAJCQkJRjUxNDJDNjgxMjNGMTJCMDAw
RjVCRDRDIC8qIExvY2FsaXplZE51bWJlci5oICovLAogCQkJCUJDNzZBQzExMEREN0FENUMwMDQx
NUYzNCAvKiBQYXJzZXJVdGlsaXRpZXMuaCAqLywKIAkJCQlCMkMzRDlGQjBEMDA2QzFEMDBFRjZG
MjYgLyogUGxhdGZvcm1TdHJpbmcuaCAqLywKKwkJCQkzNzc1REI4RTEzNzBCMDNDMDBEQkJGQkIg
LyogUXVvdGVkUHJpbnRhYmxlLmNwcCAqLywKKwkJCQkzNzc1REI4RjEzNzBCMDNDMDBEQkJGQkIg
LyogUXVvdGVkUHJpbnRhYmxlLmggKi8sCiAJCQkJQjJDM0Q5RkMwRDAwNkMxRDAwRUY2RjI2IC8q
IFJlZ3VsYXJFeHByZXNzaW9uLmNwcCAqLywKIAkJCQlCMkMzRDlGRDBEMDA2QzFEMDBFRjZGMjYg
LyogUmVndWxhckV4cHJlc3Npb24uaCAqLywKIAkJCQlCMkMzRDlGRTBEMDA2QzFEMDBFRjZGMjYg
LyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLywKQEAgLTIyNzAyLDYgKzIyNzA4LDcgQEAKIAkJCQk5
M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzc3NURCOTExMzcwQjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTM2Miw2ICsyNTM2OSw3IEBACiAJCQkJOTNGMTlC
MDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzc1REI5MDEzNzBCMDNDMDBEQkJGQkIgLyogUXVv
dGVkUHJpbnRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NGVhMWY4N2UxOTMz
MjBiODc3ZTA1ODJiZjQ2YmJiOTk0MDEzY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKQEAgLTAsMCArMSwxNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVvdGVkUHJpbnRhYmxlLmgiCisKKyNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgaW50IGxpbmVNYXhpbXVt
U2l6ZSA9IDc2OworCitzdGF0aWMgY29uc3QgY2hhciBoZXhUYWJsZVtdID0gIjAxMjM0NTY3ODlB
QkNERUYiOworCitzdGF0aWMgY29uc3QgY2hhciBlb2xbXSA9ICJcclxuIjsKKworLy8gUmV0dXJu
cyB0aGUgbGVuZ3RoIGluIGNoYXJhY3RlcnMgb2YgdGhlIEVPTCBmb3VuZCBhdCBpbmRleCwgMCBp
ZiB0aGVyZSBpc24ndCBvbmUuCitzdGF0aWMgaW50IGVvbExlbmd0aEF0SW5kZXgoY29uc3QgY2hh
ciogaW5wdXQsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKGlu
cHV0W2luZGV4XSA9PSAnXG4nKQorICAgICAgICByZXR1cm4gMTsgLy8gU2luZ2xlIExGLgorCisg
ICAgaWYgKGlucHV0W2luZGV4XSA9PSAnXHInKSB7CisgICAgICAgIGlmICgoaW5kZXggKyAxKSA9
PSBsZW5ndGggfHwgaW5wdXRbaW5kZXggKyAxXSAhPSAnXG4nKQorICAgICAgICAgICAgcmV0dXJu
IDE7IC8vIFNpbmdsZSBDUiAoQ29tbW9kb3JlIGFuZCBPbGQgTWFjcykuCisgICAgICAgIHJldHVy
biAyOyAvLyBDUi1MRi4KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworU3RyaW5nIHF1b3Rl
ZFByaW50YWJsZUVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluKQoreworICAgIHJldHVybiBx
dW90ZWRQcmludGFibGVFbmNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCkpOworfQorCitTdHJpbmcg
cXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0IGNoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgLy8gVGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIGluIHRoZSBjdXJyZW50IGxpbmUuCisgICAgdW5zaWduZWQgY2hhckNvdW50ID0gMDsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYm9v
bCBsYXN0Q2hhciA9IChpID09IGxlbmd0aCAtIDEpOworICAgICAgICBjaGFyIGMgPSBpbnB1dFtp
XTsKKyAgICAgICAgYm9vbCByZXF1aXJlc0VuY29kaW5nID0gZmFsc2U7CisgICAgICAgIC8vIEFs
bCBub24tcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMgYW5kID0gcmVxdWlyZSBlbmNvZGluZy4K
KyAgICAgICAgaWYgKChjIDwgJyAnIHx8IGMgPiAnficgfHwgYyA9PSAnPScpICYmIGMgIT0gJ1x0
JykKKyAgICAgICAgICAgIHJlcXVpcmVzRW5jb2RpbmcgPSB0cnVlOworCisgICAgICAgIC8vIFNw
YWNlIGFuZCB0YWIgY2hhcmFjdGVycyBoYXZlIHRvIGJlIGVuY29kZWQgaWYgdGhleSBhcHBlYXIg
YXQgdGhlIGVuZCBvZiBhIGxpbmUuCisgICAgICAgIGlmICghcmVxdWlyZXNFbmNvZGluZyAmJiAo
YyA9PSAnXHQnIHx8IGMgPT0gJyAnKSAmJiAobGFzdENoYXIgfHwgZW9sTGVuZ3RoQXRJbmRleChp
bnB1dCwgaSArIDEsIGxlbmd0aCkpKQorICAgICAgICAgICAgcmVxdWlyZXNFbmNvZGluZyA9IHRy
dWU7CisKKyAgICAgICAgLy8gRW5kIG9mIGxpbmUgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBDUi1M
RiBzZXF1ZW5jZXMuCisgICAgICAgIGlmICghbGFzdENoYXIpIHsKKyAgICAgICAgICAgIGludCBl
b2xMZW4gPSBlb2xMZW5ndGhBdEluZGV4KGlucHV0LCBpLCBsZW5ndGgpOworICAgICAgICAgICAg
aWYgKGVvbExlbiA+IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGVvbCk7Cisg
ICAgICAgICAgICAgICAgY2hhckNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBpICs9IChlb2xM
ZW4gLSAxKTsgLy8gLTEgYmVjYXVzZSB3ZSdsbCArKyBpbiB0aGUgZm9yKCkgYWJvdmUuCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICAvLyBJbnNlcnQgYSBzb2Z0IGxpbmUgYnJlYWsgaWYgbmVjZXNzYXJ5LgorICAgICAgICB1bnNp
Z25lZCBtaW5DaGFyc05lZWRlZCA9IHJlcXVpcmVzRW5jb2RpbmcgPyBsaW5lTWF4aW11bVNpemUg
LSA0IDogbGluZU1heGltdW1TaXplIC0gMjsKKyAgICAgICAgaWYgKCFsYXN0Q2hhciAmJiBjaGFy
Q291bnQgPiBtaW5DaGFyc05lZWRlZCkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPScp
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChlb2wpOworICAgICAgICAgICAgY2hhckNvdW50
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbmFsbHksIGluc2VydCB0aGUgYWN0dWFs
IGNoYXJhY3RlcihzKS4KKyAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RpbmcpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4VGFi
bGVbc3RhdGljX2Nhc3Q8aW50PigoYyA+PiA0KSAmIDB4RildKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoaGV4VGFibGVbc3RhdGljX2Nhc3Q8aW50PihjICYgMHgwRildKTsKKyAgICAgICAg
ICAgIGNoYXJDb3VudCArPSAzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChjKTsKKyAgICAgICAgICAgIGNoYXJDb3VudCsrOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKwordm9pZCBxdW90ZWRQcmludGFibGVE
ZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQpCit7CisgICAg
cXVvdGVkUHJpbnRhYmxlRGVjb2RlKGluLmRhdGEoKSwgaW4uc2l6ZSgpLCBvdXQpOworfQorCit2
b2lkIHF1b3RlZFByaW50YWJsZURlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBkYXRh
TGVuZ3RoLCBWZWN0b3I8Y2hhcj4mIG91dCkKK3sKKyAgICBvdXQuY2xlYXIoKTsKKyAgICBpZiAo
IWRhdGFMZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkYXRhTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgY2hhciBjaGFyYWN0ZXIxID0gZGF0YVtp
XTsKKyAgICAgICAgaWYgKGNoYXJhY3RlcjEgIT0gJz0nKSB7CisgICAgICAgICAgICAvLyBSZWd1
bGFyIGNoYXJhY3RlciwgYXBwZW5kIGFzIGlzLgorICAgICAgICAgICAgb3V0LmFwcGVuZChjaGFy
YWN0ZXIxKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8vIFdl
IGFyZSBkZWFsaW5nIHdpdGggYSAnPXh4JyBzZXF1ZW5jZS4KKyAgICAgICAgaWYgKGRhdGFMZW5n
dGggLSBpIDwgMykgeworICAgICAgICAgICAgLy8gVW5maW5pc2hlZCA9IHNlcXVlbmNlLCBhcHBl
bmQgYXMgaXMuCisgICAgICAgICAgICBvdXQuYXBwZW5kKGNoYXJhY3RlcjEpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgY2hhciBjaGFyYWN0ZXIyID0gZGF0YVsr
K2ldOworICAgICAgICBjaGFyIGNoYXJhY3RlcjMgPSBkYXRhWysraV07CisgICAgICAgIGlmIChj
aGFyYWN0ZXIyID09ICdccicgJiYgY2hhcmFjdGVyMyA9PSAnXG4nKSB7CisgICAgICAgICAgICAv
LyBTb2Z0IGxpbmUgYnJlYWssIGlnbm9yZWQuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGNoYXJhY3RlcjIpIHx8ICFpc0FT
Q0lJSGV4RGlnaXQoY2hhcmFjdGVyMykpIHsKKyAgICAgICAgICAgIC8vIEludmFsaWQgc2VxdWVu
Y2UsID0gZm9sbG93ZWQgYnkgbm9uIGhleCBkaWdpdHMsIGp1c3QgaW5zZXJ0IHRoZSBjaGFycyBh
cyBpcy4KKyAgICAgICAgICAgIG91dC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIG91dC5hcHBl
bmQoY2hhcmFjdGVyMik7CisgICAgICAgICAgICBvdXQuYXBwZW5kKGNoYXJhY3RlcjMpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpbnQgaTEgPSB0b0FTQ0lJ
SGV4VmFsdWUoY2hhcmFjdGVyMik7CisgICAgICAgIGludCBpMiA9IHRvQVNDSUlIZXhWYWx1ZShj
aGFyYWN0ZXIzKTsKKyAgICAgICAgY2hhciBkZWNvZGVkQ2hhcmFjdGVyID0gc3RhdGljX2Nhc3Q8
Y2hhcj4oKChpMSA8PCA0KSAmIDB4RjApIHwgKGkyICYgMHgwRikpOworICAgICAgICBvdXQuYXBw
ZW5kKGRlY29kZWRDaGFyYWN0ZXIpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkzZmM1YmVlMzQ5
ZGI0OTRjZDA3NTY3NDhjZjNjMGY1Zjc4ZTA2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmgKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUXVvdGVkUHJpbnRhYmxlX2gKKyNkZWZpbmUgUXVvdGVkUHJpbnRhYmxlX2gKKworI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0
IFZlY3RvcjxjaGFyPiYpOworU3RyaW5nIHF1b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBjaGFy
KiwgdW5zaWduZWQpOworCit2b2lkIHF1b3RlZFByaW50YWJsZURlY29kZShjb25zdCBWZWN0b3I8
Y2hhcj4mLCBWZWN0b3I8Y2hhcj4mKTsKK3ZvaWQgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCwgVmVjdG9yPGNoYXI+Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFF1b3RlZFByaW50YWJsZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92429</attachid>
            <date>2011-05-05 09:52:33 -0700</date>
            <delta_ts>2011-05-05 15:57:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59834-20110505095232.patch</filename>
            <type>text/plain</type>
            <size>17980</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQy
ZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uNjgwNmM2MmQyOTc0ZWI0NTljNmFk
MmFhYWZlZTUzNWU0N2UxNGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjcsMTAgKzEx
NjcsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0
L0h5cGhlbmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKICAgICBw
bGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcAor
ICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQv
UmVndWxhckV4cHJlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5NzVjMGU1
OWMxYTVjMDk4ZWJkZDM0OTNiZTc0OTZkYzAwOTcwYi4uNzUxZTNjMWIzZTU3N2Q2ODU1MjdhYmU2
MjA1ZDY2ZmI0N2IwODA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA1LTAy
ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcXVvdGVkLXByaW50YWJsZSBl
bmNvZGluZy9kZWNvZGluZyBjYXBhYmlsaXRpZXMuCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGZv
ciBNSFRNTCBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTk4MzQKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvUXVvdGVkUHJpbnRhYmxlLmg6IEFkZGVkLgorCiAyMDExLTA1LTAyICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxN2YyYTVmOGEz
ODk4ODBjN2RmNWYxZDI5ZTk2MmJjODAyMmFhNDA0Li43MTlhOWUyMWY5YWM4Zjk4ZDg4NWEyNjNm
ZGZjZjVkMmY1Yjk2YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2Mjgs
NiArMjYyOCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9QYXJzZXJVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybVN0cmluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3Rl
ZFByaW50YWJsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Np
b24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggNTkwZWJjMjU5MWU5MzdjYTUwZTZkMjhiZjRmOTU4ZmZiNzk2
MGUwMi4uMDE1NmNjMmI4MjVhMWQxNDRmMmU2ZGVmNDMyZWMwNWQxMjIwMTc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNDg5NCw2ICs0ODk0LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L0xvY2FsaXplZE51bWJlcklDVS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUGFyc2Vy
VXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxl
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjE1YzNmZWUzYjA3
YjU4ZjlmMTZiMzc5OTk3ZWEwYzUzYWZmYTc2NS4uYWUxODFjZjIxNDMwNDFhMDlkZjU0MDI0M2Yx
MmYxYzU2YWY5NmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk0Niw2ICs5NDYsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyTm9uZS5jcHAgXAorICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBc
CiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCkBAIC0yMDMz
LDYgKzIwMzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL3RleHQvSHlw
aGVuYXRpb24uaCBcCisgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBcCiAgICAg
cGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3Vs
YXJFeHByZXNzaW9uLmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjYzM0
OTMyYWE1ZmI5ZTUxYjE4YWYxNjhjY2Y4Nzg2YzYxYTAzMDExLi40ZDcxYzhiZmFiMGI2YTgxMzcw
MmVmYzk0Y2EwNzA4ZmZhODUzMzYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzA0ODAsNiArMzA0ODAsMTQgQEAKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFBsYXRmb3JtU3RyaW5nLmgiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0
XFF1b3RlZFByaW50YWJsZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50
YWJsZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxSZWd1bGFyRXhwcmVzc2lvbi5jcHAiCiAJCQkJCT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjNDk2MDRmMjk4ZjRlMmM1MjEzNzk4YTE3MTc2MzdmOGY4YzM1ZDBiLi5kMTk5OWQ4OWM3
NGMyNjdkNGUwZGNmNTg3YWE2YzgxNmI2MTQ1NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OTIsNiArNzkyLDggQEAKIAkJ
Mzc1Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkg
LyogSHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc1Q0QyM0IxMTlENDRFQTAwQTJBODU5IC8qIEh5
cGhlbmF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0aW9uTWFjLm1tICovOyB9
OwogCQkzNzc0QUJBNTBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJB
MzBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzc3NURCOTAxMzcwQjAz
QzAwREJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc1REI4RTEzNzBCMDNDMDBEQkJGQkIgLyogUXVvdGVk
UHJpbnRhYmxlLmNwcCAqLzsgfTsKKwkJMzc3NURCOTExMzcwQjAzQzAwREJCRkJCIC8qIFF1b3Rl
ZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc3NURCOEYxMzcwQjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5oICovOyB9Owog
CQkzNzdDNENERjEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3QzRDREQxMDE0RTlG
NjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLzsgfTsKIAkJMzc3QzRDRTAxMDE0
RTlGNjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3QzRDREUxMDE0RTlGNjAwQjlBRTQyIC8q
IFBsYWNlaG9sZGVyRG9jdW1lbnQuY3BwICovOyB9OwogCQkzNzg0QzM0QjBFMTFBQTM0MDA3RDhE
NDggLyogRm9udFRyYWl0c01hc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3ODRDMzRBMEUxMUFBMzQwMDdEOEQ0OCAvKiBGb250VHJhaXRzTWFzay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MjI0
LDYgKzcyMjYsOCBAQAogCQkzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhl
bmF0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSHlw
aGVuYXRpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZB
MjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3NzVEQjhFMTM3MEIwM0MwMERCQkZCQiAvKiBRdW90ZWRQ
cmludGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVvdGVk
UHJpbnRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc3NURCOEYxMzcw
QjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBRdW90ZWRQcmludGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzc3QzRDREQxMDE0RTlGNjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhY2Vob2xkZXJEb2N1bWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzdDNENERTEwMTRFOUY2MDBCOUFFNDIgLyogUGxh
Y2Vob2xkZXJEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGFjZWhvbGRlckRvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mzc4NEMzNEEwRTExQUEzNDAwN0Q4RDQ4IC8qIEZvbnRUcmFpdHNNYXNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRUcmFpdHNNYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNzcxMiw2ICsxNzcxNiw4IEBACiAJCQkJRjUxNDJDNjgxMjNGMTJCMDAw
RjVCRDRDIC8qIExvY2FsaXplZE51bWJlci5oICovLAogCQkJCUJDNzZBQzExMEREN0FENUMwMDQx
NUYzNCAvKiBQYXJzZXJVdGlsaXRpZXMuaCAqLywKIAkJCQlCMkMzRDlGQjBEMDA2QzFEMDBFRjZG
MjYgLyogUGxhdGZvcm1TdHJpbmcuaCAqLywKKwkJCQkzNzc1REI4RTEzNzBCMDNDMDBEQkJGQkIg
LyogUXVvdGVkUHJpbnRhYmxlLmNwcCAqLywKKwkJCQkzNzc1REI4RjEzNzBCMDNDMDBEQkJGQkIg
LyogUXVvdGVkUHJpbnRhYmxlLmggKi8sCiAJCQkJQjJDM0Q5RkMwRDAwNkMxRDAwRUY2RjI2IC8q
IFJlZ3VsYXJFeHByZXNzaW9uLmNwcCAqLywKIAkJCQlCMkMzRDlGRDBEMDA2QzFEMDBFRjZGMjYg
LyogUmVndWxhckV4cHJlc3Npb24uaCAqLywKIAkJCQlCMkMzRDlGRTBEMDA2QzFEMDBFRjZGMjYg
LyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLywKQEAgLTIyNzAyLDYgKzIyNzA4LDcgQEAKIAkJCQk5
M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzc3NURCOTExMzcwQjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTM2Miw2ICsyNTM2OSw3IEBACiAJCQkJOTNGMTlC
MDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzc1REI5MDEzNzBCMDNDMDBEQkJGQkIgLyogUXVv
dGVkUHJpbnRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNTQ4NzhkZTRkNTE4
ODEyZDEwNjU5NzcxNmEyYzllZDU0MzQ0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKQEAgLTAsMCArMSwxNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVvdGVkUHJpbnRhYmxlLmgiCisKKyNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1M
aW5lTGVuZ3RoID0gNzY7CitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1MaW5lTGVuZ3RoVG9G
aXRFbmNvZGVkQ2hhcmFjdGVyID0gbWF4aW11bUxpbmVMZW5ndGggLSA0Oworc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhpbXVtTGluZUxlbmd0aFRvRml0Tm9uRW5jb2RlZENoYXJhY3RlciA9IG1heGlt
dW1MaW5lTGVuZ3RoIC0gMjsKKworc3RhdGljIGNvbnN0IGNoYXIgaGV4VGFibGVbXSA9ICIwMTIz
NDU2Nzg5QUJDREVGIjsKKworc3RhdGljIGNvbnN0IGNoYXIgY3JsZkxpbmVFbmRpbmdbXSA9ICJc
clxuIjsKKworc3RhdGljIHNpemVfdCBsZW5ndGhPZkxpbmVFbmRpbmdBdEluZGV4KGNvbnN0IGNo
YXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgaW5kZXgpCit7CisgICAgQVNTRVJUKGlu
ZGV4IDwgbGVuZ3RoKTsKKyAgICBpZiAoaW5wdXRbaW5kZXhdID09ICdcbicpCisgICAgICAgIHJl
dHVybiAxOyAvLyBTaW5nbGUgTEYuCisKKyAgICBpZiAoaW5wdXRbaW5kZXhdID09ICdccicpIHsK
KyAgICAgICAgaWYgKChpbmRleCArIDEpID09IGxlbmd0aCB8fCBpbnB1dFtpbmRleCArIDFdICE9
ICdcbicpCisgICAgICAgICAgICByZXR1cm4gMTsgLy8gU2luZ2xlIENSIChDb21tb2RvcmUgYW5k
IE9sZCBNYWNzKS4KKyAgICAgICAgcmV0dXJuIDI7IC8vIENSLUxGLgorICAgIH0KKworICAgIHJl
dHVybiAwOworfQorCitTdHJpbmcgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0IFZlY3Rvcjxj
aGFyPiYgaW4pCit7CisgICAgcmV0dXJuIHF1b3RlZFByaW50YWJsZUVuY29kZShpbi5kYXRhKCks
IGluLnNpemUoKSk7Cit9CisKK1N0cmluZyBxdW90ZWRQcmludGFibGVFbmNvZGUoY29uc3QgY2hh
ciogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Cisg
ICAgc2l6ZV90IGN1cnJlbnRMaW5lTGVuZ3RoID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGJvb2wgaXNMYXN0Q2hhcmFjdGVyID0gKGkgPT0g
bGVuZ3RoIC0gMSk7CisgICAgICAgIGNoYXIgY3VycmVudENoYXJhY3RlciA9IGlucHV0W2ldOwor
ICAgICAgICBib29sIHJlcXVpcmVzRW5jb2RpbmcgPSBmYWxzZTsKKyAgICAgICAgLy8gQWxsIG5v
bi1wcmludGFibGUgQVNDSUkgY2hhcmFjdGVycyBhbmQgPSByZXF1aXJlIGVuY29kaW5nLgorICAg
ICAgICBpZiAoKGN1cnJlbnRDaGFyYWN0ZXIgPCAnICcgfHwgY3VycmVudENoYXJhY3RlciA+ICd+
JyB8fCBjdXJyZW50Q2hhcmFjdGVyID09ICc9JykgJiYgY3VycmVudENoYXJhY3RlciAhPSAnXHQn
KQorICAgICAgICAgICAgcmVxdWlyZXNFbmNvZGluZyA9IHRydWU7CisKKyAgICAgICAgLy8gU3Bh
Y2UgYW5kIHRhYiBjaGFyYWN0ZXJzIGhhdmUgdG8gYmUgZW5jb2RlZCBpZiB0aGV5IGFwcGVhciBh
dCB0aGUgZW5kIG9mIGEgbGluZS4KKyAgICAgICAgaWYgKCFyZXF1aXJlc0VuY29kaW5nICYmIChj
dXJyZW50Q2hhcmFjdGVyID09ICdcdCcgfHwgY3VycmVudENoYXJhY3RlciA9PSAnICcpICYmIChp
c0xhc3RDaGFyYWN0ZXIgfHwgbGVuZ3RoT2ZMaW5lRW5kaW5nQXRJbmRleChpbnB1dCwgbGVuZ3Ro
LCBpICsgMSkpKQorICAgICAgICAgICAgcmVxdWlyZXNFbmNvZGluZyA9IHRydWU7CisKKyAgICAg
ICAgLy8gRW5kIG9mIGxpbmUgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBDUi1MRiBzZXF1ZW5jZXMu
CisgICAgICAgIGlmICghaXNMYXN0Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICBzaXplX3QgbGVu
Z3RoT2ZMaW5lRW5kaW5nID0gbGVuZ3RoT2ZMaW5lRW5kaW5nQXRJbmRleChpbnB1dCwgbGVuZ3Ro
LCBpKTsKKyAgICAgICAgICAgIGlmIChsZW5ndGhPZkxpbmVFbmRpbmcgPiAwKSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChjcmxmTGluZUVuZGluZyk7CisgICAgICAgICAgICAgICAg
Y3VycmVudExpbmVMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIGkgKz0gKGxlbmd0aE9mTGlu
ZUVuZGluZyAtIDEpOyAvLyAtMSBiZWNhdXNlIHdlJ2xsICsrIGluIHRoZSBmb3IoKSBhYm92ZS4K
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEluc2VydCBhIHNvZnQgbGluZSBicmVhayBpZiBuZWNlc3NhcnkuCisgICAgICAg
IHNpemVfdCBtYXhpbXVtTGluZUxlbmd0aFRvRml0Q2hhcmFjdGVyICA9IHJlcXVpcmVzRW5jb2Rp
bmcgPyBtYXhpbXVtTGluZUxlbmd0aFRvRml0RW5jb2RlZENoYXJhY3RlciA6IG1heGltdW1MaW5l
TGVuZ3RoVG9GaXROb25FbmNvZGVkQ2hhcmFjdGVyOworICAgICAgICBpZiAoIWlzTGFzdENoYXJh
Y3RlciAmJiBjdXJyZW50TGluZUxlbmd0aCA+IG1heGltdW1MaW5lTGVuZ3RoVG9GaXRDaGFyYWN0
ZXIpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoY3JsZkxpbmVFbmRpbmcpOworICAgICAgICAgICAgY3VycmVudExpbmVMZW5ndGgg
PSAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmluYWxseSwgaW5zZXJ0IHRoZSBhY3R1YWwg
Y2hhcmFjdGVyKHMpLgorICAgICAgICBpZiAocmVxdWlyZXNFbmNvZGluZykgeworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnPScpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXhUYWJs
ZVtzdGF0aWNfY2FzdDxpbnQ+KChjdXJyZW50Q2hhcmFjdGVyID4+IDQpICYgMHhGKV0pOworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXhUYWJsZVtzdGF0aWNfY2FzdDxpbnQ+KGN1cnJlbnRD
aGFyYWN0ZXIgJiAweEYpXSk7CisgICAgICAgICAgICBjdXJyZW50TGluZUxlbmd0aCArPSAzOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjdXJyZW50Q2hhcmFj
dGVyKTsKKyAgICAgICAgICAgIGN1cnJlbnRMaW5lTGVuZ3RoKys7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCit2b2lkIHF1b3RlZFByaW50YWJs
ZURlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBWZWN0b3I8Y2hhcj4mIG91dCkKK3sKKyAg
ICBxdW90ZWRQcmludGFibGVEZWNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCksIG91dCk7Cit9CisK
K3ZvaWQgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoLCBWZWN0b3I8Y2hhcj4mIG91dCkKK3sKKyAgICBvdXQuY2xlYXIoKTsKKyAgICBpZiAo
IWRhdGFMZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGF0YUxlbmd0aDsgKytpKSB7CisgICAgICAgIGNoYXIgY3VycmVudENoYXJhY3RlciA9IGRh
dGFbaV07CisgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyICE9ICc9JykgeworICAgICAgICAg
ICAgb3V0LmFwcGVuZChjdXJyZW50Q2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisgICAgICAgIC8vIFdlIGFyZSBkZWFsaW5nIHdpdGggYSAnPXh4JyBzZXF1ZW5j
ZS4KKyAgICAgICAgaWYgKGRhdGFMZW5ndGggLSBpIDwgMykgeworICAgICAgICAgICAgLy8gVW5m
aW5pc2hlZCA9IHNlcXVlbmNlLCBhcHBlbmQgYXMgaXMuCisgICAgICAgICAgICBvdXQuYXBwZW5k
KGN1cnJlbnRDaGFyYWN0ZXIpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgY2hhciB1cHBlckNoYXJhY3RlciA9IGRhdGFbKytpXTsKKyAgICAgICAgY2hhciBsb3dl
ckNoYXJhY3RlciA9IGRhdGFbKytpXTsKKyAgICAgICAgaWYgKHVwcGVyQ2hhcmFjdGVyID09ICdc
cicgJiYgbG93ZXJDaGFyYWN0ZXIgPT0gJ1xuJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KHVwcGVyQ2hhcmFjdGVyKSB8fCAhaXNBU0NJSUhl
eERpZ2l0KGxvd2VyQ2hhcmFjdGVyKSkgeworICAgICAgICAgICAgLy8gSW52YWxpZCBzZXF1ZW5j
ZSwgPSBmb2xsb3dlZCBieSBub24gaGV4IGRpZ2l0cywganVzdCBpbnNlcnQgdGhlIGNoYXJhY3Rl
cnMgYXMgaXMuCisgICAgICAgICAgICBvdXQuYXBwZW5kKCc9Jyk7CisgICAgICAgICAgICBvdXQu
YXBwZW5kKHVwcGVyQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgIG91dC5hcHBlbmQobG93ZXJDaGFy
YWN0ZXIpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpbnQg
dXBwZXJWYWx1ZSA9IHRvQVNDSUlIZXhWYWx1ZSh1cHBlckNoYXJhY3Rlcik7CisgICAgICAgIGlu
dCBsb3dlclZhbHVlID0gdG9BU0NJSUhleFZhbHVlKGxvd2VyQ2hhcmFjdGVyKTsKKyAgICAgICAg
Y2hhciBkZWNvZGVkQ2hhcmFjdGVyID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKCh1cHBlclZhbHVlIDw8
IDQpICYgMHhGMCkgfCAobG93ZXJWYWx1ZSAmIDB4MEYpKTsKKyAgICAgICAgb3V0LmFwcGVuZChk
ZWNvZGVkQ2hhcmFjdGVyKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMjU1NWIwNmQxNDk0NzIz
MTE2ZTlhMGQ0Yjk1YWJmZjE4OTdiZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFF1b3RlZFByaW50YWJsZV9oCisjZGVmaW5lIFF1b3RlZFByaW50YWJsZV9oCisKKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIHF1b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBWZWN0
b3I8Y2hhcj4mKTsKK1N0cmluZyBxdW90ZWRQcmludGFibGVFbmNvZGUoY29uc3QgY2hhciosIHNp
emVfdCk7CisKK3ZvaWQgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYs
IFZlY3RvcjxjaGFyPiYpOwordm9pZCBxdW90ZWRQcmludGFibGVEZWNvZGUoY29uc3QgY2hhcios
IHNpemVfdCwgVmVjdG9yPGNoYXI+Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFF1b3RlZFByaW50YWJsZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92486</attachid>
            <date>2011-05-05 15:57:25 -0700</date>
            <delta_ts>2011-05-05 16:00:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59834-20110505155724.patch</filename>
            <type>text/plain</type>
            <size>21048</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRk
MDhmYmIyZWY2YzgzYTliOGQ2MWJmZDcxMzI0MGY4ZjcyNTAwZjguLjZkZTFhODAyNWE4Zjg1ODAw
ZWQ4MDM2ODFlNTY4YmFiMDcxYTdiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTA1LTA1ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBjb252ZW5pZW5jZSBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBhIGJ5dGUgdG8gaGV4IEFTQ0lJ
IGRpZ2l0CisgICAgICAgIGNoYXJhY3RlcnMgYW5kIHZpY2UtdmVyc2EuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgzNAorCisgICAgICAgICogd3Rm
L0FTQ0lJQ1R5cGUuaDoKKyAgICAgICAgKFdURjo6dG9BU0NJSUhleFZhbHVlKToKKyAgICAgICAg
KFdURjo6bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQpOgorICAgICAgICAoV1RGOjp1cHBlck5p
YmJsZVRvQVNDSUlIZXhEaWdpdCk6CisKIDIwMTEtMDUtMDIgIEdhYm9yIExva2kgIDxsb2tpQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGRmaXggZm9yIEFSTSBhZnRlciByODU0NDgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgKaW5kZXggYzE5Yjg1YWZmYzg3MjIwYjFkNWE2
ZWQwNGE0NjRlNWFhYmQzODZiMS4uODNmMjc0YjdiMWMxY2JiZTU3NGNhZmEyMTdhM2I0ZGQzOTdk
YWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgKQEAgLTE0Niw2ICsx
NDYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgdW5zaWduZWQgdG9BU0NJSVVwcGVy
KHVuc2lnbmVkIGMpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjICYgfigoYyA+PSAn
YScgJiYgYyA8PSAneicpIDw8IDUpKTsgfQogCiAgICAgaW5saW5lIGludCB0b0FTQ0lJSGV4VmFs
dWUoY2hhciBjKSB7IEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQoYykpOyByZXR1cm4gYyA8ICdBJyA/
IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4RjsgfQorICAgIGlubGluZSBpbnQgdG9BU0NJ
SUhleFZhbHVlKGNoYXIgdXBwZXJWYWx1ZSwgY2hhciBsb3dlclZhbHVlKSB7IEFTU0VSVChpc0FT
Q0lJSGV4RGlnaXQodXBwZXJWYWx1ZSkgJiYgaXNBU0NJSUhleERpZ2l0KGxvd2VyVmFsdWUpKTsg
cmV0dXJuICgodG9BU0NJSUhleFZhbHVlKHVwcGVyVmFsdWUpIDw8IDQpICYgMHhGMCkgfCB0b0FT
Q0lJSGV4VmFsdWUobG93ZXJWYWx1ZSk7IH0KICAgICBpbmxpbmUgaW50IHRvQVNDSUlIZXhWYWx1
ZSh1bnNpZ25lZCBzaG9ydCBjKSB7IEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQoYykpOyByZXR1cm4g
YyA8ICdBJyA/IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4RjsgfQogI2lmICFDT01QSUxF
UihNU1ZDKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQogICAgIGlubGluZSBp
bnQgdG9BU0NJSUhleFZhbHVlKHdjaGFyX3QgYykgeyBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KGMp
KTsgcmV0dXJuIGMgPCAnQScgPyBjIC0gJzAnIDogKGMgLSAnQScgKyAxMCkgJiAweEY7IH0KQEAg
LTE1Myw2ICsxNTQsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgaW50IHRvQVNDSUlI
ZXhWYWx1ZShpbnQgYykgeyBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KGMpKTsgcmV0dXJuIGMgPCAn
QScgPyBjIC0gJzAnIDogKGMgLSAnQScgKyAxMCkgJiAweEY7IH0KICAgICBpbmxpbmUgaW50IHRv
QVNDSUlIZXhWYWx1ZSh1bnNpZ25lZCBjKSB7IEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQoYykpOyBy
ZXR1cm4gYyA8ICdBJyA/IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4RjsgfQogCisgICAg
aW5saW5lIGNoYXIgbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoY2hhciBjKSB7IGNoYXIgbmli
YmxlID0gYyAmIDB4RjsgcmV0dXJuIG5pYmJsZSA8IDEwID8gJzAnICsgbmliYmxlIDogJ0EnICsg
bmliYmxlIC0gMTA7IH0KKyAgICBpbmxpbmUgY2hhciB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dChjaGFyIGMpIHsgY2hhciBuaWJibGUgPSAoYyA+PiA0KSAmIDB4RjsgcmV0dXJuIG5pYmJsZSA8
IDEwID8gJzAnICsgbmliYmxlIDogJ0EnICsgbmliYmxlIC0gMTA7IH0KKwogICAgIGlubGluZSBi
b29sIGlzQVNDSUlQcmludGFibGUoY2hhciBjKSB7IHJldHVybiBjID49ICcgJyAmJiBjIDw9ICd+
JzsgfQogICAgIGlubGluZSBib29sIGlzQVNDSUlQcmludGFibGUodW5zaWduZWQgc2hvcnQgYykg
eyByZXR1cm4gYyA+PSAnICcgJiYgYyA8PSAnfic7IH0KICNpZiAhQ09NUElMRVIoTVNWQykgfHwg
ZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKQEAgLTE3NSw1ICsxNzksNyBAQCB1c2lu
ZyBXVEY6OmlzQVNDSUlVcHBlcjsKIHVzaW5nIFdURjo6dG9BU0NJSUhleFZhbHVlOwogdXNpbmcg
V1RGOjp0b0FTQ0lJTG93ZXI7CiB1c2luZyBXVEY6OnRvQVNDSUlVcHBlcjsKK3VzaW5nIFdURjo6
bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQ7Cit1c2luZyBXVEY6OnVwcGVyTmliYmxlVG9BU0NJ
SUhleERpZ2l0OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQyZjU5MTMw
ZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uNjgwNmM2MmQyOTc0ZWI0NTljNmFkMmFhYWZl
ZTUzNWU0N2UxNGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjcsMTAgKzExNjcsMTEg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwCiAg
ICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0L0h5cGhl
bmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKICAgICBwbGF0Zm9y
bS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyTm9uZS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcAorICAgIHBs
YXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQvUmVndWxh
ckV4cHJlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCiAg
ICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5NzVjMGU1OWMxYTVj
MDk4ZWJkZDM0OTNiZTc0OTZkYzAwOTcwYi4uZGY1NjYyYjE2MThmNmUwNzg4MzI0NGQ1ZjM2MmZh
MzRkOTdmNDdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTA1LTA1ICBKYXkg
Q2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlIHNob3VsZCBoYXZlIFF1b3RlZFByaW50
YWJsZSBlbmNvZGluZyBjYXBhYmlsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5ODM0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEp
CisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsZW5ndGhPZkxpbmVFbmRpbmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OnF1b3RlZFByaW50YWJsZUVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpxdW90ZWRQcmludGFi
bGVEZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmg6CisK
KzIwMTEtMDUtMDIgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBxdW90ZWQt
cHJpbnRhYmxlIGVuY29kaW5nL2RlY29kaW5nIGNhcGFiaWxpdGllcy4KKyAgICAgICAgVGhpcyBp
cyBuZWVkZWQgZm9yIE1IVE1MIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01OTgzNAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaDogQWRkZWQuCisKIDIwMTEtMDUtMDIg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDE3ZjJhNWY4YTM4OTg4MGM3ZGY1ZjFkMjllOTYyYmM4MDIyYWE0MDQuLjcxOWE5ZTIxZjlhYzhm
OThkODg1YTI2M2ZkZmNmNWQyZjViOTZhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMjYyOCw2ICsyNjI4LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJlck5vbmUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1BhcnNlclV0aWxpdGllcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5nLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9RdW90ZWRQcmludGFibGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9SZWd1
bGFyRXhwcmVzc2lvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxh
ckV4cHJlc3Npb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRT
dHJpbmcuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1OTBlYmMyNTkxZTkzN2NhNTBlNmQyOGJm
NGY5NThmZmI3OTYwZTAyLi4wMTU2Y2MyYjgyNWExZDE0NGYyZTZkZWY0MzJlYzA1ZDEyMjAxNzQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC00ODk0LDYgKzQ4OTQsOCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVySUNVLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
dGV4dC9QYXJzZXJVdGlsaXRpZXMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9RdW90
ZWRQcmludGFibGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFi
bGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA2
MTVjM2ZlZTNiMDdiNThmOWYxNmIzNzk5OTdlYTBjNTNhZmZhNzY1Li5hZTE4MWNmMjE0MzA0MWEw
OWRmNTQwMjQzZjEyZjFjNTZhZjk2YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtOTQ2LDYgKzk0Niw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4
dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCisgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmlu
dGFibGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3Jt
L0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3Bw
IFwKQEAgLTIwMzMsNiArMjAzNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQv
QmFzZTY0LmggXAogICAgIHBsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9IeXBoZW5hdGlvbi5oIFwKKyAgICBwbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJs
ZS5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L3F0L1RleHRDb2RlY1F0LmggXAogICAgIHBsYXRmb3Jt
L3RleHQvUmVndWxhckV4cHJlc3Npb24uaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRT
dHJpbmcuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IGNjMzQ5MzJhYTVmYjllNTFiMThhZjE2OGNjZjg3ODZjNjFhMDMwMTEuLjRkNzFjOGJm
YWIwYjZhODEzNzAyZWZjOTRjYTA3MDhmZmE4NTMzNjEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMDQ4MCw2ICszMDQ4MCwxNCBAQAogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcUGxhdGZvcm1TdHJpbmcuaCIKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXHRleHRcUXVvdGVkUHJpbnRhYmxlLmNwcCIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmls
ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRc
UXVvdGVkUHJpbnRhYmxlLmgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CiAJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFJlZ3VsYXJFeHByZXNzaW9uLmNw
cCIKIAkJCQkJPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGM0OTYwNGYyOThmNGUyYzUyMTM3OThhMTcxNzYzN2Y4ZjhjMzVkMGIu
LmQxOTk5ZDg5Yzc0YzI2N2Q0ZTBkY2Y1ODdhYTZjODE2YjYxNDU3MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5Miw2ICs3
OTIsOCBAQAogCQkzNzVDRDIzMjExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUNEMjMxMTE5RDQz
QzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovOyB9OwogCQkzNzVDRDIzQjExOUQ0NEVBMDBB
MkE4NTkgLyogSHlwaGVuYXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzOTExOUQ0NEVBMDBBMkE4NTkgLyogSHlwaGVuYXRpb25N
YWMubW0gKi87IH07CiAJCTM3NzRBQkE1MEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJl
cXVlc3RDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzNzc1
REI5MDEzNzBCMDNDMDBEQkJGQkIgLyogUXVvdGVkUHJpbnRhYmxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzVEQjhFMTM3MEIwM0MwMERCQkZC
QiAvKiBRdW90ZWRQcmludGFibGUuY3BwICovOyB9OworCQkzNzc1REI5MTEzNzBCMDNDMDBEQkJG
QkIgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzc1REI4RjEzNzBCMDNDMDBEQkJGQkIgLyogUXVvdGVkUHJpbnRhYmxl
LmggKi87IH07CiAJCTM3N0M0Q0RGMTAxNEU5RjYwMEI5QUU0MiAvKiBQbGFjZWhvbGRlckRvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzdD
NENERDEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5oICovOyB9OwogCQkz
NzdDNENFMDEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzdDNENERTEwMTRFOUY2
MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5jcHAgKi87IH07CiAJCTM3ODRDMzRCMEUx
MUFBMzQwMDdEOEQ0OCAvKiBGb250VHJhaXRzTWFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc4NEMzNEEwRTExQUEzNDAwN0Q4RDQ4IC8qIEZvbnRU
cmFpdHNNYXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTcyMjQsNiArNzIyNiw4IEBACiAJCTM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAvKiBI
eXBoZW5hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIeXBoZW5hdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzVDRDIzOTExOUQ0NEVBMDBBMkE4
NTkgLyogSHlwaGVuYXRpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBIeXBoZW5hdGlvbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc3NURCOEUxMzcwQjAzQzAwREJCRkJC
IC8qIFF1b3RlZFByaW50YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBRdW90ZWRQcmludGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
Nzc1REI4RjEzNzBCMDNDMDBEQkJGQkIgLyogUXVvdGVkUHJpbnRhYmxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3RlZFByaW50YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzNzdDNENERDEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGFjZWhvbGRlckRvY3Vt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3N0M0Q0RFMTAxNEU5RjYwMEI5
QUU0MiAvKiBQbGFjZWhvbGRlckRvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBsYWNlaG9sZGVyRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzNzg0QzM0QTBFMTFBQTM0MDA3RDhENDggLyogRm9udFRyYWl0c01hc2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFRyYWl0c01hc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NzEyLDYgKzE3NzE2LDggQEAKIAkJCQlGNTE0MkM2
ODEyM0YxMkIwMDBGNUJENEMgLyogTG9jYWxpemVkTnVtYmVyLmggKi8sCiAJCQkJQkM3NkFDMTEw
REQ3QUQ1QzAwNDE1RjM0IC8qIFBhcnNlclV0aWxpdGllcy5oICovLAogCQkJCUIyQzNEOUZCMEQw
MDZDMUQwMEVGNkYyNiAvKiBQbGF0Zm9ybVN0cmluZy5oICovLAorCQkJCTM3NzVEQjhFMTM3MEIw
M0MwMERCQkZCQiAvKiBRdW90ZWRQcmludGFibGUuY3BwICovLAorCQkJCTM3NzVEQjhGMTM3MEIw
M0MwMERCQkZCQiAvKiBRdW90ZWRQcmludGFibGUuaCAqLywKIAkJCQlCMkMzRDlGQzBEMDA2QzFE
MDBFRjZGMjYgLyogUmVndWxhckV4cHJlc3Npb24uY3BwICovLAogCQkJCUIyQzNEOUZEMEQwMDZD
MUQwMEVGNkYyNiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5oICovLAogCQkJCUIyQzNEOUZFMEQwMDZD
MUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwICovLApAQCAtMjI3MDIsNiArMjI3MDgs
NyBAQAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVT
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNT
RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzNzc1REI5MTEzNzBCMDNDMDBEQkJGQkIgLyog
UXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MzYyLDYgKzI1MzY5LDcgQEAK
IAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmlj
b2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3NzVEQjkwMTM3MEIwM0MwMERC
QkZCQiAvKiBRdW90ZWRQcmludGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA4
ZDM5NDVmZTg3OGNkMjkyMjU2MzdiYWM0MmFlZTExNmIyYWU1YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcApAQCAtMCww
ICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdW90ZWRQcmludGFibGUu
aCIKKworI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtTGluZUxlbmd0aCA9IDc2OworCitzdGF0aWMg
Y29uc3QgY2hhciBoZXhUYWJsZVtdID0gIjAxMjM0NTY3ODlBQkNERUYiOworCitzdGF0aWMgY29u
c3QgY2hhciBjcmxmTGluZUVuZGluZ1tdID0gIlxyXG4iOworCitzdGF0aWMgc2l6ZV90IGxlbmd0
aE9mTGluZUVuZGluZ0F0SW5kZXgoY29uc3QgY2hhciogaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0
aCwgc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IGlucHV0TGVuZ3RoKTsKKyAg
ICBpZiAoaW5wdXRbaW5kZXhdID09ICdcbicpCisgICAgICAgIHJldHVybiAxOyAvLyBTaW5nbGUg
TEYuCisKKyAgICBpZiAoaW5wdXRbaW5kZXhdID09ICdccicpIHsKKyAgICAgICAgaWYgKChpbmRl
eCArIDEpID09IGlucHV0TGVuZ3RoIHx8IGlucHV0W2luZGV4ICsgMV0gIT0gJ1xuJykKKyAgICAg
ICAgICAgIHJldHVybiAxOyAvLyBTaW5nbGUgQ1IgKENsYXNzaWMgTWFjIE9TKS4KKyAgICAgICAg
cmV0dXJuIDI7IC8vIENSLUxGLgorICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIHF1
b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBWZWN0b3I8Y2hhcj4m
IG91dCkKK3sKKyAgICBxdW90ZWRQcmludGFibGVFbmNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCks
IG91dCk7Cit9CisKK3ZvaWQgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0IGNoYXIqIGlucHV0
LCBzaXplX3QgaW5wdXRMZW5ndGgsIFZlY3RvcjxjaGFyPiYgb3V0KQoreworICAgIG91dC5jbGVh
cigpOworICAgIG91dC5yZXNlcnZlQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOworICAgIHNpemVfdCBj
dXJyZW50TGluZUxlbmd0aCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnB1dExl
bmd0aDsgKytpKSB7CisgICAgICAgIGJvb2wgaXNMYXN0Q2hhcmFjdGVyID0gKGkgPT0gaW5wdXRM
ZW5ndGggLSAxKTsKKyAgICAgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVyID0gaW5wdXRbaV07Cisg
ICAgICAgIGJvb2wgcmVxdWlyZXNFbmNvZGluZyA9IGZhbHNlOworICAgICAgICAvLyBBbGwgbm9u
LXByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXJzIGFuZCA9IHJlcXVpcmUgZW5jb2RpbmcuCisgICAg
ICAgIGlmICgoY3VycmVudENoYXJhY3RlciA8ICcgJyB8fCBjdXJyZW50Q2hhcmFjdGVyID4gJ34n
IHx8IGN1cnJlbnRDaGFyYWN0ZXIgPT0gJz0nKSAmJiBjdXJyZW50Q2hhcmFjdGVyICE9ICdcdCcp
CisgICAgICAgICAgICByZXF1aXJlc0VuY29kaW5nID0gdHJ1ZTsKKworICAgICAgICAvLyBTcGFj
ZSBhbmQgdGFiIGNoYXJhY3RlcnMgaGF2ZSB0byBiZSBlbmNvZGVkIGlmIHRoZXkgYXBwZWFyIGF0
IHRoZSBlbmQgb2YgYSBsaW5lLgorICAgICAgICBpZiAoIXJlcXVpcmVzRW5jb2RpbmcgJiYgKGN1
cnJlbnRDaGFyYWN0ZXIgPT0gJ1x0JyB8fCBjdXJyZW50Q2hhcmFjdGVyID09ICcgJykgJiYgKGlz
TGFzdENoYXJhY3RlciB8fCBsZW5ndGhPZkxpbmVFbmRpbmdBdEluZGV4KGlucHV0LCBpbnB1dExl
bmd0aCwgaSArIDEpKSkKKyAgICAgICAgICAgIHJlcXVpcmVzRW5jb2RpbmcgPSB0cnVlOworCisg
ICAgICAgIC8vIEVuZCBvZiBsaW5lIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gQ1ItTEYgc2VxdWVu
Y2VzLgorICAgICAgICBpZiAoIWlzTGFzdENoYXJhY3RlcikgeworICAgICAgICAgICAgc2l6ZV90
IGxlbmd0aE9mTGluZUVuZGluZyA9IGxlbmd0aE9mTGluZUVuZGluZ0F0SW5kZXgoaW5wdXQsIGlu
cHV0TGVuZ3RoLCBpKTsKKyAgICAgICAgICAgIGlmIChsZW5ndGhPZkxpbmVFbmRpbmcpIHsKKyAg
ICAgICAgICAgICAgICBvdXQuYXBwZW5kKGNybGZMaW5lRW5kaW5nLCBzdHJsZW4oY3JsZkxpbmVF
bmRpbmcpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50TGluZUxlbmd0aCA9IDA7CisgICAgICAg
ICAgICAgICAgaSArPSAobGVuZ3RoT2ZMaW5lRW5kaW5nIC0gMSk7IC8vIC0xIGJlY2F1c2Ugd2Un
bGwgKysgaW4gdGhlIGZvcigpIGFib3ZlLgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGxlbmd0aE9mRW5jb2RlZENo
YXJhY3RlciA9IDE7CisgICAgICAgIGlmIChyZXF1aXJlc0VuY29kaW5nKQorICAgICAgICAgICAg
bGVuZ3RoT2ZFbmNvZGVkQ2hhcmFjdGVyICs9IDI7CisgICAgICAgIGlmICghaXNMYXN0Q2hhcmFj
dGVyKQorICAgICAgICAgICAgbGVuZ3RoT2ZFbmNvZGVkQ2hhcmFjdGVyICs9IDE7IC8vICsgMSBm
b3IgdGhlID0gKHNvZnQgbGluZSBicmVhaykuCisKKyAgICAgICAgLy8gSW5zZXJ0IGEgc29mdCBs
aW5lIGJyZWFrIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKGN1cnJlbnRMaW5lTGVuZ3RoICsg
bGVuZ3RoT2ZFbmNvZGVkQ2hhcmFjdGVyID4gbWF4aW11bUxpbmVMZW5ndGgpIHsKKyAgICAgICAg
ICAgIG91dC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIG91dC5hcHBlbmQoY3JsZkxpbmVFbmRp
bmcsIHN0cmxlbihjcmxmTGluZUVuZGluZykpOworICAgICAgICAgICAgY3VycmVudExpbmVMZW5n
dGggPSAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmluYWxseSwgaW5zZXJ0IHRoZSBhY3R1
YWwgY2hhcmFjdGVyKHMpLgorICAgICAgICBpZiAocmVxdWlyZXNFbmNvZGluZykgeworICAgICAg
ICAgICAgb3V0LmFwcGVuZCgnPScpOworICAgICAgICAgICAgb3V0LmFwcGVuZCh1cHBlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdChjdXJyZW50Q2hhcmFjdGVyKSk7CisgICAgICAgICAgICBvdXQuYXBw
ZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGN1cnJlbnRDaGFyYWN0ZXIpKTsKKyAgICAg
ICAgICAgIGN1cnJlbnRMaW5lTGVuZ3RoICs9IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBvdXQuYXBwZW5kKGN1cnJlbnRDaGFyYWN0ZXIpOworICAgICAgICAgICAgY3VycmVudExp
bmVMZW5ndGgrKzsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBxdW90ZWRQcmludGFibGVE
ZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQpCit7CisgICAg
cXVvdGVkUHJpbnRhYmxlRGVjb2RlKGluLmRhdGEoKSwgaW4uc2l6ZSgpLCBvdXQpOworfQorCit2
b2lkIHF1b3RlZFByaW50YWJsZURlY29kZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgVmVjdG9yPGNoYXI+JiBvdXQpCit7CisgICAgb3V0LmNsZWFyKCk7CisgICAgaWYgKCFk
YXRhTGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGRhdGFMZW5ndGg7ICsraSkgeworICAgICAgICBjaGFyIGN1cnJlbnRDaGFyYWN0ZXIgPSBkYXRh
W2ldOworICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciAhPSAnPScpIHsKKyAgICAgICAgICAg
IG91dC5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICAvLyBXZSBhcmUgZGVhbGluZyB3aXRoIGEgJz14eCcgc2VxdWVuY2Uu
CisgICAgICAgIGlmIChkYXRhTGVuZ3RoIC0gaSA8IDMpIHsKKyAgICAgICAgICAgIC8vIFVuZmlu
aXNoZWQgPSBzZXF1ZW5jZSwgYXBwZW5kIGFzIGlzLgorICAgICAgICAgICAgb3V0LmFwcGVuZChj
dXJyZW50Q2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGNoYXIgdXBwZXJDaGFyYWN0ZXIgPSBkYXRhWysraV07CisgICAgICAgIGNoYXIgbG93ZXJD
aGFyYWN0ZXIgPSBkYXRhWysraV07CisgICAgICAgIGlmICh1cHBlckNoYXJhY3RlciA9PSAnXHIn
ICYmIGxvd2VyQ2hhcmFjdGVyID09ICdcbicpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdCh1cHBlckNoYXJhY3RlcikgfHwgIWlzQVNDSUlIZXhE
aWdpdChsb3dlckNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgIC8vIEludmFsaWQgc2VxdWVuY2Us
ID0gZm9sbG93ZWQgYnkgbm9uIGhleCBkaWdpdHMsIGp1c3QgaW5zZXJ0IHRoZSBjaGFyYWN0ZXJz
IGFzIGlzLgorICAgICAgICAgICAgb3V0LmFwcGVuZCgnPScpOworICAgICAgICAgICAgb3V0LmFw
cGVuZCh1cHBlckNoYXJhY3Rlcik7CisgICAgICAgICAgICBvdXQuYXBwZW5kKGxvd2VyQ2hhcmFj
dGVyKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIG91dC5hcHBl
bmQoc3RhdGljX2Nhc3Q8Y2hhcj4odG9BU0NJSUhleFZhbHVlKHVwcGVyQ2hhcmFjdGVyLCBsb3dl
ckNoYXJhY3RlcikpKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1F1b3RlZFByaW50YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzY2MzMzdlNDdiMGFiMGJmMmEx
ZTQ0OWYyNmU5ZjhjYmMyNmRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFF1
b3RlZFByaW50YWJsZV9oCisjZGVmaW5lIFF1b3RlZFByaW50YWJsZV9oCisKKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBxdW90ZWRQcmludGFi
bGVFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgVmVjdG9yPGNoYXI+Jik7Cit2b2lkIHF1b3Rl
ZFByaW50YWJsZUVuY29kZShjb25zdCBjaGFyKiwgc2l6ZV90LCBWZWN0b3I8Y2hhcj4mKTsKKwor
dm9pZCBxdW90ZWRQcmludGFibGVEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgVmVjdG9yPGNo
YXI+Jik7Cit2b2lkIHF1b3RlZFByaW50YWJsZURlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90LCBW
ZWN0b3I8Y2hhcj4mKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUXVv
dGVkUHJpbnRhYmxlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92488</attachid>
            <date>2011-05-05 16:00:26 -0700</date>
            <delta_ts>2011-05-05 16:34:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59834-20110505160025.patch</filename>
            <type>text/plain</type>
            <size>20575</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRk
MDhmYmIyZWY2YzgzYTliOGQ2MWJmZDcxMzI0MGY4ZjcyNTAwZjguLjZkZTFhODAyNWE4Zjg1ODAw
ZWQ4MDM2ODFlNTY4YmFiMDcxYTdiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTA1LTA1ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBjb252ZW5pZW5jZSBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBhIGJ5dGUgdG8gaGV4IEFTQ0lJ
IGRpZ2l0CisgICAgICAgIGNoYXJhY3RlcnMgYW5kIHZpY2UtdmVyc2EuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgzNAorCisgICAgICAgICogd3Rm
L0FTQ0lJQ1R5cGUuaDoKKyAgICAgICAgKFdURjo6dG9BU0NJSUhleFZhbHVlKToKKyAgICAgICAg
KFdURjo6bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQpOgorICAgICAgICAoV1RGOjp1cHBlck5p
YmJsZVRvQVNDSUlIZXhEaWdpdCk6CisKIDIwMTEtMDUtMDIgIEdhYm9yIExva2kgIDxsb2tpQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGRmaXggZm9yIEFSTSBhZnRlciByODU0NDgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgKaW5kZXggYzE5Yjg1YWZmYzg3MjIwYjFkNWE2
ZWQwNGE0NjRlNWFhYmQzODZiMS4uODNmMjc0YjdiMWMxY2JiZTU3NGNhZmEyMTdhM2I0ZGQzOTdk
YWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgKQEAgLTE0Niw2ICsx
NDYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgdW5zaWduZWQgdG9BU0NJSVVwcGVy
KHVuc2lnbmVkIGMpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjICYgfigoYyA+PSAn
YScgJiYgYyA8PSAneicpIDw8IDUpKTsgfQogCiAgICAgaW5saW5lIGludCB0b0FTQ0lJSGV4VmFs
dWUoY2hhciBjKSB7IEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQoYykpOyByZXR1cm4gYyA8ICdBJyA/
IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4RjsgfQorICAgIGlubGluZSBpbnQgdG9BU0NJ
SUhleFZhbHVlKGNoYXIgdXBwZXJWYWx1ZSwgY2hhciBsb3dlclZhbHVlKSB7IEFTU0VSVChpc0FT
Q0lJSGV4RGlnaXQodXBwZXJWYWx1ZSkgJiYgaXNBU0NJSUhleERpZ2l0KGxvd2VyVmFsdWUpKTsg
cmV0dXJuICgodG9BU0NJSUhleFZhbHVlKHVwcGVyVmFsdWUpIDw8IDQpICYgMHhGMCkgfCB0b0FT
Q0lJSGV4VmFsdWUobG93ZXJWYWx1ZSk7IH0KICAgICBpbmxpbmUgaW50IHRvQVNDSUlIZXhWYWx1
ZSh1bnNpZ25lZCBzaG9ydCBjKSB7IEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQoYykpOyByZXR1cm4g
YyA8ICdBJyA/IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4RjsgfQogI2lmICFDT01QSUxF
UihNU1ZDKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQogICAgIGlubGluZSBp
bnQgdG9BU0NJSUhleFZhbHVlKHdjaGFyX3QgYykgeyBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KGMp
KTsgcmV0dXJuIGMgPCAnQScgPyBjIC0gJzAnIDogKGMgLSAnQScgKyAxMCkgJiAweEY7IH0KQEAg
LTE1Myw2ICsxNTQsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgaW50IHRvQVNDSUlI
ZXhWYWx1ZShpbnQgYykgeyBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KGMpKTsgcmV0dXJuIGMgPCAn
QScgPyBjIC0gJzAnIDogKGMgLSAnQScgKyAxMCkgJiAweEY7IH0KICAgICBpbmxpbmUgaW50IHRv
QVNDSUlIZXhWYWx1ZSh1bnNpZ25lZCBjKSB7IEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQoYykpOyBy
ZXR1cm4gYyA8ICdBJyA/IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4RjsgfQogCisgICAg
aW5saW5lIGNoYXIgbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoY2hhciBjKSB7IGNoYXIgbmli
YmxlID0gYyAmIDB4RjsgcmV0dXJuIG5pYmJsZSA8IDEwID8gJzAnICsgbmliYmxlIDogJ0EnICsg
bmliYmxlIC0gMTA7IH0KKyAgICBpbmxpbmUgY2hhciB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dChjaGFyIGMpIHsgY2hhciBuaWJibGUgPSAoYyA+PiA0KSAmIDB4RjsgcmV0dXJuIG5pYmJsZSA8
IDEwID8gJzAnICsgbmliYmxlIDogJ0EnICsgbmliYmxlIC0gMTA7IH0KKwogICAgIGlubGluZSBi
b29sIGlzQVNDSUlQcmludGFibGUoY2hhciBjKSB7IHJldHVybiBjID49ICcgJyAmJiBjIDw9ICd+
JzsgfQogICAgIGlubGluZSBib29sIGlzQVNDSUlQcmludGFibGUodW5zaWduZWQgc2hvcnQgYykg
eyByZXR1cm4gYyA+PSAnICcgJiYgYyA8PSAnfic7IH0KICNpZiAhQ09NUElMRVIoTVNWQykgfHwg
ZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKQEAgLTE3NSw1ICsxNzksNyBAQCB1c2lu
ZyBXVEY6OmlzQVNDSUlVcHBlcjsKIHVzaW5nIFdURjo6dG9BU0NJSUhleFZhbHVlOwogdXNpbmcg
V1RGOjp0b0FTQ0lJTG93ZXI7CiB1c2luZyBXVEY6OnRvQVNDSUlVcHBlcjsKK3VzaW5nIFdURjo6
bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQ7Cit1c2luZyBXVEY6OnVwcGVyTmliYmxlVG9BU0NJ
SUhleERpZ2l0OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQyZjU5MTMw
ZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uNjgwNmM2MmQyOTc0ZWI0NTljNmFkMmFhYWZl
ZTUzNWU0N2UxNGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNjcsMTAgKzExNjcsMTEg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwCiAg
ICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0L0h5cGhl
bmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKICAgICBwbGF0Zm9y
bS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyTm9uZS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcAorICAgIHBs
YXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQvUmVndWxh
ckV4cHJlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCiAg
ICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5NzVjMGU1OWMxYTVj
MDk4ZWJkZDM0OTNiZTc0OTZkYzAwOTcwYi4uNzUxZTNjMWIzZTU3N2Q2ODU1MjdhYmU2MjA1ZDY2
ZmI0N2IwODA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA1LTAyICBKYXkg
Q2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcXVvdGVkLXByaW50YWJsZSBlbmNvZGlu
Zy9kZWNvZGluZyBjYXBhYmlsaXRpZXMuCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGZvciBNSFRN
TCBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTk4MzQKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L1F1b3RlZFByaW50YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQv
UXVvdGVkUHJpbnRhYmxlLmg6IEFkZGVkLgorCiAyMDExLTA1LTAyICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9i
aW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxN2YyYTVmOGEzODk4ODBj
N2RmNWYxZDI5ZTk2MmJjODAyMmFhNDA0Li43MTlhOWUyMWY5YWM4Zjk4ZDg4NWEyNjNmZGZjZjVk
MmY1Yjk2YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2MjgsNiArMjYy
OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9QYXJzZXJVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0
Zm9ybVN0cmluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50
YWJsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNTkwZWJjMjU5MWU5MzdjYTUwZTZkMjhiZjRmOTU4ZmZiNzk2MGUwMi4u
MDE1NmNjMmI4MjVhMWQxNDRmMmU2ZGVmNDMyZWMwNWQxMjIwMTc0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNDg5NCw2ICs0ODk0LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xvY2Fs
aXplZE51bWJlcklDVS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyTm9uZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUGFyc2VyVXRpbGl0
aWVzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vdGV4dC9TdHJpbmcuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjE1YzNmZWUzYjA3YjU4Zjlm
MTZiMzc5OTk3ZWEwYzUzYWZmYTc2NS4uYWUxODFjZjIxNDMwNDFhMDlkZjU0MDI0M2YxMmYxYzU2
YWY5NmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk0Niw2ICs5NDYsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9M
b2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVy
Tm9uZS5jcHAgXAorICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBcCiAgICAg
cGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCkBAIC0yMDMzLDYgKzIw
MzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oIFwKICAgICBw
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRp
b24uaCBcCisgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHBy
ZXNzaW9uLmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjYzM0OTMyYWE1
ZmI5ZTUxYjE4YWYxNjhjY2Y4Nzg2YzYxYTAzMDExLi40ZDcxYzhiZmFiMGI2YTgxMzcwMmVmYzk0
Y2EwNzA4ZmZhODUzMzYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtMzA0ODAsNiArMzA0ODAsMTQgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVx0ZXh0XFBsYXRmb3JtU3RyaW5nLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3Rl
ZFByaW50YWJsZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3RlZFByaW50YWJsZS5o
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cdGV4dFxSZWd1bGFyRXhwcmVzc2lvbi5jcHAiCiAJCQkJCT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBj
NDk2MDRmMjk4ZjRlMmM1MjEzNzk4YTE3MTc2MzdmOGY4YzM1ZDBiLi5kMTk5OWQ4OWM3NGMyNjdk
NGUwZGNmNTg3YWE2YzgxNmI2MTQ1NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OTIsNiArNzkyLDggQEAKIAkJMzc1Q0Qy
MzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlw
aGVuYXRpb24uaCAqLzsgfTsKIAkJMzc1Q0QyM0IxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0
aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0aW9uTWFjLm1tICovOyB9OwogCQkz
Nzc0QUJBNTBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIx
RUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzc3NURCOTAxMzcwQjAzQzAwREJC
RkJCIC8qIFF1b3RlZFByaW50YWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNzc1REI4RTEzNzBCMDNDMDBEQkJGQkIgLyogUXVvdGVkUHJpbnRh
YmxlLmNwcCAqLzsgfTsKKwkJMzc3NURCOTExMzcwQjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3
NURCOEYxMzcwQjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5oICovOyB9OwogCQkzNzdD
NENERjEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3QzRDREQxMDE0RTlGNjAwQjlB
RTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLzsgfTsKIAkJMzc3QzRDRTAxMDE0RTlGNjAw
QjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3QzRDREUxMDE0RTlGNjAwQjlBRTQyIC8qIFBsYWNl
aG9sZGVyRG9jdW1lbnQuY3BwICovOyB9OwogCQkzNzg0QzM0QjBFMTFBQTM0MDA3RDhENDggLyog
Rm9udFRyYWl0c01hc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3ODRDMzRBMEUxMUFBMzQwMDdEOEQ0OCAvKiBGb250VHJhaXRzTWFzay5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MjI0LDYgKzcy
MjYsOCBAQAogCQkzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0aW9u
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSHlwaGVuYXRp
b25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQw
MEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTM3NzVEQjhFMTM3MEIwM0MwMERCQkZCQiAvKiBRdW90ZWRQcmludGFi
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVvdGVkUHJpbnRh
YmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc3NURCOEYxMzcwQjAzQzAw
REJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdW90ZWRQcmludGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3
QzRDREQxMDE0RTlGNjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhY2Vob2xkZXJEb2N1bWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzdDNENERTEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xk
ZXJEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGFj
ZWhvbGRlckRvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc4NEMz
NEEwRTExQUEzNDAwN0Q4RDQ4IC8qIEZvbnRUcmFpdHNNYXNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvbnRUcmFpdHNNYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzcxMiw2ICsxNzcxNiw4IEBACiAJCQkJRjUxNDJDNjgxMjNGMTJCMDAwRjVCRDRD
IC8qIExvY2FsaXplZE51bWJlci5oICovLAogCQkJCUJDNzZBQzExMEREN0FENUMwMDQxNUYzNCAv
KiBQYXJzZXJVdGlsaXRpZXMuaCAqLywKIAkJCQlCMkMzRDlGQjBEMDA2QzFEMDBFRjZGMjYgLyog
UGxhdGZvcm1TdHJpbmcuaCAqLywKKwkJCQkzNzc1REI4RTEzNzBCMDNDMDBEQkJGQkIgLyogUXVv
dGVkUHJpbnRhYmxlLmNwcCAqLywKKwkJCQkzNzc1REI4RjEzNzBCMDNDMDBEQkJGQkIgLyogUXVv
dGVkUHJpbnRhYmxlLmggKi8sCiAJCQkJQjJDM0Q5RkMwRDAwNkMxRDAwRUY2RjI2IC8qIFJlZ3Vs
YXJFeHByZXNzaW9uLmNwcCAqLywKIAkJCQlCMkMzRDlGRDBEMDA2QzFEMDBFRjZGMjYgLyogUmVn
dWxhckV4cHJlc3Npb24uaCAqLywKIAkJCQlCMkMzRDlGRTBEMDA2QzFEMDBFRjZGMjYgLyogU2Vn
bWVudGVkU3RyaW5nLmNwcCAqLywKQEAgLTIyNzAyLDYgKzIyNzA4LDcgQEAKIAkJCQk5M0YxOTlF
RDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzc3NURCOTExMzcwQjAzQzAwREJCRkJCIC8qIFF1b3RlZFByaW50YWJsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNTM2Miw2ICsyNTM2OSw3IEBACiAJCQkJOTNGMTlCMDUwODI0
NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkzNzc1REI5MDEzNzBCMDNDMDBEQkJGQkIgLyogUXVvdGVkUHJp
bnRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9RdW90ZWRQcmludGFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwOGQzOTQ1ZmU4NzhjZDI5MjI1
NjM3YmFjNDJhZWUxMTZiMmFlNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVvdGVkUHJpbnRhYmxlLmgiCisKKyNpbmNsdWRlIDx3
dGYvQVNDSUlDVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBz
aXplX3QgbWF4aW11bUxpbmVMZW5ndGggPSA3NjsKKworc3RhdGljIGNvbnN0IGNoYXIgaGV4VGFi
bGVbXSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKKworc3RhdGljIGNvbnN0IGNoYXIgY3JsZkxpbmVF
bmRpbmdbXSA9ICJcclxuIjsKKworc3RhdGljIHNpemVfdCBsZW5ndGhPZkxpbmVFbmRpbmdBdElu
ZGV4KGNvbnN0IGNoYXIqIGlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgsIHNpemVfdCBpbmRleCkK
K3sKKyAgICBBU1NFUlQoaW5kZXggPCBpbnB1dExlbmd0aCk7CisgICAgaWYgKGlucHV0W2luZGV4
XSA9PSAnXG4nKQorICAgICAgICByZXR1cm4gMTsgLy8gU2luZ2xlIExGLgorCisgICAgaWYgKGlu
cHV0W2luZGV4XSA9PSAnXHInKSB7CisgICAgICAgIGlmICgoaW5kZXggKyAxKSA9PSBpbnB1dExl
bmd0aCB8fCBpbnB1dFtpbmRleCArIDFdICE9ICdcbicpCisgICAgICAgICAgICByZXR1cm4gMTsg
Ly8gU2luZ2xlIENSIChDbGFzc2ljIE1hYyBPUykuCisgICAgICAgIHJldHVybiAyOyAvLyBDUi1M
Ri4KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBxdW90ZWRQcmludGFibGVFbmNv
ZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQpCit7CisgICAgcXVv
dGVkUHJpbnRhYmxlRW5jb2RlKGluLmRhdGEoKSwgaW4uc2l6ZSgpLCBvdXQpOworfQorCit2b2lk
IHF1b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBjaGFyKiBpbnB1dCwgc2l6ZV90IGlucHV0TGVu
Z3RoLCBWZWN0b3I8Y2hhcj4mIG91dCkKK3sKKyAgICBvdXQuY2xlYXIoKTsKKyAgICBvdXQucmVz
ZXJ2ZUNhcGFjaXR5KGlucHV0TGVuZ3RoKTsKKyAgICBzaXplX3QgY3VycmVudExpbmVMZW5ndGgg
PSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5wdXRMZW5ndGg7ICsraSkgeworICAg
ICAgICBib29sIGlzTGFzdENoYXJhY3RlciA9IChpID09IGlucHV0TGVuZ3RoIC0gMSk7CisgICAg
ICAgIGNoYXIgY3VycmVudENoYXJhY3RlciA9IGlucHV0W2ldOworICAgICAgICBib29sIHJlcXVp
cmVzRW5jb2RpbmcgPSBmYWxzZTsKKyAgICAgICAgLy8gQWxsIG5vbi1wcmludGFibGUgQVNDSUkg
Y2hhcmFjdGVycyBhbmQgPSByZXF1aXJlIGVuY29kaW5nLgorICAgICAgICBpZiAoKGN1cnJlbnRD
aGFyYWN0ZXIgPCAnICcgfHwgY3VycmVudENoYXJhY3RlciA+ICd+JyB8fCBjdXJyZW50Q2hhcmFj
dGVyID09ICc9JykgJiYgY3VycmVudENoYXJhY3RlciAhPSAnXHQnKQorICAgICAgICAgICAgcmVx
dWlyZXNFbmNvZGluZyA9IHRydWU7CisKKyAgICAgICAgLy8gU3BhY2UgYW5kIHRhYiBjaGFyYWN0
ZXJzIGhhdmUgdG8gYmUgZW5jb2RlZCBpZiB0aGV5IGFwcGVhciBhdCB0aGUgZW5kIG9mIGEgbGlu
ZS4KKyAgICAgICAgaWYgKCFyZXF1aXJlc0VuY29kaW5nICYmIChjdXJyZW50Q2hhcmFjdGVyID09
ICdcdCcgfHwgY3VycmVudENoYXJhY3RlciA9PSAnICcpICYmIChpc0xhc3RDaGFyYWN0ZXIgfHwg
bGVuZ3RoT2ZMaW5lRW5kaW5nQXRJbmRleChpbnB1dCwgaW5wdXRMZW5ndGgsIGkgKyAxKSkpCisg
ICAgICAgICAgICByZXF1aXJlc0VuY29kaW5nID0gdHJ1ZTsKKworICAgICAgICAvLyBFbmQgb2Yg
bGluZSBzaG91bGQgYmUgY29udmVydGVkIHRvIENSLUxGIHNlcXVlbmNlcy4KKyAgICAgICAgaWYg
KCFpc0xhc3RDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIHNpemVfdCBsZW5ndGhPZkxpbmVFbmRp
bmcgPSBsZW5ndGhPZkxpbmVFbmRpbmdBdEluZGV4KGlucHV0LCBpbnB1dExlbmd0aCwgaSk7Cisg
ICAgICAgICAgICBpZiAobGVuZ3RoT2ZMaW5lRW5kaW5nKSB7CisgICAgICAgICAgICAgICAgb3V0
LmFwcGVuZChjcmxmTGluZUVuZGluZywgc3RybGVuKGNybGZMaW5lRW5kaW5nKSk7CisgICAgICAg
ICAgICAgICAgY3VycmVudExpbmVMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIGkgKz0gKGxl
bmd0aE9mTGluZUVuZGluZyAtIDEpOyAvLyAtMSBiZWNhdXNlIHdlJ2xsICsrIGluIHRoZSBmb3Io
KSBhYm92ZS4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHNpemVfdCBsZW5ndGhPZkVuY29kZWRDaGFyYWN0ZXIgPSAxOworICAg
ICAgICBpZiAocmVxdWlyZXNFbmNvZGluZykKKyAgICAgICAgICAgIGxlbmd0aE9mRW5jb2RlZENo
YXJhY3RlciArPSAyOworICAgICAgICBpZiAoIWlzTGFzdENoYXJhY3RlcikKKyAgICAgICAgICAg
IGxlbmd0aE9mRW5jb2RlZENoYXJhY3RlciArPSAxOyAvLyArIDEgZm9yIHRoZSA9IChzb2Z0IGxp
bmUgYnJlYWspLgorCisgICAgICAgIC8vIEluc2VydCBhIHNvZnQgbGluZSBicmVhayBpZiBuZWNl
c3NhcnkuCisgICAgICAgIGlmIChjdXJyZW50TGluZUxlbmd0aCArIGxlbmd0aE9mRW5jb2RlZENo
YXJhY3RlciA+IG1heGltdW1MaW5lTGVuZ3RoKSB7CisgICAgICAgICAgICBvdXQuYXBwZW5kKCc9
Jyk7CisgICAgICAgICAgICBvdXQuYXBwZW5kKGNybGZMaW5lRW5kaW5nLCBzdHJsZW4oY3JsZkxp
bmVFbmRpbmcpKTsKKyAgICAgICAgICAgIGN1cnJlbnRMaW5lTGVuZ3RoID0gMDsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEZpbmFsbHksIGluc2VydCB0aGUgYWN0dWFsIGNoYXJhY3RlcihzKS4K
KyAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RpbmcpIHsKKyAgICAgICAgICAgIG91dC5hcHBlbmQo
Jz0nKTsKKyAgICAgICAgICAgIG91dC5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
Y3VycmVudENoYXJhY3RlcikpOworICAgICAgICAgICAgb3V0LmFwcGVuZChsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjdXJyZW50Q2hhcmFjdGVyKSk7CisgICAgICAgICAgICBjdXJyZW50TGlu
ZUxlbmd0aCArPSAzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb3V0LmFwcGVuZChj
dXJyZW50Q2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGN1cnJlbnRMaW5lTGVuZ3RoKys7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0IFZlY3Rv
cjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0KQoreworICAgIHF1b3RlZFByaW50YWJsZURl
Y29kZShpbi5kYXRhKCksIGluLnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBxdW90ZWRQcmludGFi
bGVEZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFZlY3RvcjxjaGFy
PiYgb3V0KQoreworICAgIG91dC5jbGVhcigpOworICAgIGlmICghZGF0YUxlbmd0aCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVyID0gZGF0YVtpXTsKKyAgICAgICAgaWYg
KGN1cnJlbnRDaGFyYWN0ZXIgIT0gJz0nKSB7CisgICAgICAgICAgICBvdXQuYXBwZW5kKGN1cnJl
bnRDaGFyYWN0ZXIpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
Ly8gV2UgYXJlIGRlYWxpbmcgd2l0aCBhICc9eHgnIHNlcXVlbmNlLgorICAgICAgICBpZiAoZGF0
YUxlbmd0aCAtIGkgPCAzKSB7CisgICAgICAgICAgICAvLyBVbmZpbmlzaGVkID0gc2VxdWVuY2Us
IGFwcGVuZCBhcyBpcy4KKyAgICAgICAgICAgIG91dC5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjaGFyIHVwcGVyQ2hh
cmFjdGVyID0gZGF0YVsrK2ldOworICAgICAgICBjaGFyIGxvd2VyQ2hhcmFjdGVyID0gZGF0YVsr
K2ldOworICAgICAgICBpZiAodXBwZXJDaGFyYWN0ZXIgPT0gJ1xyJyAmJiBsb3dlckNoYXJhY3Rl
ciA9PSAnXG4nKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQodXBwZXJDaGFyYWN0ZXIpIHx8ICFpc0FTQ0lJSGV4RGlnaXQobG93ZXJDaGFyYWN0
ZXIpKSB7CisgICAgICAgICAgICAvLyBJbnZhbGlkIHNlcXVlbmNlLCA9IGZvbGxvd2VkIGJ5IG5v
biBoZXggZGlnaXRzLCBqdXN0IGluc2VydCB0aGUgY2hhcmFjdGVycyBhcyBpcy4KKyAgICAgICAg
ICAgIG91dC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIG91dC5hcHBlbmQodXBwZXJDaGFyYWN0
ZXIpOworICAgICAgICAgICAgb3V0LmFwcGVuZChsb3dlckNoYXJhY3Rlcik7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBvdXQuYXBwZW5kKHN0YXRpY19jYXN0PGNo
YXI+KHRvQVNDSUlIZXhWYWx1ZSh1cHBlckNoYXJhY3RlciwgbG93ZXJDaGFyYWN0ZXIpKSk7Cisg
ICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1
b3RlZFByaW50YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmlu
dGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jM2NjMzM3ZTQ3YjBhYjBiZjJhMWU0NDlmMjZlOWY4Y2JjMjZk
ZjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9RdW90
ZWRQcmludGFibGUuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBRdW90ZWRQcmludGFibGVfaAor
I2RlZmluZSBRdW90ZWRQcmludGFibGVfaAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0IFZl
Y3RvcjxjaGFyPiYsIFZlY3RvcjxjaGFyPiYpOwordm9pZCBxdW90ZWRQcmludGFibGVFbmNvZGUo
Y29uc3QgY2hhciosIHNpemVfdCwgVmVjdG9yPGNoYXI+Jik7CisKK3ZvaWQgcXVvdGVkUHJpbnRh
YmxlRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFZlY3RvcjxjaGFyPiYpOwordm9pZCBxdW90
ZWRQcmludGFibGVEZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCwgVmVjdG9yPGNoYXI+Jik7CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFF1b3RlZFByaW50YWJsZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92493</attachid>
            <date>2011-05-05 16:34:07 -0700</date>
            <delta_ts>2011-05-05 18:38:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59834-20110505163406.patch</filename>
            <type>text/plain</type>
            <size>20488</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU4OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3
ZGRmNzBjYWI4ZTcwOGUzZjE5ZDY3ZjNiNGI0ZTI4N2IxNTkyNzAuLjJjM2QxN2IwYzU0MjFkN2I5
N2RlN2NiYWI4NTUwMWNlNTA1YjVkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTA1LTA1ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBjb252ZW5pZW5jZSBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBhIGJ5dGUgdG8gaGV4IEFTQ0lJ
IGRpZ2l0CisgICAgICAgIGNoYXJhY3RlcnMgYW5kIHZpY2UtdmVyc2EuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgzNAorCisgICAgICAgICogd3Rm
L0FTQ0lJQ1R5cGUuaDoKKyAgICAgICAgKFdURjo6dG9BU0NJSUhleFZhbHVlKToKKyAgICAgICAg
KFdURjo6bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQpOgorICAgICAgICAoV1RGOjp1cHBlck5p
YmJsZVRvQVNDSUlIZXhEaWdpdCk6CisKIDIwMTEtMDUtMDUgIEFsZXhpcyBNZW5hcmQgIDxhbGV4
aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4g
UG91bGFpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgKaW5kZXggYzE5Yjg1
YWZmYzg3MjIwYjFkNWE2ZWQwNGE0NjRlNWFhYmQzODZiMS4uODNmMjc0YjdiMWMxY2JiZTU3NGNh
ZmEyMTdhM2I0ZGQzOTdkYWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9BU0NJSUNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBl
LmgKQEAgLTE0Niw2ICsxNDYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgdW5zaWdu
ZWQgdG9BU0NJSVVwcGVyKHVuc2lnbmVkIGMpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihjICYgfigoYyA+PSAnYScgJiYgYyA8PSAneicpIDw8IDUpKTsgfQogCiAgICAgaW5saW5lIGlu
dCB0b0FTQ0lJSGV4VmFsdWUoY2hhciBjKSB7IEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQoYykpOyBy
ZXR1cm4gYyA8ICdBJyA/IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4RjsgfQorICAgIGlu
bGluZSBpbnQgdG9BU0NJSUhleFZhbHVlKGNoYXIgdXBwZXJWYWx1ZSwgY2hhciBsb3dlclZhbHVl
KSB7IEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQodXBwZXJWYWx1ZSkgJiYgaXNBU0NJSUhleERpZ2l0
KGxvd2VyVmFsdWUpKTsgcmV0dXJuICgodG9BU0NJSUhleFZhbHVlKHVwcGVyVmFsdWUpIDw8IDQp
ICYgMHhGMCkgfCB0b0FTQ0lJSGV4VmFsdWUobG93ZXJWYWx1ZSk7IH0KICAgICBpbmxpbmUgaW50
IHRvQVNDSUlIZXhWYWx1ZSh1bnNpZ25lZCBzaG9ydCBjKSB7IEFTU0VSVChpc0FTQ0lJSGV4RGln
aXQoYykpOyByZXR1cm4gYyA8ICdBJyA/IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAmIDB4Rjsg
fQogI2lmICFDT01QSUxFUihNU1ZDKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVE
KQogICAgIGlubGluZSBpbnQgdG9BU0NJSUhleFZhbHVlKHdjaGFyX3QgYykgeyBBU1NFUlQoaXNB
U0NJSUhleERpZ2l0KGMpKTsgcmV0dXJuIGMgPCAnQScgPyBjIC0gJzAnIDogKGMgLSAnQScgKyAx
MCkgJiAweEY7IH0KQEAgLTE1Myw2ICsxNTQsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxp
bmUgaW50IHRvQVNDSUlIZXhWYWx1ZShpbnQgYykgeyBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KGMp
KTsgcmV0dXJuIGMgPCAnQScgPyBjIC0gJzAnIDogKGMgLSAnQScgKyAxMCkgJiAweEY7IH0KICAg
ICBpbmxpbmUgaW50IHRvQVNDSUlIZXhWYWx1ZSh1bnNpZ25lZCBjKSB7IEFTU0VSVChpc0FTQ0lJ
SGV4RGlnaXQoYykpOyByZXR1cm4gYyA8ICdBJyA/IGMgLSAnMCcgOiAoYyAtICdBJyArIDEwKSAm
IDB4RjsgfQogCisgICAgaW5saW5lIGNoYXIgbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoY2hh
ciBjKSB7IGNoYXIgbmliYmxlID0gYyAmIDB4RjsgcmV0dXJuIG5pYmJsZSA8IDEwID8gJzAnICsg
bmliYmxlIDogJ0EnICsgbmliYmxlIC0gMTA7IH0KKyAgICBpbmxpbmUgY2hhciB1cHBlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdChjaGFyIGMpIHsgY2hhciBuaWJibGUgPSAoYyA+PiA0KSAmIDB4Rjsg
cmV0dXJuIG5pYmJsZSA8IDEwID8gJzAnICsgbmliYmxlIDogJ0EnICsgbmliYmxlIC0gMTA7IH0K
KwogICAgIGlubGluZSBib29sIGlzQVNDSUlQcmludGFibGUoY2hhciBjKSB7IHJldHVybiBjID49
ICcgJyAmJiBjIDw9ICd+JzsgfQogICAgIGlubGluZSBib29sIGlzQVNDSUlQcmludGFibGUodW5z
aWduZWQgc2hvcnQgYykgeyByZXR1cm4gYyA+PSAnICcgJiYgYyA8PSAnfic7IH0KICNpZiAhQ09N
UElMRVIoTVNWQykgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKQEAgLTE3NSw1
ICsxNzksNyBAQCB1c2luZyBXVEY6OmlzQVNDSUlVcHBlcjsKIHVzaW5nIFdURjo6dG9BU0NJSUhl
eFZhbHVlOwogdXNpbmcgV1RGOjp0b0FTQ0lJTG93ZXI7CiB1c2luZyBXVEY6OnRvQVNDSUlVcHBl
cjsKK3VzaW5nIFdURjo6bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQ7Cit1c2luZyBXVEY6OnVw
cGVyTmliYmxlVG9BU0NJSUhleERpZ2l0OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYzU0YjJlZTIwNzUyZmY5OWU1NjJkZjM1ZDBhOGNkYjM3YThmMWQxMy4uNThhZGU1NGEwZmIw
YzliMmEyYmUwYTJjZGMyYmExODNmN2Y4YWM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEx
NjksMTAgKzExNjksMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4
dC9CYXNlNjQuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0
Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5j
cHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAgIHBsYXRmb3Jt
L3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0
aW9uLmNwcAorICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRm
b3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50
ZWRTdHJpbmcuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTkzNTJlNzZkZmNhNjI3YWQxNjk5ZTE4YTMxNmRhMDFlNzE3NDI3NC4uY2UwZDkxMDhlM2UxMmI3
NWViZDgxNmZjNGY4ZWI1OTk0MjkxOWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDExLTA1LTAyICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcXVvdGVkLXBy
aW50YWJsZSBlbmNvZGluZy9kZWNvZGluZyBjYXBhYmlsaXRpZXMuCisgICAgICAgIFRoaXMgaXMg
bmVlZGVkIGZvciBNSFRNTCBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MzQKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmg6IEFkZGVkLgorCiAyMDExLTA1LTA1ICBK
dXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBiMDQw
Zjk1YjNlMDQ3ZTg4YTg5NjAzOGJiYWY3M2Y3NWQzYjczNDg2Li45ZmM5MjYxNTNkZDJjYjk4NWVk
Nzg1ODEwNzYzODFiZDI4NTQyYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTI2MzcsNiArMjYzNyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJOb25lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9QYXJzZXJVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1F1b3RlZFByaW50YWJsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVv
dGVkUHJpbnRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4
cHJlc3Npb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHBy
ZXNzaW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5n
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWYyZmNiNjg4ZWIxZWVhYzI0YzU1NDVkZTdjMTFl
ZTkyZTViZjQ0ZC4uNTAxYTc2ZDg0MTQ0ZTE2YWU3Yzg4ZTNlMWM2ODE4YjYwZjMwOGY3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtNDkwNyw2ICs0OTA3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS90ZXh0L0xvY2FsaXplZE51bWJlcklDVS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3Rl
eHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQv
UGFyc2VyVXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODQ4MmMw
M2IyMWRhZWRmZmRhNzRkNzAwMzViMjQ2OWM5MTNlNzNiZS4uNWIwMTIzYTRmYzJhZGIwZGU2MmY2
NjRlZTdhYzBjYzg5MTVlOWQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk0Nyw2ICs5NDcsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBcCiAgICAgcGxh
dGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9j
YWxpemVkTnVtYmVyTm9uZS5jcHAgXAorICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxl
LmNwcCBcCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9z
c1RocmVhZENvcGllci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCkBA
IC0yMDM4LDYgKzIwMzksNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2
NC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL3Rl
eHQvSHlwaGVuYXRpb24uaCBcCisgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaCBc
CiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1JlZ3VsYXJFeHByZXNzaW9uLmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5n
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCBlMmM4ZjU1ZDgzOTE0Zjc2YjAyMjQ0NTZhMTgwNTE1MGU1ODhhN2U0Li4zZGMwMmM4OTc4OTRm
NTZmZTM0ODBkYTk4NWRkMDJhZjdjNjAzODdhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzA1MjAsNiArMzA1MjAsMTQgQEAKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFBsYXRmb3JtU3RyaW5nLmgiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVx0ZXh0XFF1b3RlZFByaW50YWJsZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFF1b3Rl
ZFByaW50YWJsZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxSZWd1bGFyRXhwcmVzc2lvbi5jcHAiCiAJ
CQkJCT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA0MzllMzEzZTJlOTEyODM0NzhhNTkyYmRlOWVhZWU0YzVlMWM0ZDQ3Li5lNjcz
OTVlMzYxY2U3YzUwMGVmYmE3NmM5MGU1MTM0MmJhNWQwZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MDAsNiArODAwLDgg
QEAKIAkJMzc5OTE5OTYxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9ybWF0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTkxOTk0MTIwMERE
RjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAgKi87IH07CiAJCTM3OTkxOTk3MTIwMERE
RjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxl
Rm9ybWF0LmggKi87IH07CiAJCTM3OTkxOUIyMTIwMERFNTAwMEVBMDQxQyAvKiBsaWJ6LmR5bGli
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5OTE5
QjExMjAwREU1MDAwRUEwNDFDIC8qIGxpYnouZHlsaWIgKi87IH07CisJCTM3OUUzNzE2MTM3MzZB
NjYwMEI5RTkxOSAvKiBRdW90ZWRQcmludGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5RTM3MTQxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3Rl
ZFByaW50YWJsZS5jcHAgKi87IH07CisJCTM3OUUzNzE3MTM3MzZBNjYwMEI5RTkxOSAvKiBRdW90
ZWRQcmludGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3OUUzNzE1MTM3MzZBNjYwMEI5RTkxOSAvKiBRdW90ZWRQcmludGFibGUuaCAqLzsgfTsK
IAkJMzc5RTYxQzkxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5RTYxQzUxMjZD
QTVDMzAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuY3BwICovOyB9OwogCQkzNzlFNjFD
QTEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5RTYxQzYxMjZDQTVDMzAwQjYzRThE
IC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuaCAqLzsgfTsKIAkJMzc5RTYxQ0IxMjZDQTVDNDAwQjYz
RThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5RTYxQzcxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VD
aGVja2FibGVJbnB1dFR5cGUuY3BwICovOyB9OwpAQCAtNzI0MSw2ICs3MjQzLDggQEAKIAkJMzc5
OTE5OTQxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdPRkZGaWxlRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9y
bWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdPRkZGaWxlRm9ybWF0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTkxOUIxMTIwMERFNTAwMEVBMDQxQyAv
KiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5bGliOyBwYXRoID0g
L3Vzci9saWIvbGliei5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMzc5
RTM3MTQxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdW90ZWRQcmludGFibGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzNzlFMzcxNTEzNzM2QTY2MDBCOUU5MTkgLyogUXVvdGVkUHJp
bnRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3RlZFByaW50YWJs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzlFNjFDNTEyNkNBNUMzMDBCNjNF
OEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCYXNlQnV0dG9uSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc5RTYxQzYxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUJ1dHRvbklucHV0VHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzlFNjFDNzEyNkNBNUMzMDBCNjNFOEQg
LyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3NzM3LDYgKzE3NzQxLDggQEAKIAkJCQlGNTE0MkM2ODEyM0YxMkIwMDBG
NUJENEMgLyogTG9jYWxpemVkTnVtYmVyLmggKi8sCiAJCQkJQkM3NkFDMTEwREQ3QUQ1QzAwNDE1
RjM0IC8qIFBhcnNlclV0aWxpdGllcy5oICovLAogCQkJCUIyQzNEOUZCMEQwMDZDMUQwMEVGNkYy
NiAvKiBQbGF0Zm9ybVN0cmluZy5oICovLAorCQkJCTM3OUUzNzE0MTM3MzZBNjYwMEI5RTkxOSAv
KiBRdW90ZWRQcmludGFibGUuY3BwICovLAorCQkJCTM3OUUzNzE1MTM3MzZBNjYwMEI5RTkxOSAv
KiBRdW90ZWRQcmludGFibGUuaCAqLywKIAkJCQlCMkMzRDlGQzBEMDA2QzFEMDBFRjZGMjYgLyog
UmVndWxhckV4cHJlc3Npb24uY3BwICovLAogCQkJCUIyQzNEOUZEMEQwMDZDMUQwMEVGNkYyNiAv
KiBSZWd1bGFyRXhwcmVzc2lvbi5oICovLAogCQkJCUIyQzNEOUZFMEQwMDZDMUQwMEVGNkYyNiAv
KiBTZWdtZW50ZWRTdHJpbmcuY3BwICovLApAQCAtMjI3MzQsNiArMjI3NDAsNyBAQAogCQkJCUUx
QkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTM3QUZGREY3MTM3MEEwQjgwMEU4OTVDMCAvKiBTaGFyZWRCdWZmZXJDUkxGTGlu
ZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8q
IFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTM5OCw2ICsyNTQwNSw3IEBA
CiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTM3QUZGREY2MTM3MEEwQjgwMEU4OTVDMCAvKiBTaGFyZWRC
dWZmZXJDUkxGTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzlFMzcxNjEzNzM2
QTY2MDBCOUU5MTkgLyogUXVvdGVkUHJpbnRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVkYjk4MzJkODEyMjIxNTk4ZGI1YzI5YzVkZWM3NWQ5M2Q4NmEwYzAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAK
QEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVvdGVkUHJp
bnRhYmxlLmgiCisKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bUxpbmVMZW5ndGggPSA3NjsKKwor
c3RhdGljIGNvbnN0IGNoYXIgY3JsZkxpbmVFbmRpbmdbXSA9ICJcclxuIjsKKworc3RhdGljIHNp
emVfdCBsZW5ndGhPZkxpbmVFbmRpbmdBdEluZGV4KGNvbnN0IGNoYXIqIGlucHV0LCBzaXplX3Qg
aW5wdXRMZW5ndGgsIHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBpbnB1dExl
bmd0aCk7CisgICAgaWYgKGlucHV0W2luZGV4XSA9PSAnXG4nKQorICAgICAgICByZXR1cm4gMTsg
Ly8gU2luZ2xlIExGLgorCisgICAgaWYgKGlucHV0W2luZGV4XSA9PSAnXHInKSB7CisgICAgICAg
IGlmICgoaW5kZXggKyAxKSA9PSBpbnB1dExlbmd0aCB8fCBpbnB1dFtpbmRleCArIDFdICE9ICdc
bicpCisgICAgICAgICAgICByZXR1cm4gMTsgLy8gU2luZ2xlIENSIChDbGFzc2ljIE1hYyBPUyku
CisgICAgICAgIHJldHVybiAyOyAvLyBDUi1MRi4KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBxdW90ZWRQcmludGFibGVFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgVmVj
dG9yPGNoYXI+JiBvdXQpCit7CisgICAgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGluLmRhdGEoKSwg
aW4uc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIHF1b3RlZFByaW50YWJsZUVuY29kZShjb25zdCBj
aGFyKiBpbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoLCBWZWN0b3I8Y2hhcj4mIG91dCkKK3sKKyAg
ICBvdXQuY2xlYXIoKTsKKyAgICBvdXQucmVzZXJ2ZUNhcGFjaXR5KGlucHV0TGVuZ3RoKTsKKyAg
ICBzaXplX3QgY3VycmVudExpbmVMZW5ndGggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5wdXRMZW5ndGg7ICsraSkgeworICAgICAgICBib29sIGlzTGFzdENoYXJhY3RlciA9IChp
ID09IGlucHV0TGVuZ3RoIC0gMSk7CisgICAgICAgIGNoYXIgY3VycmVudENoYXJhY3RlciA9IGlu
cHV0W2ldOworICAgICAgICBib29sIHJlcXVpcmVzRW5jb2RpbmcgPSBmYWxzZTsKKyAgICAgICAg
Ly8gQWxsIG5vbi1wcmludGFibGUgQVNDSUkgY2hhcmFjdGVycyBhbmQgPSByZXF1aXJlIGVuY29k
aW5nLgorICAgICAgICBpZiAoKGN1cnJlbnRDaGFyYWN0ZXIgPCAnICcgfHwgY3VycmVudENoYXJh
Y3RlciA+ICd+JyB8fCBjdXJyZW50Q2hhcmFjdGVyID09ICc9JykgJiYgY3VycmVudENoYXJhY3Rl
ciAhPSAnXHQnKQorICAgICAgICAgICAgcmVxdWlyZXNFbmNvZGluZyA9IHRydWU7CisKKyAgICAg
ICAgLy8gU3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzIGhhdmUgdG8gYmUgZW5jb2RlZCBpZiB0aGV5
IGFwcGVhciBhdCB0aGUgZW5kIG9mIGEgbGluZS4KKyAgICAgICAgaWYgKCFyZXF1aXJlc0VuY29k
aW5nICYmIChjdXJyZW50Q2hhcmFjdGVyID09ICdcdCcgfHwgY3VycmVudENoYXJhY3RlciA9PSAn
ICcpICYmIChpc0xhc3RDaGFyYWN0ZXIgfHwgbGVuZ3RoT2ZMaW5lRW5kaW5nQXRJbmRleChpbnB1
dCwgaW5wdXRMZW5ndGgsIGkgKyAxKSkpCisgICAgICAgICAgICByZXF1aXJlc0VuY29kaW5nID0g
dHJ1ZTsKKworICAgICAgICAvLyBFbmQgb2YgbGluZSBzaG91bGQgYmUgY29udmVydGVkIHRvIENS
LUxGIHNlcXVlbmNlcy4KKyAgICAgICAgaWYgKCFpc0xhc3RDaGFyYWN0ZXIpIHsKKyAgICAgICAg
ICAgIHNpemVfdCBsZW5ndGhPZkxpbmVFbmRpbmcgPSBsZW5ndGhPZkxpbmVFbmRpbmdBdEluZGV4
KGlucHV0LCBpbnB1dExlbmd0aCwgaSk7CisgICAgICAgICAgICBpZiAobGVuZ3RoT2ZMaW5lRW5k
aW5nKSB7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZChjcmxmTGluZUVuZGluZywgc3RybGVu
KGNybGZMaW5lRW5kaW5nKSk7CisgICAgICAgICAgICAgICAgY3VycmVudExpbmVMZW5ndGggPSAw
OworICAgICAgICAgICAgICAgIGkgKz0gKGxlbmd0aE9mTGluZUVuZGluZyAtIDEpOyAvLyAtMSBi
ZWNhdXNlIHdlJ2xsICsrIGluIHRoZSBmb3IoKSBhYm92ZS4KKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBsZW5ndGhP
ZkVuY29kZWRDaGFyYWN0ZXIgPSAxOworICAgICAgICBpZiAocmVxdWlyZXNFbmNvZGluZykKKyAg
ICAgICAgICAgIGxlbmd0aE9mRW5jb2RlZENoYXJhY3RlciArPSAyOworICAgICAgICBpZiAoIWlz
TGFzdENoYXJhY3RlcikKKyAgICAgICAgICAgIGxlbmd0aE9mRW5jb2RlZENoYXJhY3RlciArPSAx
OyAvLyArIDEgZm9yIHRoZSA9IChzb2Z0IGxpbmUgYnJlYWspLgorCisgICAgICAgIC8vIEluc2Vy
dCBhIHNvZnQgbGluZSBicmVhayBpZiBuZWNlc3NhcnkuCisgICAgICAgIGlmIChjdXJyZW50TGlu
ZUxlbmd0aCArIGxlbmd0aE9mRW5jb2RlZENoYXJhY3RlciA+IG1heGltdW1MaW5lTGVuZ3RoKSB7
CisgICAgICAgICAgICBvdXQuYXBwZW5kKCc9Jyk7CisgICAgICAgICAgICBvdXQuYXBwZW5kKGNy
bGZMaW5lRW5kaW5nLCBzdHJsZW4oY3JsZkxpbmVFbmRpbmcpKTsKKyAgICAgICAgICAgIGN1cnJl
bnRMaW5lTGVuZ3RoID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbmFsbHksIGluc2Vy
dCB0aGUgYWN0dWFsIGNoYXJhY3RlcihzKS4KKyAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2Rpbmcp
IHsKKyAgICAgICAgICAgIG91dC5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIG91dC5hcHBlbmQo
dXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoY3VycmVudENoYXJhY3RlcikpOworICAgICAgICAg
ICAgb3V0LmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjdXJyZW50Q2hhcmFjdGVy
KSk7CisgICAgICAgICAgICBjdXJyZW50TGluZUxlbmd0aCArPSAzOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgb3V0LmFwcGVuZChjdXJyZW50Q2hhcmFjdGVyKTsKKyAgICAgICAgICAg
IGN1cnJlbnRMaW5lTGVuZ3RoKys7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgcXVvdGVk
UHJpbnRhYmxlRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0
KQoreworICAgIHF1b3RlZFByaW50YWJsZURlY29kZShpbi5kYXRhKCksIGluLnNpemUoKSwgb3V0
KTsKK30KKwordm9pZCBxdW90ZWRQcmludGFibGVEZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgsIFZlY3RvcjxjaGFyPiYgb3V0KQoreworICAgIG91dC5jbGVhcigpOwor
ICAgIGlmICghZGF0YUxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgY2hhciBjdXJyZW50Q2hhcmFj
dGVyID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gJz0nKSB7Cisg
ICAgICAgICAgICBvdXQuYXBwZW5kKGN1cnJlbnRDaGFyYWN0ZXIpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gV2UgYXJlIGRlYWxpbmcgd2l0aCBhICc9eHgn
IHNlcXVlbmNlLgorICAgICAgICBpZiAoZGF0YUxlbmd0aCAtIGkgPCAzKSB7CisgICAgICAgICAg
ICAvLyBVbmZpbmlzaGVkID0gc2VxdWVuY2UsIGFwcGVuZCBhcyBpcy4KKyAgICAgICAgICAgIG91
dC5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBjaGFyIHVwcGVyQ2hhcmFjdGVyID0gZGF0YVsrK2ldOworICAgICAgICBj
aGFyIGxvd2VyQ2hhcmFjdGVyID0gZGF0YVsrK2ldOworICAgICAgICBpZiAodXBwZXJDaGFyYWN0
ZXIgPT0gJ1xyJyAmJiBsb3dlckNoYXJhY3RlciA9PSAnXG4nKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQodXBwZXJDaGFyYWN0ZXIpIHx8ICFp
c0FTQ0lJSGV4RGlnaXQobG93ZXJDaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAvLyBJbnZhbGlk
IHNlcXVlbmNlLCA9IGZvbGxvd2VkIGJ5IG5vbiBoZXggZGlnaXRzLCBqdXN0IGluc2VydCB0aGUg
Y2hhcmFjdGVycyBhcyBpcy4KKyAgICAgICAgICAgIG91dC5hcHBlbmQoJz0nKTsKKyAgICAgICAg
ICAgIG91dC5hcHBlbmQodXBwZXJDaGFyYWN0ZXIpOworICAgICAgICAgICAgb3V0LmFwcGVuZChs
b3dlckNoYXJhY3Rlcik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICBvdXQuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHRvQVNDSUlIZXhWYWx1ZSh1cHBlckNoYXJh
Y3RlciwgbG93ZXJDaGFyYWN0ZXIpKSk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2NjMzM3ZTQ3
YjBhYjBiZjJhMWU0NDlmMjZlOWY4Y2JjMjZkZjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuaApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBRdW90ZWRQcmludGFibGVfaAorI2RlZmluZSBRdW90ZWRQcmludGFibGVfaAorCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgcXVv
dGVkUHJpbnRhYmxlRW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFZlY3RvcjxjaGFyPiYpOwor
dm9pZCBxdW90ZWRQcmludGFibGVFbmNvZGUoY29uc3QgY2hhciosIHNpemVfdCwgVmVjdG9yPGNo
YXI+Jik7CisKK3ZvaWQgcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYs
IFZlY3RvcjxjaGFyPiYpOwordm9pZCBxdW90ZWRQcmludGFibGVEZWNvZGUoY29uc3QgY2hhcios
IHNpemVfdCwgVmVjdG9yPGNoYXI+Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFF1b3RlZFByaW50YWJsZV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>