<?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>95284</bug_id>
          
          <creation_ts>2012-08-28 21:40:53 -0700</creation_ts>
          <short_desc>Make it possible to use CSS Variables inside Calc expressions.</short_desc>
          <delta_ts>2012-08-30 18:13:31 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mikelawther</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707074</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-08-28 21:40:53 -0700</bug_when>
    <thetext>Make it possible to use CSS Variables inside Calc expressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707077</commentid>
    <comment_count>1</comment_count>
      <attachid>161133</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-08-28 21:48:21 -0700</bug_when>
    <thetext>Created attachment 161133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707106</commentid>
    <comment_count>2</comment_count>
      <attachid>161133</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-08-28 22:51:26 -0700</bug_when>
    <thetext>Comment on attachment 161133
Patch

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

Shadow review.

lgtm, please consider nits though

&gt; Source/WebCore/css/CSSCalculationValue.cpp:111
&gt; +bool CSSCalcValue::hasVariableReference() const

suggestion: could this be &apos;hasVariables&apos; or &apos;containsVariables&apos; or &apos;hasCssVariableReference&apos;? &apos;hasVariableReference&apos; could be misinterpreted as &apos;has a reference, and it is variable/mutable&apos;, rather than &apos;there are CSS variables here&apos;.

&gt; Source/WebCore/css/CSSCalculationValue.h:108
&gt; +    String customSerializeResolvingVariables(const HashMap&lt;AtomicString, String&gt;&amp;) const;

Here it is &apos;customSerializeResolvingVariables&apos;, while in CalcExpressionNode it is &apos;serializeResolvingVariables&apos;. Other methods like &apos;customCssText&apos; are the same in both - I don&apos;t understand why these are different?

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:191
&gt; +        return CSSPrimitiveValue::CSS_UNKNOWN; // The type of an calculation containing a variable cannot be known until the value of the variable is determined.

typo: &apos;an caculation&apos; -&gt; &apos;a calculation&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707648</commentid>
    <comment_count>3</comment_count>
      <attachid>161133</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-29 11:02:38 -0700</bug_when>
    <thetext>Comment on attachment 161133
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WebCore::CSSCalcValue::customSerializeResolvingVariables):
&gt; +        (WebCore::CSSCalcValue::hasVariableReference):
&gt; +        (CSSCalcPrimitiveValue):
&gt; +        (WebCore::CSSCalcPrimitiveValue::serializeResolvingVariables):

Please fill in this section of the ChangeLog.

&gt; Source/WebCore/css/CSSCalculationValue.cpp:106
&gt; +    bool expressionHasSingleTerm = expression[0] != &apos;(&apos;;
&gt; +    if (expressionHasSingleTerm)
&gt; +        result.append(&apos;(&apos;);
&gt; +    result.append(expression);
&gt; +    if (expressionHasSingleTerm)

This code seems to be duplicated with customCSSText.  Can you make a helper function that takes |expression| as an input param?

&gt; Source/WebCore/css/CSSCalculationValue.cpp:271
&gt; +        else
&gt; +#endif
&gt;          switch (op) {

This is hard to follow since the else clause is long and not indented. Maybe make a new method that returns newCategory (so the variables code would just be an early return)?

&gt; LayoutTests/fast/css/variables/calc.html:8
&gt; +  border-width: -webkit-calc(-webkit-var(a) + -webkit-var(b)) -webkit-calc(-webkit-var(c) * -webkit-var(d));

Huh, the -webkit makes it look like it&apos;s a negative value.  Just for completeness, can you add a test case with --webkit-var to see if it negates it?  Also, can you add some test cases for when variables are not defined or are invalid values?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708010</commentid>
    <comment_count>4</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-08-29 16:17:32 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 161133 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161133&amp;action=review
&gt; 
&gt; Shadow review.
&gt; 
&gt; lgtm, please consider nits though
&gt; 
&gt; &gt; Source/WebCore/css/CSSCalculationValue.cpp:111
&gt; &gt; +bool CSSCalcValue::hasVariableReference() const
&gt; 
&gt; suggestion: could this be &apos;hasVariables&apos; or &apos;containsVariables&apos; or &apos;hasCssVariableReference&apos;? &apos;hasVariableReference&apos; could be misinterpreted as &apos;has a reference, and it is variable/mutable&apos;, rather than &apos;there are CSS variables here&apos;.

I see your point, but hasVariableReference is already the name used everywhere else in the CSSValue hierarchy. I can change that, but it would be a job for a different patch.

&gt; &gt; Source/WebCore/css/CSSCalculationValue.h:108
&gt; &gt; +    String customSerializeResolvingVariables(const HashMap&lt;AtomicString, String&gt;&amp;) const;
&gt; 
&gt; Here it is &apos;customSerializeResolvingVariables&apos;, while in CalcExpressionNode it is &apos;serializeResolvingVariables&apos;. Other methods like &apos;customCssText&apos; are the same in both - I don&apos;t understand why these are different?

custom* is used because CSSValue does manual devirtualization, so a different function name is needed. Because CalcExpressionNode does use virtual functions this is not necessary in that case. If in a future patch CSSCalculationValue is changed not to extend CSSValue we can drop the &quot;custom&quot; prefix.

&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:191
&gt; &gt; +        return CSSPrimitiveValue::CSS_UNKNOWN; // The type of an calculation containing a variable cannot be known until the value of the variable is determined.
&gt; 
&gt; typo: &apos;an caculation&apos; -&gt; &apos;a calculation&apos;

Heh, your typo there confused me for a second. s/an/a done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708130</commentid>
    <comment_count>5</comment_count>
      <attachid>161374</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-08-29 18:05:44 -0700</bug_when>
    <thetext>Created attachment 161374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708142</commentid>
    <comment_count>6</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-08-29 18:10:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Huh, the -webkit makes it look like it&apos;s a negative value.  Just for completeness, can you add a test case with --webkit-var to see if it negates it?  Also, can you add some test cases for when variables are not defined or are invalid values?

See: http://www.w3.org/TR/css3-values/#calc - as I understand it (from Mike&apos;s verbal description) css calc expressions do not support unary negation, although you can write 0 - x to achieve the same result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708196</commentid>
    <comment_count>7</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-08-29 18:56:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #3)
&gt; &gt; Huh, the -webkit makes it look like it&apos;s a negative value.  Just for completeness, can you add a test case with --webkit-var to see if it negates it?  Also, can you add some test cases for when variables are not defined or are invalid values?
&gt; 
&gt; See: http://www.w3.org/TR/css3-values/#calc - as I understand it (from Mike&apos;s verbal description) css calc expressions do not support unary negation, although you can write 0 - x to achieve the same result.

The gotcha is that you can&apos;t negate a parenthesised expression - ie calc(-(10px * 2)) isn&apos;t allowed. You need to do calc(-1 * (10px * 2)) or calc(0 - (10px * 2)).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708245</commentid>
    <comment_count>8</comment_count>
      <attachid>161392</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-08-29 20:20:56 -0700</bug_when>
    <thetext>Created attachment 161392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708772</commentid>
    <comment_count>9</comment_count>
      <attachid>161392</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-30 10:09:45 -0700</bug_when>
    <thetext>Comment on attachment 161392
Patch

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

The change looks fine, but please add more test cases before landing.  There should be test cases for:
1) Referencing a variable that doesn&apos;t exist.
2) Referencing a variable that is not a valid value (e.g., has a string value).
3) --webkit-var() just to codify the behavior.  It&apos;s fine that that fails, but we should still have a test for it.
4) Maybe a test case where the variable itself is a calc expression?  Also doesn&apos;t have to work, but would be nice to have a test case.

&gt; Source/WebCore/css/CSSCalculationValue.cpp:80
&gt; +static String buildCssText(String expression)

Nit: const String&amp; for the input param.  It saves a bit of internal ref counting.

&gt; Source/WebCore/css/CSSCalculationValue.cpp:330
&gt; +    static String buildCssText(String leftExpression, String rightExpression, CalcOperator op)

Nit: const String&amp; for input params.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709202</commentid>
    <comment_count>10</comment_count>
      <attachid>161597</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-08-30 17:52:45 -0700</bug_when>
    <thetext>Created attachment 161597
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709211</commentid>
    <comment_count>11</comment_count>
      <attachid>161597</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 18:13:27 -0700</bug_when>
    <thetext>Comment on attachment 161597
Patch for landing

Clearing flags on attachment: 161597

Committed r127220: &lt;http://trac.webkit.org/changeset/127220&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709212</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 18:13:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161133</attachid>
            <date>2012-08-28 21:48:21 -0700</date>
            <delta_ts>2012-08-29 18:05:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95284-20120829144810.patch</filename>
            <type>text/plain</type>
            <size>13092</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVlMDEzZWFkMDkzOGM4
YTQxZTc3NmRmZjExMjdjOTAxZGU2ZTJiNi4uM2MyZDBjNjcwZjY5NTA1YmJmOTNmMGZhOTBhMDYw
MDZmYzI0Njk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA4LTI4ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBp
dCBwb3NzaWJsZSB0byB1c2UgQ1NTIFZhcmlhYmxlcyBpbnNpZGUgQ2FsYyBleHByZXNzaW9ucy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mjg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3dzIGNh
bGMgZXhwcmVzc2lvbnMgdG8gY29udGFpbiB1bmV2YWx1YXRlZCB2YXJpYWJsZXMsIHdoaWNoIGFy
ZSB0aGVuIHJlc29sdmVkIGluIFN0eWxlUmVzb2x2ZXIuY3BwIHdoZW4gYnVpbGRpbmcgdGhlIFJl
bmRlclN0eWxlIHRyZWUuCisKKyAgICAgICAgVGVzdHM6CisgICAgICAgIGZhc3QvY3NzL3Zhcmlh
Ymxlcy9jYWxjLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnVuaXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6aGFzVmFyaWFibGVSZWZl
cmVuY2UpOgorICAgICAgICAoQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6aGFzVmFyaWFibGVSZWZl
cmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjp0b0NhbGNW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxl
bmd0aFB4KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgIChDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjpoYXNWYXJpYWJsZVJlZmVy
ZW5jZSk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaDoKKyAgICAgICAgKENT
U0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxjVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnZhbGlkQ2FsY3VsYXRpb25Vbml0KToKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OnByaW1pdGl2ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgICogY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKwogMjAxMi0wOC0yNiAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHBhcmVudCBwb2ludGVyIGZyb20gU3R5
bGVTaGVldENvbnRlbnRzIGFuZCBTdHlsZVJ1bGVJbXBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA1YTEwYzU5ODVmY2FiYTFmNjkxNmFmODJlMzE5
MDY3ODYyNDIyMjQzLi40NmNiZTFjMDFhNGY3ODIyMDBlNDM4NWZiYzI3YTFkMDY0MTgwNmM1IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC02OCw2ICs2
OCwxMCBAQCBzdGF0aWMgQ2FsY3VsYXRpb25DYXRlZ29yeSB1bml0Q2F0ZWdvcnkoQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlKQogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QQzoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzoKICAgICAgICAgcmV0
dXJuIENhbGNMZW5ndGg7CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU6CisgICAgICAgIHJldHVybiBDYWxjVmFy
aWFibGU7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gQ2FsY090aGVyOwog
ICAgIH0KQEAgLTg4LDYgKzkyLDI4IEBAIFN0cmluZyBDU1NDYWxjVmFsdWU6OmN1c3RvbUNzc1Rl
eHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsgCiB9CiAKKyNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKK1N0cmluZyBDU1NDYWxjVmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFy
aWFibGVzKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIAorICAgIHJl
c3VsdC5hcHBlbmQoIi13ZWJraXQtY2FsYyIpOworICAgIFN0cmluZyBleHByZXNzaW9uID0gbV9l
eHByZXNzaW9uLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKTsKKyAgICBi
b29sIGV4cHJlc3Npb25IYXNTaW5nbGVUZXJtID0gZXhwcmVzc2lvblswXSAhPSAnKCc7CisgICAg
aWYgKGV4cHJlc3Npb25IYXNTaW5nbGVUZXJtKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcoJyk7
CisgICAgcmVzdWx0LmFwcGVuZChleHByZXNzaW9uKTsKKyAgICBpZiAoZXhwcmVzc2lvbkhhc1Np
bmdsZVRlcm0pCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKKyAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7IAorfQorCitib29sIENTU0NhbGNWYWx1ZTo6aGFzVmFyaWFibGVSZWZlcmVu
Y2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2V4cHJlc3Npb24tPmhhc1ZhcmlhYmxlUmVmZXJl
bmNlKCk7Cit9CisjZW5kaWYKKwogdm9pZCBDU1NDYWxjVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewog
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKQEAgLTEzMCw2ICsxNTYsMTggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV92YWx1ZS0+Y3NzVGV4dCgpOwogICAgIH0KIAorI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQorICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhj
b25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1Zhcmlh
Ymxlcyh2YXJpYWJsZXMpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFyaWFi
bGVSZWZlcmVuY2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmlzVmFy
aWFibGVOYW1lKCk7CisgICAgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q2Fs
Y0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNo
IChtX2NhdGVnb3J5KSB7CkBAIC0xNDMsNiArMTgxLDkgQEAgcHVibGljOgogICAgICAgICAvLyBP
bmx5IHR5cGVzIHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExlbmd0aCBleHByZXNzaW9uIGNhbiBi
ZSBjb252ZXJ0ZWQKICAgICAgICAgLy8gdG8gYSBDYWxjRXhwcmVzc2lvbk5vZGUuIENhbGNQZXJj
ZW50TnVtYmVyIG1ha2VzIG5vIHNlbnNlIGFzIGEgTGVuZ3RoLgogICAgICAgICBjYXNlIENhbGNQ
ZXJjZW50TnVtYmVyOgorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgICAgICBjYXNlIENh
bGNWYXJpYWJsZToKKyNlbmRpZgogICAgICAgICBjYXNlIENhbGNPdGhlcjoKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CkBAIC0xNTgsNiArMTk5LDkgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIENhbGNMZW5ndGg6CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnRM
ZW5ndGg6CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnROdW1iZXI6CisjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCisgICAgICAgIGNhc2UgQ2FsY1ZhcmlhYmxlOgorI2VuZGlmCiAgICAgICAgIGNh
c2UgQ2FsY090aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE3NSw2ICsyMTksOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gbV92YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudExl
bmd0aDoKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJlcjoKKyNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKKyAgICAgICAgY2FzZSBDYWxjVmFyaWFibGU6CisjZW5kaWYKICAgICAgICAgY2Fz
ZSBDYWxjT3RoZXI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjE2LDYgKzI2MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAg
ICBBU1NFUlQobGVmdENhdGVnb3J5ICE9IENhbGNPdGhlciAmJiByaWdodENhdGVnb3J5ICE9IENh
bGNPdGhlcik7CiAgICAgICAgIAorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgICAgICBp
ZiAobGVmdENhdGVnb3J5ID09IENhbGNWYXJpYWJsZSB8fCByaWdodENhdGVnb3J5ID09IENhbGNW
YXJpYWJsZSkKKyAgICAgICAgICAgIG5ld0NhdGVnb3J5ID0gQ2FsY1ZhcmlhYmxlOworICAgICAg
ICBlbHNlCisjZW5kaWYKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIENhbGNB
ZGQ6CiAgICAgICAgIGNhc2UgQ2FsY1N1YnRyYWN0OiAgICAgICAgICAgICAKQEAgLTI5Myw2ICsz
NDUsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7ICAgIAog
ICAgIH0KIAorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIHZpcnR1YWwgU3RyaW5nIHNl
cmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiYgdmFyaWFibGVzKSBjb25zdAorICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJygnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCht
X2xlZnRTaWRlLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2Fz
dDxjaGFyPihtX29wZXJhdG9yKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChtX3JpZ2h0U2lkZS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KHZhcmlhYmxlcykpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CisgICAgCisgICAgICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsgICAgCisgICAgfQorCisgICAgdmlydHVhbCBib29s
IGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xl
ZnRTaWRlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpIHx8IG1fcmlnaHRTaWRlLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZSgpOworICAgIH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIENTU0NhbGNCaW5h
cnlPcGVyYXRpb24oUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQ
YXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlLCBDYWxjT3BlcmF0b3Ig
b3AsIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkpCiAgICAgICAgIDogQ1NTQ2FsY0V4cHJl
c3Npb25Ob2RlKGNhdGVnb3J5LCBsZWZ0U2lkZS0+aXNJbnRlZ2VyKCkgJiYgcmlnaHRTaWRlLT5p
c0ludGVnZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4
IGIyNWY3YjMxYTUwMjJjMDhiOGZmNmQ1YTYyNmQwYzQzNzQ0ZjQ5MTYuLjA0NGNmMzJhNDBkM2I2
YmI1ZWNlMDQ4ZTQ0MjM4MWQ2NjhjMTI5Y2EgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuaApAQCAtNTIsNiArNTIsOSBAQCBlbnVtIENhbGN1bGF0aW9uQ2F0ZWdvcnkg
ewogICAgIENhbGNQZXJjZW50LAogICAgIENhbGNQZXJjZW50TnVtYmVyLAogICAgIENhbGNQZXJj
ZW50TGVuZ3RoLAorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIENhbGNWYXJpYWJsZSwK
KyNlbmRpZgogICAgIENhbGNPdGhlcgogfTsKICAgICAKQEAgLTY0LDYgKzY3LDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGRvdWJsZSBjb21wdXRlTGVuZ3RoUHgoUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLjAsIGJvb2wgY29tcHV0
aW5nRm9udFNpemUgPSBmYWxzZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGN1c3Rv
bUNzc1RleHQoKSBjb25zdCA9IDA7CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJp
YWJsZVJlZmVyZW5jZSgpIGNvbnN0ID0gMDsKKyNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCA9IDA7CiAgICAgCkBAIC05
Nyw2ICsxMDQsMTAgQEAgcHVibGljOgogICAgIGRvdWJsZSBjb21wdXRlTGVuZ3RoUHgoUmVuZGVy
U3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRp
cGxpZXIgPSAxLjAsIGJvb2wgY29tcHV0aW5nRm9udFNpemUgPSBmYWxzZSkgY29uc3Q7CiAgICAg
ICAgIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CisjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCisgICAgU3RyaW5nIGN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhj
b25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OworICAgIGJvb2wgaGFz
VmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkKaW5kZXggMjlmYWI0ZmZlZGQ2NGFlOWQ5MTYwYzdmNDM4ZWM2YjUwMWQz
MzBkMS4uODI5YmI4OWQ0ZTVkNDFlYWExNjlmZmM5OWQ5MThmMDdiMTYwY2YxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55CkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCBjc3N5eWxleChZ
WVNUWVBFKiB5eWx2YWwsIENTU1BhcnNlciogcGFyc2VyKQogCiAlfQogCi0lZXhwZWN0IDYyCisl
ZXhwZWN0IDYzCiAKICVub25hc3NvYyBMT1dFU1RfUFJFQwogCkBAIC0xNTUwLDYgKzE1NTAsMTMg
QEAgZnVuY3Rpb246CiAgCiBjYWxjX2Z1bmNfdGVybToKICAgdW5hcnlfdGVybSB7ICQkID0gJDE7
IH0KKyAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCAnKScgbWF5YmVfc3BhY2Ugewor
I2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuc3Ry
aW5nID0gJDM7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJM
RV9OQU1FOworI2VuZGlmCisgIH0KICAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJtIHsgJCQg
PSAkMjsgJCQuZlZhbHVlICo9ICQxOyB9CiAgIDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApp
bmRleCA4Y2EwMzRhZmQxMGI1MGZjMmRlMjgzYWM0ODllYzVlNjdkMzdkOGYwLi5iMzAzZGU3ZDEy
YWIzNjkxNzE4YWZiMWI0NzQyYWMxN2NmOTVlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cApAQCAtMTQ0Myw2ICsxNDQzLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjp2YWxpZENhbGN1bGF0aW9u
VW5pdChDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIFVuaXRzIHVuaXRmbGFncykKICAgICBjYXNlIENh
bGNQZXJjZW50TnVtYmVyOgogICAgICAgICBiID0gKHVuaXRmbGFncyAmIEZQZXJjZW50KSAmJiAo
dW5pdGZsYWdzICYgRk51bWJlcik7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQorICAgIGNhc2UgQ2FsY1ZhcmlhYmxlOgorICAgICAgICBiID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIENhbGNPdGhlcjoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggYzQzM2Yy
MDk0ZWMxOGM0MTk0NDIyMjI0NDdmNjc4NmI0OTU5YTU5My4uNjY4MTBkM2I4NjhmN2JmNjc0OGVh
NDdmMmZlNjQ3ZGQ0Y2VhNGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCkBAIC0xODYsNiArMTg2LDEwIEBAIHVuc2lnbmVkIHNob3J0IENTU1ByaW1pdGl2ZVZh
bHVlOjpwcmltaXRpdmVUeXBlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOwogICAgIGNhc2UgQ2FsY1BlcmNl
bnRMZW5ndGg6CiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NBTENfUEVS
Q0VOVEFHRV9XSVRIX0xFTkdUSDsKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBjYXNl
IENhbGNWYXJpYWJsZToKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5L
Tk9XTjsgLy8gVGhlIHR5cGUgb2YgYW4gY2FsY3VsYXRpb24gY29udGFpbmluZyBhIHZhcmlhYmxl
IGNhbm5vdCBiZSBrbm93biB1bnRpbCB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGlzIGRldGVy
bWluZWQuCisjZW5kaWYKICAgICBjYXNlIENhbGNPdGhlcjoKICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTjsKICAgICB9CkBAIC0xMTE5LDggKzExMjMsMTAgQEAg
U3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tU2VyaWFs
aXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+
JiB2YXJpYWJsZXMpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NT
X1ZBUklBQkxFX05BTUUgJiYgdmFyaWFibGVzLmNvbnRhaW5zKG1fdmFsdWUuc3RyaW5nKSkKKyAg
ICBpZiAoaXNWYXJpYWJsZU5hbWUoKSAmJiB2YXJpYWJsZXMuY29udGFpbnMobV92YWx1ZS5zdHJp
bmcpKQogICAgICAgICByZXR1cm4gdmFyaWFibGVzLmdldChtX3ZhbHVlLnN0cmluZyk7CisgICAg
aWYgKGlzQ2FsY3VsYXRlZCgpKQorICAgICAgICByZXR1cm4gY3NzQ2FsY1ZhbHVlKCktPmN1c3Rv
bVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpOwogICAgIHJldHVybiBjdXN0
b21Dc3NUZXh0KCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApp
bmRleCAwOGVlMjhjZGFiYzRmNzIzN2E0Y2NiZTQ4YzQ5Yzk5MGZkNGM1OTBjLi4wYTU0NjNhNTVj
ZDdmZWU3YWE3MTY1MWQ1N2E4OWM0MDFkYmNlZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCkBAIC0zMzU4LDggKzMzNTgsMTUgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBv
c2l0aW9uKENTU1ZhbHVlKiB2YWx1ZSwgTGVuZ3RoJiBwb3NpdGlvbikKICNpZiBFTkFCTEUoQ1NT
X1ZBUklBQkxFUykKIHN0YXRpYyBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKENTU1ZhbHVlKiB2
YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+aXNWYXJpYWJsZU5hbWUoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChDU1NDYWxjVmFsdWUqIGNhbGNWYWx1
ZSA9IHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBj
YWxjVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgICAgIHJldHVybiBwcmltaXRp
dmVWYWx1ZS0+aXNWYXJpYWJsZU5hbWUoKTsKKyAgICB9CisKKyAgICBpZiAodmFsdWUtPmlzQ2Fs
Y3VsYXRpb25WYWx1ZSgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTQ2FsY1ZhbHVl
Kj4odmFsdWUpLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOwogCiAgICAgZm9yIChDU1NWYWx1ZUxp
c3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewogICAgICAg
ICBpZiAoaGFzVmFyaWFibGVSZWZlcmVuY2UoaS52YWx1ZSgpKSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYWxjLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzM2Iz
MGYxMjBlZDFjYzc1MWJhMWI2ZTJkNTUzODY0NjE4NDk0OTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsOCBAQAorPHN0eWxlPgorZGl2IHsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOworICAgIGJv
cmRlci1zdHlsZTogc29saWQ7CisgICAgYm9yZGVyLXdpZHRoOiAzcHggMTBweDsKK30KKzwvc3R5
bGU+Cis8ZGl2PlRoaXMgdGV4dCBzaG91bGQgaGF2ZSB0b3AgYW5kIGJvdHRvbSBib3JkZXJzIG9m
IDNweCBhbmQgbGVmdCBhbmQgcmlnaHQgYm9yZGVycyBvZiAxMHB4PC9kaXY+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTQ0N2Q0OTRkYTA1YjZl
OTM4MjhjNTk4MTlhYjU2YzdkNTY3N2NmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMuaHRtbApAQCAtMCwwICsxLDE2IEBACis8c2NyaXB0Pgor
aW50ZXJuYWxzLnNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8L3Njcmlw
dD4KKzxzdHlsZT4KK2RpdiB7CisgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgIGJvcmRlci1zdHls
ZTogc29saWQ7CisgIGJvcmRlci13aWR0aDogLXdlYmtpdC1jYWxjKC13ZWJraXQtdmFyKGEpICsg
LXdlYmtpdC12YXIoYikpIC13ZWJraXQtY2FsYygtd2Via2l0LXZhcihjKSAqIC13ZWJraXQtdmFy
KGQpKTsKKyAgLXdlYmtpdC12YXItYTogMnB4OworICAtd2Via2l0LXZhci1iOiAxcHg7CisgIC13
ZWJraXQtdmFyLWM6IDU7CisgIC13ZWJraXQtdmFyLWQ6IDJweDsKKworfQorPC9zdHlsZT4KKzxk
aXY+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIHRvcCBhbmQgYm90dG9tIGJvcmRlcnMgb2YgM3B4IGFu
ZCBsZWZ0IGFuZCByaWdodCBib3JkZXJzIG9mIDEwcHg8L2Rpdj4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161374</attachid>
            <date>2012-08-29 18:05:44 -0700</date>
            <delta_ts>2012-08-29 20:20:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95284-20120830110532.patch</filename>
            <type>text/plain</type>
            <size>16326</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVlMDEzZWFkMDkzOGM4
YTQxZTc3NmRmZjExMjdjOTAxZGU2ZTJiNi4uZDEwNTlmN2M0ZDIzNWYwMTNmNDg4ZjA5MzIzOTYy
MTgxZWE0ODA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA4LTI4ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBp
dCBwb3NzaWJsZSB0byB1c2UgQ1NTIFZhcmlhYmxlcyBpbnNpZGUgQ2FsYyBleHByZXNzaW9ucy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mjg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3dzIGNh
bGMgZXhwcmVzc2lvbnMgdG8gY29udGFpbiB1bmV2YWx1YXRlZCB2YXJpYWJsZXMsIHdoaWNoIGFy
ZSB0aGVuIHJlc29sdmVkIGluIFN0eWxlUmVzb2x2ZXIuY3BwIHdoZW4gYnVpbGRpbmcgdGhlIFJl
bmRlclN0eWxlIHRyZWUuCisKKyAgICAgICAgVGVzdHM6CisgICAgICAgIGZhc3QvY3NzL3Zhcmlh
Ymxlcy9jYWxjLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnVuaXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKToKKyAgICAgICAgR2VuZXJhdGVzIGEgQ1NTIGV4cHJlc3Npb24gd2l0aCB2YXJpYWJs
ZXMgcmVzb2x2ZWQgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIHZhbHVlcy4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNWYWx1ZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICBSZXR1
cm5zIHRydWUgaWYgdGhlIGNhbGN1bGF0aW9uJ3MgZXhwcmVzc2lvbiB0cmVlIHJlZmVycyB0byBh
IHZhcmlhYmxlICh0aGF0IG5lZWRzIHRvIGJlIHJlc29sdmVkKS4KKyAgICAgICAgKENTU0NhbGNQ
cmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJpbWl0aXZlVmFsdWU6
OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIFJlc29sdmVzIHRoZSB2YXJp
YWJsZSB1c2luZyB0aGUgdW5kZXJseWluZyBDU1NQcmltaXRpdmVWYWx1ZSdzIHNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmlt
aXRpdmVWYWx1ZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
YWxjUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFB4KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0NhbGNCaW5hcnlPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChDU1NDYWxjQmluYXJ5T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIEJ1aWxkcyBhIENTUyBleHByZXNzaW9u
IGZvciBjb250YWluZWQgc3VidHJlZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjQmluYXJ5
T3BlcmF0aW9uOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIFJldHVybnMgdHJ1ZSBp
ZiBlaXRoZXIgc3VidHJlZSBjb250YWlucyBhIHZhcmlhYmxlLgorICAgICAgICAqIGNzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NDYWxjRXhwcmVzc2lvbk5vZGUpOgorICAg
ICAgICAoQ1NTQ2FsY1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp2YWxp
ZENhbGN1bGF0aW9uVW5pdCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpwcmltaXRpdmVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21TZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisK
IDIwMTItMDgtMjYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBwYXJlbnQgcG9pbnRlciBmcm9tIFN0eWxlU2hlZXRDb250ZW50cyBhbmQgU3R5bGVS
dWxlSW1wb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5k
ZXggNWExMGM1OTg1ZmNhYmExZjY5MTZhZjgyZTMxOTA2Nzg2MjQyMjI0My4uNTk5OTlkZjU2NGM4
ZDc4ZDZmNTE4NDkyYjJlMDVkNmM5ZGQ4OTFiNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcApAQCAtNjgsMTcgKzY4LDE5IEBAIHN0YXRpYyBDYWxjdWxhdGlv
bkNhdGVnb3J5IHVuaXRDYXRlZ29yeShDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUp
CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOgogICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19SRU1TOgogICAgICAgICByZXR1cm4gQ2FsY0xlbmd0aDsKKyNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFC
TEVfTkFNRToKKyAgICAgICAgcmV0dXJuIENhbGNWYXJpYWJsZTsKKyNlbmRpZgogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBDYWxjT3RoZXI7CiAgICAgfQogfQotICAgIAotU3RyaW5nIENT
U0NhbGNWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CisKK3N0YXRpYyBTdHJpbmcgYnVpbGRD
c3NUZXh0KFN0cmluZyBleHByZXNzaW9uKQogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0Owot
ICAgIAogICAgIHJlc3VsdC5hcHBlbmQoIi13ZWJraXQtY2FsYyIpOwotICAgIFN0cmluZyBleHBy
ZXNzaW9uID0gbV9leHByZXNzaW9uLT5jdXN0b21Dc3NUZXh0KCk7CiAgICAgYm9vbCBleHByZXNz
aW9uSGFzU2luZ2xlVGVybSA9IGV4cHJlc3Npb25bMF0gIT0gJygnOwogICAgIGlmIChleHByZXNz
aW9uSGFzU2luZ2xlVGVybSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKCcpOwpAQCAtODgsNiAr
OTAsMjMgQEAgU3RyaW5nIENTU0NhbGNWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOyAKIH0KIAorU3RyaW5nIENTU0NhbGNWYWx1ZTo6Y3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1aWxkQ3NzVGV4dChtX2V4cHJlc3Np
b24tPmN1c3RvbUNzc1RleHQoKSk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKK1N0
cmluZyBDU1NDYWxjVmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25z
dCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAoreworICAg
IHJldHVybiBidWlsZENzc1RleHQobV9leHByZXNzaW9uLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJp
YWJsZXModmFyaWFibGVzKSk7Cit9CisKK2Jvb2wgQ1NTQ2FsY1ZhbHVlOjpoYXNWYXJpYWJsZVJl
ZmVyZW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXhwcmVzc2lvbi0+aGFzVmFyaWFibGVS
ZWZlcmVuY2UoKTsKK30KKyNlbmRpZgorCiB2b2lkIENTU0NhbGNWYWx1ZTo6cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwpAQCAtMTMwLDYgKzE0OSwxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX3ZhbHVlLT5jc3NUZXh0KCk7CiAgICAgfQogCisjaWYgRU5BQkxFKENT
U19WQVJJQUJMRVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFi
bGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5n
VmFyaWFibGVzKHZhcmlhYmxlcyk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNW
YXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZS0+
aXNWYXJpYWJsZU5hbWUoKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgUGFzc093blB0
cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20pIGNvbnN0CiAgICAgewogICAgICAgICBz
d2l0Y2ggKG1fY2F0ZWdvcnkpIHsKQEAgLTE0Myw2ICsxNzQsOSBAQCBwdWJsaWM6CiAgICAgICAg
IC8vIE9ubHkgdHlwZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJlc3Npb24g
Y2FuIGJlIGNvbnZlcnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9kZS4gQ2Fs
Y1BlcmNlbnROdW1iZXIgbWFrZXMgbm8gc2Vuc2UgYXMgYSBMZW5ndGguCiAgICAgICAgIGNhc2Ug
Q2FsY1BlcmNlbnROdW1iZXI6CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgICAgIGNh
c2UgQ2FsY1ZhcmlhYmxlOgorI2VuZGlmCiAgICAgICAgIGNhc2UgQ2FsY090aGVyOgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KQEAgLTE1OCw2ICsxOTIsOSBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQ2FsY0xlbmd0aDoKICAgICAgICAgY2FzZSBDYWxjUGVy
Y2VudExlbmd0aDoKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJlcjoKKyNpZiBFTkFCTEUo
Q1NTX1ZBUklBQkxFUykKKyAgICAgICAgY2FzZSBDYWxjVmFyaWFibGU6CisjZW5kaWYKICAgICAg
ICAgY2FzZSBDYWxjT3RoZXI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTc1LDYgKzIxMiw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBtX3ZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAgICBjYXNlIENhbGNQZXJj
ZW50TGVuZ3RoOgogICAgICAgICBjYXNlIENhbGNQZXJjZW50TnVtYmVyOgorI2lmIEVOQUJMRShD
U1NfVkFSSUFCTEVTKQorICAgICAgICBjYXNlIENhbGNWYXJpYWJsZToKKyNlbmRpZgogICAgICAg
ICBjYXNlIENhbGNPdGhlcjoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yMDUsNDIgKzI0NSw1MCBAQCBzdGF0aWMgY29uc3QgQ2FsY3Vs
YXRpb25DYXRlZ29yeSBhZGRTdWJ0cmFjdFJlc3VsdFtDYWxjT3RoZXJdW0NhbGNPdGhlcl0gPSB7
CiAgICAgeyBDYWxjUGVyY2VudE51bWJlciwgQ2FsY090aGVyLCAgICAgICAgIENhbGNQZXJjZW50
TnVtYmVyLCBDYWxjUGVyY2VudE51bWJlciwgQ2FsY090aGVyIH0sCiAgICAgeyBDYWxjT3RoZXIs
ICAgICAgICAgQ2FsY1BlcmNlbnRMZW5ndGgsIENhbGNQZXJjZW50TGVuZ3RoLCBDYWxjT3RoZXIs
ICAgICAgICAgQ2FsY1BlcmNlbnRMZW5ndGggfSwKIH07ICAgIAorCitzdGF0aWMgQ2FsY3VsYXRp
b25DYXRlZ29yeSBkZXRlcm1pbmVDYXRlZ29yeShjb25zdCBDU1NDYWxjRXhwcmVzc2lvbk5vZGUm
IGxlZnRTaWRlLCBjb25zdCBDU1NDYWxjRXhwcmVzc2lvbk5vZGUmIHJpZ2h0U2lkZSwgQ2FsY09w
ZXJhdG9yIG9wKQoreworICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgbGVmdENhdGVnb3J5ID0gbGVm
dFNpZGUuY2F0ZWdvcnkoKTsKKyAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IHJpZ2h0Q2F0ZWdvcnkg
PSByaWdodFNpZGUuY2F0ZWdvcnkoKTsKKworICAgIGlmIChsZWZ0Q2F0ZWdvcnkgPT0gQ2FsY090
aGVyIHx8IHJpZ2h0Q2F0ZWdvcnkgPT0gQ2FsY090aGVyKQorICAgICAgICByZXR1cm4gQ2FsY090
aGVyOworCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgaWYgKGxlZnRDYXRlZ29yeSA9
PSBDYWxjVmFyaWFibGUgfHwgcmlnaHRDYXRlZ29yeSA9PSBDYWxjVmFyaWFibGUpCisgICAgICAg
IHJldHVybiBDYWxjVmFyaWFibGU7CisjZW5kaWYKKworICAgIHN3aXRjaCAob3ApIHsKKyAgICBj
YXNlIENhbGNBZGQ6CisgICAgY2FzZSBDYWxjU3VidHJhY3Q6ICAgICAgICAgICAgIAorICAgICAg
ICByZXR1cm4gYWRkU3VidHJhY3RSZXN1bHRbbGVmdENhdGVnb3J5XVtyaWdodENhdGVnb3J5XTsK
KyAgICBjYXNlIENhbGNNdWx0aXBseToKKyAgICAgICAgaWYgKGxlZnRDYXRlZ29yeSAhPSBDYWxj
TnVtYmVyICYmIHJpZ2h0Q2F0ZWdvcnkgIT0gQ2FsY051bWJlcikgCisgICAgICAgICAgICByZXR1
cm4gQ2FsY090aGVyOworICAgICAgICByZXR1cm4gbGVmdENhdGVnb3J5ID09IENhbGNOdW1iZXIg
PyByaWdodENhdGVnb3J5IDogbGVmdENhdGVnb3J5OworICAgIGNhc2UgQ2FsY0RpdmlkZToKKyAg
ICAgICAgaWYgKHJpZ2h0Q2F0ZWdvcnkgIT0gQ2FsY051bWJlciB8fCByaWdodFNpZGUuaXNaZXJv
KCkpCisgICAgICAgICAgICByZXR1cm4gQ2FsY090aGVyOworICAgICAgICByZXR1cm4gbGVmdENh
dGVnb3J5OworICAgIH0KICAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gQ2FsY090aGVyOworfQorCiBjbGFzcyBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uIDogcHVibGlj
IENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CisKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDU1NDYWxjQmluYXJ5T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVz
c2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmln
aHRTaWRlLCBDYWxjT3BlcmF0b3Igb3ApCiAgICAgewotICAgICAgICBDYWxjdWxhdGlvbkNhdGVn
b3J5IGxlZnRDYXRlZ29yeSA9IGxlZnRTaWRlLT5jYXRlZ29yeSgpOwotICAgICAgICBDYWxjdWxh
dGlvbkNhdGVnb3J5IHJpZ2h0Q2F0ZWdvcnkgPSByaWdodFNpZGUtPmNhdGVnb3J5KCk7Ci0gICAg
ICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgbmV3Q2F0ZWdvcnkgPSBDYWxjT3RoZXI7Ci0gICAgICAg
IAotICAgICAgICBBU1NFUlQobGVmdENhdGVnb3J5ICE9IENhbGNPdGhlciAmJiByaWdodENhdGVn
b3J5ICE9IENhbGNPdGhlcik7Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAg
ICAgIGNhc2UgQ2FsY0FkZDoKLSAgICAgICAgY2FzZSBDYWxjU3VidHJhY3Q6ICAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKGxlZnRDYXRlZ29yeSA9PSBDYWxjT3RoZXIgfHwgcmlnaHRDYXRl
Z29yeSA9PSBDYWxjT3RoZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAg
ICBuZXdDYXRlZ29yeSA9IGFkZFN1YnRyYWN0UmVzdWx0W2xlZnRDYXRlZ29yeV1bcmlnaHRDYXRl
Z29yeV07Ci0gICAgICAgICAgICBicmVhazsgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBDYWxjTXVsdGlwbHk6Ci0gICAgICAgICAgICBpZiAobGVmdENhdGVnb3J5ICE9IENhbGNO
dW1iZXIgJiYgcmlnaHRDYXRlZ29yeSAhPSBDYWxjTnVtYmVyKSAKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbmV3Q2F0ZWdvcnkgPSBsZWZ0Q2F0
ZWdvcnkgPT0gQ2FsY051bWJlciA/IHJpZ2h0Q2F0ZWdvcnkgOiBsZWZ0Q2F0ZWdvcnk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBDYWxjRGl2aWRl
OgotICAgICAgICAgICAgaWYgKHJpZ2h0Q2F0ZWdvcnkgIT0gQ2FsY051bWJlciB8fCByaWdodFNp
ZGUtPmlzWmVybygpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgbmV3
Q2F0ZWdvcnkgPSBsZWZ0Q2F0ZWdvcnk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQor
ICAgICAgICBBU1NFUlQobGVmdFNpZGUtPmNhdGVnb3J5KCkgIT0gQ2FsY090aGVyICYmIHJpZ2h0
U2lkZS0+Y2F0ZWdvcnkoKSAhPSBDYWxjT3RoZXIpOwogICAgICAgICAKKyAgICAgICAgQ2FsY3Vs
YXRpb25DYXRlZ29yeSBuZXdDYXRlZ29yeSA9IGRldGVybWluZUNhdGVnb3J5KCpsZWZ0U2lkZSwg
KnJpZ2h0U2lkZSwgb3ApOworCiAgICAgICAgIGlmIChuZXdDYXRlZ29yeSA9PSBDYWxjT3RoZXIp
CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIAorCiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbihsZWZ0U2lkZSwgcmlnaHRTaWRlLCBv
cCwgbmV3Q2F0ZWdvcnkpKTsKICAgICB9CiAgICAgCkBAIC0yOTMsNiArMzQxLDI3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOyAgICAKICAgICB9CiAKKyNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxl
cykgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcoJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9sZWZ0U2lkZS0+c2Vy
aWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcykpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV9vcGVy
YXRvcikpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQobV9yaWdodFNpZGUtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOworICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7ICAgIAorICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJl
ZmVyZW5jZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZWZ0U2lkZS0+aGFzVmFy
aWFibGVSZWZlcmVuY2UoKSB8fCBtX3JpZ2h0U2lkZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsK
KyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKFBh
c3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1ND
YWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wLCBDYWxjdWxhdGlv
bkNhdGVnb3J5IGNhdGVnb3J5KQogICAgICAgICA6IENTU0NhbGNFeHByZXNzaW9uTm9kZShjYXRl
Z29yeSwgbGVmdFNpZGUtPmlzSW50ZWdlcigpICYmIHJpZ2h0U2lkZS0+aXNJbnRlZ2VyKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCBiMjVmN2IzMWE1MDIy
YzA4YjhmZjZkNWE2MjZkMGM0Mzc0NGY0OTE2Li4wNDRjZjMyYTQwZDNiNmJiNWVjZTA0OGU0NDIz
ODFkNjY4YzEyOWNhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRp
b25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgK
QEAgLTUyLDYgKzUyLDkgQEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKICAgICBDYWxjUGVy
Y2VudCwKICAgICBDYWxjUGVyY2VudE51bWJlciwKICAgICBDYWxjUGVyY2VudExlbmd0aCwKKyNp
ZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBDYWxjVmFyaWFibGUsCisjZW5kaWYKICAgICBD
YWxjT3RoZXIKIH07CiAgICAgCkBAIC02NCw2ICs2NywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgY29t
cHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290
U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0g
ZmFsc2UpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29u
c3QgPSAwOworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIHZpcnR1YWwgU3RyaW5nIHNl
cmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2Uo
KSBjb25zdCA9IDA7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgPSAwOwogICAgIApAQCAtOTcsNiArMTA0LDEwIEBA
IHB1YmxpYzoKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50
U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBi
b29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNvbnN0OwogICAgICAgICAKICAgICBTdHJp
bmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAg
IFN0cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKKyAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJl
bmNlKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
CmluZGV4IDI5ZmFiNGZmZWRkNjRhZTlkOTE2MGM3ZjQzOGVjNmI1MDFkMzMwZDEuLjgyOWJiODlk
NGU1ZDQxZWFhMTY5ZmZjOTlkOTE4ZjA3YjE2MGNmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eQpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSogeXlsdmFs
LCBDU1NQYXJzZXIqIHBhcnNlcikKIAogJX0KIAotJWV4cGVjdCA2MgorJWV4cGVjdCA2MwogCiAl
bm9uYXNzb2MgTE9XRVNUX1BSRUMKIApAQCAtMTU1MCw2ICsxNTUwLDEzIEBAIGZ1bmN0aW9uOgog
IAogY2FsY19mdW5jX3Rlcm06CiAgIHVuYXJ5X3Rlcm0geyAkJCA9ICQxOyB9CisgIHwgVkFSRlVO
Q1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKKyNpZiBFTkFCTEUoQ1NT
X1ZBUklBQkxFUykKKyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLnN0cmluZyA9ICQzOworICAg
ICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRTsKKyNlbmRp
ZgorICB9CiAgIHwgdW5hcnlfb3BlcmF0b3IgdW5hcnlfdGVybSB7ICQkID0gJDI7ICQkLmZWYWx1
ZSAqPSAkMTsgfQogICA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOGNhMDM0YWZk
MTBiNTBmYzJkZTI4M2FjNDg5ZWM1ZTY3ZDM3ZDhmMC4uYjMwM2RlN2QxMmFiMzY5MTcxOGFmYjFi
NDc0MmFjMTdjZjk1ZTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE0NDMsNiAr
MTQ0MywxMSBAQCBib29sIENTU1BhcnNlcjo6dmFsaWRDYWxjdWxhdGlvblVuaXQoQ1NTUGFyc2Vy
VmFsdWUqIHZhbHVlLCBVbml0cyB1bml0ZmxhZ3MpCiAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJl
cjoKICAgICAgICAgYiA9ICh1bml0ZmxhZ3MgJiBGUGVyY2VudCkgJiYgKHVuaXRmbGFncyAmIEZO
dW1iZXIpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBj
YXNlIENhbGNWYXJpYWJsZToKKyAgICAgICAgYiA9IHRydWU7CisgICAgICAgIGJyZWFrOworI2Vu
ZGlmCiAgICAgY2FzZSBDYWxjT3RoZXI6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGM0MzNmMjA5NGVjMThjNDE5NDQy
MjIyNDQ3ZjY3ODZiNDk1OWE1OTMuLjA0NzgyNjE5ZGZlMzk0MTdjZjE5ZDExMGQzZmUwZTNlMzQ5
MDc0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMTg2
LDYgKzE4NiwxMCBAQCB1bnNpZ25lZCBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6cHJpbWl0aXZl
VHlwZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NBTENf
UEVSQ0VOVEFHRV9XSVRIX05VTUJFUjsKICAgICBjYXNlIENhbGNQZXJjZW50TGVuZ3RoOgogICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9M
RU5HVEg7CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgY2FzZSBDYWxjVmFyaWFibGU6
CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV047IC8vIFRoZSB0
eXBlIG9mIGEgY2FsY3VsYXRpb24gY29udGFpbmluZyBhIHZhcmlhYmxlIGNhbm5vdCBiZSBrbm93
biB1bnRpbCB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGlzIGRldGVybWluZWQuCisjZW5kaWYK
ICAgICBjYXNlIENhbGNPdGhlcjoKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVU5LTk9XTjsKICAgICB9CkBAIC0xMTE5LDggKzExMjMsMTAgQEAgU3RyaW5nIENTU1ByaW1p
dGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxF
UykKIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZBUklBQkxFX05BTUUg
JiYgdmFyaWFibGVzLmNvbnRhaW5zKG1fdmFsdWUuc3RyaW5nKSkKKyAgICBpZiAoaXNWYXJpYWJs
ZU5hbWUoKSAmJiB2YXJpYWJsZXMuY29udGFpbnMobV92YWx1ZS5zdHJpbmcpKQogICAgICAgICBy
ZXR1cm4gdmFyaWFibGVzLmdldChtX3ZhbHVlLnN0cmluZyk7CisgICAgaWYgKGlzQ2FsY3VsYXRl
ZCgpKQorICAgICAgICByZXR1cm4gY3NzQ2FsY1ZhbHVlKCktPmN1c3RvbVNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpOwogICAgIHJldHVybiBjdXN0b21Dc3NUZXh0KCk7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwOGVlMjhjZGFi
YzRmNzIzN2E0Y2NiZTQ4YzQ5Yzk5MGZkNGM1OTBjLi4wYTU0NjNhNTVjZDdmZWU3YWE3MTY1MWQ1
N2E4OWM0MDFkYmNlZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0z
MzU4LDggKzMzNTgsMTUgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVl
KiB2YWx1ZSwgTGVuZ3RoJiBwb3NpdGlvbikKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIHN0
YXRpYyBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKLSAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKS0+aXNWYXJpYWJsZU5hbWUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIGlmIChDU1NDYWxjVmFsdWUqIGNhbGNWYWx1ZSA9IHByaW1pdGl2ZVZh
bHVlLT5jc3NDYWxjVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxjVmFsdWUtPmhhc1Zh
cmlhYmxlUmVmZXJlbmNlKCk7CisgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS0+aXNWYXJp
YWJsZU5hbWUoKTsKKyAgICB9CisKKyAgICBpZiAodmFsdWUtPmlzQ2FsY3VsYXRpb25WYWx1ZSgp
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTQ2FsY1ZhbHVlKj4odmFsdWUpLT5oYXNW
YXJpYWJsZVJlZmVyZW5jZSgpOwogCiAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBpID0g
dmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewogICAgICAgICBpZiAoaGFzVmFyaWFi
bGVSZWZlcmVuY2UoaS52YWx1ZSgpKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3ZhcmlhYmxlcy9jYWxjLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJp
YWJsZXMvY2FsYy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzM2IzMGYxMjBlZDFjYzc1MWJh
MWI2ZTJkNTUzODY0NjE4NDk0OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy92YXJpYWJsZXMvY2FsYy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOCBAQAorPHN0eWxl
PgorZGl2IHsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOworICAgIGJvcmRlci1zdHlsZTogc29s
aWQ7CisgICAgYm9yZGVyLXdpZHRoOiAzcHggMTBweDsKK30KKzwvc3R5bGU+Cis8ZGl2PlRoaXMg
dGV4dCBzaG91bGQgaGF2ZSB0b3AgYW5kIGJvdHRvbSBib3JkZXJzIG9mIDNweCBhbmQgbGVmdCBh
bmQgcmlnaHQgYm9yZGVycyBvZiAxMHB4PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy92YXJpYWJsZXMvY2FsYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFi
bGVzL2NhbGMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTQ0N2Q0OTRkYTA1YjZlOTM4MjhjNTk4MTlhYjU2
YzdkNTY3N2NmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFi
bGVzL2NhbGMuaHRtbApAQCAtMCwwICsxLDE2IEBACis8c2NyaXB0PgoraW50ZXJuYWxzLnNldHRp
bmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2Rp
diB7CisgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgIGJvcmRlci1zdHlsZTogc29saWQ7CisgIGJv
cmRlci13aWR0aDogLXdlYmtpdC1jYWxjKC13ZWJraXQtdmFyKGEpICsgLXdlYmtpdC12YXIoYikp
IC13ZWJraXQtY2FsYygtd2Via2l0LXZhcihjKSAqIC13ZWJraXQtdmFyKGQpKTsKKyAgLXdlYmtp
dC12YXItYTogMnB4OworICAtd2Via2l0LXZhci1iOiAxcHg7CisgIC13ZWJraXQtdmFyLWM6IDU7
CisgIC13ZWJraXQtdmFyLWQ6IDJweDsKKworfQorPC9zdHlsZT4KKzxkaXY+VGhpcyB0ZXh0IHNo
b3VsZCBoYXZlIHRvcCBhbmQgYm90dG9tIGJvcmRlcnMgb2YgM3B4IGFuZCBsZWZ0IGFuZCByaWdo
dCBib3JkZXJzIG9mIDEwcHg8L2Rpdj4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161392</attachid>
            <date>2012-08-29 20:20:56 -0700</date>
            <delta_ts>2012-08-30 17:52:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95284-20120830132044.patch</filename>
            <type>text/plain</type>
            <size>17134</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRhNTE1NDQyYWZlYzYz
NDdmOGE2ZmQ0ZjNkYzA4YmFjZmZhZmJkNi4uZGE4ZDM4NjJjM2QwODRjMmM4ZTQ2MDI3ZGYwZGM5
MTg4OGI1OGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA4LTI4ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBp
dCBwb3NzaWJsZSB0byB1c2UgQ1NTIFZhcmlhYmxlcyBpbnNpZGUgQ2FsYyBleHByZXNzaW9ucy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mjg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3dzIGNh
bGMgZXhwcmVzc2lvbnMgdG8gY29udGFpbiB1bmV2YWx1YXRlZCB2YXJpYWJsZXMsIHdoaWNoIGFy
ZSB0aGVuIHJlc29sdmVkIGluIFN0eWxlUmVzb2x2ZXIuY3BwIHdoZW4gYnVpbGRpbmcgdGhlIFJl
bmRlclN0eWxlIHRyZWUuCisKKyAgICAgICAgVGVzdHM6CisgICAgICAgIGZhc3QvY3NzL3Zhcmlh
Ymxlcy9jYWxjLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnVuaXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKToKKyAgICAgICAgR2VuZXJhdGVzIGEgQ1NTIGV4cHJlc3Npb24gd2l0aCB2YXJpYWJs
ZXMgcmVzb2x2ZWQgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIHZhbHVlcy4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNWYWx1ZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICBSZXR1
cm5zIHRydWUgaWYgdGhlIGNhbGN1bGF0aW9uJ3MgZXhwcmVzc2lvbiB0cmVlIHJlZmVycyB0byBh
IHZhcmlhYmxlICh0aGF0IG5lZWRzIHRvIGJlIHJlc29sdmVkKS4KKyAgICAgICAgKENTU0NhbGNQ
cmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJpbWl0aXZlVmFsdWU6
OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIFJlc29sdmVzIHRoZSB2YXJp
YWJsZSB1c2luZyB0aGUgdW5kZXJseWluZyBDU1NQcmltaXRpdmVWYWx1ZSdzIHNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmlt
aXRpdmVWYWx1ZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
YWxjUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFB4KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0NhbGNCaW5hcnlPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChDU1NDYWxjQmluYXJ5T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIEJ1aWxkcyBhIENTUyBleHByZXNzaW9u
IGZvciBjb250YWluZWQgc3VidHJlZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjQmluYXJ5
T3BlcmF0aW9uOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIFJldHVybnMgdHJ1ZSBp
ZiBlaXRoZXIgc3VidHJlZSBjb250YWlucyBhIHZhcmlhYmxlLgorICAgICAgICAqIGNzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NDYWxjRXhwcmVzc2lvbk5vZGUpOgorICAg
ICAgICAoQ1NTQ2FsY1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp2YWxp
ZENhbGN1bGF0aW9uVW5pdCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpwcmltaXRpdmVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21TZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisK
IDIwMTItMDgtMjkgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDcmFzaCBpbiBXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OmNoZWNrTG9hZENvbXBs
ZXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA1
YTEwYzU5ODVmY2FiYTFmNjkxNmFmODJlMzE5MDY3ODYyNDIyMjQzLi43MGIyMTBkZWIwMDFlZjcy
ZmNkYjMxMWYwNWUzOWZkZjI2Y2NmMzk0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwCkBAIC02OCwxNyArNjgsMTkgQEAgc3RhdGljIENhbGN1bGF0aW9uQ2F0
ZWdvcnkgdW5pdENhdGVnb3J5KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlwZSkKICAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1JFTVM6CiAgICAgICAgIHJldHVybiBDYWxjTGVuZ3RoOworI2lmIEVOQUJMRShD
U1NfVkFSSUFCTEVTKQorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9O
QU1FOgorICAgICAgICByZXR1cm4gQ2FsY1ZhcmlhYmxlOworI2VuZGlmCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIENhbGNPdGhlcjsKICAgICB9CiB9Ci0gICAgCi1TdHJpbmcgQ1NTQ2Fs
Y1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKKworc3RhdGljIFN0cmluZyBidWlsZENzc1Rl
eHQoU3RyaW5nIGV4cHJlc3Npb24pCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAg
CiAgICAgcmVzdWx0LmFwcGVuZCgiLXdlYmtpdC1jYWxjIik7Ci0gICAgU3RyaW5nIGV4cHJlc3Np
b24gPSBtX2V4cHJlc3Npb24tPmN1c3RvbUNzc1RleHQoKTsKICAgICBib29sIGV4cHJlc3Npb25I
YXNTaW5nbGVUZXJtID0gZXhwcmVzc2lvblswXSAhPSAnKCc7CiAgICAgaWYgKGV4cHJlc3Npb25I
YXNTaW5nbGVUZXJtKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcoJyk7CkBAIC04OCw2ICs5MCwy
MyBAQCBTdHJpbmcgQ1NTQ2FsY1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7IAogfQogCitTdHJpbmcgQ1NTQ2FsY1ZhbHVlOjpjdXN0b21D
c3NUZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYnVpbGRDc3NUZXh0KG1fZXhwcmVzc2lvbi0+
Y3VzdG9tQ3NzVGV4dCgpKTsKK30KKworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorU3RyaW5n
IENTU0NhbGNWYWx1ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGJ1aWxkQ3NzVGV4dChtX2V4cHJlc3Npb24tPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxl
cyh2YXJpYWJsZXMpKTsKK30KKworYm9vbCBDU1NDYWxjVmFsdWU6Omhhc1ZhcmlhYmxlUmVmZXJl
bmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9leHByZXNzaW9uLT5oYXNWYXJpYWJsZVJlZmVy
ZW5jZSgpOworfQorI2VuZGlmCisKIHZvaWQgQ1NTQ2FsY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsK
ICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJ
bnN0cnVtZW50YXRpb246OkNTUyk7CkBAIC0xMzAsNiArMTQ5LDE4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUtPmNzc1RleHQoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
Y29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJp
YWJsZXModmFyaWFibGVzKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBib29sIGhhc1Zhcmlh
YmxlUmVmZXJlbmNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLT5pc1Zh
cmlhYmxlTmFtZSgpOworICAgIH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENh
bGNFeHByZXNzaW9uTm9kZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBkb3VibGUgem9vbSkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRj
aCAobV9jYXRlZ29yeSkgewpAQCAtMTQzLDYgKzE3NCw5IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
T25seSB0eXBlcyB0aGF0IGNvdWxkIGJlIHBhcnQgb2YgYSBMZW5ndGggZXhwcmVzc2lvbiBjYW4g
YmUgY29udmVydGVkCiAgICAgICAgIC8vIHRvIGEgQ2FsY0V4cHJlc3Npb25Ob2RlLiBDYWxjUGVy
Y2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBhIExlbmd0aC4KICAgICAgICAgY2FzZSBDYWxj
UGVyY2VudE51bWJlcjoKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICAgICAgY2FzZSBD
YWxjVmFyaWFibGU6CisjZW5kaWYKICAgICAgICAgY2FzZSBDYWxjT3RoZXI6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQpAQCAtMTU4LDYgKzE5Miw5IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBDYWxjTGVuZ3RoOgogICAgICAgICBjYXNlIENhbGNQZXJjZW50
TGVuZ3RoOgogICAgICAgICBjYXNlIENhbGNQZXJjZW50TnVtYmVyOgorI2lmIEVOQUJMRShDU1Nf
VkFSSUFCTEVTKQorICAgICAgICBjYXNlIENhbGNWYXJpYWJsZToKKyNlbmRpZgogICAgICAgICBj
YXNlIENhbGNPdGhlcjoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xNzUsNiArMjEyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIG1fdmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnRM
ZW5ndGg6CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnROdW1iZXI6CisjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCisgICAgICAgIGNhc2UgQ2FsY1ZhcmlhYmxlOgorI2VuZGlmCiAgICAgICAgIGNh
c2UgQ2FsY090aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE5MSw3ICsyMzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IENTU0NhbGNQcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGJv
b2wgaXNJbnRlZ2VyKQogICAgICAgICA6IENTU0NhbGNFeHByZXNzaW9uTm9kZSh1bml0Q2F0ZWdv
cnkoKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUtPnByaW1pdGl2ZVR5cGUoKSks
IGlzSW50ZWdlcikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKSAgICAgICAgICAgICAgICAgCisg
ICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCkBAIC0yMDUsNDIgKzI0NSw1
MCBAQCBzdGF0aWMgY29uc3QgQ2FsY3VsYXRpb25DYXRlZ29yeSBhZGRTdWJ0cmFjdFJlc3VsdFtD
YWxjT3RoZXJdW0NhbGNPdGhlcl0gPSB7CiAgICAgeyBDYWxjUGVyY2VudE51bWJlciwgQ2FsY090
aGVyLCAgICAgICAgIENhbGNQZXJjZW50TnVtYmVyLCBDYWxjUGVyY2VudE51bWJlciwgQ2FsY090
aGVyIH0sCiAgICAgeyBDYWxjT3RoZXIsICAgICAgICAgQ2FsY1BlcmNlbnRMZW5ndGgsIENhbGNQ
ZXJjZW50TGVuZ3RoLCBDYWxjT3RoZXIsICAgICAgICAgQ2FsY1BlcmNlbnRMZW5ndGggfSwKIH07
ICAgIAorCitzdGF0aWMgQ2FsY3VsYXRpb25DYXRlZ29yeSBkZXRlcm1pbmVDYXRlZ29yeShjb25z
dCBDU1NDYWxjRXhwcmVzc2lvbk5vZGUmIGxlZnRTaWRlLCBjb25zdCBDU1NDYWxjRXhwcmVzc2lv
bk5vZGUmIHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wKQoreworICAgIENhbGN1bGF0aW9uQ2F0
ZWdvcnkgbGVmdENhdGVnb3J5ID0gbGVmdFNpZGUuY2F0ZWdvcnkoKTsKKyAgICBDYWxjdWxhdGlv
bkNhdGVnb3J5IHJpZ2h0Q2F0ZWdvcnkgPSByaWdodFNpZGUuY2F0ZWdvcnkoKTsKKworICAgIGlm
IChsZWZ0Q2F0ZWdvcnkgPT0gQ2FsY090aGVyIHx8IHJpZ2h0Q2F0ZWdvcnkgPT0gQ2FsY090aGVy
KQorICAgICAgICByZXR1cm4gQ2FsY090aGVyOworCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CisgICAgaWYgKGxlZnRDYXRlZ29yeSA9PSBDYWxjVmFyaWFibGUgfHwgcmlnaHRDYXRlZ29yeSA9
PSBDYWxjVmFyaWFibGUpCisgICAgICAgIHJldHVybiBDYWxjVmFyaWFibGU7CisjZW5kaWYKKwor
ICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIENhbGNBZGQ6CisgICAgY2FzZSBDYWxjU3VidHJh
Y3Q6ICAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gYWRkU3VidHJhY3RSZXN1bHRbbGVmdENh
dGVnb3J5XVtyaWdodENhdGVnb3J5XTsKKyAgICBjYXNlIENhbGNNdWx0aXBseToKKyAgICAgICAg
aWYgKGxlZnRDYXRlZ29yeSAhPSBDYWxjTnVtYmVyICYmIHJpZ2h0Q2F0ZWdvcnkgIT0gQ2FsY051
bWJlcikgCisgICAgICAgICAgICByZXR1cm4gQ2FsY090aGVyOworICAgICAgICByZXR1cm4gbGVm
dENhdGVnb3J5ID09IENhbGNOdW1iZXIgPyByaWdodENhdGVnb3J5IDogbGVmdENhdGVnb3J5Owor
ICAgIGNhc2UgQ2FsY0RpdmlkZToKKyAgICAgICAgaWYgKHJpZ2h0Q2F0ZWdvcnkgIT0gQ2FsY051
bWJlciB8fCByaWdodFNpZGUuaXNaZXJvKCkpCisgICAgICAgICAgICByZXR1cm4gQ2FsY090aGVy
OworICAgICAgICByZXR1cm4gbGVmdENhdGVnb3J5OworICAgIH0KICAgICAKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ2FsY090aGVyOworfQorCiBjbGFzcyBDU1NDYWxj
QmluYXJ5T3BlcmF0aW9uIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CisKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDYWxjQmluYXJ5T3BlcmF0aW9uPiBjcmVhdGUo
UGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVmUHRyPENT
U0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlLCBDYWxjT3BlcmF0b3Igb3ApCiAgICAgewot
ICAgICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IGxlZnRDYXRlZ29yeSA9IGxlZnRTaWRlLT5jYXRl
Z29yeSgpOwotICAgICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IHJpZ2h0Q2F0ZWdvcnkgPSByaWdo
dFNpZGUtPmNhdGVnb3J5KCk7Ci0gICAgICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgbmV3Q2F0ZWdv
cnkgPSBDYWxjT3RoZXI7Ci0gICAgICAgIAotICAgICAgICBBU1NFUlQobGVmdENhdGVnb3J5ICE9
IENhbGNPdGhlciAmJiByaWdodENhdGVnb3J5ICE9IENhbGNPdGhlcik7Ci0gICAgICAgIAotICAg
ICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgICAgIGNhc2UgQ2FsY0FkZDoKLSAgICAgICAgY2FzZSBD
YWxjU3VidHJhY3Q6ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGxlZnRDYXRlZ29yeSA9
PSBDYWxjT3RoZXIgfHwgcmlnaHRDYXRlZ29yeSA9PSBDYWxjT3RoZXIpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBuZXdDYXRlZ29yeSA9IGFkZFN1YnRyYWN0UmVzdWx0
W2xlZnRDYXRlZ29yeV1bcmlnaHRDYXRlZ29yeV07Ci0gICAgICAgICAgICBicmVhazsgICAKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBDYWxjTXVsdGlwbHk6Ci0gICAgICAgICAgICBp
ZiAobGVmdENhdGVnb3J5ICE9IENhbGNOdW1iZXIgJiYgcmlnaHRDYXRlZ29yeSAhPSBDYWxjTnVt
YmVyKSAKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgbmV3Q2F0ZWdvcnkgPSBsZWZ0Q2F0ZWdvcnkgPT0gQ2FsY051bWJlciA/IHJpZ2h0Q2F0ZWdv
cnkgOiBsZWZ0Q2F0ZWdvcnk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBDYWxjRGl2aWRlOgotICAgICAgICAgICAgaWYgKHJpZ2h0Q2F0ZWdvcnkg
IT0gQ2FsY051bWJlciB8fCByaWdodFNpZGUtPmlzWmVybygpKQotICAgICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICAgICAgbmV3Q2F0ZWdvcnkgPSBsZWZ0Q2F0ZWdvcnk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQobGVmdFNpZGUtPmNhdGVnb3J5
KCkgIT0gQ2FsY090aGVyICYmIHJpZ2h0U2lkZS0+Y2F0ZWdvcnkoKSAhPSBDYWxjT3RoZXIpOwog
ICAgICAgICAKKyAgICAgICAgQ2FsY3VsYXRpb25DYXRlZ29yeSBuZXdDYXRlZ29yeSA9IGRldGVy
bWluZUNhdGVnb3J5KCpsZWZ0U2lkZSwgKnJpZ2h0U2lkZSwgb3ApOworCiAgICAgICAgIGlmIChu
ZXdDYXRlZ29yeSA9PSBDYWxjT3RoZXIpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlv
bihsZWZ0U2lkZSwgcmlnaHRTaWRlLCBvcCwgbmV3Q2F0ZWdvcnkpKTsKICAgICB9CiAgICAgCkBA
IC0yNzksMTkgKzMyNywzNiBAQCBwdWJsaWM6CiAgICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
TWVtYmVyKG1fcmlnaHRTaWRlKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBjdXN0b21D
c3NUZXh0KCkgY29uc3QKKyAgICBzdGF0aWMgU3RyaW5nIGJ1aWxkQ3NzVGV4dChTdHJpbmcgbGVm
dEV4cHJlc3Npb24sIFN0cmluZyByaWdodEV4cHJlc3Npb24sIENhbGNPcGVyYXRvciBvcCkKICAg
ICB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgICAgICByZXN1bHQuYXBwZW5k
KCcoJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9sZWZ0U2lkZS0+Y3VzdG9tQ3NzVGV4dCgp
KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChsZWZ0RXhwcmVzc2lvbik7CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPiht
X29wZXJhdG9yKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4ob3Ap
KTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICByZXN1bHQuYXBwZW5kKG1f
cmlnaHRTaWRlLT5jdXN0b21Dc3NUZXh0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKHJpZ2h0
RXhwcmVzc2lvbik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKICAgICAKLSAgICAgICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOyAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0
cmluZygpOyAgCisgICAgfQorCisgICAgdmlydHVhbCBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gYnVpbGRDc3NUZXh0KG1fbGVmdFNpZGUtPmN1c3Rv
bUNzc1RleHQoKSwgbV9yaWdodFNpZGUtPmN1c3RvbUNzc1RleHQoKSwgbV9vcGVyYXRvcik7Cisg
ICAgfQorCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2Vy
aWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJp
bmc+JiB2YXJpYWJsZXMpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYnVpbGRDc3NUZXh0
KG1fbGVmdFNpZGUtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLCBtX3Jp
Z2h0U2lkZS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksIG1fb3BlcmF0
b3IpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZWZ0U2lkZS0+aGFzVmFyaWFibGVSZWZlcmVu
Y2UoKSB8fCBtX3JpZ2h0U2lkZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKICAgICB9CisjZW5k
aWYKIAogcHJpdmF0ZToKICAgICBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKFBhc3NSZWZQdHI8Q1NT
Q2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lv
bk5vZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wLCBDYWxjdWxhdGlvbkNhdGVnb3J5IGNh
dGVnb3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKaW5kZXggYjI1
ZjdiMzFhNTAyMmMwOGI4ZmY2ZDVhNjI2ZDBjNDM3NDRmNDkxNi4uMDQ0Y2YzMmE0MGQzYjZiYjVl
Y2UwNDhlNDQyMzgxZDY2OGMxMjljYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRp
b25WYWx1ZS5oCkBAIC01Miw2ICs1Miw5IEBAIGVudW0gQ2FsY3VsYXRpb25DYXRlZ29yeSB7CiAg
ICAgQ2FsY1BlcmNlbnQsCiAgICAgQ2FsY1BlcmNlbnROdW1iZXIsCiAgICAgQ2FsY1BlcmNlbnRM
ZW5ndGgsCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgQ2FsY1ZhcmlhYmxlLAorI2Vu
ZGlmCiAgICAgQ2FsY090aGVyCiB9OwogICAgIApAQCAtNjQsNiArNjcsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
ZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdG
b250U2l6ZSA9IGZhbHNlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY3VzdG9tQ3Nz
VGV4dCgpIGNvbnN0ID0gMDsKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICB2aXJ0dWFs
IFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIFN0cmluZz4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxl
UmVmZXJlbmNlKCkgY29uc3QgPSAwOworI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0ID0gMDsKICAgICAKQEAgLTk3LDYg
KzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHls
ZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGll
ciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKSBjb25zdDsKICAgICAgICAg
CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKKyAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CisgICAgYm9vbCBoYXNWYXJp
YWJsZVJlZmVyZW5jZSgpIGNvbnN0OworI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueQppbmRleCAyOWZhYjRmZmVkZDY0YWU5ZDkxNjBjN2Y0MzhlYzZiNTAxZDMzMGQx
Li44MjliYjg5ZDRlNWQ0MWVhYTE2OWZmYzk5ZDkxOGYwN2IxNjBjZjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZ
UEUqIHl5bHZhbCwgQ1NTUGFyc2VyKiBwYXJzZXIpCiAKICV9CiAKLSVleHBlY3QgNjIKKyVleHBl
Y3QgNjMKIAogJW5vbmFzc29jIExPV0VTVF9QUkVDCiAKQEAgLTE1NTAsNiArMTU1MCwxMyBAQCBm
dW5jdGlvbjoKICAKIGNhbGNfZnVuY190ZXJtOgogICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQor
ICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UICcpJyBtYXliZV9zcGFjZSB7CisjaWYg
RU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgICAkJC5pZCA9IDA7CisgICAgICAkJC5zdHJpbmcg
PSAkMzsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05B
TUU7CisjZW5kaWYKKyAgfQogICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQy
OyAkJC5mVmFsdWUgKj0gJDE7IH0KICAgOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IDhjYTAzNGFmZDEwYjUwZmMyZGUyODNhYzQ4OWVjNWU2N2QzN2Q4ZjAuLmIzMDNkZTdkMTJhYjM2
OTE3MThhZmIxYjQ3NDJhYzE3Y2Y5NWU4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC0xNDQzLDYgKzE0NDMsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnZhbGlkQ2FsY3VsYXRpb25Vbml0
KENTU1BhcnNlclZhbHVlKiB2YWx1ZSwgVW5pdHMgdW5pdGZsYWdzKQogICAgIGNhc2UgQ2FsY1Bl
cmNlbnROdW1iZXI6CiAgICAgICAgIGIgPSAodW5pdGZsYWdzICYgRlBlcmNlbnQpICYmICh1bml0
ZmxhZ3MgJiBGTnVtYmVyKTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKENTU19WQVJJQUJM
RVMpCisgICAgY2FzZSBDYWxjVmFyaWFibGU6CisgICAgICAgIGIgPSB0cnVlOworICAgICAgICBi
cmVhazsKKyNlbmRpZgogICAgIGNhc2UgQ2FsY090aGVyOgogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBjNDMzZjIwOTRl
YzE4YzQxOTQ0MjIyMjQ0N2Y2Nzg2YjQ5NTlhNTkzLi4wNDc4MjYxOWRmZTM5NDE3Y2YxOWQxMTBk
M2ZlMGUzZTM0OTA3NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKQEAgLTE4Niw2ICsxODYsMTAgQEAgdW5zaWduZWQgc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6
OnByaW1pdGl2ZVR5cGUoKSBjb25zdAogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9OVU1CRVI7CiAgICAgY2FzZSBDYWxjUGVyY2VudExl
bmd0aDoKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ0FMQ19QRVJDRU5U
QUdFX1dJVEhfTEVOR1RIOworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIGNhc2UgQ2Fs
Y1ZhcmlhYmxlOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTktOT1dO
OyAvLyBUaGUgdHlwZSBvZiBhIGNhbGN1bGF0aW9uIGNvbnRhaW5pbmcgYSB2YXJpYWJsZSBjYW5u
b3QgYmUga25vd24gdW50aWwgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBpcyBkZXRlcm1pbmVk
LgorI2VuZGlmCiAgICAgY2FzZSBDYWxjT3RoZXI6CiAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1VOS05PV047CiAgICAgfQpAQCAtMTExOSw4ICsxMTIzLDEwIEBAIFN0cmlu
ZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAjaWYgRU5BQkxFKENT
U19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFy
aWFibGVzKSBjb25zdAogewotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WQVJJ
QUJMRV9OQU1FICYmIHZhcmlhYmxlcy5jb250YWlucyhtX3ZhbHVlLnN0cmluZykpCisgICAgaWYg
KGlzVmFyaWFibGVOYW1lKCkgJiYgdmFyaWFibGVzLmNvbnRhaW5zKG1fdmFsdWUuc3RyaW5nKSkK
ICAgICAgICAgcmV0dXJuIHZhcmlhYmxlcy5nZXQobV92YWx1ZS5zdHJpbmcpOworICAgIGlmIChp
c0NhbGN1bGF0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGNzc0NhbGNWYWx1ZSgpLT5jdXN0b21TZXJp
YWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKTsKICAgICByZXR1cm4gY3VzdG9tQ3Nz
VGV4dCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
NWY0ZTRlNTYyMDY5NzcxYWU5ZmU5MWEwOTM4OGM5MzI3NGFhMzhlMS4uNjg5NjNjZjQzYTRmMmNi
MTI3MDY3NGNlZDI2ZTE3ZWM0YTU2Y2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMzM2MCw4ICszMzYwLDE1IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlv
bihDU1NWYWx1ZSogdmFsdWUsIExlbmd0aCYgcG9zaXRpb24pCiAjaWYgRU5BQkxFKENTU19WQVJJ
QUJMRVMpCiBzdGF0aWMgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZShDU1NWYWx1ZSogdmFsdWUp
CiB7Ci0gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmlzVmFyaWFibGVOYW1lKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAoQ1NTQ2FsY1ZhbHVlKiBjYWxjVmFsdWUgPSBw
cmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gY2FsY1Zh
bHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWUtPmlzVmFyaWFibGVOYW1lKCk7CisgICAgfQorCisgICAgaWYgKHZhbHVlLT5pc0NhbGN1bGF0
aW9uVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0NhbGNWYWx1ZSo+KHZh
bHVlKS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKIAogICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRl
cmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAgaWYg
KGhhc1ZhcmlhYmxlUmVmZXJlbmNlKGkudmFsdWUoKSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdmFyaWFibGVzL2NhbGMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzNiMzBmMTIw
ZWQxY2M3NTFiYTFiNmUyZDU1Mzg2NDYxODQ5NDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDgg
QEAKKzxzdHlsZT4KK2RpdiB7CisgICAgYm9yZGVyLWNvbG9yOiBncmVlbjsKKyAgICBib3JkZXIt
c3R5bGU6IHNvbGlkOworICAgIGJvcmRlci13aWR0aDogM3B4IDEwcHg7Cit9Cis8L3N0eWxlPgor
PGRpdj5UaGlzIHRleHQgc2hvdWxkIGhhdmUgdG9wIGFuZCBib3R0b20gYm9yZGVycyBvZiAzcHgg
YW5kIGxlZnQgYW5kIHJpZ2h0IGJvcmRlcnMgb2YgMTBweDwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3ZhcmlhYmxlcy9jYWxjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0NDdkNDk0ZGEwNWI2ZTkzODI4
YzU5ODE5YWI1NmM3ZDU2NzdjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3ZhcmlhYmxlcy9jYWxjLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPHNjcmlwdD4KK2ludGVy
bmFscy5zZXR0aW5ncy5zZXRDU1NWYXJpYWJsZXNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8
c3R5bGU+CitkaXYgeworICBib3JkZXItY29sb3I6IGdyZWVuOworICBib3JkZXItc3R5bGU6IHNv
bGlkOworICBib3JkZXItd2lkdGg6IC13ZWJraXQtY2FsYygtd2Via2l0LXZhcihhKSArIC13ZWJr
aXQtdmFyKGIpKSAtd2Via2l0LWNhbGMoLXdlYmtpdC12YXIoYykgKiAtd2Via2l0LXZhcihkKSk7
CisgIC13ZWJraXQtdmFyLWE6IDJweDsKKyAgLXdlYmtpdC12YXItYjogMXB4OworICAtd2Via2l0
LXZhci1jOiA1OworICAtd2Via2l0LXZhci1kOiAycHg7CisKK30KKzwvc3R5bGU+Cis8ZGl2PlRo
aXMgdGV4dCBzaG91bGQgaGF2ZSB0b3AgYW5kIGJvdHRvbSBib3JkZXJzIG9mIDNweCBhbmQgbGVm
dCBhbmQgcmlnaHQgYm9yZGVycyBvZiAxMHB4PC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161597</attachid>
            <date>2012-08-30 17:52:45 -0700</date>
            <delta_ts>2012-08-30 18:13:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95284-20120831105232.patch</filename>
            <type>text/plain</type>
            <size>21930</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlMTY0ODFiNWU2YWRi
YmM4ZjE5ZTdiMDEzNDNiOGE1YzcwNTU0OS4uYTUwNjAwNTRjYmIwYTkzNDBmM2QxZmQzNWFjYzZk
YWIxYWJiMjQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA4LTI4ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBp
dCBwb3NzaWJsZSB0byB1c2UgQ1NTIFZhcmlhYmxlcyBpbnNpZGUgQ2FsYyBleHByZXNzaW9ucy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mjg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBBbGxvd3MgY2FsYyBl
eHByZXNzaW9ucyB0byBjb250YWluIHVuZXZhbHVhdGVkIHZhcmlhYmxlcywgd2hpY2ggYXJlIHRo
ZW4gcmVzb2x2ZWQgaW4gU3R5bGVSZXNvbHZlci5jcHAgd2hlbiBidWlsZGluZyB0aGUgUmVuZGVy
U3R5bGUgdHJlZS4KKworICAgICAgICBUZXN0czoKKyAgICAgICAgZmFzdC9jc3MvdmFyaWFibGVz
L2NhbGMuaHRtbAorCisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dW5pdENhdGVnb3J5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJs
ZXMpOgorICAgICAgICBHZW5lcmF0ZXMgYSBDU1MgZXhwcmVzc2lvbiB3aXRoIHZhcmlhYmxlcyBy
ZXNvbHZlZCBpbnRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgdmFsdWVzLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FsY1ZhbHVlOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIFJldHVybnMg
dHJ1ZSBpZiB0aGUgY2FsY3VsYXRpb24ncyBleHByZXNzaW9uIHRyZWUgcmVmZXJzIHRvIGEgdmFy
aWFibGUgKHRoYXQgbmVlZHMgdG8gYmUgcmVzb2x2ZWQpLgorICAgICAgICAoQ1NTQ2FsY1ByaW1p
dGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6c2Vy
aWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgUmVzb2x2ZXMgdGhlIHZhcmlhYmxl
IHVzaW5nIHRoZSB1bmRlcmx5aW5nIENTU1ByaW1pdGl2ZVZhbHVlJ3Mgc2VyaWFsaXplUmVzb2x2
aW5nVmFyaWFibGVzIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxj
UHJpbWl0aXZlVmFsdWU6OnRvQ2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQ
cmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoUHgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2Fs
Y0JpbmFyeU9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKENTU0NhbGNCaW5hcnlPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbjo6c2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgQnVpbGRzIGEgQ1NTIGV4cHJlc3Npb24gZm9y
IGNvbnRhaW5lZCBzdWJ0cmVlcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVy
YXRpb246Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgUmV0dXJucyB0cnVlIGlmIGVp
dGhlciBzdWJ0cmVlIGNvbnRhaW5zIGEgdmFyaWFibGUuCisgICAgICAgICogY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuaDoKKyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAg
IChDU1NDYWxjVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnZhbGlkQ2Fs
Y3VsYXRpb25Vbml0KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OnByaW1pdGl2ZVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1Zh
cmlhYmxlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKwogMjAx
Mi0wOC0yOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjY2OTQpOiBJdCBicm9rZSB0aGUgZGVidWcgYnVpbGQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA1YTEwYzU5
ODVmY2FiYTFmNjkxNmFmODJlMzE5MDY3ODYyNDIyMjQzLi44MjAyNTM1NDc2MTliOTA2N2Q3Yzk1
ODI5MzZjN2VhOGM0ZjM4NWRlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9u
VmFsdWUuY3BwCkBAIC02OCwxNyArNjgsMTkgQEAgc3RhdGljIENhbGN1bGF0aW9uQ2F0ZWdvcnkg
dW5pdENhdGVnb3J5KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlwZSkKICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1JFTVM6CiAgICAgICAgIHJldHVybiBDYWxjTGVuZ3RoOworI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOgor
ICAgICAgICByZXR1cm4gQ2FsY1ZhcmlhYmxlOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIENhbGNPdGhlcjsKICAgICB9CiB9Ci0gICAgCi1TdHJpbmcgQ1NTQ2FsY1ZhbHVl
OjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKKworc3RhdGljIFN0cmluZyBidWlsZENzc1RleHQoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKQogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAg
IAogICAgIHJlc3VsdC5hcHBlbmQoIi13ZWJraXQtY2FsYyIpOwotICAgIFN0cmluZyBleHByZXNz
aW9uID0gbV9leHByZXNzaW9uLT5jdXN0b21Dc3NUZXh0KCk7CiAgICAgYm9vbCBleHByZXNzaW9u
SGFzU2luZ2xlVGVybSA9IGV4cHJlc3Npb25bMF0gIT0gJygnOwogICAgIGlmIChleHByZXNzaW9u
SGFzU2luZ2xlVGVybSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKCcpOwpAQCAtODgsNiArOTAs
MjMgQEAgU3RyaW5nIENTU0NhbGNWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIHJlc3VsdC50b1N0cmluZygpOyAKIH0KIAorU3RyaW5nIENTU0NhbGNWYWx1ZTo6Y3VzdG9t
Q3NzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1aWxkQ3NzVGV4dChtX2V4cHJlc3Npb24t
PmN1c3RvbUNzc1RleHQoKSk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKK1N0cmlu
ZyBDU1NDYWxjVmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBI
YXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAoreworICAgIHJl
dHVybiBidWlsZENzc1RleHQobV9leHByZXNzaW9uLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJs
ZXModmFyaWFibGVzKSk7Cit9CisKK2Jvb2wgQ1NTQ2FsY1ZhbHVlOjpoYXNWYXJpYWJsZVJlZmVy
ZW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXhwcmVzc2lvbi0+aGFzVmFyaWFibGVSZWZl
cmVuY2UoKTsKK30KKyNlbmRpZgorCiB2b2lkIENTU0NhbGNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7
CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwpAQCAtMTMwLDYgKzE0OSwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX3ZhbHVlLT5jc3NUZXh0KCk7CiAgICAgfQogCisjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKHZhcmlhYmxlcyk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJp
YWJsZVJlZmVyZW5jZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZS0+aXNW
YXJpYWJsZU5hbWUoKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgUGFzc093blB0cjxD
YWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20pIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0
Y2ggKG1fY2F0ZWdvcnkpIHsKQEAgLTE0Myw2ICsxNzQsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IE9ubHkgdHlwZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJlc3Npb24gY2Fu
IGJlIGNvbnZlcnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9kZS4gQ2FsY1Bl
cmNlbnROdW1iZXIgbWFrZXMgbm8gc2Vuc2UgYXMgYSBMZW5ndGguCiAgICAgICAgIGNhc2UgQ2Fs
Y1BlcmNlbnROdW1iZXI6CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgICAgIGNhc2Ug
Q2FsY1ZhcmlhYmxlOgorI2VuZGlmCiAgICAgICAgIGNhc2UgQ2FsY090aGVyOgogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KQEAgLTE1OCw2ICsxOTIsOSBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgQ2FsY0xlbmd0aDoKICAgICAgICAgY2FzZSBDYWxjUGVyY2Vu
dExlbmd0aDoKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJlcjoKKyNpZiBFTkFCTEUoQ1NT
X1ZBUklBQkxFUykKKyAgICAgICAgY2FzZSBDYWxjVmFyaWFibGU6CisjZW5kaWYKICAgICAgICAg
Y2FzZSBDYWxjT3RoZXI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTc1LDYgKzIxMiw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAgICBjYXNlIENhbGNQZXJjZW50
TGVuZ3RoOgogICAgICAgICBjYXNlIENhbGNQZXJjZW50TnVtYmVyOgorI2lmIEVOQUJMRShDU1Nf
VkFSSUFCTEVTKQorICAgICAgICBjYXNlIENhbGNWYXJpYWJsZToKKyNlbmRpZgogICAgICAgICBj
YXNlIENhbGNPdGhlcjoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xOTEsNyArMjMxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBDU1NDYWxjUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBi
b29sIGlzSW50ZWdlcikKICAgICAgICAgOiBDU1NDYWxjRXhwcmVzc2lvbk5vZGUodW5pdENhdGVn
b3J5KChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKXZhbHVlLT5wcmltaXRpdmVUeXBlKCkp
LCBpc0ludGVnZXIpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkgICAgICAgICAgICAgICAgIAor
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIApAQCAtMjA1LDQyICsyNDUs
NTAgQEAgc3RhdGljIGNvbnN0IENhbGN1bGF0aW9uQ2F0ZWdvcnkgYWRkU3VidHJhY3RSZXN1bHRb
Q2FsY090aGVyXVtDYWxjT3RoZXJdID0gewogICAgIHsgQ2FsY1BlcmNlbnROdW1iZXIsIENhbGNP
dGhlciwgICAgICAgICBDYWxjUGVyY2VudE51bWJlciwgQ2FsY1BlcmNlbnROdW1iZXIsIENhbGNP
dGhlciB9LAogICAgIHsgQ2FsY090aGVyLCAgICAgICAgIENhbGNQZXJjZW50TGVuZ3RoLCBDYWxj
UGVyY2VudExlbmd0aCwgQ2FsY090aGVyLCAgICAgICAgIENhbGNQZXJjZW50TGVuZ3RoIH0sCiB9
OyAgICAKKworc3RhdGljIENhbGN1bGF0aW9uQ2F0ZWdvcnkgZGV0ZXJtaW5lQ2F0ZWdvcnkoY29u
c3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJiBsZWZ0U2lkZSwgY29uc3QgQ1NTQ2FsY0V4cHJlc3Np
b25Ob2RlJiByaWdodFNpZGUsIENhbGNPcGVyYXRvciBvcCkKK3sKKyAgICBDYWxjdWxhdGlvbkNh
dGVnb3J5IGxlZnRDYXRlZ29yeSA9IGxlZnRTaWRlLmNhdGVnb3J5KCk7CisgICAgQ2FsY3VsYXRp
b25DYXRlZ29yeSByaWdodENhdGVnb3J5ID0gcmlnaHRTaWRlLmNhdGVnb3J5KCk7CisKKyAgICBp
ZiAobGVmdENhdGVnb3J5ID09IENhbGNPdGhlciB8fCByaWdodENhdGVnb3J5ID09IENhbGNPdGhl
cikKKyAgICAgICAgcmV0dXJuIENhbGNPdGhlcjsKKworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQorICAgIGlmIChsZWZ0Q2F0ZWdvcnkgPT0gQ2FsY1ZhcmlhYmxlIHx8IHJpZ2h0Q2F0ZWdvcnkg
PT0gQ2FsY1ZhcmlhYmxlKQorICAgICAgICByZXR1cm4gQ2FsY1ZhcmlhYmxlOworI2VuZGlmCisK
KyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBDYWxjQWRkOgorICAgIGNhc2UgQ2FsY1N1YnRy
YWN0OiAgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIGFkZFN1YnRyYWN0UmVzdWx0W2xlZnRD
YXRlZ29yeV1bcmlnaHRDYXRlZ29yeV07CisgICAgY2FzZSBDYWxjTXVsdGlwbHk6CisgICAgICAg
IGlmIChsZWZ0Q2F0ZWdvcnkgIT0gQ2FsY051bWJlciAmJiByaWdodENhdGVnb3J5ICE9IENhbGNO
dW1iZXIpIAorICAgICAgICAgICAgcmV0dXJuIENhbGNPdGhlcjsKKyAgICAgICAgcmV0dXJuIGxl
ZnRDYXRlZ29yeSA9PSBDYWxjTnVtYmVyID8gcmlnaHRDYXRlZ29yeSA6IGxlZnRDYXRlZ29yeTsK
KyAgICBjYXNlIENhbGNEaXZpZGU6CisgICAgICAgIGlmIChyaWdodENhdGVnb3J5ICE9IENhbGNO
dW1iZXIgfHwgcmlnaHRTaWRlLmlzWmVybygpKQorICAgICAgICAgICAgcmV0dXJuIENhbGNPdGhl
cjsKKyAgICAgICAgcmV0dXJuIGxlZnRDYXRlZ29yeTsKKyAgICB9CiAgICAgCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENhbGNPdGhlcjsKK30KKwogY2xhc3MgQ1NTQ2Fs
Y0JpbmFyeU9wZXJhdGlvbiA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgeworCiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4gY3JlYXRl
KFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wKQogICAgIHsK
LSAgICAgICAgQ2FsY3VsYXRpb25DYXRlZ29yeSBsZWZ0Q2F0ZWdvcnkgPSBsZWZ0U2lkZS0+Y2F0
ZWdvcnkoKTsKLSAgICAgICAgQ2FsY3VsYXRpb25DYXRlZ29yeSByaWdodENhdGVnb3J5ID0gcmln
aHRTaWRlLT5jYXRlZ29yeSgpOwotICAgICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IG5ld0NhdGVn
b3J5ID0gQ2FsY090aGVyOwotICAgICAgICAKLSAgICAgICAgQVNTRVJUKGxlZnRDYXRlZ29yeSAh
PSBDYWxjT3RoZXIgJiYgcmlnaHRDYXRlZ29yeSAhPSBDYWxjT3RoZXIpOwotICAgICAgICAKLSAg
ICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICBjYXNlIENhbGNBZGQ6Ci0gICAgICAgIGNhc2Ug
Q2FsY1N1YnRyYWN0OiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChsZWZ0Q2F0ZWdvcnkg
PT0gQ2FsY090aGVyIHx8IHJpZ2h0Q2F0ZWdvcnkgPT0gQ2FsY090aGVyKQotICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgbmV3Q2F0ZWdvcnkgPSBhZGRTdWJ0cmFjdFJlc3Vs
dFtsZWZ0Q2F0ZWdvcnldW3JpZ2h0Q2F0ZWdvcnldOwotICAgICAgICAgICAgYnJlYWs7ICAgCi0g
ICAgICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQ2FsY011bHRpcGx5OgotICAgICAgICAgICAg
aWYgKGxlZnRDYXRlZ29yeSAhPSBDYWxjTnVtYmVyICYmIHJpZ2h0Q2F0ZWdvcnkgIT0gQ2FsY051
bWJlcikgCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIG5ld0NhdGVnb3J5ID0gbGVmdENhdGVnb3J5ID09IENhbGNOdW1iZXIgPyByaWdodENhdGVn
b3J5IDogbGVmdENhdGVnb3J5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgIGNhc2UgQ2FsY0RpdmlkZToKLSAgICAgICAgICAgIGlmIChyaWdodENhdGVnb3J5
ICE9IENhbGNOdW1iZXIgfHwgcmlnaHRTaWRlLT5pc1plcm8oKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgICAgIG5ld0NhdGVnb3J5ID0gbGVmdENhdGVnb3J5OwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGxlZnRTaWRlLT5jYXRlZ29y
eSgpICE9IENhbGNPdGhlciAmJiByaWdodFNpZGUtPmNhdGVnb3J5KCkgIT0gQ2FsY090aGVyKTsK
ICAgICAgICAgCisgICAgICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgbmV3Q2F0ZWdvcnkgPSBkZXRl
cm1pbmVDYXRlZ29yeSgqbGVmdFNpZGUsICpyaWdodFNpZGUsIG9wKTsKKwogICAgICAgICBpZiAo
bmV3Q2F0ZWdvcnkgPT0gQ2FsY090aGVyKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
ICAgICAKKwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0NhbGNCaW5hcnlPcGVyYXRp
b24obGVmdFNpZGUsIHJpZ2h0U2lkZSwgb3AsIG5ld0NhdGVnb3J5KSk7CiAgICAgfQogICAgIApA
QCAtMjc5LDE5ICszMjcsMzYgQEAgcHVibGljOgogICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX3JpZ2h0U2lkZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgY3VzdG9t
Q3NzVGV4dCgpIGNvbnN0CisgICAgc3RhdGljIFN0cmluZyBidWlsZENzc1RleHQoY29uc3QgU3Ry
aW5nJiBsZWZ0RXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiByaWdodEV4cHJlc3Npb24sIENhbGNP
cGVyYXRvciBvcCkKICAgICB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCcoJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9sZWZ0U2lkZS0+
Y3VzdG9tQ3NzVGV4dCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChsZWZ0RXhwcmVzc2lvbik7
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0
aWNfY2FzdDxjaGFyPihtX29wZXJhdG9yKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Y2hhcj4ob3ApKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICBy
ZXN1bHQuYXBwZW5kKG1fcmlnaHRTaWRlLT5jdXN0b21Dc3NUZXh0KCkpOworICAgICAgICByZXN1
bHQuYXBwZW5kKHJpZ2h0RXhwcmVzc2lvbik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsK
ICAgICAKLSAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOyAgICAKKyAgICAgICAgcmV0
dXJuIHJlc3VsdC50b1N0cmluZygpOyAgCisgICAgfQorCisgICAgdmlydHVhbCBTdHJpbmcgY3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYnVpbGRDc3NUZXh0KG1f
bGVmdFNpZGUtPmN1c3RvbUNzc1RleHQoKSwgbV9yaWdodFNpZGUtPmN1c3RvbUNzc1RleHQoKSwg
bV9vcGVyYXRvcik7CisgICAgfQorCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gYnVpbGRDc3NUZXh0KG1fbGVmdFNpZGUtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2
YXJpYWJsZXMpLCBtX3JpZ2h0U2lkZS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlh
YmxlcyksIG1fb3BlcmF0b3IpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJs
ZVJlZmVyZW5jZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZWZ0U2lkZS0+aGFz
VmFyaWFibGVSZWZlcmVuY2UoKSB8fCBtX3JpZ2h0U2lkZS0+aGFzVmFyaWFibGVSZWZlcmVuY2Uo
KTsKICAgICB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBDU1NDYWxjQmluYXJ5T3BlcmF0aW9u
KFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wLCBDYWxjdWxh
dGlvbkNhdGVnb3J5IGNhdGVnb3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmgKaW5kZXggYjI1ZjdiMzFhNTAyMmMwOGI4ZmY2ZDVhNjI2ZDBjNDM3NDRmNDkxNi4uMDQ0
Y2YzMmE0MGQzYjZiYjVlY2UwNDhlNDQyMzgxZDY2OGMxMjljYSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC01Miw2ICs1Miw5IEBAIGVudW0gQ2FsY3VsYXRp
b25DYXRlZ29yeSB7CiAgICAgQ2FsY1BlcmNlbnQsCiAgICAgQ2FsY1BlcmNlbnROdW1iZXIsCiAg
ICAgQ2FsY1BlcmNlbnRMZW5ndGgsCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgQ2Fs
Y1ZhcmlhYmxlLAorI2VuZGlmCiAgICAgQ2FsY090aGVyCiB9OwogICAgIApAQCAtNjQsNiArNjcs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVu
dFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwg
Ym9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBT
dHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0ID0gMDsKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxF
UykKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3Qg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgPSAwOworI2VuZGlmCiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0ID0gMDsK
ICAgICAKQEAgLTk3LDYgKzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGNvbXB1dGVMZW5n
dGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBk
b3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKSBj
b25zdDsKICAgICAgICAgCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5n
VmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7Cisg
ICAgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OworI2VuZGlmCiAKICAgICB2b2lk
IHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCAyOWZhYjRmZmVkZDY0YWU5ZDkxNjBjN2Y0
MzhlYzZiNTAxZDMzMGQxLi44MjliYjg5ZDRlNWQ0MWVhYTE2OWZmYzk5ZDkxOGYwN2IxNjBjZjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW50
IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgQ1NTUGFyc2VyKiBwYXJzZXIpCiAKICV9CiAKLSVl
eHBlY3QgNjIKKyVleHBlY3QgNjMKIAogJW5vbmFzc29jIExPV0VTVF9QUkVDCiAKQEAgLTE1NTAs
NiArMTU1MCwxMyBAQCBmdW5jdGlvbjoKICAKIGNhbGNfZnVuY190ZXJtOgogICB1bmFyeV90ZXJt
IHsgJCQgPSAkMTsgfQorICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UICcpJyBtYXli
ZV9zcGFjZSB7CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgICAkJC5pZCA9IDA7Cisg
ICAgICAkJC5zdHJpbmcgPSAkMzsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1ZBUklBQkxFX05BTUU7CisjZW5kaWYKKyAgfQogICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5
X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KICAgOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCmluZGV4IDhjYTAzNGFmZDEwYjUwZmMyZGUyODNhYzQ4OWVjNWU2N2QzN2Q4ZjAu
LmIzMDNkZTdkMTJhYjM2OTE3MThhZmIxYjQ3NDJhYzE3Y2Y5NWU4N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCkBAIC0xNDQzLDYgKzE0NDMsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnZhbGlk
Q2FsY3VsYXRpb25Vbml0KENTU1BhcnNlclZhbHVlKiB2YWx1ZSwgVW5pdHMgdW5pdGZsYWdzKQog
ICAgIGNhc2UgQ2FsY1BlcmNlbnROdW1iZXI6CiAgICAgICAgIGIgPSAodW5pdGZsYWdzICYgRlBl
cmNlbnQpICYmICh1bml0ZmxhZ3MgJiBGTnVtYmVyKTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCisgICAgY2FzZSBDYWxjVmFyaWFibGU6CisgICAgICAgIGIgPSB0
cnVlOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgQ2FsY090aGVyOgogICAgICAg
ICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApp
bmRleCBjNDMzZjIwOTRlYzE4YzQxOTQ0MjIyMjQ0N2Y2Nzg2YjQ5NTlhNTkzLi4wNDc4MjYxOWRm
ZTM5NDE3Y2YxOWQxMTBkM2ZlMGUzZTM0OTA3NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKQEAgLTE4Niw2ICsxODYsMTAgQEAgdW5zaWduZWQgc2hvcnQgQ1NT
UHJpbWl0aXZlVmFsdWU6OnByaW1pdGl2ZVR5cGUoKSBjb25zdAogICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9OVU1CRVI7CiAgICAgY2Fz
ZSBDYWxjUGVyY2VudExlbmd0aDoKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTEVOR1RIOworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQorICAgIGNhc2UgQ2FsY1ZhcmlhYmxlOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19VTktOT1dOOyAvLyBUaGUgdHlwZSBvZiBhIGNhbGN1bGF0aW9uIGNvbnRhaW5pbmcg
YSB2YXJpYWJsZSBjYW5ub3QgYmUga25vd24gdW50aWwgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJs
ZSBpcyBkZXRlcm1pbmVkLgorI2VuZGlmCiAgICAgY2FzZSBDYWxjT3RoZXI6CiAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV047CiAgICAgfQpAQCAtMTExOSw4ICsx
MTIzLDEwIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0
CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1
c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogewotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRU
eXBlID09IENTU19WQVJJQUJMRV9OQU1FICYmIHZhcmlhYmxlcy5jb250YWlucyhtX3ZhbHVlLnN0
cmluZykpCisgICAgaWYgKGlzVmFyaWFibGVOYW1lKCkgJiYgdmFyaWFibGVzLmNvbnRhaW5zKG1f
dmFsdWUuc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHZhcmlhYmxlcy5nZXQobV92YWx1ZS5zdHJp
bmcpOworICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGNzc0NhbGNWYWx1
ZSgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKTsKICAgICBy
ZXR1cm4gY3VzdG9tQ3NzVGV4dCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggNWY0ZTRlNTYyMDY5NzcxYWU5ZmU5MWEwOTM4OGM5MzI3NGFhMzhlMS4u
Njg5NjNjZjQzYTRmMmNiMTI3MDY3NGNlZDI2ZTE3ZWM0YTU2Y2JjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzM2MCw4ICszMzYwLDE1IEBAIHN0YXRpYyBib29sIGNy
ZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIExlbmd0aCYgcG9zaXRpb24pCiAjaWYg
RU5BQkxFKENTU19WQVJJQUJMRVMpCiBzdGF0aWMgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZShD
U1NWYWx1ZSogdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmlzVmFyaWFibGVOYW1lKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAoQ1NTQ2FsY1ZhbHVl
KiBjYWxjVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCkpCisgICAgICAgICAg
ICByZXR1cm4gY2FsY1ZhbHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOworICAgICAgICByZXR1
cm4gcHJpbWl0aXZlVmFsdWUtPmlzVmFyaWFibGVOYW1lKCk7CisgICAgfQorCisgICAgaWYgKHZh
bHVlLT5pc0NhbGN1bGF0aW9uVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENT
U0NhbGNWYWx1ZSo+KHZhbHVlKS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKIAogICAgIGZvciAo
Q1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkp
IHsKICAgICAgICAgaWYgKGhhc1ZhcmlhYmxlUmVmZXJlbmNlKGkudmFsdWUoKSkpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kODJmOTI0YjZiZWY0NDBkNDlhMjQ3NzJiODg1NDBkNzdjNjU5ZTAyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorZGl2
IHsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOworICAgIGJvcmRlci1zdHlsZTogc29saWQ7Cisg
ICAgYm9yZGVyLXdpZHRoOiAzcHggMTBweDsKK30KKzwvc3R5bGU+Cis8ZGl2PlRoaXMgdGV4dCBz
aG91bGQgaGF2ZSB0b3AgYW5kIGJvdHRvbSBib3JkZXJzIG9mIDNweCBhbmQgbGVmdCBhbmQgcmln
aHQgYm9yZGVycyBvZiAxMHB4PC9kaXY+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy1pbnNpZGUtY2FsYy1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtaW5zaWRlLWNhbGMtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYzM5MzllZTMyYTE4NzUwZGQyYTA0YjhlYmY3YWIyNjIzNDRlMjcxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtaW5z
aWRlLWNhbGMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPHN0eWxlPgorZGl2IHsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOworICAgIGJv
cmRlci1zdHlsZTogc29saWQ7Cit9Cis8L3N0eWxlPgorPGRpdj5UaGlzIHRleHQgc2hvdWxkIGhh
dmUgdGhlIGRlZmF1bHQgYm9yZGVyIHdpZHRoPC9kaXY+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy1pbnNpZGUtY2FsYy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtaW5zaWRlLWNhbGMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNzQ4MzdhZDQwZDZlNTVmMWU0NjBlM2IzODMxZGIwOTFkMTI2MGY1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtaW5zaWRlLWNhbGMu
aHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdD4K
K2ludGVybmFscy5zZXR0aW5ncy5zZXRDU1NWYXJpYWJsZXNFbmFibGVkKHRydWUpOworPC9zY3Jp
cHQ+Cis8c3R5bGU+CitkaXYgeworICBib3JkZXItY29sb3I6IGdyZWVuOworICBib3JkZXItc3R5
bGU6IHNvbGlkOworICBib3JkZXItd2lkdGg6IC13ZWJraXQtY2FsYygtd2Via2l0LXZhcihhKSAr
IDFweCk7CisgIC13ZWJraXQtdmFyLWE6IC13ZWJraXQtY2FsYygxcHggKyAzcHgpOworfQorPC9z
dHlsZT4KKzxkaXY+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIHRoZSBkZWZhdWx0IGJvcmRlciB3aWR0
aDwvZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFi
bGVzL2NhbGMtaW52YWxpZC12YWx1ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvdmFyaWFibGVzL2NhbGMtaW52YWxpZC12YWx1ZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFjMzkzOWVlMzJhMTg3NTBkZDJhMDRiOGViZjdhYjI2MjM0NGUyNzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy1pbnZhbGlkLXZhbHVlLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxz
dHlsZT4KK2RpdiB7CisgICAgYm9yZGVyLWNvbG9yOiBncmVlbjsKKyAgICBib3JkZXItc3R5bGU6
IHNvbGlkOworfQorPC9zdHlsZT4KKzxkaXY+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIHRoZSBkZWZh
dWx0IGJvcmRlciB3aWR0aDwvZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtaW52YWxpZC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtaW52YWxpZC12YWx1ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQw
NDAxMDJiNDlhOTY2YWM0Mzg3YjM2ZGRjYWNiMDQwZTBhZDc0OGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy1pbnZhbGlkLXZhbHVlLmh0bWwK
QEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0Q1NTVmFyaWFibGVzRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0Pgor
PHN0eWxlPgorZGl2IHsKKyAgYm9yZGVyLWNvbG9yOiBncmVlbjsKKyAgYm9yZGVyLXN0eWxlOiBz
b2xpZDsKKyAgYm9yZGVyLXdpZHRoOiAtd2Via2l0LWNhbGMoLXdlYmtpdC12YXIoYSkgKyAxcHgp
OworICAtd2Via2l0LXZhci1hOiBibGFjazsKK30KKzwvc3R5bGU+Cis8ZGl2PlRoaXMgdGV4dCBz
aG91bGQgaGF2ZSB0aGUgZGVmYXVsdCBib3JkZXIgd2lkdGg8L2Rpdj4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYWxjLWludmFsaWQtdmFyaWFi
bGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYWxjLWlu
dmFsaWQtdmFyaWFibGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM5MzllZTMyYTE4NzUw
ZGQyYTA0YjhlYmY3YWIyNjIzNDRlMjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtaW52YWxpZC12YXJpYWJsZS1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CitkaXYgewor
ICAgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKK30KKzwv
c3R5bGU+Cis8ZGl2PlRoaXMgdGV4dCBzaG91bGQgaGF2ZSB0aGUgZGVmYXVsdCBib3JkZXIgd2lk
dGg8L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Zhcmlh
Ymxlcy9jYWxjLWludmFsaWQtdmFyaWFibGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Zh
cmlhYmxlcy9jYWxjLWludmFsaWQtdmFyaWFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjI3M2YwOTMx
ZjlhMzU0OGJkN2YyODViM2U3NDY2ZGNkMDMxZDdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtaW52YWxpZC12YXJpYWJsZS5odG1sCkBAIC0w
LDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraW50ZXJuYWxz
LnNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHls
ZT4KK2RpdiB7CisgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgIGJvcmRlci1zdHlsZTogc29saWQ7
CisgIGJvcmRlci13aWR0aDogLXdlYmtpdC1jYWxjKC13ZWJraXQtdmFyKGEpICsgMXB4KTsKK30K
Kzwvc3R5bGU+Cis8ZGl2PlRoaXMgdGV4dCBzaG91bGQgaGF2ZSB0aGUgZGVmYXVsdCBib3JkZXIg
d2lkdGg8L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Zh
cmlhYmxlcy9jYWxjLW5lZ2F0ZWQtdmFyaWFibGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYWxjLW5lZ2F0ZWQtdmFyaWFibGUtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYzM5MzllZTMyYTE4NzUwZGQyYTA0YjhlYmY3YWIyNjIzNDRlMjcxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMtbmVnYXRl
ZC12YXJpYWJsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8c3R5bGU+CitkaXYgeworICAgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgICAg
Ym9yZGVyLXN0eWxlOiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8ZGl2PlRoaXMgdGV4dCBzaG91bGQg
aGF2ZSB0aGUgZGVmYXVsdCBib3JkZXIgd2lkdGg8L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYWxjLW5lZ2F0ZWQtdmFyaWFibGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYWxjLW5lZ2F0ZWQtdmFyaWFibGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NjMzNmM0YjJhYTZlYjFjY2YwMGE2NjIzMDNkY2ZlODUwYjZlNDcz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2NhbGMt
bmVnYXRlZC12YXJpYWJsZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8c2NyaXB0PgoraW50ZXJuYWxzLnNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJs
ZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2RpdiB7CisgIGJvcmRlci1jb2xvcjogZ3Jl
ZW47CisgIGJvcmRlci1zdHlsZTogc29saWQ7CisgIGJvcmRlci13aWR0aDogLXdlYmtpdC1jYWxj
KC0td2Via2l0LXZhcihhKSArIDFweCk7CisgIC13ZWJraXQtdmFyLWE6IDVweDsKK30KKzwvc3R5
bGU+Cis8ZGl2PlRoaXMgdGV4dCBzaG91bGQgaGF2ZSB0aGUgZGVmYXVsdCBib3JkZXIgd2lkdGg8
L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxl
cy9jYWxjLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE2YTFiMzYyZGZjOWE0ZmVlMDQwMTI2YTZmN2E2YjhlZDA5MmJkYzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FsYy5odG1sCkBA
IC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraW50ZXJu
YWxzLnNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxz
dHlsZT4KK2RpdiB7CisgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgIGJvcmRlci1zdHlsZTogc29s
aWQ7CisgIGJvcmRlci13aWR0aDogLXdlYmtpdC1jYWxjKC13ZWJraXQtdmFyKGEpICsgLXdlYmtp
dC12YXIoYikpIC13ZWJraXQtY2FsYygtd2Via2l0LXZhcihjKSAqIC13ZWJraXQtdmFyKGQpKTsK
KyAgLXdlYmtpdC12YXItYTogMnB4OworICAtd2Via2l0LXZhci1iOiAxcHg7CisgIC13ZWJraXQt
dmFyLWM6IDU7CisgIC13ZWJraXQtdmFyLWQ6IDJweDsKKworfQorPC9zdHlsZT4KKzxkaXY+VGhp
cyB0ZXh0IHNob3VsZCBoYXZlIHRvcCBhbmQgYm90dG9tIGJvcmRlcnMgb2YgM3B4IGFuZCBsZWZ0
IGFuZCByaWdodCBib3JkZXJzIG9mIDEwcHg8L2Rpdj4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>