<?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>104955</bug_id>
          
          <creation_ts>2012-12-13 14:38:46 -0800</creation_ts>
          <short_desc>Clamp values in LayoutUnit::operator/ when SATURATED_LAYOUT_ARITHMETIC is enabled</short_desc>
          <delta_ts>2012-12-18 13:40:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>rakuco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>790945</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-13 14:38:46 -0800</bug_when>
    <thetext>LayoutUnit::setRawValue(long long) currently does not clamp values and instead overflows when given a value greater than INT_MAX or less than INT_MIN. As the division operator uses the setRawValue(long long) method it can the value to overflow, even if SATURATED_LAYOUT_ARITHMETIC is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790948</commentid>
    <comment_count>1</comment_count>
      <attachid>179341</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-13 14:40:26 -0800</bug_when>
    <thetext>Created attachment 179341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790957</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 14:44:19 -0800</bug_when>
    <thetext>Attachment 179341 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Tools/TestWebKitAPI/ForwardingHeaders/WebCore/LayoutUnit.h:1:  #ifndef header guard has wrong style, please use: LayoutUnit_h  [build/header_guard] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790961</commentid>
    <comment_count>3</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-13 14:46:46 -0800</bug_when>
    <thetext>The style bot failure looks like a false positive in that it doesn&apos;t recognize FWD headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791042</commentid>
    <comment_count>4</comment_count>
      <attachid>179341</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-13 15:53:59 -0800</bug_when>
    <thetext>Comment on attachment 179341
Patch

I like the change, especially since it catches an issue. Some comments on it, the ForwardingHeaders part looks fine to me but someone more knowledgeable with the Apple build system should probably comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791047</commentid>
    <comment_count>5</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-13 15:56:51 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 179341 [details])
&gt; I like the change, especially since it catches an issue. Some comments on it, the ForwardingHeaders part looks fine to me but someone more knowledgeable with the Apple build system should probably comment.

The ForwardingHeaders setup is for the linux windows/ninja build, mac does fine without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791054</commentid>
    <comment_count>6</comment_count>
      <attachid>179362</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-13 16:02:09 -0800</bug_when>
    <thetext>Created attachment 179362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791059</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 16:08:01 -0800</bug_when>
    <thetext>Attachment 179362 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Tools/TestWebKitAPI/ForwardingHeaders/WebCore/LayoutUnit.h:1:  #ifndef header guard has wrong style, please use: LayoutUnit_h  [build/header_guard] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791741</commentid>
    <comment_count>8</comment_count>
      <attachid>179509</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-14 11:57:26 -0800</bug_when>
    <thetext>Created attachment 179509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791743</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 11:59:22 -0800</bug_when>
    <thetext>Attachment 179509 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Tools/TestWebKitAPI/ForwardingHeaders/WebCore/LayoutUnit.h:1:  #ifndef header guard has wrong style, please use: LayoutUnit_h  [build/header_guard] [5]
Tools/TestWebKitAPI/ForwardingHeaders/WebCore/KURL.h:1:  #ifndef header guard has wrong style, please use: KURL_h  [build/header_guard] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791834</commentid>
    <comment_count>10</comment_count>
      <attachid>179509</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-14 14:00:58 -0800</bug_when>
    <thetext>Comment on attachment 179509
Patch

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

Looks fine, some comment. Please, leave some time before landing to get a green EWS and in case some of people more knowledgeable in the different hardware we support can double check.

&gt; Source/WebCore/platform/LayoutUnit.h:182
&gt; +        m_value = clampTo(value, std::numeric_limits&lt;int&gt;::min(), std::numeric_limits&lt;int&gt;::max());

We should probably mention that this may lead to a loss of precision if long long is 64 bits but as we are casting the information to an int (32 bits on all 64 bits architecture that we know about), it shouldn&apos;t matter.

Also, unless I am mistaking, this looks like it could be written: m_value = clampTo&lt;int&gt;(value);
(clampToInteger would be ambiguous AFAICT so it would require an unfortunate cast)

&gt; Tools/TestWebKitAPI/ForwardingHeaders/WebCore/KURL.h:4
&gt; +#endif

Nit: We should probably wait until we enable the test to land that

&gt; Tools/TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:57
&gt; +                &apos;&lt;(source_dir)/WebCore/WebCore.gyp/WebCore.gyp:webcore&apos;,

For archive&apos;s sake, we discussed that over IM and it makes more sense to link against WebCore if we are to enable the test for KURL but also to test any class that isn&apos;t fully implemented in its header file.

&gt; Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp:79
&gt; +    ASSERT_NEAR(LayoutUnit(1.0f).toFloat(), 1.0f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(1.1f).toFloat(), 1.1f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(1.25f).toFloat(), 1.25f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(1.33f).toFloat(), 1.33f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(1.3333f).toFloat(), 1.3333f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(1.53434f).toFloat(), 1.53434f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(345634).toFloat(), 345634.0f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(345634.12335f).toFloat(), 345634.12335f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(-345634.12335f).toFloat(), -345634.12335f, tolerance);
&gt; +    ASSERT_NEAR(LayoutUnit(-345634).toFloat(), -345634.0f, tolerance);    

Are these ASSERT_NEAR really needed? Below you use ASSERT_FLOAT_EQ for the division and I wouldn&apos;t expect much loss in precisions for most of numbers here as they don&apos;t require much mantissa bits to represent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792045</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-12-14 20:48:50 -0800</bug_when>
    <thetext>Nice catch. (and nice of you to add test support for LayoutUnit).

I agree with Julien, I would much prefer this with clampTo&lt;int&gt;(value);.

I&apos;d argue (as usual? :)) that this not the best place to fix this. Most code calling setRawValue() already ensure the value is bounded. By adding this addition clamp in setRawValue(), people might misunderstand how to use that API.

The perf guy in me also cry because we branch twice as much when the call site do a proper job with saturated arithmetic.

What do you think about this?:
-make setRawValue a template
-make it so that it fails to compile for long with a explanatory error message.
-fix the 1 (?) faulty call site.
-....
-profit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792833</commentid>
    <comment_count>12</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-17 10:35:01 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Nice catch. (and nice of you to add test support for LayoutUnit).
&gt; 
&gt; I agree with Julien, I would much prefer this with clampTo&lt;int&gt;(value);.
&gt; 
&gt; I&apos;d argue (as usual? :)) that this not the best place to fix this. Most code calling setRawValue() already ensure the value is bounded. By adding this addition clamp in setRawValue(), people might misunderstand how to use that API.
&gt; 
&gt; The perf guy in me also cry because we branch twice as much when the call site do a proper job with saturated arithmetic.

You are right, I&apos;ll move it to the call site to minimize the perf impact. That&apos;ll also make it more consistent with the existing checks.

Thanks for your input, always appreciated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792866</commentid>
    <comment_count>13</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-17 11:13:43 -0800</bug_when>
    <thetext>Committed r137924: &lt;http://trac.webkit.org/changeset/137924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793998</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-18 13:36:55 -0800</bug_when>
    <thetext>This broke some WebKit API tests. Please fix:
http://build.webkit.org/builders/Apple%20Lion%20Debug%20WK1%20%28Tests%29/builds/5417/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794001</commentid>
    <comment_count>15</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-18 13:40:14 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; This broke some WebKit API tests. Please fix:
&gt; http://build.webkit.org/builders/Apple%20Lion%20Debug%20WK1%20%28Tests%29/builds/5417/steps/run-api-tests/logs/stdio

Fixed in https://bugs.webkit.org/show_bug.cgi?id=105332</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179341</attachid>
            <date>2012-12-13 14:40:26 -0800</date>
            <delta_ts>2012-12-13 16:02:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104955-20121213143746.patch</filename>
            <type>text/plain</type>
            <size>19629</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTEzICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGFtcCB2YWx1ZXMgaW4gTGF5
b3V0VW5pdDo6c2V0UmF3VmFsdWUgd2hlbiBTQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMgaXMg
ZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0OTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TGF5b3V0VW5pdDo6c2V0UmF3VmFsdWUobG9uZyBsb25nKSBjdXJyZW50bHkgZG9lcyBub3QgY2xh
bXAKKyAgICAgICAgdmFsdWVzIGFuZCBpbnN0ZWFkIG92ZXJmbG93cyB3aGVuIGdpdmVuIGEgdmFs
dWUgZ3JlYXRlciB0aGFuCisgICAgICAgIElOVF9NQVggb3IgbGVzcyB0aGFuIElOVF9NSU4uIEFz
IHRoZSBkaXZpc2lvbiBvcGVyYXRvciB1c2VzIHRoZQorICAgICAgICBzZXRSYXdWYWx1ZShsb25n
IGxvbmcpIG1ldGhvZCBpdCBjYW4gdGhlIHZhbHVlIHRvIG92ZXJmbG93LAorICAgICAgICBldmVu
IGlmIFNBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyBpcyBlbmFibGVkLgorCisgICAgICAgIFRl
c3Q6IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcAorCisgICAgICAg
ICogcGxhdGZvcm0vTGF5b3V0VW5pdC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0VW5pdDo6
c2V0UmF3VmFsdWUpOgorICAgICAgICBDbGFtcCB2YWx1ZSBpZiBTQVRVUkFURURfTEFZT1VUX0FS
SVRITUVUSUMgaXMgZW5hYmxlZC4KKwogMjAxMi0xMi0xMyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEF1dG9tYXRpY2FsbHkgdXNlIGNv
bXBvc2l0ZWQgc2Nyb2xsaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRV
bml0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5o
CShyZXZpc2lvbiAxMzc2NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UmF3VmFsdWUobG9uZyBsb25nIHZhbHVlKQogICAgIHsKICAgICAgICAgUkVQT1JUX09WRVJG
TE9XKHZhbHVlID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSAmJiB2YWx1ZSA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOworI2lmIEVOQUJMRShTQVRVUkFURURfTEFZ
T1VUX0FSSVRITUVUSUMpCisgICAgICAgIG1fdmFsdWUgPSBjbGFtcFRvKHZhbHVlLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1pbigpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KTsKKyNlbHNlCiAgICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKTsKKyNl
bmRpZgogICAgIH0KIAogICAgIExheW91dFVuaXQgYWJzKCkgY29uc3QKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzY1NSkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEy
LTEyLTEzICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGFt
cCB2YWx1ZXMgaW4gTGF5b3V0VW5pdDo6c2V0UmF3VmFsdWUgd2hlbiBTQVRVUkFURURfTEFZT1VU
X0FSSVRITUVUSUMgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA0OTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBMYXlvdXRVbml0LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0Zvcndh
cmRpbmdIZWFkZXJzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdI
ZWFkZXJzL1dlYkNvcmU6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRm9yd2FyZGlu
Z0hlYWRlcnMvV2ViQ29yZS9MYXlvdXRVbml0Lmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS5neXAvVGVzdFdlYktpdEFQSS5neXA6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cGk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2o6CisKIDIwMTItMTItMTMgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgc3VwcG9ydCAtd2sy
IHBvcnQgbmFtZXMgcHJvcGVybHkgaW4gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTM3NjU1KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEw
NCw3IEBAIGFkZF9leGVjdXRhYmxlKHRlc3Rfd2ViY29yZQogICAgICR7dGVzdF9tYWluX1NPVVJD
RVN9CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHNDb250cm9sbGVyLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvS1VSTC5jcHAKKyAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCiApCiAKIHRhcmdldF9saW5r
X2xpYnJhcmllcyh0ZXN0X3dlYmNvcmUgJHt0ZXN0X3dlYmNvcmVfTElCUkFSSUVTfSkKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCShyZXZpc2lvbiAxMzc2NTUpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogewogICAgICd2YXJpYWJsZXMnOiB7CiAgICAgICAgICdUZXN0V2Vi
S2l0QVBJX2ZpbGVzJzogWworICAgICAgICAgICAgJ1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5j
cHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9BdG9taWNTdHJpbmcuY3BwJywKICAgICAgICAg
ICAgICdUZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCcsCiAgICAgICAg
ICAgICAnVGVzdHMvV1RGL0NTdHJpbmcuY3BwJywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Rm9yd2FyZGluZ0hlYWRlcnMvV2ViQ29yZS9MYXlvdXRVbml0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy9XZWJDb3JlL0xheW91dFVuaXQuaAko
cmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvV2Vi
Q29yZS9MYXlvdXRVbml0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBU
ZXN0V2ViS2l0QVBJX0ZXRF9MYXlvdXRVbml0X2gKKyNkZWZpbmUgVGVzdFdlYktpdEFQSV9GV0Rf
TGF5b3V0VW5pdF9oCisjaW5jbHVkZSA8TGF5b3V0VW5pdC5oPgorI2VuZGlmCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwL1Rlc3RXZWJLaXRBUEkuZ3lwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXAvVGVzdFdlYktp
dEFQSS5neXAJKHJldmlzaW9uIDEzNzY1NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS5neXAvVGVzdFdlYktpdEFQSS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0
LDcgQEAKICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdUZXN0V2ViS2l0QVBJJywKICAgICAg
ICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAogICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6
IFsKKyAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOndlYmNvcmUnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdCcsCiAgICAgICAgICAgICAgICAgJzwoc291cmNl
X2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAogICAgICAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lwL2dvb2dsZXVybC5neXA6Z29vZ2xldXJsJywKQEAg
LTY4LDYgKzY5LDcgQEAKICAgICAgICAgICAgICAgICAjIE5lZWRlZCBieSB0ZXN0cy9SdW5BbGxU
ZXN0cy5jcHAsIGFzIHdlbGwgYXMgQ2hyb21pdW1DdXJyZW50VGltZS5jcHAgYW5kCiAgICAgICAg
ICAgICAgICAgIyBDaHJvbWl1bVRocmVhZGluZy5jcHAgaW4gY2hyb21pdW0gc2hhcmVkIGxpYnJh
cnkgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljJywKKyAgICAgICAgICAgICAgICAnPCh0b29sc19kaXIpL1Rlc3RXZWJL
aXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdz
b3VyY2VzJzogWwogICAgICAgICAgICAgICAgICMgUmV1c2UgdGhlIHNhbWUgdGVzdGluZyBkcml2
ZXIgb2YgQ2hyb21pdW0ncyB3ZWJraXRfdW5pdF90ZXN0cy4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMzc2NTUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTMsNiAr
MTMsNyBAQAogCQkwRjE3QkJENjE1QUY2QzREMDA3QUI3NTMgLyogV2ViQ29yZVN0YXRpc3RpY3NX
aXRoTm9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMTdCQkQ0MTVBRjZDNEQwMDdBQjc1MyAvKiBXZWJDb3JlU3RhdGlzdGljc1dp
dGhOb1dlYlByb2Nlc3MuY3BwICovOyB9OwogCQkwRkM2QzRDQzE0MTAyN0UwMDA1QjdGMEMgLyog
UmVkQmxhY2tUcmVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwICovOyB9
OwogCQkwRkM2QzRDRjE0MTAzNEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM2QzRDRTE0MTAzNEFE
MDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi87IH07CisJCTE0NDY0MDEzMTY3QTgzMDUw
MDBCRDIxOCAvKiBMYXlvdXRVbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNw
cCAqLzsgfTsKIAkJMTRGM0IxMTMxNUU0NUVBQjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0RjNCMTEyMTVFNDVFQUIwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAgKi87IH07CiAJCTFBMDJDODRGMTI1RDRBODQwMEUzRjRCRCAvKiBGaW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDJDODRF
MTI1RDRBODQwMEUzRjRCRCAvKiBGaW5kLmNwcCAqLzsgfTsKIAkJMUEwMkM4NzAxMjVENENGRDAw
RTNGNEJEIC8qIGZpbmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTAyQzg0QjEyNUQ0QTVFMDBFM0Y0QkQgLyogZmluZC5odG1sICov
OyB9OwpAQCAtMjU5LDYgKzI2MCw3IEBACiAJCTBGMTdCQkQ0MTVBRjZDNEQwMDdBQjc1MyAvKiBX
ZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZVN0YXRpc3RpY3NXaXRoTm9XZWJQcm9jZXNzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8q
IFJlZEJsYWNrVHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBS
ZWRCbGFja1RyZWUuY3BwOyBwYXRoID0gV1RGL1JlZEJsYWNrVHJlZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2Nh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1ldGFBbGxvY2F0
b3IuY3BwOyBwYXRoID0gV1RGL01ldGFBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDQ2NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRVbml0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0IxMTIxNUU0NUVBQjAwMjEwMDY5IC8qIFNhdHVy
YXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcDsgcGF0aCA9IFdURi9T
YXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBmaW5kLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMDJDODRFMTI1RDRBODQwMEUzRjRCRCAvKiBGaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTMyLDYgKzUzNCw3IEBACiAJCTQ0MEExRDM2MTRBMDEwMDAwMDhBNjZGMiAvKiBXZWJDb3Jl
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDQ2NDAx
MjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8sCiAJCQkJNDQwQTFEMzgxNEEw
MTAzQTAwOEE2NkYyIC8qIEtVUkwuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBXZWJDb3JlOwpA
QCAtMTAzMCw2ICsxMDMzLDcgQEAKIAkJCQlGRTIxN0VDRDE2NDBBNTRBMDA1Mjk4OEIgLyogVk1J
bnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBQjhBQTExNjRDNzM1ODAwRDQ5QkVD
IC8qIEN1c3RvbVByb3RvY29sc1Rlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUFCOEFBNDE2
NEM3QTkzMDBENDlCRUMgLyogVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTE0NDY0MDEzMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0xheW91dFVuaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9MYXlvdXRVbml0LmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2RlZmluZSBFTkFCTEVfU1VCUElYRUxfTEFZT1VUIDEKKyNkZWZpbmUgRU5BQkxFX1NB
VFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyAxCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0xheW91dFVuaXQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXZWJDb3JlLCBMYXlvdXRVbml0SW50
KQoreworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xMDAwMDAwMDAwKS50b0ludCgpLCBpbnRN
aW5Gb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTAwMDAwMDAwKS50
b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgt
MTAwMDAwMDApLnRvSW50KCksIC0xMDAwMDAwMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQo
LTEwMDAwMDApLnRvSW50KCksIC0xMDAwMDAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgt
MTAwMDAwKS50b0ludCgpLCAtMTAwMDAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTAw
MDApLnRvSW50KCksIC0xMDAwMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEwMDApLnRv
SW50KCksIC0xMDAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTAwKS50b0ludCgpLCAt
MTAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTApLnRvSW50KCksIC0xMCk7CisgICAg
QVNTRVJUX0VRKExheW91dFVuaXQoLTEpLnRvSW50KCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5
b3V0VW5pdCgwKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxKS50b0lu
dCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxMDApLnRvSW50KCksIDEwMCk7Cisg
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoMTAwMCkudG9JbnQoKSwgMTAwMCk7CisgICAgQVNTRVJU
X0VRKExheW91dFVuaXQoMTAwMDApLnRvSW50KCksIDEwMDAwKTsKKyAgICBBU1NFUlRfRVEoTGF5
b3V0VW5pdCgxMDAwMDApLnRvSW50KCksIDEwMDAwMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVu
aXQoMTAwMDAwKS50b0ludCgpLCAxMDAwMDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEw
MDAwMDApLnRvSW50KCksIDEwMDAwMDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEwMDAw
MDAwKS50b0ludCgpLCAxMDAwMDAwMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMTAwMDAw
MDAwKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0
VW5pdCgxMDAwMDAwMDAwKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKK30KKworVEVT
VChXZWJDb3JlLCBMYXlvdXRVbml0RmxvYXQpCit7CisgICAgY29uc3QgZmxvYXQgdG9sZXJhbmNl
ID0gMS4wZiAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0
VW5pdCgxLjBmKS50b0Zsb2F0KCksIDEuMGYsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIo
TGF5b3V0VW5pdCgxLjFmKS50b0Zsb2F0KCksIDEuMWYsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJU
X05FQVIoTGF5b3V0VW5pdCgxLjI1ZikudG9GbG9hdCgpLCAxLjI1ZiwgdG9sZXJhbmNlKTsKKyAg
ICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMzNmKS50b0Zsb2F0KCksIDEuMzNmLCB0b2xlcmFu
Y2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMS4zMzMzZikudG9GbG9hdCgpLCAxLjMz
MzNmLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMS41MzQzNGYpLnRv
RmxvYXQoKSwgMS41MzQzNGYsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0VW5p
dCgzNDU2MzQpLnRvRmxvYXQoKSwgMzQ1NjM0LjBmLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9O
RUFSKExheW91dFVuaXQoMzQ1NjM0LjEyMzM1ZikudG9GbG9hdCgpLCAzNDU2MzQuMTIzMzVmLCB0
b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoLTM0NTYzNC4xMjMzNWYpLnRv
RmxvYXQoKSwgLTM0NTYzNC4xMjMzNWYsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5
b3V0VW5pdCgtMzQ1NjM0KS50b0Zsb2F0KCksIC0zNDU2MzQuMGYsIHRvbGVyYW5jZSk7ICAgIAor
fQorCitURVNUKFdlYkNvcmUsIExheW91dFVuaXRSb3VuZGluZykKK3sKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgtMS41Zikucm91bmQoKSwgLTIpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0
KC0xLjQ5Zikucm91bmQoKSwgLTEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xLjBmKS5y
b3VuZCgpLCAtMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTAuOTlmKS5yb3VuZCgpLCAt
MSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTAuNTBmKS5yb3VuZCgpLCAtMSk7CisgICAg
QVNTRVJUX0VRKExheW91dFVuaXQoLTAuNDlmKS5yb3VuZCgpLCAwKTsKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgtMC4xZikucm91bmQoKSwgMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQo
MC4wZikucm91bmQoKSwgMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC4xZikucm91bmQo
KSwgMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC40OWYpLnJvdW5kKCksIDApOworICAg
IEFTU0VSVF9FUShMYXlvdXRVbml0KDAuNTBmKS5yb3VuZCgpLCAxKTsKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgwLjk5Zikucm91bmQoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQo
MS4wZikucm91bmQoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMS40OWYpLnJvdW5k
KCksIDEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEuNWYpLnJvdW5kKCksIDIpOworfQor
CitURVNUKFdlYkNvcmUsIExheW91dFVuaXRTbmFwU2l6ZVRvUGl4ZWwpCit7CisgICAgQVNTRVJU
X0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEpLCBMYXlvdXRVbml0KDApKSwgMSk7Cisg
ICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEpLCBMYXlvdXRVbml0KDAu
NSkpLCAxKTsKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVuaXQoMS41KSwg
TGF5b3V0VW5pdCgwKSksIDIpOworICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0
VW5pdCgxLjUpLCBMYXlvdXRVbml0KDAuNDkpKSwgMik7CisgICAgQVNTRVJUX0VRKHNuYXBTaXpl
VG9QaXhlbChMYXlvdXRVbml0KDEuNSksIExheW91dFVuaXQoMC41KSksIDEpOworICAgIEFTU0VS
VF9FUShzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCgxLjUpLCBMYXlvdXRVbml0KDAuNzUpKSwg
MSk7CisgICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEuNSksIExheW91
dFVuaXQoMC45OSkpLCAxKTsKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVu
aXQoMS41KSwgTGF5b3V0VW5pdCgxKSksIDIpOworICAgIAorICAgIEFTU0VSVF9FUShzbmFwU2l6
ZVRvUGl4ZWwoTGF5b3V0VW5pdCgwLjUpLCBMYXlvdXRVbml0KDEuNSkpLCAwKTsKKyAgICBBU1NF
UlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVuaXQoMC45OSksIExheW91dFVuaXQoMS41KSks
IDApOworICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCgxLjApLCBMYXlv
dXRVbml0KDEuNSkpLCAxKTsKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVu
aXQoMS40OSksIExheW91dFVuaXQoMS41KSksIDEpOworICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRv
UGl4ZWwoTGF5b3V0VW5pdCgxLjUpLCBMYXlvdXRVbml0KDEuNSkpLCAxKTsKKyAgICAKKyAgICBB
U1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVuaXQoMTAwMDAwMDAuNSksIExheW91dFVu
aXQoMTAwMDAwMDApKSwgMTAwMDAwMDEpOworICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRvUGl4ZWwo
TGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0KSwgTGF5b3V0VW5pdCgwLjMpKSwgaW50TWF4
Rm9yTGF5b3V0VW5pdCk7CisgICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0
KGludE1pbkZvckxheW91dFVuaXQpLCBMYXlvdXRVbml0KC0wLjMpKSwgaW50TWluRm9yTGF5b3V0
VW5pdCk7Cit9CisKK1RFU1QoV2ViQ29yZSwgTGF5b3V0VW5pdE11bHRpcGxpY2F0aW9uKQorewor
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIDEp
OworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAqIExheW91dFVuaXQoMikpLnRvSW50KCks
IDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAqIExheW91dFVuaXQoMSkpLnRvSW50
KCksIDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAqIExheW91dFVuaXQoMC41KSku
dG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDAuNSkgKiBMYXlvdXRVbml0
KDIpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMTAwKSAqIExheW91
dFVuaXQoMSkpLnRvSW50KCksIDEwMCk7CisgICAgCisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0
KC0xKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIC0xKTsKKyAgICBBU1NFUlRfRVEoKExheW91
dFVuaXQoLTEpICogTGF5b3V0VW5pdCgyKSkudG9JbnQoKSwgLTIpOworICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdCgtMikgKiBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAtMik7CisgICAgQVNTRVJU
X0VRKChMYXlvdXRVbml0KC0yKSAqIExheW91dFVuaXQoMC41KSkudG9JbnQoKSwgLTEpOworICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMC41KSAqIExheW91dFVuaXQoMikpLnRvSW50KCksIC0x
KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgKiBMYXlvdXRVbml0KDEpKS50b0lu
dCgpLCAtMTAwKTsKKyAgICAKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEpICogTGF5b3V0
VW5pdCgtMSkpLnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgKiBM
YXlvdXRVbml0KC0yKSkudG9JbnQoKSwgMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0y
KSAqIExheW91dFVuaXQoLTEpKS50b0ludCgpLCAyKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVu
aXQoLTIpICogTGF5b3V0VW5pdCgtMC41KSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChM
YXlvdXRVbml0KC0wLjUpICogTGF5b3V0VW5pdCgtMikpLnRvSW50KCksIDEpOworICAgIEFTU0VS
VF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAqIExheW91dFVuaXQoLTEpKS50b0ludCgpLCAxMDApOwor
ICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxMDApICogTGF5b3V0VW5pdCgzLjMzKSku
cm91bmQoKSwgMzMzKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgKiBMYXlvdXRV
bml0KDMuMzMpKS5yb3VuZCgpLCAtMzMzKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEw
MCkgKiBMYXlvdXRVbml0KC0zLjMzKSkucm91bmQoKSwgMzMzKTsKKyAgICAKKyAgICBBU1NFUlRf
RVEoKExheW91dFVuaXQoMTAwMCkgKiBMYXlvdXRVbml0KDEwMDApKS50b0ludCgpLCAxMDAwMDAw
KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMTAwMCkgKiBMYXlvdXRVbml0KDEwMDAwKSku
dG9JbnQoKSwgMTAwMDAwMDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxMDAwKSAqIExh
eW91dFVuaXQoMTAwMDAwKSkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7CisgICAgQVNT
RVJUX0VRKChMYXlvdXRVbml0KDEwMDAwMCkgKiBMYXlvdXRVbml0KDEwMDApKS50b0ludCgpLCBp
bnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICAKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEw
MDApICogTGF5b3V0VW5pdCgxMDAwKSkudG9JbnQoKSwgLTEwMDAwMDApOworICAgIEFTU0VSVF9F
USgoTGF5b3V0VW5pdCgtMTAwMCkgKiBMYXlvdXRVbml0KDEwMDAwKSkudG9JbnQoKSwgLTEwMDAw
MDAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMDApICogTGF5b3V0VW5pdCgxMDAw
MDApKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoKExheW91
dFVuaXQoLTEwMDAwMCkgKiBMYXlvdXRVbml0KDEwMDApKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlv
dXRVbml0KTsKKyAgICAKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMDApICogTGF5b3V0
VW5pdCgtMTAwMCkpLnRvSW50KCksIDEwMDAwMDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5p
dCgtMTAwMCkgKiBMYXlvdXRVbml0KC0xMDAwMCkpLnRvSW50KCksIDEwMDAwMDAwKTsKKyAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoLTEwMDApICogTGF5b3V0VW5pdCgtMTAwMDAwKSkudG9JbnQo
KSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xMDAw
MDApICogTGF5b3V0VW5pdCgtMTAwMCkpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQpOwor
fQorCitURVNUKFdlYkNvcmUsIExheW91dFVuaXREaXZpc2lvbikKK3sKKyAgICBBU1NFUlRfRVEo
KExheW91dFVuaXQoMSkgLyBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRf
RVEoKExheW91dFVuaXQoMSkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQoMikgLyBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAyKTsKKyAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoMikgLyBMYXlvdXRVbml0KDAuNSkpLnRvSW50KCksIDQpOwor
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgwLjUpIC8gTGF5b3V0VW5pdCgyKSkudG9JbnQoKSwg
MCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEwMCkgLyBMYXlvdXRVbml0KDEwKSkudG9J
bnQoKSwgMTApOworICAgIEFTU0VSVF9GTE9BVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVu
aXQoMikpLnRvRmxvYXQoKSwgMC41Zik7CisgICAgQVNTRVJUX0ZMT0FUX0VRKChMYXlvdXRVbml0
KDAuNSkgLyBMYXlvdXRVbml0KDIpKS50b0Zsb2F0KCksIDAuMjVmKTsKKyAgICAKKyAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQoLTEpIC8gTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTEpOworICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsK
KyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpIC8gTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwg
LTIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgLyBMYXlvdXRVbml0KDAuNSkpLnRv
SW50KCksIC00KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTAuNSkgLyBMYXlvdXRVbml0
KDIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgLyBMYXlv
dXRVbml0KDEwKSkudG9JbnQoKSwgLTEwKTsKKyAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVu
aXQoLTEpIC8gTGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAtMC41Zik7CisgICAgQVNTRVJUX0ZM
T0FUX0VRKChMYXlvdXRVbml0KC0wLjUpIC8gTGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAtMC4y
NWYpOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KC0x
KSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91dFVu
aXQoLTIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpIC8gTGF5
b3V0VW5pdCgtMSkpLnRvSW50KCksIDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikg
LyBMYXlvdXRVbml0KC0wLjUpKS50b0ludCgpLCA0KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVu
aXQoLTAuNSkgLyBMYXlvdXRVbml0KC0yKSkudG9JbnQoKSwgMCk7CisgICAgQVNTRVJUX0VRKChM
YXlvdXRVbml0KC0xMDApIC8gTGF5b3V0VW5pdCgtMTApKS50b0ludCgpLCAxMCk7CisgICAgQVNT
RVJUX0ZMT0FUX0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91dFVuaXQoLTIpKS50b0Zsb2F0KCks
IDAuNWYpOworICAgIEFTU0VSVF9GTE9BVF9FUSgoTGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVu
aXQoLTIpKS50b0Zsb2F0KCksIDAuMjVmKTsKKyAgICAKKyAgICBBU1NFUlRfRVEoKExheW91dFVu
aXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCBpbnRNYXhG
b3JMYXlvdXRVbml0IC8gMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KGludE1heEZvckxh
eW91dFVuaXQpIC8gTGF5b3V0VW5pdCgwLjUpKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0
KTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvagkocmV2aXNpb24gMTM3NjU1KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTQxNSw2ICs0MTUsMTAgQEAKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgogCQkJCTwv
RmlsdGVyPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVGVzdHNcV2ViQ29yZVxM
YXlvdXRVbml0LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgogCQkJPEZp
bHRlcgogCQkJCU5hbWU9IldURiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179362</attachid>
            <date>2012-12-13 16:02:09 -0800</date>
            <delta_ts>2012-12-14 11:57:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104955-20121213155929.patch</filename>
            <type>text/plain</type>
            <size>19253</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTEzICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGFtcCB2YWx1ZXMgaW4gTGF5
b3V0VW5pdDo6c2V0UmF3VmFsdWUgd2hlbiBTQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMgaXMg
ZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0OTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TGF5b3V0VW5pdDo6c2V0UmF3VmFsdWUobG9uZyBsb25nKSBjdXJyZW50bHkgZG9lcyBub3QgY2xh
bXAKKyAgICAgICAgdmFsdWVzIGFuZCBpbnN0ZWFkIG92ZXJmbG93cyB3aGVuIGdpdmVuIGEgdmFs
dWUgZ3JlYXRlciB0aGFuCisgICAgICAgIElOVF9NQVggb3IgbGVzcyB0aGFuIElOVF9NSU4uIEFz
IHRoZSBkaXZpc2lvbiBvcGVyYXRvciB1c2VzIHRoZQorICAgICAgICBzZXRSYXdWYWx1ZShsb25n
IGxvbmcpIG1ldGhvZCBpdCBjYW4gdGhlIHZhbHVlIHRvIG92ZXJmbG93LAorICAgICAgICBldmVu
IGlmIFNBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyBpcyBlbmFibGVkLgorCisgICAgICAgIFRl
c3Q6IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcAorCisgICAgICAg
ICogcGxhdGZvcm0vTGF5b3V0VW5pdC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0VW5pdDo6
c2V0UmF3VmFsdWUpOgorICAgICAgICBDbGFtcCB2YWx1ZSBpZiBTQVRVUkFURURfTEFZT1VUX0FS
SVRITUVUSUMgaXMgZW5hYmxlZC4KKwogMjAxMi0xMi0xMyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBtaXNzaW5nIG51bGxpdHkgY2hlY2sgaW4g
UmVuZGVyT2JqZWN0Ojpjb250YWluaW5nQmxvY2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xheW91dFVuaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
YXlvdXRVbml0LmgJKHJldmlzaW9uIDEzNzY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xheW91dFVuaXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRSYXdWYWx1ZShsb25nIGxvbmcgdmFsdWUpCiAgICAgewogICAgICAgICBS
RVBPUlRfT1ZFUkZMT1codmFsdWUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpICYm
IHZhbHVlIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7CisjaWYgRU5BQkxFKFNB
VFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykKKyAgICAgICAgbV92YWx1ZSA9IGNsYW1wVG8odmFs
dWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWF4KCkpOworI2Vsc2UKICAgICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PGludD4o
dmFsdWUpOworI2VuZGlmCiAgICAgfQogCiAgICAgTGF5b3V0VW5pdCBhYnMoKSBjb25zdApJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTM3Njc0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMTItMTItMTMgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIENsYW1wIHZhbHVlcyBpbiBMYXlvdXRVbml0OjpzZXRSYXdWYWx1ZSB3aGVuIFNBVFVS
QVRFRF9MQVlPVVRfQVJJVEhNRVRJQyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIExheW91dFVuaXQuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvRm9yd2FyZGluZ0hlYWRlcnM6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Rm9yd2FyZGluZ0hlYWRlcnMvV2ViQ29yZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9Gb3J3YXJkaW5nSGVhZGVycy9XZWJDb3JlL0xheW91dFVuaXQuaDogQWRkZWQuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cC9UZXN0V2ViS2l0QVBJLmd5cDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvajoKKwogMjAx
Mi0xMi0xMyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTM3NjYxLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMzc2NzQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAgYWRkX2V4ZWN1dGFi
bGUodGVzdF93ZWJjb3JlCiAgICAgJHt0ZXN0X21haW5fU09VUkNFU30KICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViQ29yZS9LVVJMLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dl
YkNvcmUvTGF5b3V0VW5pdC5jcHAKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3Rfd2Vi
Y29yZSAke3Rlc3Rfd2ViY29yZV9MSUJSQVJJRVN9KQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLmd5cGkJKHJldmlzaW9uIDEzNzY3NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiB7
CiAgICAgJ3ZhcmlhYmxlcyc6IHsKICAgICAgICAgJ1Rlc3RXZWJLaXRBUElfZmlsZXMnOiBbCisg
ICAgICAgICAgICAnVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcCcsCiAgICAgICAgICAgICAn
VGVzdHMvV1RGL0F0b21pY1N0cmluZy5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9DaGVj
a2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwJywKICAgICAgICAgICAgICdUZXN0cy9XVEYvQ1N0
cmluZy5jcHAnLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy9X
ZWJDb3JlL0xheW91dFVuaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0Zv
cndhcmRpbmdIZWFkZXJzL1dlYkNvcmUvTGF5b3V0VW5pdC5oCShyZXZpc2lvbiAwKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy9XZWJDb3JlL0xheW91dFVuaXQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFRlc3RXZWJLaXRBUElfRldEX0xh
eW91dFVuaXRfaAorI2RlZmluZSBUZXN0V2ViS2l0QVBJX0ZXRF9MYXlvdXRVbml0X2gKKyNpbmNs
dWRlIDxMYXlvdXRVbml0Lmg+CisjZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS5neXAvVGVzdFdlYktpdEFQSS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cC9UZXN0V2ViS2l0QVBJLmd5cAkocmV2aXNpb24g
MTM3Njc0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cC9UZXN0V2Vi
S2l0QVBJLmd5cAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQAogICAgICAgICAgICAg
ICAgICMgTmVlZGVkIGJ5IHRlc3RzL1J1bkFsbFRlc3RzLmNwcCwgYXMgd2VsbCBhcyBDaHJvbWl1
bUN1cnJlbnRUaW1lLmNwcCBhbmQKICAgICAgICAgICAgICAgICAjIENocm9taXVtVGhyZWFkaW5n
LmNwcCBpbiBjaHJvbWl1bSBzaGFyZWQgbGlicmFyeSBjb25maWd1cmF0aW9uLgogICAgICAgICAg
ICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMnLAorICAgICAgICAg
ICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYkNvcmUvcGxhdGZvcm0nLAorICAgICAgICAgICAgICAg
ICc8KHRvb2xzX2RpcikvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycycsCiAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgJ3NvdXJjZXMnOiBbCiAgICAgICAgICAgICAgICAgIyBSZXVz
ZSB0aGUgc2FtZSB0ZXN0aW5nIGRyaXZlciBvZiBDaHJvbWl1bSdzIHdlYmtpdF91bml0X3Rlc3Rz
LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNzY3NCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBACiAJCTBGMTdCQkQ2MTVBRjZDNEQwMDdBQjc1
MyAvKiBXZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxN0JCRDQxNUFGNkM0RDAwN0FCNzUz
IC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgKi87IH07CiAJCTBGQzZD
NENDMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8q
IFJlZEJsYWNrVHJlZS5jcHAgKi87IH07CiAJCTBGQzZDNENGMTQxMDM0QUQwMDVCN0YwQyAvKiBN
ZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLzsg
fTsKKwkJMTQ0NjQwMTMxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0NjQwMTIxNjdBODMwNTAw
MEJEMjE4IC8qIExheW91dFVuaXQuY3BwICovOyB9OwogCQkxNEYzQjExMzE1RTQ1RUFCMDAyMTAw
NjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGM0IxMTIxNUU0NUVBQjAwMjEwMDY5IC8q
IFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLzsgfTsKIAkJMUEwMkM4NEYxMjVE
NEE4NDAwRTNGNEJEIC8qIEZpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEwMkM4NEUxMjVENEE4NDAwRTNGNEJEIC8qIEZpbmQuY3BwICovOyB9
OwogCQkxQTAyQzg3MDEyNUQ0Q0ZEMDBFM0Y0QkQgLyogZmluZC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDJDODRCMTI1RDRBNUUw
MEUzRjRCRCAvKiBmaW5kLmh0bWwgKi87IH07CkBAIC0yNTksNiArMjYwLDcgQEAKIAkJMEYxN0JC
RDQxNUFGNkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlU3RhdGlzdGlj
c1dpdGhOb1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM2
QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlZEJsYWNrVHJlZS5jcHA7IHBhdGggPSBXVEYvUmVkQmxh
Y2tUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNkM0Q0UxNDEwMzRB
RDAwNUI3RjBDIC8qIE1ldGFBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTWV0YUFsbG9jYXRvci5jcHA7IHBhdGggPSBXVEYvTWV0YUFsbG9jYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NDY0MDEyMTY3QTgzMDUwMDBCRDIx
OCAvKiBMYXlvdXRVbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExheW91dFVuaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEYzQjExMjE1
RTQ1RUFCMDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJh
dGlvbnMuY3BwOyBwYXRoID0gV1RGL1NhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMkM4NEIxMjVENEE1RTAwRTNGNEJEIC8q
IGZpbmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGZpbmQuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMkM4NEUxMjVENEE4NDAwRTNGNEJEIC8qIEZpbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzIsNiArNTM0LDcgQEAKIAkJNDQwQTFEMzYxNEEw
MTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNw
cCAqLywKIAkJCQk0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgKi8sCiAJCQkp
OwogCQkJcGF0aCA9IFdlYkNvcmU7CkBAIC0xMDMwLDYgKzEwMzMsNyBAQAogCQkJCUZFMjE3RUNE
MTY0MEE1NEEwMDUyOTg4QiAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
OUFCOEFBMTE2NEM3MzU4MDBENDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5QUI4QUE0MTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ0NjQwMTMxNjdBODMwNTAw
MEJEMjE4IC8qIExheW91dFVuaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCShyZXZpc2lvbiAw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjZGVmaW5lIEVOQUJMRV9TVUJQSVhFTF9MQVlP
VVQgMQorI2RlZmluZSBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDIDEKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0VW5pdC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNU
KFdlYkNvcmUsIExheW91dFVuaXRJbnQpCit7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEw
MDAwMDAwMDApLnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQpOworICAgIEFTU0VSVF9FUShM
YXlvdXRVbml0KC0xMDAwMDAwMDApLnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQpOworICAg
IEFTU0VSVF9FUShMYXlvdXRVbml0KC0xMDAwMDAwMCkudG9JbnQoKSwgLTEwMDAwMDAwKTsKKyAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTAwMDAwMCkudG9JbnQoKSwgLTEwMDAwMDApOworICAg
IEFTU0VSVF9FUShMYXlvdXRVbml0KC0xMDAwMDApLnRvSW50KCksIC0xMDAwMDApOworICAgIEFT
U0VSVF9FUShMYXlvdXRVbml0KC0xMDAwMCkudG9JbnQoKSwgLTEwMDAwKTsKKyAgICBBU1NFUlRf
RVEoTGF5b3V0VW5pdCgtMTAwMCkudG9JbnQoKSwgLTEwMDApOworICAgIEFTU0VSVF9FUShMYXlv
dXRVbml0KC0xMDApLnRvSW50KCksIC0xMDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0x
MCkudG9JbnQoKSwgLTEwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMSkudG9JbnQoKSwg
LTEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDApLnRvSW50KCksIDApOworICAgIEFTU0VS
VF9FUShMYXlvdXRVbml0KDEpLnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0
KDEwMCkudG9JbnQoKSwgMTAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxMDAwKS50b0lu
dCgpLCAxMDAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxMDAwMCkudG9JbnQoKSwgMTAw
MDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEwMDAwMCkudG9JbnQoKSwgMTAwMDAwKTsK
KyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxMDAwMDApLnRvSW50KCksIDEwMDAwMCk7CisgICAg
QVNTRVJUX0VRKExheW91dFVuaXQoMTAwMDAwMCkudG9JbnQoKSwgMTAwMDAwMCk7CisgICAgQVNT
RVJUX0VRKExheW91dFVuaXQoMTAwMDAwMDApLnRvSW50KCksIDEwMDAwMDAwKTsKKyAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdCgxMDAwMDAwMDApLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQp
OworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEwMDAwMDAwMDApLnRvSW50KCksIGludE1heEZv
ckxheW91dFVuaXQpOworfQorCitURVNUKFdlYkNvcmUsIExheW91dFVuaXRGbG9hdCkKK3sKKyAg
ICBjb25zdCBmbG9hdCB0b2xlcmFuY2UgPSAxLjBmIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsK
KyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMGYpLnRvRmxvYXQoKSwgMS4wZiwgdG9sZXJh
bmNlKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMWYpLnRvRmxvYXQoKSwgMS4xZiwg
dG9sZXJhbmNlKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMjVmKS50b0Zsb2F0KCks
IDEuMjVmLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMS4zM2YpLnRv
RmxvYXQoKSwgMS4zM2YsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgx
LjMzMzNmKS50b0Zsb2F0KCksIDEuMzMzM2YsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIo
TGF5b3V0VW5pdCgxLjUzNDM0ZikudG9GbG9hdCgpLCAxLjUzNDM0ZiwgdG9sZXJhbmNlKTsKKyAg
ICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDM0NTYzNCkudG9GbG9hdCgpLCAzNDU2MzQuMGYsIHRv
bGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgzNDU2MzQuMTIzMzVmKS50b0Zs
b2F0KCksIDM0NTYzNC4xMjMzNWYsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0
VW5pdCgtMzQ1NjM0LjEyMzM1ZikudG9GbG9hdCgpLCAtMzQ1NjM0LjEyMzM1ZiwgdG9sZXJhbmNl
KTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KC0zNDU2MzQpLnRvRmxvYXQoKSwgLTM0NTYz
NC4wZiwgdG9sZXJhbmNlKTsgICAgCit9CisKK1RFU1QoV2ViQ29yZSwgTGF5b3V0VW5pdFJvdW5k
aW5nKQoreworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xLjVmKS5yb3VuZCgpLCAtMik7Cisg
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEuNDlmKS5yb3VuZCgpLCAtMSk7CisgICAgQVNTRVJU
X0VRKExheW91dFVuaXQoLTEuMGYpLnJvdW5kKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0
VW5pdCgtMC45OWYpLnJvdW5kKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC41
MGYpLnJvdW5kKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC40OWYpLnJvdW5k
KCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0wLjFmKS5yb3VuZCgpLCAwKTsKKyAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwLjBmKS5yb3VuZCgpLCAwKTsKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgwLjFmKS5yb3VuZCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgw
LjQ5Zikucm91bmQoKSwgMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC41MGYpLnJvdW5k
KCksIDEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuOTlmKS5yb3VuZCgpLCAxKTsKKyAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxLjBmKS5yb3VuZCgpLCAxKTsKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgxLjQ5Zikucm91bmQoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQo
MS41Zikucm91bmQoKSwgMik7Cit9CisKK1RFU1QoV2ViQ29yZSwgTGF5b3V0VW5pdFNuYXBTaXpl
VG9QaXhlbCkKK3sKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVuaXQoMSks
IExheW91dFVuaXQoMCkpLCAxKTsKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91
dFVuaXQoMSksIExheW91dFVuaXQoMC41KSksIDEpOworICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRv
UGl4ZWwoTGF5b3V0VW5pdCgxLjUpLCBMYXlvdXRVbml0KDApKSwgMik7CisgICAgQVNTRVJUX0VR
KHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEuNSksIExheW91dFVuaXQoMC40OSkpLCAyKTsK
KyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVuaXQoMS41KSwgTGF5b3V0VW5p
dCgwLjUpKSwgMSk7CisgICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEu
NSksIExheW91dFVuaXQoMC43NSkpLCAxKTsKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVs
KExheW91dFVuaXQoMS41KSwgTGF5b3V0VW5pdCgwLjk5KSksIDEpOworICAgIEFTU0VSVF9FUShz
bmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCgxLjUpLCBMYXlvdXRVbml0KDEpKSwgMik7CisgICAg
CisgICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDAuNSksIExheW91dFVu
aXQoMS41KSksIDApOworICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCgw
Ljk5KSwgTGF5b3V0VW5pdCgxLjUpKSwgMCk7CisgICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhl
bChMYXlvdXRVbml0KDEuMCksIExheW91dFVuaXQoMS41KSksIDEpOworICAgIEFTU0VSVF9FUShz
bmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCgxLjQ5KSwgTGF5b3V0VW5pdCgxLjUpKSwgMSk7Cisg
ICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEuNSksIExheW91dFVuaXQo
MS41KSksIDEpOworICAgIAorICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5p
dCgxMDAwMDAwMC41KSwgTGF5b3V0VW5pdCgxMDAwMDAwMCkpLCAxMDAwMDAwMSk7CisgICAgQVNT
RVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQpLCBM
YXlvdXRVbml0KDAuMykpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoc25h
cFNpemVUb1BpeGVsKExheW91dFVuaXQoaW50TWluRm9yTGF5b3V0VW5pdCksIExheW91dFVuaXQo
LTAuMykpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKK30KKworVEVTVChXZWJDb3JlLCBMYXlvdXRV
bml0TXVsdGlwbGljYXRpb24pCit7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEpICogTGF5
b3V0VW5pdCgxKSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEpICog
TGF5b3V0VW5pdCgyKSkudG9JbnQoKSwgMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDIp
ICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0
KDIpICogTGF5b3V0VW5pdCgwLjUpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoKExheW91
dFVuaXQoMC41KSAqIExheW91dFVuaXQoMikpLnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdCgxMDApICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgMTAwKTsKKyAgICAKKyAg
ICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEpICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTEp
OworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgKiBMYXlvdXRVbml0KDIpKS50b0ludCgp
LCAtMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0yKSAqIExheW91dFVuaXQoMSkpLnRv
SW50KCksIC0yKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpICogTGF5b3V0VW5pdCgw
LjUpKS50b0ludCgpLCAtMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0wLjUpICogTGF5
b3V0VW5pdCgyKSkudG9JbnQoKSwgLTEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAw
KSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIC0xMDApOworICAgIAorICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdCgtMSkgKiBMYXlvdXRVbml0KC0xKSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJU
X0VRKChMYXlvdXRVbml0KC0xKSAqIExheW91dFVuaXQoLTIpKS50b0ludCgpLCAyKTsKKyAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoLTIpICogTGF5b3V0VW5pdCgtMSkpLnRvSW50KCksIDIpOwor
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgKiBMYXlvdXRVbml0KC0wLjUpKS50b0ludCgp
LCAxKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTAuNSkgKiBMYXlvdXRVbml0KC0yKSku
dG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xMDApICogTGF5b3V0VW5p
dCgtMSkpLnRvSW50KCksIDEwMCk7CisgICAgCisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEw
MCkgKiBMYXlvdXRVbml0KDMuMzMpKS5yb3VuZCgpLCAzMzMpOworICAgIEFTU0VSVF9FUSgoTGF5
b3V0VW5pdCgtMTAwKSAqIExheW91dFVuaXQoMy4zMykpLnJvdW5kKCksIC0zMzMpOworICAgIEFT
U0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAqIExheW91dFVuaXQoLTMuMzMpKS5yb3VuZCgpLCAz
MzMpOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxMDAwKSAqIExheW91dFVuaXQo
MTAwMCkpLnRvSW50KCksIDEwMDAwMDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxMDAw
KSAqIExheW91dFVuaXQoMTAwMDApKS50b0ludCgpLCAxMDAwMDAwMCk7CisgICAgQVNTRVJUX0VR
KChMYXlvdXRVbml0KDEwMDApICogTGF5b3V0VW5pdCgxMDAwMDApKS50b0ludCgpLCBpbnRNYXhG
b3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMTAwMDAwKSAqIExheW91
dFVuaXQoMTAwMCkpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQpOworICAgIAorICAgIEFT
U0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwMCkgKiBMYXlvdXRVbml0KDEwMDApKS50b0ludCgpLCAt
MTAwMDAwMCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xMDAwKSAqIExheW91dFVuaXQo
MTAwMDApKS50b0ludCgpLCAtMTAwMDAwMDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgt
MTAwMCkgKiBMYXlvdXRVbml0KDEwMDAwMCkpLnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQp
OworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwMDAwKSAqIExheW91dFVuaXQoMTAwMCkp
LnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQpOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5
b3V0VW5pdCgtMTAwMCkgKiBMYXlvdXRVbml0KC0xMDAwKSkudG9JbnQoKSwgMTAwMDAwMCk7Cisg
ICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xMDAwKSAqIExheW91dFVuaXQoLTEwMDAwKSkudG9J
bnQoKSwgMTAwMDAwMDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwMCkgKiBMYXlv
dXRVbml0KC0xMDAwMDApKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQoLTEwMDAwMCkgKiBMYXlvdXRVbml0KC0xMDAwKSkudG9JbnQoKSwg
aW50TWF4Rm9yTGF5b3V0VW5pdCk7Cit9CisKK1RFU1QoV2ViQ29yZSwgTGF5b3V0VW5pdERpdmlz
aW9uKQoreworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVuaXQoMSkpLnRv
SW50KCksIDEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVuaXQoMikp
LnRvSW50KCksIDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAvIExheW91dFVuaXQo
MSkpLnRvSW50KCksIDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAvIExheW91dFVu
aXQoMC41KSkudG9JbnQoKSwgNCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDAuNSkgLyBM
YXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMTAw
KSAvIExheW91dFVuaXQoMTApKS50b0ludCgpLCAxMCk7CisgICAgQVNTRVJUX0ZMT0FUX0VRKChM
YXlvdXRVbml0KDEpIC8gTGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAwLjVmKTsKKyAgICBBU1NF
UlRfRkxPQVRfRVEoKExheW91dFVuaXQoMC41KSAvIExheW91dFVuaXQoMikpLnRvRmxvYXQoKSwg
MC4yNWYpOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0
KDEpKS50b0ludCgpLCAtMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91
dFVuaXQoMikpLnRvSW50KCksIDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgLyBM
YXlvdXRVbml0KDEpKS50b0ludCgpLCAtMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0y
KSAvIExheW91dFVuaXQoMC41KSkudG9JbnQoKSwgLTQpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0
VW5pdCgtMC41KSAvIExheW91dFVuaXQoMikpLnRvSW50KCksIDApOworICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdCgtMTAwKSAvIExheW91dFVuaXQoMTApKS50b0ludCgpLCAtMTApOworICAgIEFT
U0VSVF9GTE9BVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KDIpKS50b0Zsb2F0KCks
IC0wLjVmKTsKKyAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoLTAuNSkgLyBMYXlvdXRV
bml0KDIpKS50b0Zsb2F0KCksIC0wLjI1Zik7CisgICAgCisgICAgQVNTRVJUX0VRKChMYXlvdXRV
bml0KC0xKSAvIExheW91dFVuaXQoLTEpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoKExh
eW91dFVuaXQoLTEpIC8gTGF5b3V0VW5pdCgtMikpLnRvSW50KCksIDApOworICAgIEFTU0VSVF9F
USgoTGF5b3V0VW5pdCgtMikgLyBMYXlvdXRVbml0KC0xKSkudG9JbnQoKSwgMik7CisgICAgQVNT
RVJUX0VRKChMYXlvdXRVbml0KC0yKSAvIExheW91dFVuaXQoLTAuNSkpLnRvSW50KCksIDQpOwor
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVuaXQoLTIpKS50b0ludCgp
LCAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgLyBMYXlvdXRVbml0KC0xMCkp
LnRvSW50KCksIDEwKTsKKyAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoLTEpIC8gTGF5
b3V0VW5pdCgtMikpLnRvRmxvYXQoKSwgMC41Zik7CisgICAgQVNTRVJUX0ZMT0FUX0VRKChMYXlv
dXRVbml0KC0wLjUpIC8gTGF5b3V0VW5pdCgtMikpLnRvRmxvYXQoKSwgMC4yNWYpOworICAgIAor
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0KSAvIExheW91dFVu
aXQoMikpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQgLyAyKTsKKyAgICBBU1NFUlRfRVEo
KExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkgLyBMYXlvdXRVbml0KDAuNSkpLnRvSW50
KCksIGludE1heEZvckxheW91dFVuaXQpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNw
cm9qCShyZXZpc2lvbiAxMzc2NzQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2Vi
S2l0QVBJLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSwxMCBAQAogCQkJCQkJ
PgogCQkJCQk8L0ZpbGU+CiAJCQkJPC9GaWx0ZXI+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxUZXN0c1xXZWJDb3JlXExheW91dFVuaXQuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxl
PgogCQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0iV1RGIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179509</attachid>
            <date>2012-12-14 11:57:26 -0800</date>
            <delta_ts>2012-12-17 12:16:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104955-20121214115446.patch</filename>
            <type>text/plain</type>
            <size>19778</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzc2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTEzICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGFtcCB2YWx1ZXMgaW4gTGF5
b3V0VW5pdDo6c2V0UmF3VmFsdWUgd2hlbiBTQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMgaXMg
ZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0OTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TGF5b3V0VW5pdDo6c2V0UmF3VmFsdWUobG9uZyBsb25nKSBjdXJyZW50bHkgZG9lcyBub3QgY2xh
bXAKKyAgICAgICAgdmFsdWVzIGFuZCBpbnN0ZWFkIG92ZXJmbG93cyB3aGVuIGdpdmVuIGEgdmFs
dWUgZ3JlYXRlciB0aGFuCisgICAgICAgIElOVF9NQVggb3IgbGVzcyB0aGFuIElOVF9NSU4uIEFz
IHRoZSBkaXZpc2lvbiBvcGVyYXRvciB1c2VzIHRoZQorICAgICAgICBzZXRSYXdWYWx1ZShsb25n
IGxvbmcpIG1ldGhvZCBpdCBjYW4gdGhlIHZhbHVlIHRvIG92ZXJmbG93LAorICAgICAgICBldmVu
IGlmIFNBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQyBpcyBlbmFibGVkLgorCisgICAgICAgIFRl
c3Q6IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcAorCisgICAgICAg
ICogcGxhdGZvcm0vTGF5b3V0VW5pdC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0VW5pdDo6
c2V0UmF3VmFsdWUpOgorICAgICAgICBDbGFtcCB2YWx1ZSBpZiBTQVRVUkFURURfTEFZT1VUX0FS
SVRITUVUSUMgaXMgZW5hYmxlZC4KKwogMjAxMi0xMi0xNCAgTWljaGVsYW5nZWxvIERlIFNpbW9u
ZSAgPG1pY2hlbGFuZ2Vsb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgU2hhZGVyc10gUmVt
b3ZlIGNvZGUgZm9yIHRoZSBvdGhlciBtZXNoIGJveCB0eXBlcyAoYm9yZGVyLWJveCB8IHBhZGRp
bmctYm94IHwgY29udGVudC1ib3gpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlv
dXRVbml0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5p
dC5oCShyZXZpc2lvbiAxMzc3NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRV
bml0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UmF3VmFsdWUobG9uZyBsb25nIHZhbHVlKQogICAgIHsKICAgICAgICAgUkVQT1JUX09W
RVJGTE9XKHZhbHVlID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSAmJiB2YWx1ZSA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOworI2lmIEVOQUJMRShTQVRVUkFURURf
TEFZT1VUX0FSSVRITUVUSUMpCisgICAgICAgIG1fdmFsdWUgPSBjbGFtcFRvKHZhbHVlLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpKTsKKyNlbHNlCiAgICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIExheW91dFVuaXQgYWJzKCkgY29uc3QKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzc2
MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDEyLTEyLTEzICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBD
bGFtcCB2YWx1ZXMgaW4gTGF5b3V0VW5pdDo6c2V0UmF3VmFsdWUgd2hlbiBTQVRVUkFURURfTEFZ
T1VUX0FSSVRITUVUSUMgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBMYXlvdXRVbml0LgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0Zv
cndhcmRpbmdIZWFkZXJzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0ZvcndhcmRp
bmdIZWFkZXJzL1dlYkNvcmU6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRm9yd2Fy
ZGluZ0hlYWRlcnMvV2ViQ29yZS9MYXlvdXRVbml0Lmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXAvVGVzdFdlYktpdEFQSS5neXA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cGk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2o6CisKIDIwMTItMTItMTMg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCAtLXByb2ZpbGVy
PVBST0ZJTEVSIG9wdGlvbiB0byBydW4tcGVyZi10ZXN0cyB0byBhbGxvdyBzcGVjaWZ5aW5nIHdo
aWNoIHByb2ZpbGVyIHRvIHVzZSBvbiBwbGF0Zm9ybXMgd2l0aCBtYW55CkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNzc2MCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsNyBAQCBh
ZGRfZXhlY3V0YWJsZSh0ZXN0X3dlYmNvcmUKICAgICAke3Rlc3RfbWFpbl9TT1VSQ0VTfQogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0tVUkwuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcAogKQogCiB0YXJnZXRfbGlua19saWJyYXJp
ZXModGVzdF93ZWJjb3JlICR7dGVzdF93ZWJjb3JlX0xJQlJBUklFU30pCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQkocmV2aXNpb24gMTM3NzYwKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKIHsKICAgICAndmFyaWFibGVzJzogewogICAgICAgICAnVGVzdFdlYktpdEFQSV9m
aWxlcyc6IFsKKyAgICAgICAgICAgICdUZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwJywKICAg
ICAgICAgICAgICdUZXN0cy9XVEYvQXRvbWljU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAnVGVz
dHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAnLAogICAgICAgICAgICAgJ1Rl
c3RzL1dURi9DU3RyaW5nLmNwcCcsCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRp
bmdIZWFkZXJzL1dlYkNvcmUvS1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvRm9yd2FyZGluZ0hlYWRlcnMvV2ViQ29yZS9LVVJMLmgJKHJldmlzaW9uIDApCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL1dlYkNvcmUvS1VSTC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgVGVzdFdlYktpdEFQSV9GV0RfS1VSTF9oCisj
ZGVmaW5lIFRlc3RXZWJLaXRBUElfRldEX0tVUkxfaAorI2luY2x1ZGUgPEtVUkwuaD4KKyNlbmRp
ZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy9XZWJDb3JlL0xh
eW91dFVuaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdI
ZWFkZXJzL1dlYkNvcmUvTGF5b3V0VW5pdC5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy9XZWJDb3JlL0xheW91dFVuaXQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFRlc3RXZWJLaXRBUElfRldEX0xheW91dFVuaXRf
aAorI2RlZmluZSBUZXN0V2ViS2l0QVBJX0ZXRF9MYXlvdXRVbml0X2gKKyNpbmNsdWRlIDxMYXlv
dXRVbml0Lmg+CisjZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS5neXAvVGVzdFdlYktpdEFQSS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLmd5cC9UZXN0V2ViS2l0QVBJLmd5cAkocmV2aXNpb24gMTM3NzYwKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLmd5cC9UZXN0V2ViS2l0QVBJLmd5
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogICAgICAgICAgICAgJ3RhcmdldF9u
YW1lJzogJ1Rlc3RXZWJLaXRBUEknLAogICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScs
CiAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAgICAgICAgICc8KHNvdXJj
ZV9kaXIpL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6d2ViY29yZScsCiAgICAgICAg
ICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0
JywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XVEYvV1RGLmd5cC9XVEYuZ3lwOnd0
ZicsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYnVpbGQvdGVtcF9neXAv
Z29vZ2xldXJsLmd5cDpnb29nbGV1cmwnLApAQCAtNjgsNiArNjksNyBAQAogICAgICAgICAgICAg
ICAgICMgTmVlZGVkIGJ5IHRlc3RzL1J1bkFsbFRlc3RzLmNwcCwgYXMgd2VsbCBhcyBDaHJvbWl1
bUN1cnJlbnRUaW1lLmNwcCBhbmQKICAgICAgICAgICAgICAgICAjIENocm9taXVtVGhyZWFkaW5n
LmNwcCBpbiBjaHJvbWl1bSBzaGFyZWQgbGlicmFyeSBjb25maWd1cmF0aW9uLgogICAgICAgICAg
ICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMnLAorICAgICAgICAg
ICAgICAgICc8KHRvb2xzX2RpcikvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycycsCiAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgJ3NvdXJjZXMnOiBbCiAgICAgICAgICAgICAgICAg
IyBSZXVzZSB0aGUgc2FtZSB0ZXN0aW5nIGRyaXZlciBvZiBDaHJvbWl1bSdzIHdlYmtpdF91bml0
X3Rlc3RzLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNzc2MCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBACiAJCTBGMTdCQkQ2MTVBRjZDNEQw
MDdBQjc1MyAvKiBXZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxN0JCRDQxNUFGNkM0RDAw
N0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgKi87IH07CiAJ
CTBGQzZDNENDMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNkM0Q0IxNDEwMjdFMDAwNUI3
RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAgKi87IH07CiAJCTBGQzZDNENGMTQxMDM0QUQwMDVCN0Yw
QyAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9yLmNw
cCAqLzsgfTsKKwkJMTQ0NjQwMTMxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0NjQwMTIxNjdB
ODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwICovOyB9OwogCQkxNEYzQjExMzE1RTQ1RUFC
MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGM0IxMTIxNUU0NUVBQjAwMjEw
MDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLzsgfTsKIAkJMUEwMkM4
NEYxMjVENEE4NDAwRTNGNEJEIC8qIEZpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMkM4NEUxMjVENEE4NDAwRTNGNEJEIC8qIEZpbmQuY3Bw
ICovOyB9OwogCQkxQTAyQzg3MDEyNUQ0Q0ZEMDBFM0Y0QkQgLyogZmluZC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDJDODRCMTI1
RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi87IH07CkBAIC0yNTksNiArMjYwLDcgQEAKIAkJ
MEYxN0JCRDQxNUFGNkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJv
Y2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlU3Rh
dGlzdGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlZEJsYWNrVHJlZS5jcHA7IHBhdGggPSBXVEYv
UmVkQmxhY2tUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNkM0Q0Ux
NDEwMzRBRDAwNUI3RjBDIC8qIE1ldGFBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTWV0YUFsbG9jYXRvci5jcHA7IHBhdGggPSBXVEYvTWV0YUFsbG9j
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NDY0MDEyMTY3QTgzMDUw
MDBCRDIxOCAvKiBMYXlvdXRVbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExheW91dFVuaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEYz
QjExMjE1RTQ1RUFCMDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2F0dXJhdGVkQXJpdGhtZXRp
Y09wZXJhdGlvbnMuY3BwOyBwYXRoID0gV1RGL1NhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMkM4NEIxMjVENEE1RTAwRTNG
NEJEIC8qIGZpbmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGZpbmQuaHRtbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMkM4NEUxMjVENEE4NDAwRTNGNEJEIC8q
IEZpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzIsNiArNTM0LDcgQEAKIAkJNDQwQTFE
MzYxNEEwMTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRV
bml0LmNwcCAqLywKIAkJCQk0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IFdlYkNvcmU7CkBAIC0xMDMwLDYgKzEwMzMsNyBAQAogCQkJCUZF
MjE3RUNEMTY0MEE1NEEwMDUyOTg4QiAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyOUFCOEFBMTE2NEM3MzU4MDBENDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTI5QUI4QUE0MTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3Np
bmdDb250ZXh0TG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ0NjQwMTMxNjdB
ODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCShyZXZp
c2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjZGVmaW5lIEVOQUJMRV9TVUJQSVhF
TF9MQVlPVVQgMQorI2RlZmluZSBFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDIDEK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0VW5pdC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitURVNUKFdlYkNvcmUsIExheW91dFVuaXRJbnQpCit7CisgICAgQVNTRVJUX0VRKExheW91dFVu
aXQoSU5UX01JTikudG9JbnQoKSwgaW50TWluRm9yTGF5b3V0VW5pdCk7CisgICAgQVNTRVJUX0VR
KExheW91dFVuaXQoSU5UX01JTiAvIDIpLnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQpOwor
ICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1pbkZvckxheW91dFVuaXQgLSAxKS50b0ludCgp
LCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsgCisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWlu
Rm9yTGF5b3V0VW5pdCkudG9JbnQoKSwgaW50TWluRm9yTGF5b3V0VW5pdCk7CisgICAgQVNTRVJU
X0VRKExheW91dFVuaXQoaW50TWluRm9yTGF5b3V0VW5pdCArIDEpLnRvSW50KCksIGludE1pbkZv
ckxheW91dFVuaXQgKyAxKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlv
dXRVbml0IC8gMikudG9JbnQoKSwgaW50TWluRm9yTGF5b3V0VW5pdCAvIDIpOworICAgIEFTU0VS
VF9FUShMYXlvdXRVbml0KC0xMDAwMCkudG9JbnQoKSwgLTEwMDAwKTsKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgtMTAwMCkudG9JbnQoKSwgLTEwMDApOworICAgIEFTU0VSVF9FUShMYXlvdXRV
bml0KC0xMDApLnRvSW50KCksIC0xMDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xMCku
dG9JbnQoKSwgLTEwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMSkudG9JbnQoKSwgLTEp
OworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDApLnRvSW50KCksIDApOworICAgIEFTU0VSVF9F
UShMYXlvdXRVbml0KDEpLnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEw
MCkudG9JbnQoKSwgMTAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxMDAwKS50b0ludCgp
LCAxMDAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxMDAwMCkudG9JbnQoKSwgMTAwMDAp
OworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQgLyAyKS50b0lu
dCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0IC8gMik7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQo
aW50TWF4Rm9yTGF5b3V0VW5pdCAtIDEpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQgLSAx
KTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0KS50b0ludCgp
LCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNYXhG
b3JMYXlvdXRVbml0ICsgMSkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7CisgICAgQVNT
RVJUX0VRKExheW91dFVuaXQoSU5UX01BWCAvIDIpLnRvSW50KCksIGludE1heEZvckxheW91dFVu
aXQpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KElOVF9NQVgpLnRvSW50KCksIGludE1heEZv
ckxheW91dFVuaXQpOworfQorCitURVNUKFdlYkNvcmUsIExheW91dFVuaXRGbG9hdCkKK3sKKyAg
ICBjb25zdCBmbG9hdCB0b2xlcmFuY2UgPSAxLjBmIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsK
KyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMGYpLnRvRmxvYXQoKSwgMS4wZiwgdG9sZXJh
bmNlKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMWYpLnRvRmxvYXQoKSwgMS4xZiwg
dG9sZXJhbmNlKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMjVmKS50b0Zsb2F0KCks
IDEuMjVmLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMS4zM2YpLnRv
RmxvYXQoKSwgMS4zM2YsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgx
LjMzMzNmKS50b0Zsb2F0KCksIDEuMzMzM2YsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIo
TGF5b3V0VW5pdCgxLjUzNDM0ZikudG9GbG9hdCgpLCAxLjUzNDM0ZiwgdG9sZXJhbmNlKTsKKyAg
ICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDM0NTYzNCkudG9GbG9hdCgpLCAzNDU2MzQuMGYsIHRv
bGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgzNDU2MzQuMTIzMzVmKS50b0Zs
b2F0KCksIDM0NTYzNC4xMjMzNWYsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0
VW5pdCgtMzQ1NjM0LjEyMzM1ZikudG9GbG9hdCgpLCAtMzQ1NjM0LjEyMzM1ZiwgdG9sZXJhbmNl
KTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KC0zNDU2MzQpLnRvRmxvYXQoKSwgLTM0NTYz
NC4wZiwgdG9sZXJhbmNlKTsgICAgCit9CisKK1RFU1QoV2ViQ29yZSwgTGF5b3V0VW5pdFJvdW5k
aW5nKQoreworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xLjVmKS5yb3VuZCgpLCAtMik7Cisg
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEuNDlmKS5yb3VuZCgpLCAtMSk7CisgICAgQVNTRVJU
X0VRKExheW91dFVuaXQoLTEuMGYpLnJvdW5kKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0
VW5pdCgtMC45OWYpLnJvdW5kKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC41
MGYpLnJvdW5kKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC40OWYpLnJvdW5k
KCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0wLjFmKS5yb3VuZCgpLCAwKTsKKyAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwLjBmKS5yb3VuZCgpLCAwKTsKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgwLjFmKS5yb3VuZCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgw
LjQ5Zikucm91bmQoKSwgMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC41MGYpLnJvdW5k
KCksIDEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuOTlmKS5yb3VuZCgpLCAxKTsKKyAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxLjBmKS5yb3VuZCgpLCAxKTsKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgxLjQ5Zikucm91bmQoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQo
MS41Zikucm91bmQoKSwgMik7Cit9CisKK1RFU1QoV2ViQ29yZSwgTGF5b3V0VW5pdFNuYXBTaXpl
VG9QaXhlbCkKK3sKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVuaXQoMSks
IExheW91dFVuaXQoMCkpLCAxKTsKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91
dFVuaXQoMSksIExheW91dFVuaXQoMC41KSksIDEpOworICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRv
UGl4ZWwoTGF5b3V0VW5pdCgxLjUpLCBMYXlvdXRVbml0KDApKSwgMik7CisgICAgQVNTRVJUX0VR
KHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEuNSksIExheW91dFVuaXQoMC40OSkpLCAyKTsK
KyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExheW91dFVuaXQoMS41KSwgTGF5b3V0VW5p
dCgwLjUpKSwgMSk7CisgICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEu
NSksIExheW91dFVuaXQoMC43NSkpLCAxKTsKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVs
KExheW91dFVuaXQoMS41KSwgTGF5b3V0VW5pdCgwLjk5KSksIDEpOworICAgIEFTU0VSVF9FUShz
bmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCgxLjUpLCBMYXlvdXRVbml0KDEpKSwgMik7CisgICAg
CisgICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDAuNSksIExheW91dFVu
aXQoMS41KSksIDApOworICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCgw
Ljk5KSwgTGF5b3V0VW5pdCgxLjUpKSwgMCk7CisgICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhl
bChMYXlvdXRVbml0KDEuMCksIExheW91dFVuaXQoMS41KSksIDEpOworICAgIEFTU0VSVF9FUShz
bmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCgxLjQ5KSwgTGF5b3V0VW5pdCgxLjUpKSwgMSk7Cisg
ICAgQVNTRVJUX0VRKHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0KDEuNSksIExheW91dFVuaXQo
MS41KSksIDEpOworICAgIAorICAgIEFTU0VSVF9FUShzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5p
dCgxMDAuNSksIExheW91dFVuaXQoMTAwKSksIDEwMSk7CisgICAgQVNTRVJUX0VRKHNuYXBTaXpl
VG9QaXhlbChMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQpLCBMYXlvdXRVbml0KDAuMykp
LCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoc25hcFNpemVUb1BpeGVsKExh
eW91dFVuaXQoaW50TWluRm9yTGF5b3V0VW5pdCksIExheW91dFVuaXQoLTAuMykpLCBpbnRNaW5G
b3JMYXlvdXRVbml0KTsKK30KKworVEVTVChXZWJDb3JlLCBMYXlvdXRVbml0TXVsdGlwbGljYXRp
b24pCit7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEpICogTGF5b3V0VW5pdCgxKSkudG9J
bnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEpICogTGF5b3V0VW5pdCgyKSku
dG9JbnQoKSwgMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDIpICogTGF5b3V0VW5pdCgx
KSkudG9JbnQoKSwgMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDIpICogTGF5b3V0VW5p
dCgwLjUpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMC41KSAqIExh
eW91dFVuaXQoMikpLnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxMDAp
ICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgMTAwKTsKKyAgICAKKyAgICBBU1NFUlRfRVEoKExh
eW91dFVuaXQoLTEpICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTEpOworICAgIEFTU0VSVF9F
USgoTGF5b3V0VW5pdCgtMSkgKiBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAtMik7CisgICAgQVNT
RVJUX0VRKChMYXlvdXRVbml0KC0yKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIC0yKTsKKyAg
ICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpICogTGF5b3V0VW5pdCgwLjUpKS50b0ludCgpLCAt
MSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0wLjUpICogTGF5b3V0VW5pdCgyKSkudG9J
bnQoKSwgLTEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAqIExheW91dFVuaXQo
MSkpLnRvSW50KCksIC0xMDApOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkg
KiBMYXlvdXRVbml0KC0xKSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0
KC0xKSAqIExheW91dFVuaXQoLTIpKS50b0ludCgpLCAyKTsKKyAgICBBU1NFUlRfRVEoKExheW91
dFVuaXQoLTIpICogTGF5b3V0VW5pdCgtMSkpLnRvSW50KCksIDIpOworICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdCgtMikgKiBMYXlvdXRVbml0KC0wLjUpKS50b0ludCgpLCAxKTsKKyAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQoLTAuNSkgKiBMYXlvdXRVbml0KC0yKSkudG9JbnQoKSwgMSk7Cisg
ICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xMDApICogTGF5b3V0VW5pdCgtMSkpLnRvSW50KCks
IDEwMCk7CisgICAgCisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEwMCkgKiBMYXlvdXRVbml0
KDMuMzMpKS5yb3VuZCgpLCAzMzMpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAq
IExheW91dFVuaXQoMy4zMykpLnJvdW5kKCksIC0zMzMpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0
VW5pdCgtMTAwKSAqIExheW91dFVuaXQoLTMuMzMpKS5yb3VuZCgpLCAzMzMpOworICAgIAorICAg
IGludCBxdWFydGVyTWF4ID0gaW50TWF4Rm9yTGF5b3V0VW5pdCAvIDQ7CisgICAgQVNTRVJUX0VR
KChMYXlvdXRVbml0KHF1YXJ0ZXJNYXgpICogTGF5b3V0VW5pdCgyKSkudG9JbnQoKSwgcXVhcnRl
ck1heCAqIDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChxdWFydGVyTWF4KSAqIExheW91
dFVuaXQoMykpLnRvSW50KCksIHF1YXJ0ZXJNYXggKiAzKTsKKyAgICBBU1NFUlRfRVEoKExheW91
dFVuaXQocXVhcnRlck1heCkgKiBMYXlvdXRVbml0KDQpKS50b0ludCgpLCBxdWFydGVyTWF4ICog
NCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KHF1YXJ0ZXJNYXgpICogTGF5b3V0VW5pdCg1
KSkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7Cit9CisKK1RFU1QoV2ViQ29yZSwgTGF5
b3V0VW5pdERpdmlzaW9uKQoreworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91
dFVuaXQoMSkpLnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExh
eW91dFVuaXQoMikpLnRvSW50KCksIDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAv
IExheW91dFVuaXQoMSkpLnRvSW50KCksIDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgy
KSAvIExheW91dFVuaXQoMC41KSkudG9JbnQoKSwgNCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRV
bml0KDAuNSkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoKExh
eW91dFVuaXQoMTAwKSAvIExheW91dFVuaXQoMTApKS50b0ludCgpLCAxMCk7CisgICAgQVNTRVJU
X0ZMT0FUX0VRKChMYXlvdXRVbml0KDEpIC8gTGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAwLjVm
KTsKKyAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoMC41KSAvIExheW91dFVuaXQoMikp
LnRvRmxvYXQoKSwgMC4yNWYpOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkg
LyBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAtMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0
KC0xKSAvIExheW91dFVuaXQoMikpLnRvSW50KCksIDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0
VW5pdCgtMikgLyBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAtMik7CisgICAgQVNTRVJUX0VRKChM
YXlvdXRVbml0KC0yKSAvIExheW91dFVuaXQoMC41KSkudG9JbnQoKSwgLTQpOworICAgIEFTU0VS
VF9FUSgoTGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVuaXQoMikpLnRvSW50KCksIDApOworICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAvIExheW91dFVuaXQoMTApKS50b0ludCgpLCAt
MTApOworICAgIEFTU0VSVF9GTE9BVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KDIp
KS50b0Zsb2F0KCksIC0wLjVmKTsKKyAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoLTAu
NSkgLyBMYXlvdXRVbml0KDIpKS50b0Zsb2F0KCksIC0wLjI1Zik7CisgICAgCisgICAgQVNTRVJU
X0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91dFVuaXQoLTEpKS50b0ludCgpLCAxKTsKKyAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoLTEpIC8gTGF5b3V0VW5pdCgtMikpLnRvSW50KCksIDApOwor
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgLyBMYXlvdXRVbml0KC0xKSkudG9JbnQoKSwg
Mik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0yKSAvIExheW91dFVuaXQoLTAuNSkpLnRv
SW50KCksIDQpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVuaXQo
LTIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgLyBMYXlv
dXRVbml0KC0xMCkpLnRvSW50KCksIDEwKTsKKyAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVu
aXQoLTEpIC8gTGF5b3V0VW5pdCgtMikpLnRvRmxvYXQoKSwgMC41Zik7CisgICAgQVNTRVJUX0ZM
T0FUX0VRKChMYXlvdXRVbml0KC0wLjUpIC8gTGF5b3V0VW5pdCgtMikpLnRvRmxvYXQoKSwgMC4y
NWYpOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0
KSAvIExheW91dFVuaXQoMikpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQgLyAyKTsKKyAg
ICBBU1NFUlRfRVEoKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkgLyBMYXlvdXRVbml0
KDAuNSkpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQpOworfQorCisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJL
aXRBUEkudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RX
ZWJLaXRBUEkudmNwcm9qCShyZXZpc2lvbiAxMzc3NjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSwx
MCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJPC9GaWx0ZXI+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxUZXN0c1xXZWJDb3JlXExheW91dFVuaXQuY3BwIgorCQkJCQk+
CisJCQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0iV1RGIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>