<?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>142885</bug_id>
          
          <creation_ts>2015-03-19 17:21:31 -0700</creation_ts>
          <short_desc>FEMorphology::platformApplyGeneric() should bail out if the radius is less than or equal to zero.</short_desc>
          <delta_ts>2015-03-27 10:03:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078692</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-19 17:21:31 -0700</bug_when>
    <thetext>The caller of this function FEMorphology::platformApplySoftware() bails out early if the radius is less than or equal to zero. However when applying the scaling, the resulted radius might be less than zero due to overflow. This radius is passed to FEMorphology::platformApplyGeneric() via FEMorphology::platformApply() and the calculations are carried out needlessly.

We need to clean up this function a little to handle this corner case and to remove repeated code to inline functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078702</commentid>
    <comment_count>1</comment_count>
      <attachid>249073</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-19 18:05:20 -0700</bug_when>
    <thetext>Created attachment 249073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078703</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-19 18:06:39 -0700</bug_when>
    <thetext>Related to &lt;rdar://problem/20127673&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078762</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-19 23:05:49 -0700</bug_when>
    <thetext>This seems to cause several errors on Windows. If my bots start doing their job, you should see error information soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078873</commentid>
    <comment_count>4</comment_count>
      <attachid>249117</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-20 09:57:01 -0700</bug_when>
    <thetext>Created attachment 249117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078893</commentid>
    <comment_count>5</comment_count>
      <attachid>249122</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-20 10:54:09 -0700</bug_when>
    <thetext>Created attachment 249122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078942</commentid>
    <comment_count>6</comment_count>
      <attachid>249122</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-20 14:25:25 -0700</bug_when>
    <thetext>Comment on attachment 249122
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:86
&gt; +inline bool shouldSupersedeExtremum(unsigned char newValue, unsigned char currentValue, MorphologyOperatorType type)

Since these functions are in the .cpp file, they should say &quot;static&quot; so they get internal linkage.

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:92
&gt; +inline int pixelArrayIndex(int x, int y, int width, int colorChannel)

Since these functions are in the .cpp file, they should say &quot;static&quot; so they get internal linkage.

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:97
&gt; +inline unsigned char columnExtremum(const Uint8ClampedArray* srcPixelArray, int x, int yStart, int yEnd, int width, unsigned colorChannel, MorphologyOperatorType type)

Since these functions are in the .cpp file, they should say &quot;static&quot; so they get internal linkage.

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:108
&gt; +inline unsigned char kernelExtremum(const Vector&lt;unsigned char&gt;&amp; kernel, MorphologyOperatorType type)

Since these functions are in the .cpp file, they should say &quot;static&quot; so they get internal linkage.

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:110
&gt; +    unsigned char extremum = kernel[0];

Can this function be called on an empty vector?

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:113
&gt; +        if (shouldSupersedeExtremum(value, extremum, type))
&gt; +            extremum = value;

This does extra work for the first character of the kernel. Can we change the code so it doesn’t do this? Maybe we have to forgo the new-style for loop to do that.

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:143
&gt; +                unsigned char extremum = columnExtremum(srcPixelArray, x, yStartExtrema, yEndExtrema, width, colorChannel, m_type);
&gt; +                extrema.append(extremum);

I don’t think we should bother with the local variable here.

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:154
&gt; +                    unsigned char extremum = columnExtremum(srcPixelArray, xEnd, yStartExtrema, yEndExtrema + 1, width, colorChannel, m_type);
&gt; +                    extrema.append(extremum);

I don’t think we should bother with the local variable here.

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:158
&gt; +                unsigned char extremum = kernelExtremum(extrema, m_type);
&gt; +                dstPixelArray-&gt;set(pixelArrayIndex(x, y, width, colorChannel), extremum);

I don’t think we should bother with the local variable here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079076</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-03-21 09:39:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/20127673&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079357</commentid>
    <comment_count>8</comment_count>
      <attachid>249254</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-23 13:17:41 -0700</bug_when>
    <thetext>Created attachment 249254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079364</commentid>
    <comment_count>9</comment_count>
      <attachid>249122</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-23 13:27:35 -0700</bug_when>
    <thetext>Comment on attachment 249122
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:86
&gt;&gt; +inline bool shouldSupersedeExtremum(unsigned char newValue, unsigned char currentValue, MorphologyOperatorType type)
&gt; 
&gt; Since these functions are in the .cpp file, they should say &quot;static&quot; so they get internal linkage.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:92
&gt;&gt; +inline int pixelArrayIndex(int x, int y, int width, int colorChannel)
&gt; 
&gt; Since these functions are in the .cpp file, they should say &quot;static&quot; so they get internal linkage.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:97
&gt;&gt; +inline unsigned char columnExtremum(const Uint8ClampedArray* srcPixelArray, int x, int yStart, int yEnd, int width, unsigned colorChannel, MorphologyOperatorType type)
&gt; 
&gt; Since these functions are in the .cpp file, they should say &quot;static&quot; so they get internal linkage.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:108
&gt;&gt; +inline unsigned char kernelExtremum(const Vector&lt;unsigned char&gt;&amp; kernel, MorphologyOperatorType type)
&gt; 
&gt; Since these functions are in the .cpp file, they should say &quot;static&quot; so they get internal linkage.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:110
&gt;&gt; +    unsigned char extremum = kernel[0];
&gt; 
&gt; Can this function be called on an empty vector?

No.

Although I changed the code a little since the filter was not giving symmetric results, both the old and new code should never hit this case. In the new patch:
1. The initial kernel size = radiusX
2. In the same loop we call kernelExtremum() we add new pixel values = width - radiusX
3. And we only remove number of pixels = width - radiusX - 1
4. And since the additions starts before the removal we are sure that the size of the kernel should be &gt;= radiusX + 1

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:113
&gt;&gt; +            extremum = value;
&gt; 
&gt; This does extra work for the first character of the kernel. Can we change the code so it doesn’t do this? Maybe we have to forgo the new-style for loop to do that.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:143
&gt;&gt; +                extrema.append(extremum);
&gt; 
&gt; I don’t think we should bother with the local variable here.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:154
&gt;&gt; +                    extrema.append(extremum);
&gt; 
&gt; I don’t think we should bother with the local variable here.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:158
&gt;&gt; +                dstPixelArray-&gt;set(pixelArrayIndex(x, y, width, colorChannel), extremum);
&gt; 
&gt; I don’t think we should bother with the local variable here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079377</commentid>
    <comment_count>10</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-23 13:41:13 -0700</bug_when>
    <thetext>1. I found an issue with the original code. If the radius is zero, the original code was treating this case as an error and hence the source of the filter was not even displayed. In this case the filter should just be ignored as if it did not exist.

2. I found another issue with building the kernel of the filter. Its size was equal to radiusX + 1. This resulted in asymmetric filter effect in some simple cases (see the attached test case and compare the left border of the rectangle with Chrome). The initial size should be equal to radiusX. While adding to it and removing from it, its size should be not less than radiusX + 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079380</commentid>
    <comment_count>11</comment_count>
      <attachid>249259</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-23 13:42:36 -0700</bug_when>
    <thetext>Created attachment 249259
asymmetric test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079391</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-23 13:49:52 -0700</bug_when>
    <thetext>I found another issue with the previous patch. When scaling the radius, the result might be equal to zero and this case I was treating this as an error. I was calling dstPixelArray-&gt;zeroFill() which was preventing the source of the filter to even be displayed. We should be consistent when dealing with the radius and the scaled radius. 

1. If the radius (or the scaled radius) is less than zero =&gt; treat this is an error.
2. If the radius (or the scaled radius) is equal to zero =&gt; ignore the filter.

Please notice that:

1. The radius can &gt; 0 and scaled_radius = 0 because it is scaled down and the result is less than 1. So the integer casting returns 0.

2. The radius can &gt; 0 and scaled_radius &lt; 0 because an overflow happens when scaling up the radius.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079398</commentid>
    <comment_count>13</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-23 13:53:05 -0700</bug_when>
    <thetext>I did not find a test case to discover the bug I introduced in my previous patch. So I added a new test case to handle the three cases of the radius and make sure our handling is compliant with the specs.

Since I did a lot of changes beyond the scope of fixing Darin&apos;s comments and since I added a new test case, I am submitting the new patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079439</commentid>
    <comment_count>14</comment_count>
      <attachid>249277</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-23 14:49:37 -0700</bug_when>
    <thetext>Created attachment 249277
zero radius test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080376</commentid>
    <comment_count>15</comment_count>
      <attachid>249254</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-03-26 12:15:28 -0700</bug_when>
    <thetext>Comment on attachment 249254
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:112
&gt; +    Vector&lt;unsigned char&gt;::const_iterator iter = kernel.begin();
&gt; +    unsigned char extremum = *iter;
&gt; +    for (Vector&lt;unsigned char&gt;::const_iterator end = kernel.end(); ++iter != end; ) {

We can&apos;t use a new-style for loop here?

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:198
&gt; +    // input radius is less than zero or an overflow happens when scaling it

Nit/Typo/Whatever :)  - start with a capital letter and end with a full stop.

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:204
&gt; +    // input radius is equal to zero or the scaled radius is less than one.

Same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080480</commentid>
    <comment_count>16</comment_count>
      <attachid>249539</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-26 16:29:21 -0700</bug_when>
    <thetext>Created attachment 249539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080483</commentid>
    <comment_count>17</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-26 16:33:38 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 249254 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249254&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:112
&gt; &gt; +    Vector&lt;unsigned char&gt;::const_iterator iter = kernel.begin();
&gt; &gt; +    unsigned char extremum = *iter;
&gt; &gt; +    for (Vector&lt;unsigned char&gt;::const_iterator end = kernel.end(); ++iter != end; ) {
&gt; 
&gt; We can&apos;t use a new-style for loop here?
&gt; 

I did use the new-style for loop here in the previous patch but Darin&apos;s did not like we had to do extra work for the first element. So I had to forgo the new-style for loop to do that.

&gt; &gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:198
&gt; &gt; +    // input radius is less than zero or an overflow happens when scaling it
&gt; 
&gt; Nit/Typo/Whatever :)  - start with a capital letter and end with a full stop.
&gt; 

Done.

&gt; &gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:204
&gt; &gt; +    // input radius is equal to zero or the scaled radius is less than one.
&gt; 
&gt; Same.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080628</commentid>
    <comment_count>18</comment_count>
      <attachid>249539</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-27 10:03:30 -0700</bug_when>
    <thetext>Comment on attachment 249539
Patch

Clearing flags on attachment: 249539

Committed r182067: &lt;http://trac.webkit.org/changeset/182067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080629</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-27 10:03:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249073</attachid>
            <date>2015-03-19 18:05:20 -0700</date>
            <delta_ts>2015-03-20 09:56:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142885-20150319180448.patch</filename>
            <type>text/plain</type>
            <size>8565</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTAzLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRkVNb3JwaG9s
b2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYygpIHNob3VsZCBiYWlsIG91dCBpZiB0aGUgcmFkaXVz
IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODg1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvZGUgY2xlYW4gdXAgZm9yIEZFTW9ycGhvbG9neS4K
KyAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTmV3Q29sdW1uRXh0cmVtdW0pOiBSZXVzZSBjb2Rl
IGluc3RlYWQgb2YgcmVwZWF0aW5nIGl0IGFuZAorICAgICAgICB1c2UgPCBhbmQgPi4KKyAgICAg
ICAgKFdlYkNvcmU6OmNvbHVtbkV4dHJlbXVtKTogUmV0dXJucyB0aGUgZXh0cmVtdW0gb2YgYSBj
b2x1bW4gb2YgcGl4ZWxzLgorICAgICAgICAoV2ViQ29yZTo6a2VybmVsRXh0cmVtdW0pOiBSZXR1
cm5zIHRoZSBleHRyZW11bSBvZiBhIGZpbHRlciBrZXJuZWwuCisgICAgICAgIChXZWJDb3JlOjpG
RU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKTogQXBwbHkgc29tZSBjbGVhbiB1cCBh
bmQKKyAgICAgICAgYmFpbCBvdXQgZWFybHkgaWYgdGhlIHJhZGl1cyBpcyBsZXNzIHRoYW4gb3Ig
ZXF1YWwgdG8gemVyby4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9y
cGhvbG9neS5oOiBNb3ZlIHNpbmdsZSBsaW5lIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgdGhl
IGhlYWRlciBmaWxlLgorCiAyMDE1LTAzLTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXSzJdW01hY10gRnVsbHNjcmVlbiBhbmltYXRpb25zIHdpdGggbWlz
bWF0Y2hlZCBhc3BlY3QgcmF0aW9zIGFyZSAic3F1aXNoZWQiLgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
LmNwcAkocmV2aXNpb24gMTgxNzQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYs
NiBAQCBSZWY8RkVNb3JwaG9sb2d5PiBGRU1vcnBob2xvZ3k6OmNyZWF0ZShGCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRkVNb3JwaG9sb2d5KGZpbHRlciwgdHlwZSwgcmFkaXVzWCwgcmFkaXVz
WSkpOwogfQogCi1Nb3JwaG9sb2d5T3BlcmF0b3JUeXBlIEZFTW9ycGhvbG9neTo6bW9ycGhvbG9n
eU9wZXJhdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90eXBlOwotfQotCiBib29sIEZFTW9y
cGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlw
ZSkKIHsKICAgICBpZiAobV90eXBlID09IHR5cGUpCkBAIC01OSwxMSArNTQsNiBAQCBib29sIEZF
TW9ycGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWZsb2F0IEZFTW9ycGhvbG9neTo6cmFkaXVzWCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmFk
aXVzWDsKLX0KLQogYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1goZmxvYXQgcmFkaXVzWCkK
IHsKICAgICBpZiAobV9yYWRpdXNYID09IHJhZGl1c1gpCkBAIC03Miw5ICs2MiwxMiBAQCBib29s
IEZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWChmbG9hdCByYWRpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWZsb2F0IEZFTW9ycGhvbG9neTo6cmFkaXVzWSgpIGNvbnN0Citib29sIEZFTW9ycGhvbG9n
eTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogewotICAgIHJldHVybiBtX3JhZGl1c1k7Cisg
ICAgaWYgKG1fcmFkaXVzWSA9PSByYWRpdXNZKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
bV9yYWRpdXNZID0gcmFkaXVzWTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBGRU1vcnBo
b2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKQEAgLTkwLDY2ICs4Myw3NSBAQCB2
b2lkIEZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWluCiAgICAgc2V0QWJzb2x1dGVQ
YWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKIH0KIAotYm9vbCBGRU1vcnBo
b2xvZ3k6OnNldFJhZGl1c1koZmxvYXQgcmFkaXVzWSkKK2lubGluZSBib29sIGlzTmV3Q29sdW1u
RXh0cmVtdW0odW5zaWduZWQgY2hhciBuZXdWYWx1ZSwgdW5zaWduZWQgY2hhciBjdXJyZW50VmFs
dWUsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkKIHsKLSAgICBpZiAobV9yYWRpdXNZID09
IHJhZGl1c1kpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3JhZGl1c1kgPSByYWRpdXNZ
OwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAodHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BF
UkFUT1JfRVJPREUgJiYgbmV3VmFsdWUgPCBjdXJyZW50VmFsdWUpCisgICAgICAgIHx8ICh0eXBl
ID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgJiYgbmV3VmFsdWUgPiBjdXJyZW50VmFs
dWUpOworfQorCitpbmxpbmUgdW5zaWduZWQgY2hhciBjb2x1bW5FeHRyZW11bShjb25zdCBVaW50
OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgaW50IHgsIGludCB5U3RhcnQsIGludCB5RW5k
LCBpbnQgZWZmZWN0V2lkdGgsIHVuc2lnbmVkIGNvbG9yQ2hhbm5lbCwgTW9ycGhvbG9neU9wZXJh
dG9yVHlwZSB0eXBlKQoreworICAgIHVuc2lnbmVkIGNoYXIgZXh0cmVtdW0gPSBzcmNQaXhlbEFy
cmF5LT5pdGVtKHlTdGFydCAqIGVmZmVjdFdpZHRoICsgY29sb3JDaGFubmVsICsgeCAqIDQpOwor
ICAgIGZvciAoaW50IHkgPSB5U3RhcnQgKyAxOyB5IDwgeUVuZDsgKyt5KSB7CisgICAgICAgIHVu
c2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKHkgKiBlZmZlY3RXaWR0aCAr
IGNvbG9yQ2hhbm5lbCArIHggKiA0KTsKKyAgICAgICAgaWYgKGlzTmV3Q29sdW1uRXh0cmVtdW0o
cGl4ZWwsIGV4dHJlbXVtLCB0eXBlKSkKKyAgICAgICAgICAgIGV4dHJlbXVtID0gcGl4ZWw7Cisg
ICAgfQorICAgIHJldHVybiBleHRyZW11bTsKK30KKworaW5saW5lIHVuc2lnbmVkIGNoYXIga2Vy
bmVsRXh0cmVtdW0oY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBleHRyZW1hLCBNb3JwaG9s
b2d5T3BlcmF0b3JUeXBlIHR5cGUpCit7CisgICAgdW5zaWduZWQgY2hhciBleHRyZW11bSA9IGV4
dHJlbWFbMF07CisgICAgZm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6IGV4dHJlbWEpIHsKKyAgICAg
ICAgaWYgKGlzTmV3Q29sdW1uRXh0cmVtdW0odmFsdWUsIGV4dHJlbXVtLCB0eXBlKSkKKyAgICAg
ICAgICAgIGV4dHJlbXVtID0gdmFsdWU7CisgICAgfQorICAgIHJldHVybiBleHRyZW11bTsKIH0K
IAogdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKFBhaW50aW5nRGF0YSog
cGFpbnRpbmdEYXRhLCBpbnQgeVN0YXJ0LCBpbnQgeUVuZCkKIHsKICAgICBVaW50OENsYW1wZWRB
cnJheSogc3JjUGl4ZWxBcnJheSA9IHBhaW50aW5nRGF0YS0+c3JjUGl4ZWxBcnJheTsKICAgICBV
aW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IHBhaW50aW5nRGF0YS0+ZHN0UGl4ZWxB
cnJheTsKLSAgICBjb25zdCBpbnQgd2lkdGggPSBwYWludGluZ0RhdGEtPndpZHRoOwotICAgIGNv
bnN0IGludCBoZWlnaHQgPSBwYWludGluZ0RhdGEtPmhlaWdodDsKLSAgICBjb25zdCBpbnQgZWZm
ZWN0V2lkdGggPSB3aWR0aCAqIDQ7CiAgICAgY29uc3QgaW50IHJhZGl1c1ggPSBwYWludGluZ0Rh
dGEtPnJhZGl1c1g7CiAgICAgY29uc3QgaW50IHJhZGl1c1kgPSBwYWludGluZ0RhdGEtPnJhZGl1
c1k7CiAKKyAgICBpZiAocmFkaXVzWCA8PSAwIHx8IHJhZGl1c1kgPD0gMCkgeworICAgICAgICBk
c3RQaXhlbEFycmF5LT56ZXJvRmlsbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y29uc3QgaW50IHdpZHRoID0gcGFpbnRpbmdEYXRhLT53aWR0aDsKKyAgICBjb25zdCBpbnQgaGVp
Z2h0ID0gcGFpbnRpbmdEYXRhLT5oZWlnaHQ7CisgICAgY29uc3QgaW50IGVmZmVjdFdpZHRoID0g
d2lkdGggKiA0OwogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBleHRyZW1hOworCiAgICAgZm9y
IChpbnQgeSA9IHlTdGFydDsgeSA8IHlFbmQ7ICsreSkgewogICAgICAgICBpbnQgZXh0cmVtYVN0
YXJ0WSA9IHN0ZDo6bWF4KDAsIHkgLSByYWRpdXNZKTsKICAgICAgICAgaW50IGV4dHJlbWFFbmRZ
ID0gc3RkOjptaW4oaGVpZ2h0IC0gMSwgeSArIHJhZGl1c1kpOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBjbHJDaGFubmVsID0gMDsgY2xyQ2hhbm5lbCA8IDQ7ICsrY2xyQ2hhbm5lbCkgewor
CisgICAgICAgIGZvciAodW5zaWduZWQgY29sb3JDaGFubmVsID0gMDsgY29sb3JDaGFubmVsIDwg
NDsgKytjb2xvckNoYW5uZWwpIHsKICAgICAgICAgICAgIGV4dHJlbWEuY2xlYXIoKTsKICAgICAg
ICAgICAgIC8vIENvbXB1dGUgZXh0cmVtYXMgZm9yIGVhY2ggY29sdW1ucwogICAgICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPD0gcmFkaXVzWDsgKyt4KSB7Ci0gICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBjb2x1bW5FeHRyZW1hID0gc3JjUGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3Rh
cnRZICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNsckNoYW5uZWwpOwotICAgICAgICAgICAgICAg
IGZvciAoaW50IGVZID0gZXh0cmVtYVN0YXJ0WSArIDE7IGVZIDwgZXh0cmVtYUVuZFk7ICsrZVkp
IHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBwaXhlbCA9IHNyY1BpeGVsQXJy
YXktPml0ZW0oZVkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hhbm5lbCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICgobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAm
JiBwaXhlbCA8PSBjb2x1bW5FeHRyZW1hKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1f
dHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFICYmIHBpeGVsID49IGNvbHVtbkV4
dHJlbWEpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5FeHRyZW1hID0gcGl4ZWw7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBjb2x1bW5FeHRyZW11bShzcmNQaXhl
bEFycmF5LCB4LCBleHRyZW1hU3RhcnRZLCBleHRyZW1hRW5kWSwgZWZmZWN0V2lkdGgsIGNvbG9y
Q2hhbm5lbCwgbV90eXBlKTsKICAgICAgICAgICAgICAgICBleHRyZW1hLmFwcGVuZChjb2x1bW5F
eHRyZW1hKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gS2VybmVsIGlzIGZpbGxl
ZCwgZ2V0IGV4dHJlbWEgb2YgbmV4dCBjb2x1bW4KICAgICAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgd2lkdGg7ICsreCkgewogICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gc3Rk
OjptaW4oeCArIHJhZGl1c1gsIHdpZHRoIC0gMSk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBjb2x1bW5FeHRyZW1hID0gc3JjUGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3RhcnRZICog
ZWZmZWN0V2lkdGggKyBlbmRYICogNCArIGNsckNoYW5uZWwpOwotICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSBleHRyZW1hU3RhcnRZICsgMTsgaSA8PSBleHRyZW1hRW5kWTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5p
dGVtKGkgKiBlZmZlY3RXaWR0aCArIGVuZFggKiA0ICsgY2xyQ2hhbm5lbCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICgobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAmJiBw
aXhlbCA8PSBjb2x1bW5FeHRyZW1hKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fdHlw
ZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFICYmIHBpeGVsID49IGNvbHVtbkV4dHJl
bWEpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uRXh0cmVtYSA9IHBpeGVsOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoeCAtIHJhZGl1c1ggPj0gMCkKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBjb2x1bW5FeHRyZW11
bShzcmNQaXhlbEFycmF5LCBlbmRYLCBleHRyZW1hU3RhcnRZLCBleHRyZW1hRW5kWSArIDEsIGVm
ZmVjdFdpZHRoLCBjb2xvckNoYW5uZWwsIG1fdHlwZSk7CisKKyAgICAgICAgICAgICAgICBpZiAo
eCA+PSByYWRpdXNYKQogICAgICAgICAgICAgICAgICAgICBleHRyZW1hLnJlbW92ZSgwKTsKKwog
ICAgICAgICAgICAgICAgIGlmICh4ICsgcmFkaXVzWCA8PSB3aWR0aCkKICAgICAgICAgICAgICAg
ICAgICAgZXh0cmVtYS5hcHBlbmQoY29sdW1uRXh0cmVtYSk7CiAKLSAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIGVudGlyZUV4dHJlbWEgPSBleHRyZW1hWzBdOwotICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQga2VybmVsSW5kZXggPSAxOyBrZXJuZWxJbmRleCA8IGV4dHJlbWEuc2l6
ZSgpOyArK2tlcm5lbEluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgobV90eXBlID09
IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAmJiBleHRyZW1hW2tlcm5lbEluZGV4XSA8PSBl
bnRpcmVFeHRyZW1hKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fdHlwZSA9PSBGRU1P
UlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFICYmIGV4dHJlbWFba2VybmVsSW5kZXhdID49IGVudGly
ZUV4dHJlbWEpKQotICAgICAgICAgICAgICAgICAgICAgICAgZW50aXJlRXh0cmVtYSA9IGV4dHJl
bWFba2VybmVsSW5kZXhdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkc3RQ
aXhlbEFycmF5LT5zZXQoeSAqIGVmZmVjdFdpZHRoICsgNCAqIHggKyBjbHJDaGFubmVsLCBlbnRp
cmVFeHRyZW1hKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGVudGlyZUV4dHJlbWEg
PSBrZXJuZWxFeHRyZW11bShleHRyZW1hLCBtX3R5cGUpOworICAgICAgICAgICAgICAgIGRzdFBp
eGVsQXJyYXktPnNldCh5ICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNvbG9yQ2hhbm5lbCwgZW50
aXJlRXh0cmVtYSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5LmgJKHJldmlzaW9uIDE4MTc0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICsz
NiwxNCBAQCBlbnVtIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgewogY2xhc3MgRkVNb3JwaG9sb2d5
IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGRU1vcnBo
b2xvZ3k+IGNyZWF0ZShGaWx0ZXIqLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRp
dXNYLCBmbG9hdCByYWRpdXNZKTsKLSAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIG1vcnBob2xv
Z3lPcGVyYXRvcigpIGNvbnN0OworCisgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtb3JwaG9s
b2d5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29sIHNldE1vcnBo
b2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKIAotICAgIGZsb2F0IHJhZGl1
c1goKSBjb25zdDsKKyAgICBmbG9hdCByYWRpdXNYKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNY
OyB9CiAgICAgYm9vbCBzZXRSYWRpdXNYKGZsb2F0KTsKIAotICAgIGZsb2F0IHJhZGl1c1koKSBj
b25zdDsKKyAgICBmbG9hdCByYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNZOyB9CiAg
ICAgYm9vbCBzZXRSYWRpdXNZKGZsb2F0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249117</attachid>
            <date>2015-03-20 09:57:01 -0700</date>
            <delta_ts>2015-03-20 10:54:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142885-20150320095628.patch</filename>
            <type>text/plain</type>
            <size>8679</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTAzLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRkVNb3JwaG9s
b2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYygpIHNob3VsZCBiYWlsIG91dCBpZiB0aGUgcmFkaXVz
IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODg1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvZGUgY2xlYW4gdXAgZm9yIEZFTW9ycGhvbG9neS4K
KyAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTmV3Q29sdW1uRXh0cmVtdW0pOiBSZXVzZSBjb2Rl
IGluc3RlYWQgb2YgcmVwZWF0aW5nIGl0IGFuZAorICAgICAgICB1c2UgPCBhbmQgPiBpbnN0ZWFk
IG9mID08IGFuZCA+PS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbHVtbkV4dHJlbXVtKTogUmV0dXJu
cyB0aGUgZXh0cmVtdW0gb2YgYSBjb2x1bW4gb2YgcGl4ZWxzLgorICAgICAgICAoV2ViQ29yZTo6
a2VybmVsRXh0cmVtdW0pOiBSZXR1cm5zIHRoZSBleHRyZW11bSBvZiBhIGZpbHRlciBrZXJuZWwu
CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKTog
QXBwbHkgc29tZSBjbGVhbiB1cCBhbmQKKyAgICAgICAgYmFpbCBvdXQgZWFybHkgaWYgdGhlIHJh
ZGl1cyBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVyby4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oOiBNb3ZlIHNpbmdsZSBsaW5lIGZ1bmN0aW9u
cworICAgICAgICB0byB0aGUgdGhlIGhlYWRlciBmaWxlLgorCiAyMDE1LTAzLTE5ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW01hY10gRnVsbHNjcmVl
biBhbmltYXRpb25zIHdpdGggbWlzbWF0Y2hlZCBhc3BlY3QgcmF0aW9zIGFyZSAic3F1aXNoZWQi
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gMTgxNzQ2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxMSArNDYsNiBAQCBSZWY8RkVNb3JwaG9sb2d5PiBGRU1vcnBob2xvZ3k6
OmNyZWF0ZShGCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVNb3JwaG9sb2d5KGZpbHRlciwg
dHlwZSwgcmFkaXVzWCwgcmFkaXVzWSkpOwogfQogCi1Nb3JwaG9sb2d5T3BlcmF0b3JUeXBlIEZF
TW9ycGhvbG9neTo6bW9ycGhvbG9neU9wZXJhdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90
eXBlOwotfQotCiBib29sIEZFTW9ycGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBo
b2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkKIHsKICAgICBpZiAobV90eXBlID09IHR5cGUpCkBAIC01
OSwxMSArNTQsNiBAQCBib29sIEZFTW9ycGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWZsb2F0IEZFTW9ycGhvbG9neTo6cmFkaXVzWCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcmFkaXVzWDsKLX0KLQogYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJh
ZGl1c1goZmxvYXQgcmFkaXVzWCkKIHsKICAgICBpZiAobV9yYWRpdXNYID09IHJhZGl1c1gpCkBA
IC03Miw5ICs2MiwxMiBAQCBib29sIEZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWChmbG9hdCByYWRp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWZsb2F0IEZFTW9ycGhvbG9neTo6cmFkaXVzWSgpIGNv
bnN0Citib29sIEZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogewotICAg
IHJldHVybiBtX3JhZGl1c1k7CisgICAgaWYgKG1fcmFkaXVzWSA9PSByYWRpdXNZKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgbV9yYWRpdXNZID0gcmFkaXVzWTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkK
QEAgLTkwLDY2ICs4Myw3OSBAQCB2b2lkIEZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWluCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3Qp
KTsKIH0KIAotYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1koZmxvYXQgcmFkaXVzWSkKK2lu
bGluZSBib29sIHNob3VsZFN1cGVyc2VkZUV4dHJlbXVtKHVuc2lnbmVkIGNoYXIgbmV3VmFsdWUs
IHVuc2lnbmVkIGNoYXIgY3VycmVudFZhbHVlLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUp
CiB7Ci0gICAgaWYgKG1fcmFkaXVzWSA9PSByYWRpdXNZKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgbV9yYWRpdXNZID0gcmFkaXVzWTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
KHR5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFICYmIG5ld1ZhbHVlIDwgY3VycmVu
dFZhbHVlKQorICAgICAgICB8fCAodHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRF
ICYmIG5ld1ZhbHVlID4gY3VycmVudFZhbHVlKTsKK30KKworaW5saW5lIGludCBwaXhlbEFycmF5
SW5kZXgoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBjb2xvckNoYW5uZWwpCit7CisgICAg
cmV0dXJuICh5ICogd2lkdGggKyB4KSAqIDQgKyBjb2xvckNoYW5uZWw7Cit9CisKK2lubGluZSB1
bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbXVtKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQ
aXhlbEFycmF5LCBpbnQgeCwgaW50IHlTdGFydCwgaW50IHlFbmQsIGludCB3aWR0aCwgdW5zaWdu
ZWQgY29sb3JDaGFubmVsLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUpCit7CisgICAgdW5z
aWduZWQgY2hhciBleHRyZW11bSA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxBcnJheUluZGV4
KHgsIHlTdGFydCwgd2lkdGgsIGNvbG9yQ2hhbm5lbCkpOworICAgIGZvciAoaW50IHkgPSB5U3Rh
cnQgKyAxOyB5IDwgeUVuZDsgKyt5KSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBz
cmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsQXJyYXlJbmRleCh4LCB5LCB3aWR0aCwgY29sb3JDaGFu
bmVsKSk7CisgICAgICAgIGlmIChzaG91bGRTdXBlcnNlZGVFeHRyZW11bShwaXhlbCwgZXh0cmVt
dW0sIHR5cGUpKQorICAgICAgICAgICAgZXh0cmVtdW0gPSBwaXhlbDsKKyAgICB9CisgICAgcmV0
dXJuIGV4dHJlbXVtOworfQorCitpbmxpbmUgdW5zaWduZWQgY2hhciBrZXJuZWxFeHRyZW11bShj
b25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGV4dHJlbWEsIE1vcnBob2xvZ3lPcGVyYXRvclR5
cGUgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGV4dHJlbXVtID0gZXh0cmVtYVswXTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDogZXh0cmVtYSkgeworICAgICAgICBpZiAoc2hvdWxk
U3VwZXJzZWRlRXh0cmVtdW0odmFsdWUsIGV4dHJlbXVtLCB0eXBlKSkKKyAgICAgICAgICAgIGV4
dHJlbXVtID0gdmFsdWU7CisgICAgfQorICAgIHJldHVybiBleHRyZW11bTsKIH0KIAogdm9pZCBG
RU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKFBhaW50aW5nRGF0YSogcGFpbnRpbmdE
YXRhLCBpbnQgeVN0YXJ0LCBpbnQgeUVuZCkKIHsKICAgICBVaW50OENsYW1wZWRBcnJheSogc3Jj
UGl4ZWxBcnJheSA9IHBhaW50aW5nRGF0YS0+c3JjUGl4ZWxBcnJheTsKICAgICBVaW50OENsYW1w
ZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IHBhaW50aW5nRGF0YS0+ZHN0UGl4ZWxBcnJheTsKLSAg
ICBjb25zdCBpbnQgd2lkdGggPSBwYWludGluZ0RhdGEtPndpZHRoOwotICAgIGNvbnN0IGludCBo
ZWlnaHQgPSBwYWludGluZ0RhdGEtPmhlaWdodDsKLSAgICBjb25zdCBpbnQgZWZmZWN0V2lkdGgg
PSB3aWR0aCAqIDQ7CiAgICAgY29uc3QgaW50IHJhZGl1c1ggPSBwYWludGluZ0RhdGEtPnJhZGl1
c1g7CiAgICAgY29uc3QgaW50IHJhZGl1c1kgPSBwYWludGluZ0RhdGEtPnJhZGl1c1k7CiAKKyAg
ICBpZiAocmFkaXVzWCA8PSAwIHx8IHJhZGl1c1kgPD0gMCkgeworICAgICAgICBkc3RQaXhlbEFy
cmF5LT56ZXJvRmlsbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgaW50
IHdpZHRoID0gcGFpbnRpbmdEYXRhLT53aWR0aDsKKyAgICBjb25zdCBpbnQgaGVpZ2h0ID0gcGFp
bnRpbmdEYXRhLT5oZWlnaHQ7CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gZXh0cmVtYTsK
ICAgICBmb3IgKGludCB5ID0geVN0YXJ0OyB5IDwgeUVuZDsgKyt5KSB7CiAgICAgICAgIGludCBl
eHRyZW1hU3RhcnRZID0gc3RkOjptYXgoMCwgeSAtIHJhZGl1c1kpOwogICAgICAgICBpbnQgZXh0
cmVtYUVuZFkgPSBzdGQ6Om1pbihoZWlnaHQgLSAxLCB5ICsgcmFkaXVzWSk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGNsckNoYW5uZWwgPSAwOyBjbHJDaGFubmVsIDwgNDsgKytjbHJDaGFu
bmVsKSB7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBjb2xvckNoYW5uZWwgPSAwOyBjb2xvckNo
YW5uZWwgPCA0OyArK2NvbG9yQ2hhbm5lbCkgewogICAgICAgICAgICAgZXh0cmVtYS5jbGVhcigp
OwogICAgICAgICAgICAgLy8gQ29tcHV0ZSBleHRyZW1hcyBmb3IgZWFjaCBjb2x1bW5zCiAgICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8PSByYWRpdXNYOyArK3gpIHsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGV4
dHJlbWFTdGFydFkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hhbm5lbCk7Ci0gICAgICAg
ICAgICAgICAgZm9yIChpbnQgZVkgPSBleHRyZW1hU3RhcnRZICsgMTsgZVkgPCBleHRyZW1hRW5k
WTsgKytlWSkgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsID0gc3Jj
UGl4ZWxBcnJheS0+aXRlbShlWSAqIGVmZmVjdFdpZHRoICsgNCAqIHggKyBjbHJDaGFubmVsKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9S
X0VST0RFICYmIHBpeGVsIDw9IGNvbHVtbkV4dHJlbWEpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB8fCAobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgJiYgcGl4ZWwgPj0g
Y29sdW1uRXh0cmVtYSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkV4dHJlbWEg
PSBwaXhlbDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQorICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9IGNvbHVtbkV4dHJlbXVt
KHNyY1BpeGVsQXJyYXksIHgsIGV4dHJlbWFTdGFydFksIGV4dHJlbWFFbmRZLCB3aWR0aCwgY29s
b3JDaGFubmVsLCBtX3R5cGUpOwogICAgICAgICAgICAgICAgIGV4dHJlbWEuYXBwZW5kKGNvbHVt
bkV4dHJlbWEpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBLZXJuZWwgaXMgZmls
bGVkLCBnZXQgZXh0cmVtYSBvZiBuZXh0IGNvbHVtbgogICAgICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCB3aWR0aDsgKyt4KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgaW50IGVuZFggPSBz
dGQ6Om1pbih4ICsgcmFkaXVzWCwgd2lkdGggLSAxKTsKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGV4dHJlbWFTdGFydFkg
KiBlZmZlY3RXaWR0aCArIGVuZFggKiA0ICsgY2xyQ2hhbm5lbCk7Ci0gICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IGV4dHJlbWFTdGFydFkgKyAxOyBpIDw9IGV4dHJlbWFFbmRZOyArK2kpIHsK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBwaXhlbCA9IHNyY1BpeGVsQXJyYXkt
Pml0ZW0oaSAqIGVmZmVjdFdpZHRoICsgZW5kWCAqIDQgKyBjbHJDaGFubmVsKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFICYm
IHBpeGVsIDw9IGNvbHVtbkV4dHJlbWEpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAobV90
eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgJiYgcGl4ZWwgPj0gY29sdW1uRXh0
cmVtYSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5FeHRyZW1hID0gcGl4ZWw7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh4IC0gcmFkaXVzWCA+PSAwKQor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9IGNvbHVtbkV4dHJl
bXVtKHNyY1BpeGVsQXJyYXksIGVuZFgsIGV4dHJlbWFTdGFydFksIGV4dHJlbWFFbmRZICsgMSwg
d2lkdGgsIGNvbG9yQ2hhbm5lbCwgbV90eXBlKTsKKworICAgICAgICAgICAgICAgIGlmICh4ID49
IHJhZGl1c1gpCiAgICAgICAgICAgICAgICAgICAgIGV4dHJlbWEucmVtb3ZlKDApOworCiAgICAg
ICAgICAgICAgICAgaWYgKHggKyByYWRpdXNYIDw9IHdpZHRoKQogICAgICAgICAgICAgICAgICAg
ICBleHRyZW1hLmFwcGVuZChjb2x1bW5FeHRyZW1hKTsKIAotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgZW50aXJlRXh0cmVtYSA9IGV4dHJlbWFbMF07Ci0gICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBrZXJuZWxJbmRleCA9IDE7IGtlcm5lbEluZGV4IDwgZXh0cmVtYS5zaXplKCk7
ICsra2VybmVsSW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChtX3R5cGUgPT0gRkVN
T1JQSE9MT0dZX09QRVJBVE9SX0VST0RFICYmIGV4dHJlbWFba2VybmVsSW5kZXhdIDw9IGVudGly
ZUV4dHJlbWEpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAobV90eXBlID09IEZFTU9SUEhP
TE9HWV9PUEVSQVRPUl9ESUxBVEUgJiYgZXh0cmVtYVtrZXJuZWxJbmRleF0gPj0gZW50aXJlRXh0
cmVtYSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnRpcmVFeHRyZW1hID0gZXh0cmVtYVtr
ZXJuZWxJbmRleF07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRzdFBpeGVs
QXJyYXktPnNldCh5ICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNsckNoYW5uZWwsIGVudGlyZUV4
dHJlbWEpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZW50aXJlRXh0cmVtYSA9IGtl
cm5lbEV4dHJlbXVtKGV4dHJlbWEsIG1fdHlwZSk7CisgICAgICAgICAgICAgICAgZHN0UGl4ZWxB
cnJheS0+c2V0KHBpeGVsQXJyYXlJbmRleCh4LCB5LCB3aWR0aCwgY29sb3JDaGFubmVsKSwgZW50
aXJlRXh0cmVtYSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5LmgJKHJldmlzaW9uIDE4MTc0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICsz
NiwxNCBAQCBlbnVtIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgewogY2xhc3MgRkVNb3JwaG9sb2d5
IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGRU1vcnBo
b2xvZ3k+IGNyZWF0ZShGaWx0ZXIqLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRp
dXNYLCBmbG9hdCByYWRpdXNZKTsKLSAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIG1vcnBob2xv
Z3lPcGVyYXRvcigpIGNvbnN0OworCisgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtb3JwaG9s
b2d5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29sIHNldE1vcnBo
b2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKIAotICAgIGZsb2F0IHJhZGl1
c1goKSBjb25zdDsKKyAgICBmbG9hdCByYWRpdXNYKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNY
OyB9CiAgICAgYm9vbCBzZXRSYWRpdXNYKGZsb2F0KTsKIAotICAgIGZsb2F0IHJhZGl1c1koKSBj
b25zdDsKKyAgICBmbG9hdCByYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNZOyB9CiAg
ICAgYm9vbCBzZXRSYWRpdXNZKGZsb2F0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249122</attachid>
            <date>2015-03-20 10:54:09 -0700</date>
            <delta_ts>2015-03-23 13:17:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142885-20150320105336.patch</filename>
            <type>text/plain</type>
            <size>9147</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAzLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRkVNb3JwaG9s
b2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYygpIHNob3VsZCBiYWlsIG91dCBpZiB0aGUgcmFkaXVz
IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODg1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZFTW9ycGhvbG9neSBjbGFzcyBpbXBsZW1lbnRhdGlv
biBjb2RlIGNsZWFuIHVwLgorICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkU3VwZXJzZWRl
RXh0cmVtdW0pOiBSZXVzZSBjb2RlIGluc3RlYWQgb2YgcmVwZWF0aW5nIGl0IGFuZAorICAgICAg
ICB1c2UgPCBhbmQgPiBpbnN0ZWFkIG9mID08IGFuZCA+PS4KKyAgICAgICAgKFdlYkNvcmU6OnBp
eGVsQXJyYXlJbmRleCk6IFJldHVybnMgdGhlIGFycmF5IGluZGV4IG9mIGEgcGl4ZWwgaW4gYW4g
aW1hZ2UKKyAgICAgICAgYnVmZmVyLCBnaXZlbiAoeCwgeSksIGltYWdlIHdpZHRoIGFuZCB0aGUg
Y29sb3IgY2hhbm5lbC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbHVtbkV4dHJlbXVtKTogUmV0dXJu
cyB0aGUgZXh0cmVtdW0gb2YgYSBjb2x1bW4gb2YgcGl4ZWxzLgorICAgICAgICAoV2ViQ29yZTo6
a2VybmVsRXh0cmVtdW0pOiBSZXR1cm5zIHRoZSBleHRyZW11bSBvZiBhIGZpbHRlciBrZXJuZWwu
CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKTog
QXBwbHkgc29tZSBjbGVhbiB1cCBhbmQKKyAgICAgICAgYmFpbCBvdXQgZWFybHkgaWYgdGhlIHJh
ZGl1cyBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVyby4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oOiBNb3ZlIHNpbmdsZSBsaW5lIGZ1bmN0aW9u
cworICAgICAgICB0byB0aGUgdGhlIGhlYWRlciBmaWxlLgorCiAyMDE1LTAzLTE5ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW01hY10gRnVsbHNjcmVl
biBhbmltYXRpb25zIHdpdGggbWlzbWF0Y2hlZCBhc3BlY3QgcmF0aW9zIGFyZSAic3F1aXNoZWQi
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gMTgxNzQ2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxMSArNDYsNiBAQCBSZWY8RkVNb3JwaG9sb2d5PiBGRU1vcnBob2xvZ3k6
OmNyZWF0ZShGCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVNb3JwaG9sb2d5KGZpbHRlciwg
dHlwZSwgcmFkaXVzWCwgcmFkaXVzWSkpOwogfQogCi1Nb3JwaG9sb2d5T3BlcmF0b3JUeXBlIEZF
TW9ycGhvbG9neTo6bW9ycGhvbG9neU9wZXJhdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90
eXBlOwotfQotCiBib29sIEZFTW9ycGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBo
b2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkKIHsKICAgICBpZiAobV90eXBlID09IHR5cGUpCkBAIC01
OSwxMSArNTQsNiBAQCBib29sIEZFTW9ycGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWZsb2F0IEZFTW9ycGhvbG9neTo6cmFkaXVzWCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcmFkaXVzWDsKLX0KLQogYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJh
ZGl1c1goZmxvYXQgcmFkaXVzWCkKIHsKICAgICBpZiAobV9yYWRpdXNYID09IHJhZGl1c1gpCkBA
IC03Miw5ICs2MiwxMiBAQCBib29sIEZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWChmbG9hdCByYWRp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWZsb2F0IEZFTW9ycGhvbG9neTo6cmFkaXVzWSgpIGNv
bnN0Citib29sIEZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogewotICAg
IHJldHVybiBtX3JhZGl1c1k7CisgICAgaWYgKG1fcmFkaXVzWSA9PSByYWRpdXNZKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgbV9yYWRpdXNZID0gcmFkaXVzWTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkK
QEAgLTkwLDY2ICs4Myw3OSBAQCB2b2lkIEZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWluCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3Qp
KTsKIH0KIAotYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1koZmxvYXQgcmFkaXVzWSkKK2lu
bGluZSBib29sIHNob3VsZFN1cGVyc2VkZUV4dHJlbXVtKHVuc2lnbmVkIGNoYXIgbmV3VmFsdWUs
IHVuc2lnbmVkIGNoYXIgY3VycmVudFZhbHVlLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUp
CiB7Ci0gICAgaWYgKG1fcmFkaXVzWSA9PSByYWRpdXNZKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgbV9yYWRpdXNZID0gcmFkaXVzWTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
KHR5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFICYmIG5ld1ZhbHVlIDwgY3VycmVu
dFZhbHVlKQorICAgICAgICB8fCAodHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRF
ICYmIG5ld1ZhbHVlID4gY3VycmVudFZhbHVlKTsKK30KKworaW5saW5lIGludCBwaXhlbEFycmF5
SW5kZXgoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBjb2xvckNoYW5uZWwpCit7CisgICAg
cmV0dXJuICh5ICogd2lkdGggKyB4KSAqIDQgKyBjb2xvckNoYW5uZWw7Cit9CisKK2lubGluZSB1
bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbXVtKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQ
aXhlbEFycmF5LCBpbnQgeCwgaW50IHlTdGFydCwgaW50IHlFbmQsIGludCB3aWR0aCwgdW5zaWdu
ZWQgY29sb3JDaGFubmVsLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUpCit7CisgICAgdW5z
aWduZWQgY2hhciBleHRyZW11bSA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxBcnJheUluZGV4
KHgsIHlTdGFydCwgd2lkdGgsIGNvbG9yQ2hhbm5lbCkpOworICAgIGZvciAoaW50IHkgPSB5U3Rh
cnQgKyAxOyB5IDwgeUVuZDsgKyt5KSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBz
cmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsQXJyYXlJbmRleCh4LCB5LCB3aWR0aCwgY29sb3JDaGFu
bmVsKSk7CisgICAgICAgIGlmIChzaG91bGRTdXBlcnNlZGVFeHRyZW11bShwaXhlbCwgZXh0cmVt
dW0sIHR5cGUpKQorICAgICAgICAgICAgZXh0cmVtdW0gPSBwaXhlbDsKKyAgICB9CisgICAgcmV0
dXJuIGV4dHJlbXVtOworfQorCitpbmxpbmUgdW5zaWduZWQgY2hhciBrZXJuZWxFeHRyZW11bShj
b25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGtlcm5lbCwgTW9ycGhvbG9neU9wZXJhdG9yVHlw
ZSB0eXBlKQoreworICAgIHVuc2lnbmVkIGNoYXIgZXh0cmVtdW0gPSBrZXJuZWxbMF07CisgICAg
Zm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6IGtlcm5lbCkgeworICAgICAgICBpZiAoc2hvdWxkU3Vw
ZXJzZWRlRXh0cmVtdW0odmFsdWUsIGV4dHJlbXVtLCB0eXBlKSkKKyAgICAgICAgICAgIGV4dHJl
bXVtID0gdmFsdWU7CisgICAgfQorICAgIHJldHVybiBleHRyZW11bTsKIH0KIAogdm9pZCBGRU1v
cnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKFBhaW50aW5nRGF0YSogcGFpbnRpbmdEYXRh
LCBpbnQgeVN0YXJ0LCBpbnQgeUVuZCkKIHsKICAgICBVaW50OENsYW1wZWRBcnJheSogc3JjUGl4
ZWxBcnJheSA9IHBhaW50aW5nRGF0YS0+c3JjUGl4ZWxBcnJheTsKICAgICBVaW50OENsYW1wZWRB
cnJheSogZHN0UGl4ZWxBcnJheSA9IHBhaW50aW5nRGF0YS0+ZHN0UGl4ZWxBcnJheTsKLSAgICBj
b25zdCBpbnQgd2lkdGggPSBwYWludGluZ0RhdGEtPndpZHRoOwotICAgIGNvbnN0IGludCBoZWln
aHQgPSBwYWludGluZ0RhdGEtPmhlaWdodDsKLSAgICBjb25zdCBpbnQgZWZmZWN0V2lkdGggPSB3
aWR0aCAqIDQ7CiAgICAgY29uc3QgaW50IHJhZGl1c1ggPSBwYWludGluZ0RhdGEtPnJhZGl1c1g7
CiAgICAgY29uc3QgaW50IHJhZGl1c1kgPSBwYWludGluZ0RhdGEtPnJhZGl1c1k7CiAKKyAgICBp
ZiAocmFkaXVzWCA8PSAwIHx8IHJhZGl1c1kgPD0gMCkgeworICAgICAgICBkc3RQaXhlbEFycmF5
LT56ZXJvRmlsbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgaW50IHdp
ZHRoID0gcGFpbnRpbmdEYXRhLT53aWR0aDsKKyAgICBjb25zdCBpbnQgaGVpZ2h0ID0gcGFpbnRp
bmdEYXRhLT5oZWlnaHQ7CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gZXh0cmVtYTsKICAg
ICBmb3IgKGludCB5ID0geVN0YXJ0OyB5IDwgeUVuZDsgKyt5KSB7Ci0gICAgICAgIGludCBleHRy
ZW1hU3RhcnRZID0gc3RkOjptYXgoMCwgeSAtIHJhZGl1c1kpOwotICAgICAgICBpbnQgZXh0cmVt
YUVuZFkgPSBzdGQ6Om1pbihoZWlnaHQgLSAxLCB5ICsgcmFkaXVzWSk7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGNsckNoYW5uZWwgPSAwOyBjbHJDaGFubmVsIDwgNDsgKytjbHJDaGFubmVs
KSB7CisgICAgICAgIGludCB5U3RhcnRFeHRyZW1hID0gc3RkOjptYXgoMCwgeSAtIHJhZGl1c1kp
OworICAgICAgICBpbnQgeUVuZEV4dHJlbWEgPSBzdGQ6Om1pbihoZWlnaHQgLSAxLCB5ICsgcmFk
aXVzWSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBjb2xvckNoYW5uZWwgPSAwOyBjb2xvckNo
YW5uZWwgPCA0OyArK2NvbG9yQ2hhbm5lbCkgewogICAgICAgICAgICAgZXh0cmVtYS5jbGVhcigp
OwogICAgICAgICAgICAgLy8gQ29tcHV0ZSBleHRyZW1hcyBmb3IgZWFjaCBjb2x1bW5zCiAgICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8PSByYWRpdXNYOyArK3gpIHsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGV4
dHJlbWFTdGFydFkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hhbm5lbCk7Ci0gICAgICAg
ICAgICAgICAgZm9yIChpbnQgZVkgPSBleHRyZW1hU3RhcnRZICsgMTsgZVkgPCBleHRyZW1hRW5k
WTsgKytlWSkgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsID0gc3Jj
UGl4ZWxBcnJheS0+aXRlbShlWSAqIGVmZmVjdFdpZHRoICsgNCAqIHggKyBjbHJDaGFubmVsKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9S
X0VST0RFICYmIHBpeGVsIDw9IGNvbHVtbkV4dHJlbWEpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB8fCAobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgJiYgcGl4ZWwgPj0g
Y29sdW1uRXh0cmVtYSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkV4dHJlbWEg
PSBwaXhlbDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGV4dHJlbWEuYXBwZW5kKGNvbHVtbkV4dHJlbWEpOworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgZXh0cmVtdW0gPSBjb2x1bW5FeHRyZW11bShzcmNQaXhlbEFycmF5
LCB4LCB5U3RhcnRFeHRyZW1hLCB5RW5kRXh0cmVtYSwgd2lkdGgsIGNvbG9yQ2hhbm5lbCwgbV90
eXBlKTsKKyAgICAgICAgICAgICAgICBleHRyZW1hLmFwcGVuZChleHRyZW11bSk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIC8vIEtlcm5lbCBpcyBmaWxsZWQsIGdldCBleHRyZW1hIG9m
IG5leHQgY29sdW1uCiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gp
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBpbnQgZW5kWCA9IHN0ZDo6bWluKHggKyByYWRpdXNY
LCB3aWR0aCAtIDEpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVt
YSA9IHNyY1BpeGVsQXJyYXktPml0ZW0oZXh0cmVtYVN0YXJ0WSAqIGVmZmVjdFdpZHRoICsgZW5k
WCAqIDQgKyBjbHJDaGFubmVsKTsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gZXh0cmVt
YVN0YXJ0WSArIDE7IGkgPD0gZXh0cmVtYUVuZFk7ICsraSkgewotICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIHBpeGVsID0gc3JjUGl4ZWxBcnJheS0+aXRlbShpICogZWZmZWN0V2lk
dGggKyBlbmRYICogNCArIGNsckNoYW5uZWwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoKG1f
dHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgJiYgcGl4ZWwgPD0gY29sdW1uRXh0
cmVtYSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZ
X09QRVJBVE9SX0RJTEFURSAmJiBwaXhlbCA+PSBjb2x1bW5FeHRyZW1hKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbkV4dHJlbWEgPSBwaXhlbDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKHggLSByYWRpdXNYID49IDApCisgICAgICAgICAgICAgICAgaWYg
KHggPj0gcmFkaXVzWCkKICAgICAgICAgICAgICAgICAgICAgZXh0cmVtYS5yZW1vdmUoMCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHggKyByYWRpdXNYIDw9IHdpZHRoKQotICAgICAgICAgICAgICAg
ICAgICBleHRyZW1hLmFwcGVuZChjb2x1bW5FeHRyZW1hKTsKIAotICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgZW50aXJlRXh0cmVtYSA9IGV4dHJlbWFbMF07Ci0gICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBrZXJuZWxJbmRleCA9IDE7IGtlcm5lbEluZGV4IDwgZXh0cmVtYS5zaXpl
KCk7ICsra2VybmVsSW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChtX3R5cGUgPT0g
RkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFICYmIGV4dHJlbWFba2VybmVsSW5kZXhdIDw9IGVu
dGlyZUV4dHJlbWEpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAobV90eXBlID09IEZFTU9S
UEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgJiYgZXh0cmVtYVtrZXJuZWxJbmRleF0gPj0gZW50aXJl
RXh0cmVtYSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnRpcmVFeHRyZW1hID0gZXh0cmVt
YVtrZXJuZWxJbmRleF07CisgICAgICAgICAgICAgICAgaWYgKHggKyByYWRpdXNYIDw9IHdpZHRo
KSB7CisgICAgICAgICAgICAgICAgICAgIGludCB4RW5kID0gc3RkOjptaW4oeCArIHJhZGl1c1gs
IHdpZHRoIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZXh0cmVtdW0g
PSBjb2x1bW5FeHRyZW11bShzcmNQaXhlbEFycmF5LCB4RW5kLCB5U3RhcnRFeHRyZW1hLCB5RW5k
RXh0cmVtYSArIDEsIHdpZHRoLCBjb2xvckNoYW5uZWwsIG1fdHlwZSk7CisgICAgICAgICAgICAg
ICAgICAgIGV4dHJlbWEuYXBwZW5kKGV4dHJlbXVtKTsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZHN0UGl4ZWxBcnJheS0+c2V0KHkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsg
Y2xyQ2hhbm5lbCwgZW50aXJlRXh0cmVtYSk7CisKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGV4dHJlbXVtID0ga2VybmVsRXh0cmVtdW0oZXh0cmVtYSwgbV90eXBlKTsKKyAgICAgICAg
ICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQocGl4ZWxBcnJheUluZGV4KHgsIHksIHdpZHRoLCBj
b2xvckNoYW5uZWwpLCBleHRyZW11bSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhv
bG9neS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNb3JwaG9sb2d5LmgJKHJldmlzaW9uIDE4MTc0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDEzICszNiwxNCBAQCBlbnVtIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgewogY2xhc3Mg
RkVNb3JwaG9sb2d5IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxGRU1vcnBob2xvZ3k+IGNyZWF0ZShGaWx0ZXIqLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBl
LCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKLSAgICBNb3JwaG9sb2d5T3BlcmF0b3JU
eXBlIG1vcnBob2xvZ3lPcGVyYXRvcigpIGNvbnN0OworCisgICAgTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSBtb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBi
b29sIHNldE1vcnBob2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKIAotICAg
IGZsb2F0IHJhZGl1c1goKSBjb25zdDsKKyAgICBmbG9hdCByYWRpdXNYKCkgY29uc3QgeyByZXR1
cm4gbV9yYWRpdXNYOyB9CiAgICAgYm9vbCBzZXRSYWRpdXNYKGZsb2F0KTsKIAotICAgIGZsb2F0
IHJhZGl1c1koKSBjb25zdDsKKyAgICBmbG9hdCByYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9y
YWRpdXNZOyB9CiAgICAgYm9vbCBzZXRSYWRpdXNZKGZsb2F0KTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249254</attachid>
            <date>2015-03-23 13:17:41 -0700</date>
            <delta_ts>2015-03-26 16:29:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142885-20150323131705.patch</filename>
            <type>text/plain</type>
            <size>19152</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTAzLTIzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRkVNb3JwaG9s
b2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYygpIHNob3VsZCBiYWlsIG91dCBpZiB0aGUgcmFkaXVz
IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODg1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZFTW9ycGhvbG9neSBjbGFzcyBpbXBsZW1lbnRhdGlv
biBjb2RlIGNsZWFuIHVwLgorICAgICAgICAKKyAgICAgICAgVGVzdHM6IHN2Zy9maWx0ZXJzL2Zl
TW9ycGhvbG9neS1yYWRpdXMtY2FzZXMuc3ZnCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdXBl
cnNlZGVFeHRyZW11bSk6IFJldXNlIGNvZGUgaW5zdGVhZCBvZiByZXBlYXRpbmcgaXQgYW5kCisg
ICAgICAgIHVzZSA8IGFuZCA+IGluc3RlYWQgb2YgPTwgYW5kID49LgorICAgICAgICAKKyAgICAg
ICAgKFdlYkNvcmU6OnBpeGVsQXJyYXlJbmRleCk6IFJldHVybnMgdGhlIGFycmF5IGluZGV4IG9m
IGEgcGl4ZWwgaW4gYW4gaW1hZ2UKKyAgICAgICAgYnVmZmVyLCBnaXZlbiAoeCwgeSksIGltYWdl
IHdpZHRoIGFuZCB0aGUgY29sb3IgY2hhbm5lbC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
Ojpjb2x1bW5FeHRyZW11bSk6IFJldHVybnMgdGhlIGV4dHJlbXVtIG9mIGEgY29sdW1uIG9mIHBp
eGVscy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjprZXJuZWxFeHRyZW11bSk6IFJldHVy
bnMgdGhlIGV4dHJlbXVtIG9mIGEgZmlsdGVyIGtlcm5lbC4KKyAgICAgICAgCisgICAgICAgIChX
ZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKTogQXBwbHkgc29tZSBj
b2RlIGNsZWFuLXVwLgorICAgICAgICBUaGUga2VybmVsIHNpemUgc2hvdWxkIGJlIGVxdWFsIHRv
IHJhZGl1cyBvZiB0aGUgZmlsdGVyLiBUaGUgZXh0cmEgcGl4ZWwKKyAgICAgICAgd2FzIGNhc2lu
ZyB0aGUgcmVzdWx0ZWQgaW1hZ2UgdG8gYmUgYXN5bW1ldHJpYyBpbiBzb21lIGNhc2VzLgorICAg
ICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseURlZ2Vu
ZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOiBBZnRlciBhcHBseWluZyBzY2FsaW5nLCB3ZQorICAgICAgICBzdGlsbCBuZWVkIHRv
IGNoZWNrIHRoZSByZXN1bHRlZCByYWRpdXMgaXMgbmVnYXRpdmUgKG92ZXJmbG93IGNhc2UpIG9y
IGxlc3MKKyAgICAgICAgdGhhbiBvbmUgYW5kIHRyZWF0IHRoZXNlIGNhc2VzIGRpZmZlcmVudGx5
LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6bW9ycGhvbG9neU9w
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cmFkaXVz
WCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnJhZGl1c1kpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6Om1vcnBob2xvZ3lPcGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnJhZGl1c1gpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVNb3JwaG9sb2d5OjpyYWRpdXNZKToKKyAgICAgICAgTW92ZSBhIHNpbmdsZSBsaW5l
IGZ1bmN0aW9ucyBmcm9tIHRoZSBzb3VyY2UgZmlsZSB0byB0aGUgaGVhZGVyIGZpbGUuCisKIDIw
MTUtMDMtMjMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gQWNjZXNzaWJpbGl0eSBjcmFzaGluZyBiZWNhdXNlIE1lZGlhUGxheWVyIGlzIGxheWluZyBv
dXQgVUkgb2ZmIHRoZSBtYWluIHRocmVhZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNp
b24gMTgxNzQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1vcnBob2xvZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsNiBAQCBSZWY8RkVN
b3JwaG9sb2d5PiBGRU1vcnBob2xvZ3k6OmNyZWF0ZShGCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVNb3JwaG9sb2d5KGZpbHRlciwgdHlwZSwgcmFkaXVzWCwgcmFkaXVzWSkpOwogfQogCi1N
b3JwaG9sb2d5T3BlcmF0b3JUeXBlIEZFTW9ycGhvbG9neTo6bW9ycGhvbG9neU9wZXJhdG9yKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV90eXBlOwotfQotCiBib29sIEZFTW9ycGhvbG9neTo6c2V0
TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkKIHsKICAgICBp
ZiAobV90eXBlID09IHR5cGUpCkBAIC01OSwxMSArNTQsNiBAQCBib29sIEZFTW9ycGhvbG9neTo6
c2V0TW9ycGhvbG9neU9wZXJhdG9yCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWZsb2F0IEZFTW9y
cGhvbG9neTo6cmFkaXVzWCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmFkaXVzWDsKLX0KLQog
Ym9vbCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1goZmxvYXQgcmFkaXVzWCkKIHsKICAgICBpZiAo
bV9yYWRpdXNYID09IHJhZGl1c1gpCkBAIC03Miw5ICs2MiwxMiBAQCBib29sIEZFTW9ycGhvbG9n
eTo6c2V0UmFkaXVzWChmbG9hdCByYWRpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWZsb2F0IEZF
TW9ycGhvbG9neTo6cmFkaXVzWSgpIGNvbnN0Citib29sIEZFTW9ycGhvbG9neTo6c2V0UmFkaXVz
WShmbG9hdCByYWRpdXNZKQogewotICAgIHJldHVybiBtX3JhZGl1c1k7CisgICAgaWYgKG1fcmFk
aXVzWSA9PSByYWRpdXNZKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9yYWRpdXNZID0g
cmFkaXVzWTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KCkKQEAgLTkwLDY2ICs4Myw3NyBAQCB2b2lkIEZFTW9ycGhv
bG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWluCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5j
bG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKIH0KIAotYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJh
ZGl1c1koZmxvYXQgcmFkaXVzWSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTdXBlcnNlZGVF
eHRyZW11bSh1bnNpZ25lZCBjaGFyIG5ld1ZhbHVlLCB1bnNpZ25lZCBjaGFyIGN1cnJlbnRWYWx1
ZSwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlKQogewotICAgIGlmIChtX3JhZGl1c1kgPT0g
cmFkaXVzWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fcmFkaXVzWSA9IHJhZGl1c1k7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICh0eXBlID09IEZFTU9SUEhPTE9HWV9PUEVS
QVRPUl9FUk9ERSAmJiBuZXdWYWx1ZSA8IGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgfHwgKHR5cGUg
PT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSAmJiBuZXdWYWx1ZSA+IGN1cnJlbnRWYWx1
ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHBpeGVsQXJyYXlJbmRleChpbnQgeCwgaW50IHks
IGludCB3aWR0aCwgaW50IGNvbG9yQ2hhbm5lbCkKK3sKKyAgICByZXR1cm4gKHkgKiB3aWR0aCAr
IHgpICogNCArIGNvbG9yQ2hhbm5lbDsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFy
IGNvbHVtbkV4dHJlbXVtKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBp
bnQgeCwgaW50IHlTdGFydCwgaW50IHlFbmQsIGludCB3aWR0aCwgdW5zaWduZWQgY29sb3JDaGFu
bmVsLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUpCit7CisgICAgdW5zaWduZWQgY2hhciBl
eHRyZW11bSA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxBcnJheUluZGV4KHgsIHlTdGFydCwg
d2lkdGgsIGNvbG9yQ2hhbm5lbCkpOworICAgIGZvciAoaW50IHkgPSB5U3RhcnQgKyAxOyB5IDwg
eUVuZDsgKyt5KSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5
LT5pdGVtKHBpeGVsQXJyYXlJbmRleCh4LCB5LCB3aWR0aCwgY29sb3JDaGFubmVsKSk7CisgICAg
ICAgIGlmIChzaG91bGRTdXBlcnNlZGVFeHRyZW11bShwaXhlbCwgZXh0cmVtdW0sIHR5cGUpKQor
ICAgICAgICAgICAgZXh0cmVtdW0gPSBwaXhlbDsKKyAgICB9CisgICAgcmV0dXJuIGV4dHJlbXVt
OworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIga2VybmVsRXh0cmVtdW0oY29uc3Qg
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBrZXJuZWwsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlw
ZSkKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBr
ZXJuZWwuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBjaGFyIGV4dHJlbXVtID0gKml0ZXI7CisgICAg
Zm9yIChWZWN0b3I8dW5zaWduZWQgY2hhcj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGtlcm5lbC5l
bmQoKTsgKytpdGVyICE9IGVuZDsgKSB7CisgICAgICAgIGlmIChzaG91bGRTdXBlcnNlZGVFeHRy
ZW11bSgqaXRlciwgZXh0cmVtdW0sIHR5cGUpKQorICAgICAgICAgICAgZXh0cmVtdW0gPSAqaXRl
cjsKKyAgICB9CisgICAgcmV0dXJuIGV4dHJlbXVtOwogfQogCiB2b2lkIEZFTW9ycGhvbG9neTo6
cGxhdGZvcm1BcHBseUdlbmVyaWMoUGFpbnRpbmdEYXRhKiBwYWludGluZ0RhdGEsIGludCB5U3Rh
cnQsIGludCB5RW5kKQogewogICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5ID0g
cGFpbnRpbmdEYXRhLT5zcmNQaXhlbEFycmF5OwogICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQ
aXhlbEFycmF5ID0gcGFpbnRpbmdEYXRhLT5kc3RQaXhlbEFycmF5OwotICAgIGNvbnN0IGludCB3
aWR0aCA9IHBhaW50aW5nRGF0YS0+d2lkdGg7Ci0gICAgY29uc3QgaW50IGhlaWdodCA9IHBhaW50
aW5nRGF0YS0+aGVpZ2h0OwotICAgIGNvbnN0IGludCBlZmZlY3RXaWR0aCA9IHdpZHRoICogNDsK
ICAgICBjb25zdCBpbnQgcmFkaXVzWCA9IHBhaW50aW5nRGF0YS0+cmFkaXVzWDsKICAgICBjb25z
dCBpbnQgcmFkaXVzWSA9IHBhaW50aW5nRGF0YS0+cmFkaXVzWTsKKyAgICBjb25zdCBpbnQgd2lk
dGggPSBwYWludGluZ0RhdGEtPndpZHRoOworICAgIGNvbnN0IGludCBoZWlnaHQgPSBwYWludGlu
Z0RhdGEtPmhlaWdodDsKKworICAgIEFTU0VSVChyYWRpdXNYIDw9IHdpZHRoIHx8IHJhZGl1c1kg
PD0gaGVpZ2h0KTsKKyAgICBBU1NFUlQoeVN0YXJ0ID49IDAgJiYgeUVuZCA8PSBoZWlnaHQgJiYg
eVN0YXJ0IDwgeUVuZCk7CiAKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gZXh0cmVtYTsKICAg
ICBmb3IgKGludCB5ID0geVN0YXJ0OyB5IDwgeUVuZDsgKyt5KSB7Ci0gICAgICAgIGludCBleHRy
ZW1hU3RhcnRZID0gc3RkOjptYXgoMCwgeSAtIHJhZGl1c1kpOwotICAgICAgICBpbnQgZXh0cmVt
YUVuZFkgPSBzdGQ6Om1pbihoZWlnaHQgLSAxLCB5ICsgcmFkaXVzWSk7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGNsckNoYW5uZWwgPSAwOyBjbHJDaGFubmVsIDwgNDsgKytjbHJDaGFubmVs
KSB7CisgICAgICAgIGludCB5U3RhcnRFeHRyZW1hID0gc3RkOjptYXgoMCwgeSAtIHJhZGl1c1kp
OworICAgICAgICBpbnQgeUVuZEV4dHJlbWEgPSBzdGQ6Om1pbihoZWlnaHQgLSAxLCB5ICsgcmFk
aXVzWSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBjb2xvckNoYW5uZWwgPSAwOyBjb2xvckNo
YW5uZWwgPCA0OyArK2NvbG9yQ2hhbm5lbCkgewogICAgICAgICAgICAgZXh0cmVtYS5jbGVhcigp
OwogICAgICAgICAgICAgLy8gQ29tcHV0ZSBleHRyZW1hcyBmb3IgZWFjaCBjb2x1bW5zCi0gICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8PSByYWRpdXNYOyArK3gpIHsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGV4
dHJlbWFTdGFydFkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hhbm5lbCk7Ci0gICAgICAg
ICAgICAgICAgZm9yIChpbnQgZVkgPSBleHRyZW1hU3RhcnRZICsgMTsgZVkgPCBleHRyZW1hRW5k
WTsgKytlWSkgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsID0gc3Jj
UGl4ZWxBcnJheS0+aXRlbShlWSAqIGVmZmVjdFdpZHRoICsgNCAqIHggKyBjbHJDaGFubmVsKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9S
X0VST0RFICYmIHBpeGVsIDw9IGNvbHVtbkV4dHJlbWEpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB8fCAobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgJiYgcGl4ZWwgPj0g
Y29sdW1uRXh0cmVtYSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkV4dHJlbWEg
PSBwaXhlbDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGV4dHJlbWEuYXBwZW5kKGNvbHVtbkV4dHJlbWEpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCByYWRpdXNYOyArK3gpCisgICAgICAg
ICAgICAgICAgZXh0cmVtYS5hcHBlbmQoY29sdW1uRXh0cmVtdW0oc3JjUGl4ZWxBcnJheSwgeCwg
eVN0YXJ0RXh0cmVtYSwgeUVuZEV4dHJlbWEsIHdpZHRoLCBjb2xvckNoYW5uZWwsIG1fdHlwZSkp
OwogCiAgICAgICAgICAgICAvLyBLZXJuZWwgaXMgZmlsbGVkLCBnZXQgZXh0cmVtYSBvZiBuZXh0
IGNvbHVtbgogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgaW50IGVuZFggPSBzdGQ6Om1pbih4ICsgcmFkaXVzWCwgd2lk
dGggLSAxKTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBz
cmNQaXhlbEFycmF5LT5pdGVtKGV4dHJlbWFTdGFydFkgKiBlZmZlY3RXaWR0aCArIGVuZFggKiA0
ICsgY2xyQ2hhbm5lbCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IGV4dHJlbWFTdGFy
dFkgKyAxOyBpIDw9IGV4dHJlbWFFbmRZOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBwaXhlbCA9IHNyY1BpeGVsQXJyYXktPml0ZW0oaSAqIGVmZmVjdFdpZHRoICsg
ZW5kWCAqIDQgKyBjbHJDaGFubmVsKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChtX3R5cGUg
PT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFICYmIHBpeGVsIDw9IGNvbHVtbkV4dHJlbWEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB8fCAobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVS
QVRPUl9ESUxBVEUgJiYgcGl4ZWwgPj0gY29sdW1uRXh0cmVtYSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb2x1bW5FeHRyZW1hID0gcGl4ZWw7CisgICAgICAgICAgICAgICAgaWYgKHggPCB3
aWR0aCAtIHJhZGl1c1gpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHhFbmQgPSBzdGQ6Om1p
bih4ICsgcmFkaXVzWCwgd2lkdGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmVtYS5h
cHBlbmQoY29sdW1uRXh0cmVtdW0oc3JjUGl4ZWxBcnJheSwgeEVuZCwgeVN0YXJ0RXh0cmVtYSwg
eUVuZEV4dHJlbWEgKyAxLCB3aWR0aCwgY29sb3JDaGFubmVsLCBtX3R5cGUpKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHggLSByYWRpdXNYID49IDApCisKKyAgICAg
ICAgICAgICAgICBpZiAoeCA+IHJhZGl1c1gpCiAgICAgICAgICAgICAgICAgICAgIGV4dHJlbWEu
cmVtb3ZlKDApOwotICAgICAgICAgICAgICAgIGlmICh4ICsgcmFkaXVzWCA8PSB3aWR0aCkKLSAg
ICAgICAgICAgICAgICAgICAgZXh0cmVtYS5hcHBlbmQoY29sdW1uRXh0cmVtYSk7CiAKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGVudGlyZUV4dHJlbWEgPSBleHRyZW1hWzBdOwotICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQga2VybmVsSW5kZXggPSAxOyBrZXJuZWxJbmRleCA8
IGV4dHJlbWEuc2l6ZSgpOyArK2tlcm5lbEluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICgobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAmJiBleHRyZW1hW2tlcm5l
bEluZGV4XSA8PSBlbnRpcmVFeHRyZW1hKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1f
dHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFICYmIGV4dHJlbWFba2VybmVsSW5k
ZXhdID49IGVudGlyZUV4dHJlbWEpKQotICAgICAgICAgICAgICAgICAgICAgICAgZW50aXJlRXh0
cmVtYSA9IGV4dHJlbWFba2VybmVsSW5kZXhdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQoeSAqIGVmZmVjdFdpZHRoICsgNCAqIHggKyBjbHJD
aGFubmVsLCBlbnRpcmVFeHRyZW1hKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZXh0cmVtYSBv
cmlnaW5hbCBzaXplID0gcmFkaXVzWC4KKyAgICAgICAgICAgICAgICAvLyBOdW1iZXIgb2YgbmV3
IGFkZGl0aW9uID0gd2lkdGggLSByYWRpdXNYLgorICAgICAgICAgICAgICAgIC8vIE51bWJlciBv
ZiByZW1vdmFscyA9IHdpZHRoIC0gcmFkaXVzWCAtIDEuCisgICAgICAgICAgICAgICAgQVNTRVJU
KGV4dHJlbWEuc2l6ZSgpID49IHN0YXRpY19jYXN0PHNpemVfdD4ocmFkaXVzWCArIDEpKTsKKyAg
ICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQocGl4ZWxBcnJheUluZGV4KHgsIHksIHdp
ZHRoLCBjb2xvckNoYW5uZWwpLCBrZXJuZWxFeHRyZW11bShleHRyZW1hLCBtX3R5cGUpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE4OSw2ICsxOTMsMjMgQEAgdm9pZCBG
RU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHkoUGFpbnRpbgogICAgIHBsYXRmb3JtQXBwbHlHZW5l
cmljKHBhaW50aW5nRGF0YSwgMCwgcGFpbnRpbmdEYXRhLT5oZWlnaHQpOwogfQogCitib29sIEZF
TW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoVWludDhDbGFtcGVkQXJyYXkqIGRz
dFBpeGVsQXJyYXksIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgaW50IHJhZGl1c1gsIGludCBy
YWRpdXNZKQoreworICAgIC8vIGlucHV0IHJhZGl1cyBpcyBsZXNzIHRoYW4gemVybyBvciBhbiBv
dmVyZmxvdyBoYXBwZW5zIHdoZW4gc2NhbGluZyBpdAorICAgIGlmIChyYWRpdXNYIDwgMCB8fCBy
YWRpdXNZIDwgMCkgeworICAgICAgICBkc3RQaXhlbEFycmF5LT56ZXJvRmlsbCgpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBpbnB1dCByYWRpdXMgaXMgZXF1YWwgdG8g
emVybyBvciB0aGUgc2NhbGVkIHJhZGl1cyBpcyBsZXNzIHRoYW4gb25lLgorICAgIGlmICghbV9y
YWRpdXNYIHx8ICFtX3JhZGl1c1kpIHsKKyAgICAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0
RWZmZWN0KDApOworICAgICAgICBpbi0+Y29weVByZW11bHRpcGxpZWRJbWFnZShkc3RQaXhlbEFy
cmF5LCBpbWFnZVJlY3QpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CiAKIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogewpAQCAtMTk5LDI1ICsyMjAsMjkgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZQogICAgICAgICByZXR1cm47CiAKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlz
QWxwaGFJbWFnZSgpKTsKLSAgICBpZiAobV9yYWRpdXNYIDw9IDAgfHwgbV9yYWRpdXNZIDw9IDAp
IHsKLSAgICAgICAgZHN0UGl4ZWxBcnJheS0+emVyb0ZpbGwoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CisgICAgSW50UmVj
dCBlZmZlY3REcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4t
PmFic29sdXRlUGFpbnRSZWN0KCkpOworCisgICAgaWYgKHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRl
KGRzdFBpeGVsQXJyYXksIGVmZmVjdERyYXdpbmdSZWN0LCBtX3JhZGl1c1gsIG1fcmFkaXVzWSkp
CisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4
ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3REcmF3aW5nUmVjdCk7CiAg
ICAgaW50IHJhZGl1c1ggPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihmaWx0ZXIuYXBwbHlIb3Jp
em9udGFsU2NhbGUobV9yYWRpdXNYKSkpOwogICAgIGludCByYWRpdXNZID0gc3RhdGljX2Nhc3Q8
aW50PihmbG9vcmYoZmlsdGVyLmFwcGx5VmVydGljYWxTY2FsZShtX3JhZGl1c1kpKSk7CisgICAg
cmFkaXVzWCA9IHN0ZDo6bWluKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgLSAxLCByYWRpdXNY
KTsKKyAgICByYWRpdXNZID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCkgLSAx
LCByYWRpdXNZKTsKIAotICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRS
ZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoZWZmZWN0RHJhd2luZ1JlY3QpOworICAgIGlmIChwbGF0Zm9ybUFwcGx5RGVnZW5lcmF0
ZShkc3RQaXhlbEFycmF5LCBlZmZlY3REcmF3aW5nUmVjdCwgcmFkaXVzWCwgcmFkaXVzWSkpCisg
ICAgICAgIHJldHVybjsKIAogICAgIFBhaW50aW5nRGF0YSBwYWludGluZ0RhdGE7CiAgICAgcGFp
bnRpbmdEYXRhLnNyY1BpeGVsQXJyYXkgPSBzcmNQaXhlbEFycmF5LmdldCgpOwogICAgIHBhaW50
aW5nRGF0YS5kc3RQaXhlbEFycmF5ID0gZHN0UGl4ZWxBcnJheTsKICAgICBwYWludGluZ0RhdGEu
d2lkdGggPSBlZmZlY3REcmF3aW5nUmVjdC53aWR0aCgpOwogICAgIHBhaW50aW5nRGF0YS5oZWln
aHQgPSBlZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKTsKLSAgICBwYWludGluZ0RhdGEucmFkaXVz
WCA9IHN0ZDo6bWluKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgLSAxLCByYWRpdXNYKTsKLSAg
ICBwYWludGluZ0RhdGEucmFkaXVzWSA9IHN0ZDo6bWluKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdo
dCgpIC0gMSwgcmFkaXVzWSk7CisgICAgcGFpbnRpbmdEYXRhLnJhZGl1c1ggPSByYWRpdXNYOwor
ICAgIHBhaW50aW5nRGF0YS5yYWRpdXNZID0gcmFkaXVzWTsKIAogICAgIHBsYXRmb3JtQXBwbHko
JnBhaW50aW5nRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgJKHJldmlzaW9uIDE4MTc0NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICszNiwxNCBAQCBlbnVtIE1vcnBob2xvZ3lPcGVy
YXRvclR5cGUgewogY2xhc3MgRkVNb3JwaG9sb2d5IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxGRU1vcnBob2xvZ3k+IGNyZWF0ZShGaWx0ZXIqLCBNb3Jw
aG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKLSAgICBN
b3JwaG9sb2d5T3BlcmF0b3JUeXBlIG1vcnBob2xvZ3lPcGVyYXRvcigpIGNvbnN0OworCisgICAg
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KICAgICBib29sIHNldE1vcnBob2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3Bl
cmF0b3JUeXBlKTsKIAotICAgIGZsb2F0IHJhZGl1c1goKSBjb25zdDsKKyAgICBmbG9hdCByYWRp
dXNYKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNYOyB9CiAgICAgYm9vbCBzZXRSYWRpdXNYKGZs
b2F0KTsKIAotICAgIGZsb2F0IHJhZGl1c1koKSBjb25zdDsKKyAgICBmbG9hdCByYWRpdXNZKCkg
Y29uc3QgeyByZXR1cm4gbV9yYWRpdXNZOyB9CiAgICAgYm9vbCBzZXRSYWRpdXNZKGZsb2F0KTsK
IAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKQEAgLTc2LDYgKzc3
LDcgQEAgcHVibGljOgogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKFBhaW50
aW5nRGF0YSosIGNvbnN0IGludCB5U3RhcnQsIGNvbnN0IGludCB5RW5kKTsKIHByaXZhdGU6CiAg
ICAgRkVNb3JwaG9sb2d5KEZpbHRlciosIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsIGZsb2F0IHJh
ZGl1c1gsIGZsb2F0IHJhZGl1c1kpOworICAgIGJvb2wgcGxhdGZvcm1BcHBseURlZ2VuZXJhdGUo
VWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXksIGNvbnN0IEludFJlY3QmIGltYWdlUmVj
dCwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZKTsKICAgICAKICAgICBNb3JwaG9sb2d5T3BlcmF0
b3JUeXBlIG1fdHlwZTsKICAgICBmbG9hdCBtX3JhZGl1c1g7CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
ODE4NTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOCBAQAorMjAxNS0wMy0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdlbmVyaWMoKSBz
aG91bGQgYmFpbCBvdXQgaWYgdGhlIHJhZGl1cyBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVy
by4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjg4
NS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2
Zy9maWx0ZXJzL2ZlTW9ycGhvbG9neS1yYWRpdXMtY2FzZXMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvZmlsdGVycy9mZU1vcnBob2xvZ3ktcmFkaXVzLWNhc2VzLnN2ZzogQWRk
ZWQuCisgICAgICAgIFRlc3QgZGlmZmVyZW50IGNhc2VzIGZvciByYWRpdXMgb2YgdGhlIGZlTW9y
cGhvbG9neSBmaWx0ZXIuIFRoZXJlIGFyZSB0aHJlZSAKKyAgICAgICAgY2FzZXMgZm9yIHRoZSBy
YWRpdXM6CisgICAgICAgICAgICAxLiByYWRpdXMgPCAwOiBUaGlzIGlzIGFuIGVycm9yIGNhc2Us
IHRoZSBzb3VyY2UgaW1hZ2Ugc2hvdWxkIG5vdCBiZSByZW5kZXJlZC4KKyAgICAgICAgICAgIDIu
IHJhZGl1cyA9IDA6IFRoaXMgY2FzZSBpcyB0cmVhdGVkIGFzIGlmIHRoZXJlIGlzIGZpbHRlcgor
ICAgICAgICAgICAgMy4gcmFkaXVzID4gMDogSWYgdGhlIHNjYWxlZCByYWRpdXMgaXMgPiAwLCB0
aGUgZmlsdGVyIGlzIGFwcGxpZWQuCisKIDIwMTUtMDMtMjIgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENTUyBTZWxlY3RvcnM6IGZpeCBhdHRyaWJ1
dGUgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBvZiBDb250YWluIGFuZCBMaXN0CkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZU1vcnBob2xvZ3ktcmFkaXVzLWNhc2VzLWV4cGVjdGVk
LnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZU1vcnBob2xvZ3kt
cmFkaXVzLWNhc2VzLWV4cGVjdGVkLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2
Zy9maWx0ZXJzL2ZlTW9ycGhvbG9neS1yYWRpdXMtY2FzZXMtZXhwZWN0ZWQuc3ZnCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjUwMCI+CisgIDxnIHN0
cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMTAiPgorICAgIDxyZWN0IHg9ICIxMCIgeT0iMTAi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJsaW1lIi8+CisgICAgPHJlY3QgeD0iMTAi
IHk9IjEzMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImxpbWUiLz4KKyAgICA8cmVj
dCB4PSIxNDAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0ibGltZSIvPgor
ICAgIDxyZWN0IHg9IjE0MCIgeT0iMTMwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0i
bGltZSIvPgorICAgIDxyZWN0IHg9ICIyNzAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgZmlsbD0ibGltZSIvPgorICAgIDxyZWN0IHg9IjI3MCIgeT0iMTMwIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCIgZmlsbD0ibGltZSIvPgorICA8L2c+CisKKyAgPHN2ZyB4PSI0MDAiIHk9IjEw
IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMDAwIDEwMDAwIj4KKyAg
ICA8ZyBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEwMDAiPgorICAgICAgPHJlY3Qgd2lk
dGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0ibGltZSIvPgorICAgIDwvZz4KKyAgPC9zdmc+
CisgIDxzdmcgeD0iNDAwIiB5PSIxMzAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94
PSIwIDAgMTAwMDAgMTAwMDAiPgorICAgIDxnIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0i
MTAwMCI+CisgICAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJsaW1l
Ii8+CisgICAgPC9nPgorICA8L3N2Zz4KKworICA8c3ZnIHg9IjUzNSIgeT0iMTUiIHdpZHRoPSI5
MCIgaGVpZ2h0PSI5MCI+CisgICAgPGcgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIyMCI+
CisgICAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJsaW1lIi8+Cisg
ICAgPC9nPgorICA8L3N2Zz4gCisgIDxzdmcgeD0iNTMwIiB5PSIxMzAiIHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIj4KKyAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJs
aW1lIi8+CisgIDwvc3ZnPgorCisgIDxzdmcgeD0iNjY1IiB5PSIxNSIgd2lkdGg9IjkwIiBoZWln
aHQ9IjkwIj4KKyAgICA8ZyBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIwIj4KKyAgICAg
IDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImxpbWUiLz4KKyAgICA8L2c+
CisgIDwvc3ZnPgorICA8c3ZnIHg9IjY1MCIgeT0iMTIwIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEy
MCI+CisgICAgPGcgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIxMCI+CisgICAgICA8cmVj
dCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJsaW1lIi8+CisgICAgPC9nPgorICA8
L3N2Zz4KKzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVNb3JwaG9sb2d5
LXJhZGl1cy1jYXNlcy5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMv
ZmVNb3JwaG9sb2d5LXJhZGl1cy1jYXNlcy5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9zdmcvZmlsdGVycy9mZU1vcnBob2xvZ3ktcmFkaXVzLWNhc2VzLnN2Zwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDcxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAwMCIgaGVpZ2h0PSI1MDAiPgorICA8ZGVmcz4KKyAg
ICA8ZmlsdGVyIGlkPSJFcm9kZS0xIj4KKyAgICAgIDxmZU1vcnBob2xvZ3kgb3BlcmF0b3I9ImVy
b2RlIiBpbj0iU291cmNlR3JhcGhpYyIgcmFkaXVzPSItMSIgLz4KKyAgICA8L2ZpbHRlcj4KKyAg
ICA8ZmlsdGVyIGlkPSJFcm9kZTAiPgorICAgICAgPGZlTW9ycGhvbG9neSBvcGVyYXRvcj0iZXJv
ZGUiIGluPSJTb3VyY2VHcmFwaGljIiByYWRpdXM9IjAiIC8+CisgICAgPC9maWx0ZXI+CisgICAg
PGZpbHRlciBpZD0iRXJvZGUxMCI+CisgICAgICA8ZmVNb3JwaG9sb2d5IG9wZXJhdG9yPSJlcm9k
ZSIgaW49IlNvdXJjZUdyYXBoaWMiIHJhZGl1cz0iMTAiIC8+CisgICAgPC9maWx0ZXI+CisgICAg
PGZpbHRlciBpZD0iRGlsYXRlLTEiPgorICAgICAgPGZlTW9ycGhvbG9neSBvcGVyYXRvcj0iZGls
YXRlIiBpbj0iU291cmNlR3JhcGhpYyIgcmFkaXVzPSItMSIgLz4KKyAgICA8L2ZpbHRlcj4KKyAg
ICA8ZmlsdGVyIGlkPSJEaWxhdGUwIj4KKyAgICAgIDxmZU1vcnBob2xvZ3kgb3BlcmF0b3I9ImRp
bGF0ZSIgaW49IlNvdXJjZUdyYXBoaWMiIHJhZGl1cz0iMCIgLz4KKyAgICA8L2ZpbHRlcj4KKyAg
ICA8ZmlsdGVyIGlkPSJEaWxhdGUxMCI+CisgICAgICA8ZmVNb3JwaG9sb2d5IG9wZXJhdG9yPSJk
aWxhdGUiIGluPSJTb3VyY2VHcmFwaGljIiByYWRpdXM9IjEwIiAvPgorICAgIDwvZmlsdGVyPgor
ICA8L2RlZnM+CisgIDxnIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMTAiPgorICAgIDxy
ZWN0IHg9ICIxMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJsaW1lIi8+
CisgICAgPHJlY3QgeD0iMTAiIHk9IjEzMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9
ImxpbWUiLz4KKworICAgIDwhLS0gbmVnYXRpdmUgcmFkaXVzIGNhc2UgLS0+CisgICAgPGc+Cisg
ICAgICA8cmVjdCB4PSIxNDAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0i
bGltZSIvPgorICAgICAgPHJlY3QgeD0iMTQwIiB5PSIxMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIx
MDAiIGZpbGw9InJlZCIgZmlsdGVyPSJ1cmwoI0Vyb2RlLTEpIi8+CisgICAgPC9nPgorCisgICAg
PGc+CisgICAgICA8cmVjdCB4PSIxNDAiIHk9IjEzMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAi
IGZpbGw9ImxpbWUiLz4KKyAgICAgIDxyZWN0IHg9IjE0MCIgeT0iMTMwIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCIgZmlsbD0icmVkIiBmaWx0ZXI9InVybCgjRGlsYXRlLTEpIi8+CisgICAgPC9n
PgorICAgIAorICAgIDwhLS0gemVybyByYWRpdXMgY2FzZSAtLT4KKyAgICA8cmVjdCB4PSAiMjcw
IiB5PSIxMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImxpbWUiIGZpbHRlcj0idXJs
KCNFcm9kZTApIi8+CisgICAgPHJlY3QgeD0iMjcwIiB5PSIxMzAiIHdpZHRoPSIxMDAiIGhlaWdo
dD0iMTAwIiBmaWxsPSJsaW1lIiBmaWx0ZXI9InVybCgjRGlsYXRlMCkiLz4KKyAgPC9nPgorCisg
IDwhLS0gcG9zaXRpdmUgcmFkaXVzIGNhc2UgYnV0IHNjYWxlZCBkb3duIHRvIGxlc3MgdGhhbiAx
ICh0cmVhdGVkIGFzIHplcm8gcmFkaXVzIGNhc2UpIC0tPgorICA8c3ZnIHg9IjQwMCIgeT0iMTAi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwMDAgMTAwMDAiPgorICAg
IDxnIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMTAwMCI+CisgICAgICA8cmVjdCB3aWR0
aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJsaW1lIiBmaWx0ZXI9InVybCgjRXJvZGUxMCki
Lz4KKyAgICA8L2c+CisgIDwvc3ZnPgorICA8c3ZnIHg9IjQwMCIgeT0iMTMwIiB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMDAwIDEwMDAwIj4KKyAgICA8ZyBzdHJva2U9
ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEwMDAiPgorICAgICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhl
aWdodD0iMTAwJSIgZmlsbD0ibGltZSIgZmlsdGVyPSJ1cmwoI0RpbGF0ZTEwKSIvPgorICAgIDwv
Zz4KKyAgPC9zdmc+CisKKyAgPCEtLSBwb3NpdGl2ZSByYWRpdXMgY2FzZSBidXQgaW5zaWRlIGEg
bmVzdGVkIHN2ZyAtLT4KKyAgPHN2ZyB4PSI1MzAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjEwMCI+CisgICAgPGcgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIxMCI+CisgICAgICA8
cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJsaW1lIiBmaWx0ZXI9InVybCgj
RXJvZGUxMCkiLz4KKyAgICA8L2c+CisgIDwvc3ZnPgorICA8c3ZnIHg9IjUzMCIgeT0iMTMwIiB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgorICAgIDxnIHN0
cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMTAiPgorICAgICAgPHJlY3Qgd2lkdGg9IjEwMCUi
IGhlaWdodD0iMTAwJSIgZmlsbD0ibGltZSIgZmlsdGVyPSJ1cmwoI0RpbGF0ZTEwKSIvPgorICAg
IDwvZz4KKyAgPC9zdmc+CisKKyAgPCEtLSBwb3NpdGl2ZSByYWRpdXMgY2FzZSAtLT4KKyAgPGcg
c3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIxMCI+CisgICAgPHJlY3QgeD0iNjYwIiB5PSIx
MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImxpbWUiIGZpbHRlcj0idXJsKCNFcm9k
ZTEwKSIvPgorICAgIDxyZWN0IHg9IjY2MCIgeT0iMTMwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgZmlsbD0ibGltZSIgZmlsdGVyPSJ1cmwoI0RpbGF0ZTEwKSIvPgorICA8L2c+Cis8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>249259</attachid>
            <date>2015-03-23 13:42:36 -0700</date>
            <delta_ts>2015-03-23 14:48:57 -0700</delta_ts>
            <desc>asymmetric test case</desc>
            <filename>feMorphology-radius-cases.svg</filename>
            <type>image/svg+xml</type>
            <size>346</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lk
dGg9IjEwMDAiIGhlaWdodD0iNTAwIj4KICA8ZGVmcz4KICAgIDxmaWx0ZXIgaWQ9IkVyb2RlMSI+
CiAgICAgIDxmZU1vcnBob2xvZ3kgb3BlcmF0b3I9ImVyb2RlIiBpbj0iU291cmNlR3JhcGhpYyIg
cmFkaXVzPSIxIiAvPgogICAgPC9maWx0ZXI+CiAgPC9kZWZzPgogIDxnIHN0cm9rZT0iYmxhY2si
IHN0cm9rZS13aWR0aD0iMiI+CiAgICA8cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIiBmaWxsPSJsaW1lIiBmaWx0ZXI9InVybCgjRXJvZGUxKSIvPgogIDwvZz4KPC9z
dmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>249277</attachid>
            <date>2015-03-23 14:49:37 -0700</date>
            <delta_ts>2015-03-23 14:49:37 -0700</delta_ts>
            <desc>zero radius test case</desc>
            <filename>feMorphology-radius-cases.svg</filename>
            <type>image/svg+xml</type>
            <size>1316</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lk
dGg9IjEwMDAiIGhlaWdodD0iNTAwIj4KICA8ZGVmcz4KICAgIDxmaWx0ZXIgaWQ9IkVyb2RlMCI+
CiAgICAgIDxmZU1vcnBob2xvZ3kgb3BlcmF0b3I9ImVyb2RlIiBpbj0iU291cmNlR3JhcGhpYyIg
cmFkaXVzPSIwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyIGlkPSJFcm9kZTEwIj4KICAg
ICAgPGZlTW9ycGhvbG9neSBvcGVyYXRvcj0iZXJvZGUiIGluPSJTb3VyY2VHcmFwaGljIiByYWRp
dXM9IjEwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyIGlkPSJEaWxhdGUwIj4KICAgICAg
PGZlTW9ycGhvbG9neSBvcGVyYXRvcj0iZGlsYXRlIiBpbj0iU291cmNlR3JhcGhpYyIgcmFkaXVz
PSIwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyIGlkPSJEaWxhdGUxMCI+CiAgICAgIDxm
ZU1vcnBob2xvZ3kgb3BlcmF0b3I9ImRpbGF0ZSIgaW49IlNvdXJjZUdyYXBoaWMiIHJhZGl1cz0i
MTAiIC8+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+CiAgPGcgc3Ryb2tlPSJibGFjayIgc3Ryb2tl
LXdpZHRoPSIxMCI+CiAgICA8IS0tIHplcm8gcmFkaXVzIGNhc2UgLS0+CiAgICA8cmVjdCB4PSIx
MCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJsaW1lIiBmaWx0ZXI9InVy
bCgjRXJvZGUwKSIvPgogICAgPHJlY3QgeD0iMTAiIHk9IjEzMCIgd2lkdGg9IjEwMCIgaGVpZ2h0
PSIxMDAiIGZpbGw9ImxpbWUiIGZpbHRlcj0idXJsKCNEaWxhdGUwKSIvPgogIDwvZz4KICA8IS0t
IHBvc2l0aXZlIHJhZGl1cyBjYXNlIGJ1dCBzY2FsZWQgZG93biB0byBsZXNzIHRoYW4gMSAodHJl
YXRlZCBhcyB6ZXJvIHJhZGl1cyBjYXNlKSAtLT4KICA8c3ZnIHg9IjEzMCIgeT0iMTAiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwMDAgMTAwMDAiPgogICAgPGcgc3Ry
b2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIxMDAwIj4KICAgICAgPHJlY3Qgd2lkdGg9IjEwMCUi
IGhlaWdodD0iMTAwJSIgZmlsbD0ibGltZSIgZmlsdGVyPSJ1cmwoI0Vyb2RlMTApIi8+CiAgICA8
L2c+CiAgPC9zdmc+CiAgPHN2ZyB4PSIxMzAiIHk9IjEzMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIx
MDAiIHZpZXdCb3g9IjAgMCAxMDAwMCAxMDAwMCI+CiAgICA8ZyBzdHJva2U9ImJsYWNrIiBzdHJv
a2Utd2lkdGg9IjEwMDAiPgogICAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBm
aWxsPSJsaW1lIiBmaWx0ZXI9InVybCgjRGlsYXRlMTApIi8+CiAgICA8L2c+CiAgPC9zdmc+Cjwv
c3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249539</attachid>
            <date>2015-03-26 16:29:21 -0700</date>
            <delta_ts>2015-03-27 10:03:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142885-20150326162842.patch</filename>
            <type>text/plain</type>
            <size>19097</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjAyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTAzLTI2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRkVNb3JwaG9s
b2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYygpIHNob3VsZCBiYWlsIG91dCBpZiB0aGUgcmFkaXVz
IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODg1LgorCisgICAgICAgIFJldmlld2VkIGJ5IERl
YW4gSmFja3Nvbi4KKworICAgICAgICBGRU1vcnBob2xvZ3kgY2xhc3MgaW1wbGVtZW50YXRpb24g
Y29kZSBjbGVhbiB1cC4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBzdmcvZmlsdGVycy9mZU1v
cnBob2xvZ3ktcmFkaXVzLWNhc2VzLnN2ZworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkU3VwZXJz
ZWRlRXh0cmVtdW0pOiBSZXVzZSBjb2RlIGluc3RlYWQgb2YgcmVwZWF0aW5nIGl0IGFuZAorICAg
ICAgICB1c2UgPCBhbmQgPiBpbnN0ZWFkIG9mID08IGFuZCA+PS4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpwaXhlbEFycmF5SW5kZXgpOiBSZXR1cm5zIHRoZSBhcnJheSBpbmRleCBvZiBh
IHBpeGVsIGluIGFuIGltYWdlCisgICAgICAgIGJ1ZmZlciwgZ2l2ZW46IHBvc2l0aW9uKHgsIHkp
LCBpbWFnZSB3aWR0aCBhbmQgdGhlIGNvbG9yIGNoYW5uZWwuCisgICAgICAgIAorICAgICAgICAo
V2ViQ29yZTo6Y29sdW1uRXh0cmVtdW0pOiBSZXR1cm5zIHRoZSBleHRyZW11bSBvZiBhIGNvbHVt
biBvZiBwaXhlbHMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6a2VybmVsRXh0cmVtdW0p
OiBSZXR1cm5zIHRoZSBleHRyZW11bSBvZiBhIGZpbHRlciBrZXJuZWwuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6IEFwcGx5
IHNvbWUgY29kZSBjbGVhbi11cC4KKyAgICAgICAgVGhlIGtlcm5lbCBzaXplIHNob3VsZCBiZSBl
cXVhbCB0byByYWRpdXMgb2YgdGhlIGZpbHRlci4gVGhlIGV4dHJhIHBpeGVsCisgICAgICAgIHdh
cyBjYXVzaW5nIHRoZSByZXN1bHRlZCBpbWFnZSB0byBiZSBhc3ltbWV0cmljIGluIHNvbWUgY2Fz
ZXMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFw
cGx5RGVnZW5lcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSk6IEFmdGVyIGFwcGx5aW5nIHNjYWxpbmcsIHdlCisgICAgICAgIHN0aWxs
IG5lZWQgdG8gY2hlY2sgdGhlIHJlc3VsdGVkIHJhZGl1cyBpcyBuZWdhdGl2ZSAob3ZlcmZsb3cg
Y2FzZSkgb3IgbGVzcworICAgICAgICB0aGFuIG9uZSAoemVybyByYWRpdXMgY2FzZSkgYW5kIHRy
ZWF0IHRoZXNlIGNhc2VzIGRpZmZlcmVudGx5LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6
OkZFTW9ycGhvbG9neTo6bW9ycGhvbG9neU9wZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkZFTW9ycGhvbG9neTo6cmFkaXVzWCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGRU1vcnBob2xvZ3k6OnJhZGl1c1kpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBo
b2xvZ3k6Om1vcnBob2xvZ3lPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xv
Z3k6OnJhZGl1c1gpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpyYWRpdXNZKToK
KyAgICAgICAgTW92ZSBhIHNpbmdsZSBsaW5lIGZ1bmN0aW9ucyBmcm9tIHRoZSBzb3VyY2UgZmls
ZSB0byB0aGUgaGVhZGVyIGZpbGUuCisKIDIwMTUtMDMtMjYgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHN0YXRlIG1hY2hpbmcgZGVidWdnaW5n
IGFmdGVyIHIxODE5NjQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAJKHJldmlzaW9uIDE4MjAyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDYgQEAgUmVmPEZFTW9ycGhvbG9neT4g
RkVNb3JwaG9sb2d5OjpjcmVhdGUoRgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFTW9ycGhv
bG9neShmaWx0ZXIsIHR5cGUsIHJhZGl1c1gsIHJhZGl1c1kpKTsKIH0KIAotTW9ycGhvbG9neU9w
ZXJhdG9yVHlwZSBGRU1vcnBob2xvZ3k6Om1vcnBob2xvZ3lPcGVyYXRvcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fdHlwZTsKLX0KLQogYm9vbCBGRU1vcnBob2xvZ3k6OnNldE1vcnBob2xvZ3lP
cGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1fdHlwZSA9
PSB0eXBlKQpAQCAtNTksMTEgKzU0LDYgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnNldE1vcnBob2xv
Z3lPcGVyYXRvcgogICAgIHJldHVybiB0cnVlOwogfQogCi1mbG9hdCBGRU1vcnBob2xvZ3k6OnJh
ZGl1c1goKSBjb25zdAotewotICAgIHJldHVybiBtX3JhZGl1c1g7Ci19Ci0KIGJvb2wgRkVNb3Jw
aG9sb2d5OjpzZXRSYWRpdXNYKGZsb2F0IHJhZGl1c1gpCiB7CiAgICAgaWYgKG1fcmFkaXVzWCA9
PSByYWRpdXNYKQpAQCAtNzIsOSArNjIsMTIgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1
c1goZmxvYXQgcmFkaQogICAgIHJldHVybiB0cnVlOwogfQogCi1mbG9hdCBGRU1vcnBob2xvZ3k6
OnJhZGl1c1koKSBjb25zdAorYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1koZmxvYXQgcmFk
aXVzWSkKIHsKLSAgICByZXR1cm4gbV9yYWRpdXNZOworICAgIGlmIChtX3JhZGl1c1kgPT0gcmFk
aXVzWSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fcmFkaXVzWSA9IHJhZGl1c1k7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgRkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCgpCkBAIC05MCw2NiArODMsNzcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVy
bWluZUFic29sdXRlUGFpbgogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QocGFpbnRSZWN0KSk7CiB9CiAKLWJvb2wgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKGZsb2F0
IHJhZGl1c1kpCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkU3VwZXJzZWRlRXh0cmVtdW0odW5z
aWduZWQgY2hhciBuZXdWYWx1ZSwgdW5zaWduZWQgY2hhciBjdXJyZW50VmFsdWUsIE1vcnBob2xv
Z3lPcGVyYXRvclR5cGUgdHlwZSkKIHsKLSAgICBpZiAobV9yYWRpdXNZID09IHJhZGl1c1kpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3JhZGl1c1kgPSByYWRpdXNZOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiAodHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUg
JiYgbmV3VmFsdWUgPCBjdXJyZW50VmFsdWUpCisgICAgICAgIHx8ICh0eXBlID09IEZFTU9SUEhP
TE9HWV9PUEVSQVRPUl9ESUxBVEUgJiYgbmV3VmFsdWUgPiBjdXJyZW50VmFsdWUpOworfQorCitz
dGF0aWMgaW5saW5lIGludCBwaXhlbEFycmF5SW5kZXgoaW50IHgsIGludCB5LCBpbnQgd2lkdGgs
IGludCBjb2xvckNoYW5uZWwpCit7CisgICAgcmV0dXJuICh5ICogd2lkdGggKyB4KSAqIDQgKyBj
b2xvckNoYW5uZWw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciBjb2x1bW5FeHRy
ZW11bShjb25zdCBVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgaW50IHgsIGludCB5
U3RhcnQsIGludCB5RW5kLCBpbnQgd2lkdGgsIHVuc2lnbmVkIGNvbG9yQ2hhbm5lbCwgTW9ycGhv
bG9neU9wZXJhdG9yVHlwZSB0eXBlKQoreworICAgIHVuc2lnbmVkIGNoYXIgZXh0cmVtdW0gPSBz
cmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsQXJyYXlJbmRleCh4LCB5U3RhcnQsIHdpZHRoLCBjb2xv
ckNoYW5uZWwpKTsKKyAgICBmb3IgKGludCB5ID0geVN0YXJ0ICsgMTsgeSA8IHlFbmQ7ICsreSkg
eworICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsID0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhl
bEFycmF5SW5kZXgoeCwgeSwgd2lkdGgsIGNvbG9yQ2hhbm5lbCkpOworICAgICAgICBpZiAoc2hv
dWxkU3VwZXJzZWRlRXh0cmVtdW0ocGl4ZWwsIGV4dHJlbXVtLCB0eXBlKSkKKyAgICAgICAgICAg
IGV4dHJlbXVtID0gcGl4ZWw7CisgICAgfQorICAgIHJldHVybiBleHRyZW11bTsKK30KKworc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBjaGFyIGtlcm5lbEV4dHJlbXVtKGNvbnN0IFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYga2VybmVsLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUpCit7CisgICAg
VmVjdG9yPHVuc2lnbmVkIGNoYXI+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0ga2VybmVsLmJlZ2lu
KCk7CisgICAgdW5zaWduZWQgY2hhciBleHRyZW11bSA9ICppdGVyOworICAgIGZvciAoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBrZXJuZWwuZW5kKCk7ICsraXRl
ciAhPSBlbmQ7ICkgeworICAgICAgICBpZiAoc2hvdWxkU3VwZXJzZWRlRXh0cmVtdW0oKml0ZXIs
IGV4dHJlbXVtLCB0eXBlKSkKKyAgICAgICAgICAgIGV4dHJlbXVtID0gKml0ZXI7CisgICAgfQor
ICAgIHJldHVybiBleHRyZW11bTsKIH0KIAogdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBw
bHlHZW5lcmljKFBhaW50aW5nRGF0YSogcGFpbnRpbmdEYXRhLCBpbnQgeVN0YXJ0LCBpbnQgeUVu
ZCkKIHsKICAgICBVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSA9IHBhaW50aW5nRGF0
YS0+c3JjUGl4ZWxBcnJheTsKICAgICBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9
IHBhaW50aW5nRGF0YS0+ZHN0UGl4ZWxBcnJheTsKLSAgICBjb25zdCBpbnQgd2lkdGggPSBwYWlu
dGluZ0RhdGEtPndpZHRoOwotICAgIGNvbnN0IGludCBoZWlnaHQgPSBwYWludGluZ0RhdGEtPmhl
aWdodDsKLSAgICBjb25zdCBpbnQgZWZmZWN0V2lkdGggPSB3aWR0aCAqIDQ7CiAgICAgY29uc3Qg
aW50IHJhZGl1c1ggPSBwYWludGluZ0RhdGEtPnJhZGl1c1g7CiAgICAgY29uc3QgaW50IHJhZGl1
c1kgPSBwYWludGluZ0RhdGEtPnJhZGl1c1k7CisgICAgY29uc3QgaW50IHdpZHRoID0gcGFpbnRp
bmdEYXRhLT53aWR0aDsKKyAgICBjb25zdCBpbnQgaGVpZ2h0ID0gcGFpbnRpbmdEYXRhLT5oZWln
aHQ7CisKKyAgICBBU1NFUlQocmFkaXVzWCA8PSB3aWR0aCB8fCByYWRpdXNZIDw9IGhlaWdodCk7
CisgICAgQVNTRVJUKHlTdGFydCA+PSAwICYmIHlFbmQgPD0gaGVpZ2h0ICYmIHlTdGFydCA8IHlF
bmQpOwogCiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IGV4dHJlbWE7CiAgICAgZm9yIChpbnQg
eSA9IHlTdGFydDsgeSA8IHlFbmQ7ICsreSkgewotICAgICAgICBpbnQgZXh0cmVtYVN0YXJ0WSA9
IHN0ZDo6bWF4KDAsIHkgLSByYWRpdXNZKTsKLSAgICAgICAgaW50IGV4dHJlbWFFbmRZID0gc3Rk
OjptaW4oaGVpZ2h0IC0gMSwgeSArIHJhZGl1c1kpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBjbHJDaGFubmVsID0gMDsgY2xyQ2hhbm5lbCA8IDQ7ICsrY2xyQ2hhbm5lbCkgeworICAgICAg
ICBpbnQgeVN0YXJ0RXh0cmVtYSA9IHN0ZDo6bWF4KDAsIHkgLSByYWRpdXNZKTsKKyAgICAgICAg
aW50IHlFbmRFeHRyZW1hID0gc3RkOjptaW4oaGVpZ2h0IC0gMSwgeSArIHJhZGl1c1kpOworCisg
ICAgICAgIGZvciAodW5zaWduZWQgY29sb3JDaGFubmVsID0gMDsgY29sb3JDaGFubmVsIDwgNDsg
Kytjb2xvckNoYW5uZWwpIHsKICAgICAgICAgICAgIGV4dHJlbWEuY2xlYXIoKTsKICAgICAgICAg
ICAgIC8vIENvbXB1dGUgZXh0cmVtYXMgZm9yIGVhY2ggY29sdW1ucwotICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPD0gcmFkaXVzWDsgKyt4KSB7Ci0gICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBjb2x1bW5FeHRyZW1hID0gc3JjUGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3RhcnRZ
ICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNsckNoYW5uZWwpOwotICAgICAgICAgICAgICAgIGZv
ciAoaW50IGVZID0gZXh0cmVtYVN0YXJ0WSArIDE7IGVZIDwgZXh0cmVtYUVuZFk7ICsrZVkpIHsK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBwaXhlbCA9IHNyY1BpeGVsQXJyYXkt
Pml0ZW0oZVkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hhbm5lbCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICgobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAmJiBw
aXhlbCA8PSBjb2x1bW5FeHRyZW1hKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fdHlw
ZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFICYmIHBpeGVsID49IGNvbHVtbkV4dHJl
bWEpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5FeHRyZW1hID0gcGl4ZWw7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBleHRyZW1hLmFwcGVuZChjb2x1bW5FeHRyZW1hKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgcmFkaXVzWDsgKyt4KQorICAgICAgICAgICAgICAgIGV4
dHJlbWEuYXBwZW5kKGNvbHVtbkV4dHJlbXVtKHNyY1BpeGVsQXJyYXksIHgsIHlTdGFydEV4dHJl
bWEsIHlFbmRFeHRyZW1hLCB3aWR0aCwgY29sb3JDaGFubmVsLCBtX3R5cGUpKTsKIAogICAgICAg
ICAgICAgLy8gS2VybmVsIGlzIGZpbGxlZCwgZ2V0IGV4dHJlbWEgb2YgbmV4dCBjb2x1bW4KICAg
ICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewotICAgICAgICAgICAg
ICAgIGNvbnN0IGludCBlbmRYID0gc3RkOjptaW4oeCArIHJhZGl1c1gsIHdpZHRoIC0gMSk7Ci0g
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2x1bW5FeHRyZW1hID0gc3JjUGl4ZWxBcnJh
eS0+aXRlbShleHRyZW1hU3RhcnRZICogZWZmZWN0V2lkdGggKyBlbmRYICogNCArIGNsckNoYW5u
ZWwpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBleHRyZW1hU3RhcnRZICsgMTsgaSA8
PSBleHRyZW1hRW5kWTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
cGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGkgKiBlZmZlY3RXaWR0aCArIGVuZFggKiA0ICsg
Y2xyQ2hhbm5lbCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgobV90eXBlID09IEZFTU9SUEhP
TE9HWV9PUEVSQVRPUl9FUk9ERSAmJiBwaXhlbCA8PSBjb2x1bW5FeHRyZW1hKQotICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRF
ICYmIHBpeGVsID49IGNvbHVtbkV4dHJlbWEpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uRXh0cmVtYSA9IHBpeGVsOworICAgICAgICAgICAgICAgIGlmICh4IDwgd2lkdGggLSByYWRp
dXNYKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB4RW5kID0gc3RkOjptaW4oeCArIHJhZGl1
c1gsIHdpZHRoIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGV4dHJlbWEuYXBwZW5kKGNvbHVt
bkV4dHJlbXVtKHNyY1BpeGVsQXJyYXksIHhFbmQsIHlTdGFydEV4dHJlbWEsIHlFbmRFeHRyZW1h
ICsgMSwgd2lkdGgsIGNvbG9yQ2hhbm5lbCwgbV90eXBlKSk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmICh4IC0gcmFkaXVzWCA+PSAwKQorCisgICAgICAgICAgICAgICAg
aWYgKHggPiByYWRpdXNYKQogICAgICAgICAgICAgICAgICAgICBleHRyZW1hLnJlbW92ZSgwKTsK
LSAgICAgICAgICAgICAgICBpZiAoeCArIHJhZGl1c1ggPD0gd2lkdGgpCi0gICAgICAgICAgICAg
ICAgICAgIGV4dHJlbWEuYXBwZW5kKGNvbHVtbkV4dHJlbWEpOwogCi0gICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBlbnRpcmVFeHRyZW1hID0gZXh0cmVtYVswXTsKLSAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGtlcm5lbEluZGV4ID0gMTsga2VybmVsSW5kZXggPCBleHRyZW1hLnNp
emUoKTsgKytrZXJuZWxJbmRleCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKG1fdHlwZSA9
PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgJiYgZXh0cmVtYVtrZXJuZWxJbmRleF0gPD0g
ZW50aXJlRXh0cmVtYSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3R5cGUgPT0gRkVN
T1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSAmJiBleHRyZW1hW2tlcm5lbEluZGV4XSA+PSBlbnRp
cmVFeHRyZW1hKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudGlyZUV4dHJlbWEgPSBleHRy
ZW1hW2tlcm5lbEluZGV4XTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZHN0
UGl4ZWxBcnJheS0+c2V0KHkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hhbm5lbCwgZW50
aXJlRXh0cmVtYSk7CisgICAgICAgICAgICAgICAgLy8gVGhlIGV4dHJlbWEgb3JpZ2luYWwgc2l6
ZSA9IHJhZGl1c1guCisgICAgICAgICAgICAgICAgLy8gTnVtYmVyIG9mIG5ldyBhZGRpdGlvbiA9
IHdpZHRoIC0gcmFkaXVzWC4KKyAgICAgICAgICAgICAgICAvLyBOdW1iZXIgb2YgcmVtb3ZhbHMg
PSB3aWR0aCAtIHJhZGl1c1ggLSAxLgorICAgICAgICAgICAgICAgIEFTU0VSVChleHRyZW1hLnNp
emUoKSA+PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHJhZGl1c1ggKyAxKSk7CisgICAgICAgICAgICAg
ICAgZHN0UGl4ZWxBcnJheS0+c2V0KHBpeGVsQXJyYXlJbmRleCh4LCB5LCB3aWR0aCwgY29sb3JD
aGFubmVsKSwga2VybmVsRXh0cmVtdW0oZXh0cmVtYSwgbV90eXBlKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CkBAIC0xODksNiArMTkzLDIzIEBAIHZvaWQgRkVNb3JwaG9sb2d5
OjpwbGF0Zm9ybUFwcGx5KFBhaW50aW4KICAgICBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhwYWludGlu
Z0RhdGEsIDAsIHBhaW50aW5nRGF0YS0+aGVpZ2h0KTsKIH0KIAorYm9vbCBGRU1vcnBob2xvZ3k6
OnBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5
LCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKK3sK
KyAgICAvLyBJbnB1dCByYWRpdXMgaXMgbGVzcyB0aGFuIHplcm8gb3IgYW4gb3ZlcmZsb3cgaGFw
cGVucyB3aGVuIHNjYWxpbmcgaXQuCisgICAgaWYgKHJhZGl1c1ggPCAwIHx8IHJhZGl1c1kgPCAw
KSB7CisgICAgICAgIGRzdFBpeGVsQXJyYXktPnplcm9GaWxsKCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIC8vIElucHV0IHJhZGl1cyBpcyBlcXVhbCB0byB6ZXJvIG9yIHRo
ZSBzY2FsZWQgcmFkaXVzIGlzIGxlc3MgdGhhbiBvbmUuCisgICAgaWYgKCFtX3JhZGl1c1ggfHwg
IW1fcmFkaXVzWSkgeworICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7
CisgICAgICAgIGluLT5jb3B5UHJlbXVsdGlwbGllZEltYWdlKGRzdFBpeGVsQXJyYXksIGltYWdl
UmVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KIAogdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CkBAIC0x
OTksMjUgKzIyMCwyOCBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
CiAgICAgICAgIHJldHVybjsKIAogICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdl
KCkpOwotICAgIGlmIChtX3JhZGl1c1ggPD0gMCB8fCBtX3JhZGl1c1kgPD0gMCkgewotICAgICAg
ICBkc3RQaXhlbEFycmF5LT56ZXJvRmlsbCgpOworCisgICAgSW50UmVjdCBlZmZlY3REcmF3aW5n
UmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpOworICAgIGlmIChwbGF0Zm9ybUFwcGx5RGVnZW5lcmF0ZShkc3RQaXhlbEFycmF5LCBl
ZmZlY3REcmF3aW5nUmVjdCwgbV9yYWRpdXNYLCBtX3JhZGl1c1kpKQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKKyAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoZWZmZWN0RHJhd2luZ1JlY3QpOwogICAgIGludCByYWRpdXNYID0gc3RhdGljX2Nhc3Q8
aW50PihmbG9vcmYoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fcmFkaXVzWCkpKTsKICAg
ICBpbnQgcmFkaXVzWSA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKGZpbHRlci5hcHBseVZlcnRp
Y2FsU2NhbGUobV9yYWRpdXNZKSkpOworICAgIHJhZGl1c1ggPSBzdGQ6Om1pbihlZmZlY3REcmF3
aW5nUmVjdC53aWR0aCgpIC0gMSwgcmFkaXVzWCk7CisgICAgcmFkaXVzWSA9IHN0ZDo6bWluKGVm
ZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpIC0gMSwgcmFkaXVzWSk7CiAKLSAgICBJbnRSZWN0IGVm
ZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhl
bEFycmF5ID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKKyAg
ICBpZiAocGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoZHN0UGl4ZWxBcnJheSwgZWZmZWN0RHJhd2lu
Z1JlY3QsIHJhZGl1c1gsIHJhZGl1c1kpKQorICAgICAgICByZXR1cm47CiAKICAgICBQYWludGlu
Z0RhdGEgcGFpbnRpbmdEYXRhOwogICAgIHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5ID0gc3Jj
UGl4ZWxBcnJheS5nZXQoKTsKICAgICBwYWludGluZ0RhdGEuZHN0UGl4ZWxBcnJheSA9IGRzdFBp
eGVsQXJyYXk7CiAgICAgcGFpbnRpbmdEYXRhLndpZHRoID0gZWZmZWN0RHJhd2luZ1JlY3Qud2lk
dGgoKTsKICAgICBwYWludGluZ0RhdGEuaGVpZ2h0ID0gZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0
KCk7Ci0gICAgcGFpbnRpbmdEYXRhLnJhZGl1c1ggPSBzdGQ6Om1pbihlZmZlY3REcmF3aW5nUmVj
dC53aWR0aCgpIC0gMSwgcmFkaXVzWCk7Ci0gICAgcGFpbnRpbmdEYXRhLnJhZGl1c1kgPSBzdGQ6
Om1pbihlZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKSAtIDEsIHJhZGl1c1kpOworICAgIHBhaW50
aW5nRGF0YS5yYWRpdXNYID0gcmFkaXVzWDsKKyAgICBwYWludGluZ0RhdGEucmFkaXVzWSA9IHJh
ZGl1c1k7CiAKICAgICBwbGF0Zm9ybUFwcGx5KCZwYWludGluZ0RhdGEpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9y
cGhvbG9neS5oCShyZXZpc2lvbiAxODIwMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyAr
MzYsMTQgQEAgZW51bSBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHsKIGNsYXNzIEZFTW9ycGhvbG9n
eSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RkVNb3Jw
aG9sb2d5PiBjcmVhdGUoRmlsdGVyKiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgZmxvYXQgcmFk
aXVzWCwgZmxvYXQgcmFkaXVzWSk7Ci0gICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtb3JwaG9s
b2d5T3BlcmF0b3IoKSBjb25zdDsKKworICAgIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgbW9ycGhv
bG9neU9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBzZXRNb3Jw
aG9sb2d5T3BlcmF0b3IoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSk7CiAKLSAgICBmbG9hdCByYWRp
dXNYKCkgY29uc3Q7CisgICAgZmxvYXQgcmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVz
WDsgfQogICAgIGJvb2wgc2V0UmFkaXVzWChmbG9hdCk7CiAKLSAgICBmbG9hdCByYWRpdXNZKCkg
Y29uc3Q7CisgICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWTsgfQog
ICAgIGJvb2wgc2V0UmFkaXVzWShmbG9hdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCk7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgdm9p
ZCBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhQYWludGluZ0RhdGEqLCBjb25zdCBpbnQgeVN0YXJ0LCBj
b25zdCBpbnQgeUVuZCk7CiBwcml2YXRlOgogICAgIEZFTW9ycGhvbG9neShGaWx0ZXIqLCBNb3Jw
aG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKKyAgICBi
b29sIHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFy
cmF5LCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSk7
CiAgICAgCiAgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtX3R5cGU7CiAgICAgZmxvYXQgbV9y
YWRpdXNYOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMDI4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDMtMjYgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBGRU1vcnBob2xv
Z3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKCkgc2hvdWxkIGJhaWwgb3V0IGlmIHRoZSByYWRpdXMg
aXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4ODUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVh
biBKYWNrc29uLgorCisgICAgICAgICogc3ZnL2ZpbHRlcnMvZmVNb3JwaG9sb2d5LXJhZGl1cy1j
YXNlcy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlTW9ycGhv
bG9neS1yYWRpdXMtY2FzZXMuc3ZnOiBBZGRlZC4KKyAgICAgICAgVGVzdCBkaWZmZXJlbnQgY2Fz
ZXMgZm9yIHJhZGl1cyBvZiB0aGUgZmVNb3JwaG9sb2d5IGZpbHRlci4gVGhlcmUgYXJlIHRocmVl
IAorICAgICAgICBjYXNlcyBmb3IgdGhlIHJhZGl1czoKKyAgICAgICAgICAgIDEuIHJhZGl1cyA8
IDA6IFRoaXMgaXMgYW4gZXJyb3IgY2FzZSwgdGhlIHNvdXJjZSBpbWFnZSBzaG91bGQgbm90IGJl
IHJlbmRlcmVkLgorICAgICAgICAgICAgMi4gcmFkaXVzID0gMDogVGhpcyBjYXNlIGlzIHRyZWF0
ZWQgYXMgaWYgdGhlIGZpbHRlciBuZXZlciBleGlzdHMuCisgICAgICAgICAgICAzLiByYWRpdXMg
PiAwOiBJZiB0aGUgc2NhbGVkIHJhZGl1cyBpcyA+IDAsIHRoZSBmaWx0ZXIgaXMgYXBwbGllZC4K
KwogMjAxNS0wMy0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQXBwbHkgQ29udGVudEV4dGVuc2lvbiBhY3Rpb25zIGFmdGVyIHJlZGlyZWN0cy4KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlTW9ycGhvbG9neS1yYWRpdXMtY2FzZXMtZXhwZWN0
ZWQuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlTW9ycGhvbG9n
eS1yYWRpdXMtY2FzZXMtZXhwZWN0ZWQuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
c3ZnL2ZpbHRlcnMvZmVNb3JwaG9sb2d5LXJhZGl1cy1jYXNlcy1leHBlY3RlZC5zdmcJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjEwMDAiIGhlaWdodD0iNTAwIj4KKyAgPGcg
c3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIxMCI+CisgICAgPHJlY3QgeD0gIjEwIiB5PSIx
MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImxpbWUiLz4KKyAgICA8cmVjdCB4PSIx
MCIgeT0iMTMwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0ibGltZSIvPgorICAgIDxy
ZWN0IHg9IjE0MCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJsaW1lIi8+
CisgICAgPHJlY3QgeD0iMTQwIiB5PSIxMzAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxs
PSJsaW1lIi8+CisgICAgPHJlY3QgeD0gIjI3MCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0i
MTAwIiBmaWxsPSJsaW1lIi8+CisgICAgPHJlY3QgeD0iMjcwIiB5PSIxMzAiIHdpZHRoPSIxMDAi
IGhlaWdodD0iMTAwIiBmaWxsPSJsaW1lIi8+CisgIDwvZz4KKworICA8c3ZnIHg9IjQwMCIgeT0i
MTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwMDAgMTAwMDAiPgor
ICAgIDxnIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMTAwMCI+CisgICAgICA8cmVjdCB3
aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJsaW1lIi8+CisgICAgPC9nPgorICA8L3N2
Zz4KKyAgPHN2ZyB4PSI0MDAiIHk9IjEzMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdC
b3g9IjAgMCAxMDAwMCAxMDAwMCI+CisgICAgPGcgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRo
PSIxMDAwIj4KKyAgICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9Imxp
bWUiLz4KKyAgICA8L2c+CisgIDwvc3ZnPgorCisgIDxzdmcgeD0iNTM1IiB5PSIxNSIgd2lkdGg9
IjkwIiBoZWlnaHQ9IjkwIj4KKyAgICA8ZyBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIw
Ij4KKyAgICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImxpbWUiLz4K
KyAgICA8L2c+CisgIDwvc3ZnPiAKKyAgPHN2ZyB4PSI1MzAiIHk9IjEzMCIgd2lkdGg9IjEwMCIg
aGVpZ2h0PSIxMDAiPgorICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9
ImxpbWUiLz4KKyAgPC9zdmc+CisKKyAgPHN2ZyB4PSI2NjUiIHk9IjE1IiB3aWR0aD0iOTAiIGhl
aWdodD0iOTAiPgorICAgIDxnIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMjAiPgorICAg
ICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0ibGltZSIvPgorICAgIDwv
Zz4KKyAgPC9zdmc+CisgIDxzdmcgeD0iNjUwIiB5PSIxMjAiIHdpZHRoPSIxMjAiIGhlaWdodD0i
MTIwIj4KKyAgICA8ZyBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEwIj4KKyAgICAgIDxy
ZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImxpbWUiLz4KKyAgICA8L2c+Cisg
IDwvc3ZnPgorPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZU1vcnBob2xv
Z3ktcmFkaXVzLWNhc2VzLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVy
cy9mZU1vcnBob2xvZ3ktcmFkaXVzLWNhc2VzLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3N2Zy9maWx0ZXJzL2ZlTW9ycGhvbG9neS1yYWRpdXMtY2FzZXMuc3ZnCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjUwMCI+CisgIDxkZWZzPgor
ICAgIDxmaWx0ZXIgaWQ9IkVyb2RlLTEiPgorICAgICAgPGZlTW9ycGhvbG9neSBvcGVyYXRvcj0i
ZXJvZGUiIGluPSJTb3VyY2VHcmFwaGljIiByYWRpdXM9Ii0xIiAvPgorICAgIDwvZmlsdGVyPgor
ICAgIDxmaWx0ZXIgaWQ9IkVyb2RlMCI+CisgICAgICA8ZmVNb3JwaG9sb2d5IG9wZXJhdG9yPSJl
cm9kZSIgaW49IlNvdXJjZUdyYXBoaWMiIHJhZGl1cz0iMCIgLz4KKyAgICA8L2ZpbHRlcj4KKyAg
ICA8ZmlsdGVyIGlkPSJFcm9kZTEwIj4KKyAgICAgIDxmZU1vcnBob2xvZ3kgb3BlcmF0b3I9ImVy
b2RlIiBpbj0iU291cmNlR3JhcGhpYyIgcmFkaXVzPSIxMCIgLz4KKyAgICA8L2ZpbHRlcj4KKyAg
ICA8ZmlsdGVyIGlkPSJEaWxhdGUtMSI+CisgICAgICA8ZmVNb3JwaG9sb2d5IG9wZXJhdG9yPSJk
aWxhdGUiIGluPSJTb3VyY2VHcmFwaGljIiByYWRpdXM9Ii0xIiAvPgorICAgIDwvZmlsdGVyPgor
ICAgIDxmaWx0ZXIgaWQ9IkRpbGF0ZTAiPgorICAgICAgPGZlTW9ycGhvbG9neSBvcGVyYXRvcj0i
ZGlsYXRlIiBpbj0iU291cmNlR3JhcGhpYyIgcmFkaXVzPSIwIiAvPgorICAgIDwvZmlsdGVyPgor
ICAgIDxmaWx0ZXIgaWQ9IkRpbGF0ZTEwIj4KKyAgICAgIDxmZU1vcnBob2xvZ3kgb3BlcmF0b3I9
ImRpbGF0ZSIgaW49IlNvdXJjZUdyYXBoaWMiIHJhZGl1cz0iMTAiIC8+CisgICAgPC9maWx0ZXI+
CisgIDwvZGVmcz4KKyAgPGcgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIxMCI+CisgICAg
PHJlY3QgeD0gIjEwIiB5PSIxMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImxpbWUi
Lz4KKyAgICA8cmVjdCB4PSIxMCIgeT0iMTMwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmls
bD0ibGltZSIvPgorCisgICAgPCEtLSBuZWdhdGl2ZSByYWRpdXMgY2FzZSAtLT4KKyAgICA8Zz4K
KyAgICAgIDxyZWN0IHg9IjE0MCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxs
PSJsaW1lIi8+CisgICAgICA8cmVjdCB4PSIxNDAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjEwMCIgZmlsbD0icmVkIiBmaWx0ZXI9InVybCgjRXJvZGUtMSkiLz4KKyAgICA8L2c+CisKKyAg
ICA8Zz4KKyAgICAgIDxyZWN0IHg9IjE0MCIgeT0iMTMwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgZmlsbD0ibGltZSIvPgorICAgICAgPHJlY3QgeD0iMTQwIiB5PSIxMzAiIHdpZHRoPSIxMDAi
IGhlaWdodD0iMTAwIiBmaWxsPSJyZWQiIGZpbHRlcj0idXJsKCNEaWxhdGUtMSkiLz4KKyAgICA8
L2c+CisgICAgCisgICAgPCEtLSB6ZXJvIHJhZGl1cyBjYXNlIC0tPgorICAgIDxyZWN0IHg9ICIy
NzAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0ibGltZSIgZmlsdGVyPSJ1
cmwoI0Vyb2RlMCkiLz4KKyAgICA8cmVjdCB4PSIyNzAiIHk9IjEzMCIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSIxMDAiIGZpbGw9ImxpbWUiIGZpbHRlcj0idXJsKCNEaWxhdGUwKSIvPgorICA8L2c+CisK
KyAgPCEtLSBwb3NpdGl2ZSByYWRpdXMgY2FzZSBidXQgc2NhbGVkIGRvd24gdG8gbGVzcyB0aGFu
IDEgKHRyZWF0ZWQgYXMgemVybyByYWRpdXMgY2FzZSkgLS0+CisgIDxzdmcgeD0iNDAwIiB5PSIx
MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAwMCAxMDAwMCI+Cisg
ICAgPGcgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIxMDAwIj4KKyAgICAgIDxyZWN0IHdp
ZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImxpbWUiIGZpbHRlcj0idXJsKCNFcm9kZTEw
KSIvPgorICAgIDwvZz4KKyAgPC9zdmc+CisgIDxzdmcgeD0iNDAwIiB5PSIxMzAiIHdpZHRoPSIx
MDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwMDAgMTAwMDAiPgorICAgIDxnIHN0cm9r
ZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMTAwMCI+CisgICAgICA8cmVjdCB3aWR0aD0iMTAwJSIg
aGVpZ2h0PSIxMDAlIiBmaWxsPSJsaW1lIiBmaWx0ZXI9InVybCgjRGlsYXRlMTApIi8+CisgICAg
PC9nPgorICA8L3N2Zz4KKworICA8IS0tIHBvc2l0aXZlIHJhZGl1cyBjYXNlIGJ1dCBpbnNpZGUg
YSBuZXN0ZWQgc3ZnIC0tPgorICA8c3ZnIHg9IjUzMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdo
dD0iMTAwIj4KKyAgICA8ZyBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEwIj4KKyAgICAg
IDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImxpbWUiIGZpbHRlcj0idXJs
KCNFcm9kZTEwKSIvPgorICAgIDwvZz4KKyAgPC9zdmc+CisgIDxzdmcgeD0iNTMwIiB5PSIxMzAi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CisgICAgPGcg
c3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIxMCI+CisgICAgICA8cmVjdCB3aWR0aD0iMTAw
JSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJsaW1lIiBmaWx0ZXI9InVybCgjRGlsYXRlMTApIi8+Cisg
ICAgPC9nPgorICA8L3N2Zz4KKworICA8IS0tIHBvc2l0aXZlIHJhZGl1cyBjYXNlIC0tPgorICA8
ZyBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEwIj4KKyAgICA8cmVjdCB4PSI2NjAiIHk9
IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0ibGltZSIgZmlsdGVyPSJ1cmwoI0Vy
b2RlMTApIi8+CisgICAgPHJlY3QgeD0iNjYwIiB5PSIxMzAiIHdpZHRoPSIxMDAiIGhlaWdodD0i
MTAwIiBmaWxsPSJsaW1lIiBmaWx0ZXI9InVybCgjRGlsYXRlMTApIi8+CisgIDwvZz4KKzwvc3Zn
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>