<?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>32346</bug_id>
          
          <creation_ts>2009-12-09 14:21:33 -0800</creation_ts>
          <short_desc>SVG property -webkit-shadow should apply shadow on the result after compositing</short_desc>
          <delta_ts>2009-12-28 23:32:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>170170</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-09 14:21:33 -0800</bug_when>
    <thetext>* STEPS TO REPRODUCE
1. create an svg shape with stroke (preferably, thick stroke) and solid fill
2. apply -webkit-shadow on the &lt;svg&gt; container

* RESULTS
Currently, the shadows are applied seperately to the stroke and fill

*EXPECTED RESULTS
The shadow should apply to the composite of the stroke and fill

&lt;rdar://problem/7389404&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170181</commentid>
    <comment_count>1</comment_count>
      <attachid>44563</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-09 14:33:42 -0800</bug_when>
    <thetext>Created attachment 44563
Patch

Patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170255</commentid>
    <comment_count>2</comment_count>
      <attachid>44563</attachid>
    <who name="">mitz</who>
    <bug_when>2009-12-09 17:07:19 -0800</bug_when>
    <thetext>Comment on attachment 44563
Patch

I wonder if this can’t be done more efficiently:
1) Clip to the bounding box (perhaps adjusted to encompass the shadow?) before beginning the transparency layer, to get the layer to have the optimal size (like we do for opacity)
2) If we have both opacity and a shadow, use a single transparency layer for both (perhaps requires multiplying the shadow’s alpha by the opacity?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170289</commentid>
    <comment_count>3</comment_count>
      <attachid>44589</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-09 19:16:09 -0800</bug_when>
    <thetext>Created attachment 44589
New patch

Here&apos;s a new patch that addresses Dan&apos;s comments. I clipped the transparency layer to the size of the shadow, but I was not able to use a single transparency layer for both opacity and shadows. When I tried to use a single layer, the color of the shadow (which *was* at the correct alpha level) was visible behind the partially-transparent fill color. This seems wrong since it is not the behavior of box-shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170290</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-09 19:20:59 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44589 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170316</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-09 22:08:12 -0800</bug_when>
    <thetext>Fixed with r51936.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170664</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-12-11 03:08:55 -0800</bug_when>
    <thetext>*** Bug 30930 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170674</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-12-11 04:05:02 -0800</bug_when>
    <thetext>Just noticed, that this patch does not fix the shadow problem on Gtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170864</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-11 11:46:03 -0800</bug_when>
    <thetext>In the CG, transparency layers specifically apply to shadows. The CG documentation says:

&quot;After the transparency layer is ended, the result is composited into the context using the global alpha and shadow state of the context. &quot;

My guess is that the same is not true for the GTK-equivalent. We may need a fancier solution there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170875</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-12-11 12:47:24 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; In the CG, transparency layers specifically apply to shadows. The CG
&gt; documentation says:
&gt; 
&gt; &quot;After the transparency layer is ended, the result is composited into the
&gt; context using the global alpha and shadow state of the context. &quot;
&gt; 
&gt; My guess is that the same is not true for the GTK-equivalent. We may need a
&gt; fancier solution there.

On Gtk we draw the shadow just a moment before we have a drawing operation (fillPath, strokePath, drawPath, drawImage, drawLine, ...) independent of the transparency layer.
A partly fix would be to solve bug 6564 and use drawPath to draw the stroke and fill at once. This won&apos;t fix shadows on stroked/filled texts and stroked images on SVG.

I think Qt has the same problem and I don&apos;t know how the shadow system of Skia works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171884</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-12-15 08:59:15 -0800</bug_when>
    <thetext>T(In reply to comment #3)
&gt; Created an attachment (id=44589) [details]
&gt; New patch

The patch is responsible for a regression on svg/filters/shadow-on-rect-with-filter.svg.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172056</commentid>
    <comment_count>11</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-15 14:57:48 -0800</bug_when>
    <thetext>Oh no! I see it now. The test fails in the pixel test only. Looks like the bounding box is clipping away far too much here. opacity has the same problem actually; in other words, if you replace the shadow style in that test case with &quot;opacity: 0.5,&quot; we clip too much in the same way. This deserves a new bug report, especially since it is not unique to this patch or shadows. Filing one now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172061</commentid>
    <comment_count>12</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-15 15:02:15 -0800</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=32584</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175422</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 22:42:11 -0800</bug_when>
    <thetext>Attachment 44589 was posted by a committer and has review+, assigning to Beth Dakin for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175445</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 23:32:23 -0800</bug_when>
    <thetext>Looks like this was already landed as r51936.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44563</attachid>
            <date>2009-12-09 14:33:42 -0800</date>
            <delta_ts>2009-12-09 19:16:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>forReview.txt</filename>
            <type>text/plain</type>
            <size>14478</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTkyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTItMDkgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyMzQ2IFNWRyBwcm9wZXJ0eSAKKyAgICAgICAgLXdlYmtpdC1zaGFkb3cgc2hvdWxkIGFw
cGx5IHNoYWRvdyBvbiB0aGUgcmVzdWx0IGFmdGVyIGNvbXBvc2l0aW5nCisgICAgICAgIC1hbmQg
Y29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczODk0MDQ+CisKKyAgICAg
ICAgU2V0IGEgdHJhbnNwYXJlbmN5IGxheWVyIHdoZW4gc2V0dGluZyBhIHNoYWRvdyB0byBhcHBs
eSB0aGUgc2hhZG93IAorICAgICAgICB0byB0aGUgY29tcG9zaXRlLgorICAgICAgICAqIHJlbmRl
cmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJh
c2U6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCk6CisKIDIwMDktMTItMDkgIFJvYmVydCBI
b2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkocmV2
aXNpb24gNTE5MTEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsMTAgQEAgdm9pZCBTVkdSZW5kZXJCYXNlOjpwcmVw
YXJlVG9SZW5kZXJTVkdDbwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihvcGFjaXR5KTsKICAgICB9CiAKLSAgICBpZiAoU2hhZG93RGF0YSogc2hhZG93
ID0gc3ZnU3R5bGUtPnNoYWRvdygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U2hh
ZG93KEludFNpemUoc2hhZG93LT54LCBzaGFkb3ctPnkpLCBzaGFkb3ctPmJsdXIsIHNoYWRvdy0+
Y29sb3IsIHN0eWxlLT5jb2xvclNwYWNlKCkpOyAKKyAgICBpZiAoU2hhZG93RGF0YSogc2hhZG93
ID0gc3ZnU3R5bGUtPnNoYWRvdygpKSB7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRT
aGFkb3coSW50U2l6ZShzaGFkb3ctPngsIHNoYWRvdy0+eSksIHNoYWRvdy0+Ymx1ciwgc2hhZG93
LT5jb2xvciwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMGYpOworICAgIH0KIAogI2lmIEVOQUJMRShGSUxU
RVJTKQogICAgIEF0b21pY1N0cmluZyBmaWx0ZXJJZChzdmdTdHlsZS0+ZmlsdGVyKCkpOwpAQCAt
MTYzLDYgKzE2NSwxMSBAQCB2b2lkIFNWR1JlbmRlckJhc2U6OmZpbmlzaFJlbmRlclNWR0NvbnRl
CiAgICAgZmxvYXQgb3BhY2l0eSA9IHN0eWxlLT5vcGFjaXR5KCk7ICAgIAogICAgIGlmIChvcGFj
aXR5IDwgMS4wZikKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxh
eWVyKCk7CisKKyAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgc2VwYXJhdGVseSBmcm9tIG9w
YWNpdHksIGJlY2F1c2UgaWYgYm90aCBwcm9wZXJ0aWVzIGFyZSBzZXQsCisgICAgLy8gdGhlbiB0
aGUgdHJhbnNwYXJlbmN5IGxheWVycyBhcmUgbmVzdGVkLiAKKyAgICBpZiAoc3R5bGUtPnN2Z1N0
eWxlKCktPnNoYWRvdygpKQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKIH0KIAogdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZShJbWFnZUJ1ZmZlciog
aW1hZ2UsIFJlbmRlck9iamVjdCogaXRlbSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxOTIzKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MDktMTItMDkgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzNDYgU1ZHIAorICAgICAgICBwcm9wZXJ0eSAt
d2Via2l0LXNoYWRvdyBzaG91bGQgYXBwbHkgc2hhZG93IG9uIHRoZSByZXN1bHQgYWZ0ZXIgCisg
ICAgICAgIGNvbXBvc2l0aW5nCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzczODk0MDQ+CisKKyAgICAgICAgTmV3IHRlc3RzOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS1leHBlY3RlZC5j
aGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRl
LXNoYWRvdy1leGFtcGxlLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy13aXRoLW9w
YWNpdHktZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9z
dmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctd2l0aC1vcGFjaXR5LWV4cGVjdGVkLnBuZzogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy13aXRoLW9w
YWNpdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL2NvbXBvc2l0ZS1z
aGFkb3ctZXhhbXBsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL2NvbXBvc2l0ZS1z
aGFkb3ctd2l0aC1vcGFjaXR5Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIE5ldyBhbmQgaW1wcm92
ZWQgcmVzdWx0czoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9ncm91cC13aXRoLXNo
YWRvdy1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9n
cm91cC13aXRoLXNoYWRvdy1leHBlY3RlZC5wbmc6CisKIDIwMDktMTItMDkgIEd1c3Rhdm8gTm9y
b25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAg
U2tpcCBhIGZhaWxpbmcgdGVzdCB0aGF0IG5lZWRzIERSVCBzdXBwb3J0IHRvIG92ZXJyaWRlIHN0
YW5kYXJkCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9jb21wb3NpdGUt
c2hhZG93LWV4YW1wbGUtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxlLWV4cGVjdGVk
LmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9j
c3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxlLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACitiZTM5YmQzNWUxMjgyZTdjYTAxYzgwMTc2OTY5MmE0YwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcv
Y3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9z
dmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTIgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDYxNgorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NjE2Cisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MTYKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg2MDAKKyAgICAgIFJlbmRlclNWR1Jvb3Qge3N2Z30g
YXQgKDQwLjE5LDM2LjcwKSBzaXplIDQxMy40M3gxMjguOTgKKyAgICAgICAgUmVuZGVyU1ZHQ29u
dGFpbmVyIHtnfSBhdCAoNDAuMTksMzYuNzApIHNpemUgMTM1LjYyeDEyOC45OAorICAgICAgICAg
IFJlbmRlclBhdGgge3BhdGh9IGF0ICg0MC4xOSwzNi43MCkgc2l6ZSAxMzUuNjJ4MTI4Ljk4IFt0
cmFuc2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDEwMC4wMCwxMDAuMDApfV0g
W3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMDAwXSBbc3Ryb2tlIHdpZHRoPTEwLjAw
XX1dIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSM5OTk5OTldfV0gW2RhdGE9Ik0wLjAwLDMw
LjAwIEwtMzUuMjcsNDguNTQgTC0yOC41Myw5LjI3IEwtNTcuMDYsLTE4LjU0IEwtMTcuNjMsLTI0
LjI3IEwtMC4wMCwtNjAuMDAgTDE3LjYzLC0yNC4yNyBMNTcuMDYsLTE4LjU0IEwyOC41Myw5LjI3
IEwzNS4yNyw0OC41NCBaIl0KKyAgICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMjAw
LjY4LDQ2LjQ5KSBzaXplIDExNy4wOXgxMTMuODMKKyAgICAgICAgICBSZW5kZXJQYXRoIHtwYXRo
fSBhdCAoMjAwLjY4LDQ2LjQ5KSBzaXplIDExNy4wOXgxMTMuODMgW3RyYW5zZm9ybT17bT0oKDEu
MDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMjUwLjAwLDEwMC4wMCl9XSBbc3Ryb2tlPXtbdHlwZT1T
T0xJRF0gW2NvbG9yPSMwMDAwMDBdIFtzdHJva2Ugd2lkdGg9MTAuMDBdIFtkYXNoIGFycmF5PXsy
MC4wMH1dfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9Izk5OTk5OV19XSBbZGF0YT0iTTAu
MDAsMzAuMDAgTC0zNS4yNyw0OC41NCBMLTI4LjUzLDkuMjcgTC01Ny4wNiwtMTguNTQgTC0xNy42
MywtMjQuMjcgTC0wLjAwLC02MC4wMCBMMTcuNjMsLTI0LjI3IEw1Ny4wNiwtMTguNTQgTDI4LjUz
LDkuMjcgTDM1LjI3LDQ4LjU0IFoiXQorICAgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0
ICgzNDkuNzAsNDYuNzApIHNpemUgMTAzLjkxeDExMC44OQorICAgICAgICAgIFJlbmRlclBhdGgg
e3BhdGh9IGF0ICgzNDkuNzAsNDYuNzApIHNpemUgMTAzLjkxeDExMC44OSBbdHJhbnNmb3JtPXtt
PSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSg0MDAuMDAsMTAwLjAwKX1dIFtzdHJva2U9e1t0
eXBlPVNPTElEXSBbY29sb3I9IzAwMDAwMF0gW3N0cm9rZSB3aWR0aD0xMC4wMF0gW2Rhc2ggYXJy
YXk9ezIwLjAwfV19XSBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jOTk5OTk5XX1dIFtkYXRh
PSJNMC4wMCwyNS4wMCBMLTI5LjM5LDQwLjQ1IEwtMjMuNzgsNy43MyBMLTQ3LjU1LC0xNS40NSBM
LTE0LjY5LC0yMC4yMyBMLTAuMDAsLTUwLjAwIEwxNC42OSwtMjAuMjMgTDQ3LjU1LC0xNS40NSBM
MjMuNzgsNy43MyBMMjkuMzksNDAuNDUgWiJdCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2Nzcy9jb21wb3NpdGUtc2hhZG93LXdpdGgtb3BhY2l0eS1leHBlY3RlZC5jaGVja3N1
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9jb21wb3Np
dGUtc2hhZG93LXdpdGgtb3BhY2l0eS1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctd2l0aC1v
cGFjaXR5LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACiszMTI1
YmY1ODg4Njg0YzQ3YzMyOTc4ZjUwOTQyMWM4YQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ct
d2l0aC1vcGFjaXR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvc3ZnL2Nzcy9jb21wb3NpdGUtc2hhZG93LXdpdGgtb3BhY2l0eS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9jb21w
b3NpdGUtc2hhZG93LXdpdGgtb3BhY2l0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTMgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDYxNgorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NjE2CisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MTYKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc2OXg2MDAKK2xheWVyIGF0ICg4LDgpIHNpemUgNzY5eDYwMAorICBS
ZW5kZXJTVkdSb290IHtzdmd9IGF0ICg0MC4xOSwzNi43MCkgc2l6ZSA0MTMuNDN4MTI4Ljk4IFtv
cGFjaXR5PTAuNTBdCisgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoNDAuMTksMzYuNzAp
IHNpemUgMTM1LjYyeDEyOC45OAorICAgICAgUmVuZGVyUGF0aCB7cGF0aH0gYXQgKDQwLjE5LDM2
LjcwKSBzaXplIDEzNS42MngxMjguOTggW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwx
LjAwKSkgdD0oMTAwLjAwLDEwMC4wMCl9XSBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMw
MDAwMDBdIFtzdHJva2Ugd2lkdGg9MTAuMDBdfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9
Izk5OTk5OV19XSBbZGF0YT0iTTAuMDAsMzAuMDAgTC0zNS4yNyw0OC41NCBMLTI4LjUzLDkuMjcg
TC01Ny4wNiwtMTguNTQgTC0xNy42MywtMjQuMjcgTC0wLjAwLC02MC4wMCBMMTcuNjMsLTI0LjI3
IEw1Ny4wNiwtMTguNTQgTDI4LjUzLDkuMjcgTDM1LjI3LDQ4LjU0IFoiXQorICAgIFJlbmRlclNW
R0NvbnRhaW5lciB7Z30gYXQgKDIwMC42OCw0Ni40OSkgc2l6ZSAxMTcuMDl4MTEzLjgzCisgICAg
ICBSZW5kZXJQYXRoIHtwYXRofSBhdCAoMjAwLjY4LDQ2LjQ5KSBzaXplIDExNy4wOXgxMTMuODMg
W3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMjUwLjAwLDEwMC4wMCl9
XSBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdIFtzdHJva2Ugd2lkdGg9MTAu
MDBdIFtkYXNoIGFycmF5PXsyMC4wMH1dfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9Izk5
OTk5OV19XSBbZGF0YT0iTTAuMDAsMzAuMDAgTC0zNS4yNyw0OC41NCBMLTI4LjUzLDkuMjcgTC01
Ny4wNiwtMTguNTQgTC0xNy42MywtMjQuMjcgTC0wLjAwLC02MC4wMCBMMTcuNjMsLTI0LjI3IEw1
Ny4wNiwtMTguNTQgTDI4LjUzLDkuMjcgTDM1LjI3LDQ4LjU0IFoiXQorICAgIFJlbmRlclNWR0Nv
bnRhaW5lciB7Z30gYXQgKDM0OS43MCw0Ni43MCkgc2l6ZSAxMDMuOTF4MTEwLjg5CisgICAgICBS
ZW5kZXJQYXRoIHtwYXRofSBhdCAoMzQ5LjcwLDQ2LjcwKSBzaXplIDEwMy45MXgxMTAuODkgW3Ry
YW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oNDAwLjAwLDEwMC4wMCl9XSBb
c3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdIFtzdHJva2Ugd2lkdGg9MTAuMDBd
IFtkYXNoIGFycmF5PXsyMC4wMH1dfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9Izk5OTk5
OV19XSBbZGF0YT0iTTAuMDAsMjUuMDAgTC0yOS4zOSw0MC40NSBMLTIzLjc4LDcuNzMgTC00Ny41
NSwtMTUuNDUgTC0xNC42OSwtMjAuMjMgTC0wLjAwLC01MC4wMCBMMTQuNjksLTIwLjIzIEw0Ny41
NSwtMTUuNDUgTDIzLjc4LDcuNzMgTDI5LjM5LDQwLjQ1IFoiXQpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ3JvdXAtd2l0aC1zaGFkb3ctZXhwZWN0ZWQuY2hlY2tzdW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ3JvdXAtd2l0
aC1zaGFkb3ctZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDUxOTExKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ3JvdXAtd2l0aC1zaGFkb3ctZXhwZWN0ZWQuY2hlY2tz
dW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTkxNWM1MTRiNzg1NTk2MGE3NmM1MWUzNDFk
YjlmYWQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZTVkNjAwODVjZmJhMGYxNDkzOGVh
NmE5ZjhiNWQ5ODkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxlLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBs
YW5ndWFnZT0iamF2YXNjcmlwdCI+Cis8IS0tCisKK1NWR19OUyA9ICdodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2Zyc7CisKK2Z1bmN0aW9uIHBhdGhGcm9tU3RhciAocmFkaXVzLCBpbm5lclJhZGl1
cywgc2lkZXMpIHsKKyAgICB2YXIgcGF0aCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c2lkZXMgKiAyOyArK2kpIHsKKyAgICAgICAgdmFyIHRoZXRhID0gTWF0aC5QSSAqIGkgLyBzaWRl
cyArIChNYXRoLlBJIC8gMik7CisgICAgICAgIHZhciByID0gKGkgJSAyKSA/IHJhZGl1cyA6IGlu
bmVyUmFkaXVzOworICAgICAgICB2YXIgeCA9IHIgKiBNYXRoLmNvcyh0aGV0YSk7CisgICAgICAg
IHZhciB5ID0gciAqIE1hdGguc2luKHRoZXRhKTsKKyAgICAgICAgcGF0aC5wdXNoKChpID8gJ0wn
IDogJ00nKSwgeCwgeSk7CisgICAgfQorICAgIHBhdGgucHVzaCgnWicpOworICAgIHJldHVybiBw
YXRoLmpvaW4oJyAnKTsKK30KKworZnVuY3Rpb24gbmV3U3ZnRWxlbWVudCAodGFnTmFtZSwgcGFy
ZW50Tm9kZSwgYXR0cnMpIHsKKyAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UyhTVkdfTlMsIHRhZ05hbWUpOworICAgIGlmIChhdHRycykgeworICAgICAgICBmb3IgKHZhciBr
IGluIGF0dHJzKSB7CisgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShrLCBhdHRyc1trXSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBhcmVudE5vZGUpIHsKKyAgICAgICAgcGFyZW50
Tm9kZS5hcHBlbmRDaGlsZChub2RlKTsKKyAgICB9CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK2Z1
bmN0aW9uIHNldENlbnRlclBvc2l0aW9uIChub2RlLCB4LCB5KSB7CisgICAgbm9kZS5zZXRBdHRy
aWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJDEsICQyKScKKyAgICAgICAgLnJlcGxhY2Uo
JyQxJywgeCkKKyAgICAgICAgLnJlcGxhY2UoJyQyJywgeSkpOworfQorCit2YXIgYXJtZWQgPSBu
dWxsOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHsKKwor
ICAgIHZhciBzdmdDb250YWluZXIgPSBuZXdTdmdFbGVtZW50KCdzdmcnLCBkb2N1bWVudC5ib2R5
KTsKKyAgICB2YXIgc2hhcGVzID0gWworICAgICAgICB7IHBvczogWyAxMDAsIDEwMCBdLCBzaXpl
OiA2MCwgaGFzU3Ryb2tlOiBmYWxzZSB9LAorICAgICAgICB7IHBvczogWyAyNTAsIDEwMCBdLCBz
aXplOiA2MCwgaGFzU3Ryb2tlOiB0cnVlIH0sCisgICAgICAgIHsgcG9zOiBbIDQwMCwgMTAwIF0s
IHNpemU6IDUwLCBoYXNTdHJva2U6IHRydWUgfQorICAgIF07CisJc3ZnQ29udGFpbmVyLnN0eWxl
LldlYmtpdFNoYWRvdyA9ICc1cHggNXB4IDVweCByZWQnOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2hhcGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBzaGFwZSA9IHNoYXBlc1tpXTsK
KwkJdmFyIGdyb3VwID0gbmV3U3ZnRWxlbWVudCgnZycsIHN2Z0NvbnRhaW5lcik7CisgICAgICAg
IHZhciBub2RlID0gbmV3U3ZnRWxlbWVudCgncGF0aCcsIGdyb3VwLCB7CisgICAgICAgICAgICBk
OiBwYXRoRnJvbVN0YXIoc2hhcGUuc2l6ZSwgc2hhcGUuc2l6ZSAvIDIsIDUpLAorICAgICAgICAg
ICAgZmlsbDogJyM5OTknLAorICAgICAgICAgICAgc3Ryb2tlOiAnYmxhY2snLAorICAgICAgICAg
ICAgJ3N0cm9rZS13aWR0aCc6IDEwLAorICAgICAgICB9KTsKKyAgICAgICAgc2V0Q2VudGVyUG9z
aXRpb24obm9kZSwgc2hhcGUucG9zWzBdLCBzaGFwZS5wb3NbMV0pOworICAgICAgICBpZiAoc2hh
cGVzW2ldLmhhc1N0cm9rZSkgeworICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3N0cm9r
ZS1kYXNoYXJyYXknLCAyMCk7CisgICAgICAgIH0KKyAgICAgICAgbm9kZS5hZGRFdmVudExpc3Rl
bmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZXYpIHsKKyAgICAgICAgICAgIHZhciBlID0gZXYg
fHwgZXZlbnQ7CisgICAgICAgICAgICBhcm1lZCA9IHsgbm9kZTogZS50YXJnZXQgfHwgZS5zcmNF
bGVtZW50IH07CisgICAgICAgIH0pOworICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ21v
dXNldXAnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhcm1lZCA9IG51bGw7CisgICAgICAg
IH0pOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVu
Y3Rpb24gKGV2KSB7CisgICAgICAgIGlmIChhcm1lZCkgeworICAgICAgICAgICAgdmFyIGUgPSBl
diB8fCBldmVudDsKKyAgICAgICAgICAgIHNldENlbnRlclBvc2l0aW9uKGFybWVkLm5vZGUsIGUu
Y2xpZW50WCwgZS5jbGllbnRZKTsKKyAgICAgICAgfQorICAgIH0pOworfSk7CisKKy8vLS0+Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctd2l0aC1vcGFjaXR5Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2Nzcy9jb21wb3NpdGUtc2hhZG93LXdpdGgtb3BhY2l0
eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2Nzcy9jb21wb3NpdGUtc2hh
ZG93LXdpdGgtb3BhY2l0eS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Cis8IS0tCisKK1NWR19O
UyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7CisKK2Z1bmN0aW9uIHBhdGhGcm9tU3Rh
ciAocmFkaXVzLCBpbm5lclJhZGl1cywgc2lkZXMpIHsKKyAgICB2YXIgcGF0aCA9IFtdOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgc2lkZXMgKiAyOyArK2kpIHsKKyAgICAgICAgdmFyIHRoZXRh
ID0gTWF0aC5QSSAqIGkgLyBzaWRlcyArIChNYXRoLlBJIC8gMik7CisgICAgICAgIHZhciByID0g
KGkgJSAyKSA/IHJhZGl1cyA6IGlubmVyUmFkaXVzOworICAgICAgICB2YXIgeCA9IHIgKiBNYXRo
LmNvcyh0aGV0YSk7CisgICAgICAgIHZhciB5ID0gciAqIE1hdGguc2luKHRoZXRhKTsKKyAgICAg
ICAgcGF0aC5wdXNoKChpID8gJ0wnIDogJ00nKSwgeCwgeSk7CisgICAgfQorICAgIHBhdGgucHVz
aCgnWicpOworICAgIHJldHVybiBwYXRoLmpvaW4oJyAnKTsKK30KKworZnVuY3Rpb24gbmV3U3Zn
RWxlbWVudCAodGFnTmFtZSwgcGFyZW50Tm9kZSwgYXR0cnMpIHsKKyAgICB2YXIgbm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIHRhZ05hbWUpOworICAgIGlmIChhdHRycykg
eworICAgICAgICBmb3IgKHZhciBrIGluIGF0dHJzKSB7CisgICAgICAgICAgICBub2RlLnNldEF0
dHJpYnV0ZShrLCBhdHRyc1trXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBhcmVudE5v
ZGUpIHsKKyAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChub2RlKTsKKyAgICB9CisgICAg
cmV0dXJuIG5vZGU7Cit9CisKK2Z1bmN0aW9uIHNldENlbnRlclBvc2l0aW9uIChub2RlLCB4LCB5
KSB7CisgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJDEsICQy
KScKKyAgICAgICAgLnJlcGxhY2UoJyQxJywgeCkKKyAgICAgICAgLnJlcGxhY2UoJyQyJywgeSkp
OworfQorCit2YXIgYXJtZWQgPSBudWxsOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGZ1bmN0aW9uICgpIHsKKworICAgIHZhciBzdmdDb250YWluZXIgPSBuZXdTdmdFbGVtZW50
KCdzdmcnLCBkb2N1bWVudC5ib2R5KTsKKyAgICB2YXIgc2hhcGVzID0gWworICAgICAgICB7IHBv
czogWyAxMDAsIDEwMCBdLCBzaXplOiA2MCwgaGFzU3Ryb2tlOiBmYWxzZSB9LAorICAgICAgICB7
IHBvczogWyAyNTAsIDEwMCBdLCBzaXplOiA2MCwgaGFzU3Ryb2tlOiB0cnVlIH0sCisgICAgICAg
IHsgcG9zOiBbIDQwMCwgMTAwIF0sIHNpemU6IDUwLCBoYXNTdHJva2U6IHRydWUgfQorICAgIF07
CisJc3ZnQ29udGFpbmVyLnN0eWxlLldlYmtpdFNoYWRvdyA9ICc1cHggNXB4IDVweCByZWQnOwor
ICAgIHN2Z0NvbnRhaW5lci5zdHlsZS5vcGFjaXR5ID0gJzAuNSc7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzaGFwZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHNoYXBlID0gc2hhcGVz
W2ldOworCQl2YXIgZ3JvdXAgPSBuZXdTdmdFbGVtZW50KCdnJywgc3ZnQ29udGFpbmVyKTsKKyAg
ICAgICAgdmFyIG5vZGUgPSBuZXdTdmdFbGVtZW50KCdwYXRoJywgZ3JvdXAsIHsKKyAgICAgICAg
ICAgIGQ6IHBhdGhGcm9tU3RhcihzaGFwZS5zaXplLCBzaGFwZS5zaXplIC8gMiwgNSksCisgICAg
ICAgICAgICBmaWxsOiAnIzk5OScsCisgICAgICAgICAgICBzdHJva2U6ICdibGFjaycsCisgICAg
ICAgICAgICAnc3Ryb2tlLXdpZHRoJzogMTAsCisgICAgICAgIH0pOworICAgICAgICBzZXRDZW50
ZXJQb3NpdGlvbihub2RlLCBzaGFwZS5wb3NbMF0sIHNoYXBlLnBvc1sxXSk7CisgICAgICAgIGlm
IChzaGFwZXNbaV0uaGFzU3Ryb2tlKSB7CisgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgn
c3Ryb2tlLWRhc2hhcnJheScsIDIwKTsKKyAgICAgICAgfQorICAgICAgICBub2RlLmFkZEV2ZW50
TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldikgeworICAgICAgICAgICAgdmFyIGUg
PSBldiB8fCBldmVudDsKKyAgICAgICAgICAgIGFybWVkID0geyBub2RlOiBlLnRhcmdldCB8fCBl
LnNyY0VsZW1lbnQgfTsKKyAgICAgICAgfSk7CisgICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5l
cignbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFybWVkID0gbnVsbDsKKyAg
ICAgICAgfSk7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUn
LCBmdW5jdGlvbiAoZXYpIHsKKyAgICAgICAgaWYgKGFybWVkKSB7CisgICAgICAgICAgICB2YXIg
ZSA9IGV2IHx8IGV2ZW50OworICAgICAgICAgICAgc2V0Q2VudGVyUG9zaXRpb24oYXJtZWQubm9k
ZSwgZS5jbGllbnRYLCBlLmNsaWVudFkpOworICAgICAgICB9CisgICAgfSk7Cit9KTsKKworLy8t
LT4KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBs
ZS1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44589</attachid>
            <date>2009-12-09 19:16:09 -0800</date>
            <delta_ts>2009-12-09 19:54:04 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>forReview2.txt</filename>
            <type>text/plain</type>
            <size>14707</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTkyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTItMDkgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyMzQ2IFNWRyBwcm9wZXJ0eSAKKyAgICAgICAgLXdlYmtpdC1zaGFkb3cgc2hvdWxkIGFw
cGx5IHNoYWRvdyBvbiB0aGUgcmVzdWx0IGFmdGVyIGNvbXBvc2l0aW5nCisgICAgICAgIC1hbmQg
Y29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczODk0MDQ+CisKKyAgICAg
ICAgU2V0IGEgdHJhbnNwYXJlbmN5IGxheWVyIHdoZW4gc2V0dGluZyBhIHNoYWRvdyB0byBhcHBs
eSB0aGUgc2hhZG93IAorICAgICAgICB0byB0aGUgY29tcG9zaXRlLgorICAgICAgICAqIHJlbmRl
cmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJh
c2U6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCk6CisKIDIwMDktMTItMDkgIFJvYmVydCBI
b2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkocmV2
aXNpb24gNTE5MTEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsMTcgQEAgdm9pZCBTVkdSZW5kZXJCYXNlOjpwcmVw
YXJlVG9SZW5kZXJTVkdDbwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihvcGFjaXR5KTsKICAgICB9CiAKLSAgICBpZiAoU2hhZG93RGF0YSogc2hhZG93
ID0gc3ZnU3R5bGUtPnNoYWRvdygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U2hh
ZG93KEludFNpemUoc2hhZG93LT54LCBzaGFkb3ctPnkpLCBzaGFkb3ctPmJsdXIsIHNoYWRvdy0+
Y29sb3IsIHN0eWxlLT5jb2xvclNwYWNlKCkpOyAKKyAgICBpZiAoU2hhZG93RGF0YSogc2hhZG93
ID0gc3ZnU3R5bGUtPnNoYWRvdygpKSB7CisgICAgICAgIGludCB4U2hpZnQgPSBzaGFkb3ctPngg
PCAwID8gc2hhZG93LT54IDogMDsKKyAgICAgICAgaW50IHlTaGlmdCA9IHNoYWRvdy0+eSA8IDAg
PyBzaGFkb3ctPnkgOjA7CisgICAgICAgIGludCB3aWR0aFNoaWZ0ID0gc2hhZG93LT54IDwgMCA/
IDAgOiBzaGFkb3ctPng7CisgICAgICAgIGludCBoZWlnaHRTaGlmdCA9IHNoYWRvdy0+eSA8IDAg
PyAwIDogc2hhZG93LT55OworICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdCA9IEZsb2F0UmVj
dChib3VuZGluZ0JveC54KCkgKyB4U2hpZnQsIGJvdW5kaW5nQm94LnkoKSArIHlTaGlmdCwKKyAg
ICAgICAgICAgIGJvdW5kaW5nQm94LndpZHRoKCkgKyB3aWR0aFNoaWZ0LCBib3VuZGluZ0JveC5o
ZWlnaHQoKSArIGhlaWdodFNoaWZ0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAo
ZW5jbG9zaW5nSW50UmVjdChzaGFkb3dSZWN0KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5zZXRTaGFkb3coSW50U2l6ZShzaGFkb3ctPngsIHNoYWRvdy0+eSksIHNoYWRvdy0+Ymx1ciwg
c2hhZG93LT5jb2xvciwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMGYpOworICAgIH0KIAogI2lmIEVOQUJM
RShGSUxURVJTKQogICAgIEF0b21pY1N0cmluZyBmaWx0ZXJJZChzdmdTdHlsZS0+ZmlsdGVyKCkp
OwpAQCAtMTYzLDYgKzE3MiwxMSBAQCB2b2lkIFNWR1JlbmRlckJhc2U6OmZpbmlzaFJlbmRlclNW
R0NvbnRlCiAgICAgZmxvYXQgb3BhY2l0eSA9IHN0eWxlLT5vcGFjaXR5KCk7ICAgIAogICAgIGlm
IChvcGFjaXR5IDwgMS4wZikKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFy
ZW5jeUxheWVyKCk7CisKKyAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgc2VwYXJhdGVseSBm
cm9tIG9wYWNpdHksIGJlY2F1c2UgaWYgYm90aCBwcm9wZXJ0aWVzIGFyZSBzZXQsCisgICAgLy8g
dGhlbiB0aGUgdHJhbnNwYXJlbmN5IGxheWVycyBhcmUgbmVzdGVkLiAKKyAgICBpZiAoc3R5bGUt
PnN2Z1N0eWxlKCktPnNoYWRvdygpKQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZShJbWFnZUJ1
ZmZlciogaW1hZ2UsIFJlbmRlck9iamVjdCogaXRlbSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxOTIz
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMDktMTItMDkgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzNDYgU1ZHIAorICAgICAgICBwcm9w
ZXJ0eSAtd2Via2l0LXNoYWRvdyBzaG91bGQgYXBwbHkgc2hhZG93IG9uIHRoZSByZXN1bHQgYWZ0
ZXIgCisgICAgICAgIGNvbXBvc2l0aW5nCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczODk0MDQ+CisKKyAgICAgICAgTmV3IHRlc3RzOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS1leHBl
Y3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29t
cG9zaXRlLXNoYWRvdy1leGFtcGxlLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy13
aXRoLW9wYWNpdHktZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctd2l0aC1vcGFjaXR5LWV4cGVjdGVkLnBuZzog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy13
aXRoLW9wYWNpdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL2NvbXBv
c2l0ZS1zaGFkb3ctZXhhbXBsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL2NvbXBv
c2l0ZS1zaGFkb3ctd2l0aC1vcGFjaXR5Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIE5ldyBhbmQg
aW1wcm92ZWQgcmVzdWx0czoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9ncm91cC13
aXRoLXNoYWRvdy1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3Zn
L2Nzcy9ncm91cC13aXRoLXNoYWRvdy1leHBlY3RlZC5wbmc6CisKIDIwMDktMTItMDkgIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAg
ICAgICAgU2tpcCBhIGZhaWxpbmcgdGVzdCB0aGF0IG5lZWRzIERSVCBzdXBwb3J0IHRvIG92ZXJy
aWRlIHN0YW5kYXJkCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9jb21w
b3NpdGUtc2hhZG93LWV4YW1wbGUtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxlLWV4
cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxlLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxIEBACitiZTM5YmQzNWUxMjgyZTdjYTAxYzgwMTc2OTY5MmE0Ywpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1l
eGFtcGxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDYxNgorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4
NjE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MTYKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg2MDAKKyAgICAgIFJlbmRlclNWR1Jvb3Qg
e3N2Z30gYXQgKDQwLjE5LDM2LjcwKSBzaXplIDQxMy40M3gxMjguOTgKKyAgICAgICAgUmVuZGVy
U1ZHQ29udGFpbmVyIHtnfSBhdCAoNDAuMTksMzYuNzApIHNpemUgMTM1LjYyeDEyOC45OAorICAg
ICAgICAgIFJlbmRlclBhdGgge3BhdGh9IGF0ICg0MC4xOSwzNi43MCkgc2l6ZSAxMzUuNjJ4MTI4
Ljk4IFt0cmFuc2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDEwMC4wMCwxMDAu
MDApfV0gW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMDAwXSBbc3Ryb2tlIHdpZHRo
PTEwLjAwXX1dIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSM5OTk5OTldfV0gW2RhdGE9Ik0w
LjAwLDMwLjAwIEwtMzUuMjcsNDguNTQgTC0yOC41Myw5LjI3IEwtNTcuMDYsLTE4LjU0IEwtMTcu
NjMsLTI0LjI3IEwtMC4wMCwtNjAuMDAgTDE3LjYzLC0yNC4yNyBMNTcuMDYsLTE4LjU0IEwyOC41
Myw5LjI3IEwzNS4yNyw0OC41NCBaIl0KKyAgICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBh
dCAoMjAwLjY4LDQ2LjQ5KSBzaXplIDExNy4wOXgxMTMuODMKKyAgICAgICAgICBSZW5kZXJQYXRo
IHtwYXRofSBhdCAoMjAwLjY4LDQ2LjQ5KSBzaXplIDExNy4wOXgxMTMuODMgW3RyYW5zZm9ybT17
bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMjUwLjAwLDEwMC4wMCl9XSBbc3Ryb2tlPXtb
dHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdIFtzdHJva2Ugd2lkdGg9MTAuMDBdIFtkYXNoIGFy
cmF5PXsyMC4wMH1dfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9Izk5OTk5OV19XSBbZGF0
YT0iTTAuMDAsMzAuMDAgTC0zNS4yNyw0OC41NCBMLTI4LjUzLDkuMjcgTC01Ny4wNiwtMTguNTQg
TC0xNy42MywtMjQuMjcgTC0wLjAwLC02MC4wMCBMMTcuNjMsLTI0LjI3IEw1Ny4wNiwtMTguNTQg
TDI4LjUzLDkuMjcgTDM1LjI3LDQ4LjU0IFoiXQorICAgICAgICBSZW5kZXJTVkdDb250YWluZXIg
e2d9IGF0ICgzNDkuNzAsNDYuNzApIHNpemUgMTAzLjkxeDExMC44OQorICAgICAgICAgIFJlbmRl
clBhdGgge3BhdGh9IGF0ICgzNDkuNzAsNDYuNzApIHNpemUgMTAzLjkxeDExMC44OSBbdHJhbnNm
b3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSg0MDAuMDAsMTAwLjAwKX1dIFtzdHJv
a2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDAwMF0gW3N0cm9rZSB3aWR0aD0xMC4wMF0gW2Rh
c2ggYXJyYXk9ezIwLjAwfV19XSBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jOTk5OTk5XX1d
IFtkYXRhPSJNMC4wMCwyNS4wMCBMLTI5LjM5LDQwLjQ1IEwtMjMuNzgsNy43MyBMLTQ3LjU1LC0x
NS40NSBMLTE0LjY5LC0yMC4yMyBMLTAuMDAsLTUwLjAwIEwxNC42OSwtMjAuMjMgTDQ3LjU1LC0x
NS40NSBMMjMuNzgsNy43MyBMMjkuMzksNDAuNDUgWiJdCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvc3ZnL2Nzcy9jb21wb3NpdGUtc2hhZG93LXdpdGgtb3BhY2l0eS1leHBlY3RlZC5j
aGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9j
b21wb3NpdGUtc2hhZG93LXdpdGgtb3BhY2l0eS1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ct
d2l0aC1vcGFjaXR5LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CiszMTI1YmY1ODg4Njg0YzQ3YzMyOTc4ZjUwOTQyMWM4YQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3NzL2NvbXBvc2l0ZS1z
aGFkb3ctd2l0aC1vcGFjaXR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9jb21wb3NpdGUtc2hhZG93LXdpdGgtb3BhY2l0eS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nz
cy9jb21wb3NpdGUtc2hhZG93LXdpdGgtb3BhY2l0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTMgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDYxNgorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NjE2Cisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MTYKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg2MDAKK2xheWVyIGF0ICg4LDgpIHNpemUgNzY5eDYw
MAorICBSZW5kZXJTVkdSb290IHtzdmd9IGF0ICg0MC4xOSwzNi43MCkgc2l6ZSA0MTMuNDN4MTI4
Ljk4IFtvcGFjaXR5PTAuNTBdCisgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoNDAuMTks
MzYuNzApIHNpemUgMTM1LjYyeDEyOC45OAorICAgICAgUmVuZGVyUGF0aCB7cGF0aH0gYXQgKDQw
LjE5LDM2LjcwKSBzaXplIDEzNS42MngxMjguOTggW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCko
MC4wMCwxLjAwKSkgdD0oMTAwLjAwLDEwMC4wMCl9XSBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2Nv
bG9yPSMwMDAwMDBdIFtzdHJva2Ugd2lkdGg9MTAuMDBdfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBb
Y29sb3I9Izk5OTk5OV19XSBbZGF0YT0iTTAuMDAsMzAuMDAgTC0zNS4yNyw0OC41NCBMLTI4LjUz
LDkuMjcgTC01Ny4wNiwtMTguNTQgTC0xNy42MywtMjQuMjcgTC0wLjAwLC02MC4wMCBMMTcuNjMs
LTI0LjI3IEw1Ny4wNiwtMTguNTQgTDI4LjUzLDkuMjcgTDM1LjI3LDQ4LjU0IFoiXQorICAgIFJl
bmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDIwMC42OCw0Ni40OSkgc2l6ZSAxMTcuMDl4MTEzLjgz
CisgICAgICBSZW5kZXJQYXRoIHtwYXRofSBhdCAoMjAwLjY4LDQ2LjQ5KSBzaXplIDExNy4wOXgx
MTMuODMgW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMjUwLjAwLDEw
MC4wMCl9XSBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdIFtzdHJva2Ugd2lk
dGg9MTAuMDBdIFtkYXNoIGFycmF5PXsyMC4wMH1dfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29s
b3I9Izk5OTk5OV19XSBbZGF0YT0iTTAuMDAsMzAuMDAgTC0zNS4yNyw0OC41NCBMLTI4LjUzLDku
MjcgTC01Ny4wNiwtMTguNTQgTC0xNy42MywtMjQuMjcgTC0wLjAwLC02MC4wMCBMMTcuNjMsLTI0
LjI3IEw1Ny4wNiwtMTguNTQgTDI4LjUzLDkuMjcgTDM1LjI3LDQ4LjU0IFoiXQorICAgIFJlbmRl
clNWR0NvbnRhaW5lciB7Z30gYXQgKDM0OS43MCw0Ni43MCkgc2l6ZSAxMDMuOTF4MTEwLjg5Cisg
ICAgICBSZW5kZXJQYXRoIHtwYXRofSBhdCAoMzQ5LjcwLDQ2LjcwKSBzaXplIDEwMy45MXgxMTAu
ODkgW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oNDAwLjAwLDEwMC4w
MCl9XSBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdIFtzdHJva2Ugd2lkdGg9
MTAuMDBdIFtkYXNoIGFycmF5PXsyMC4wMH1dfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9
Izk5OTk5OV19XSBbZGF0YT0iTTAuMDAsMjUuMDAgTC0yOS4zOSw0MC40NSBMLTIzLjc4LDcuNzMg
TC00Ny41NSwtMTUuNDUgTC0xNC42OSwtMjAuMjMgTC0wLjAwLC01MC4wMCBMMTQuNjksLTIwLjIz
IEw0Ny41NSwtMTUuNDUgTDIzLjc4LDcuNzMgTDI5LjM5LDQwLjQ1IFoiXQpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ3JvdXAtd2l0aC1zaGFkb3ctZXhwZWN0ZWQuY2hl
Y2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ3Jv
dXAtd2l0aC1zaGFkb3ctZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDUxOTExKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ3JvdXAtd2l0aC1zaGFkb3ctZXhwZWN0ZWQu
Y2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTkxNWM1MTRiNzg1NTk2MGE3NmM1
MWUzNDFkYjlmYWQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZTVkNjAwODVjZmJhMGYx
NDkzOGVhNmE5ZjhiNWQ5ODkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBsZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9jc3MvY29tcG9zaXRlLXNoYWRvdy1leGFtcGxlLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctZXhhbXBs
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Cis8IS0tCisKK1NWR19OUyA9ICdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2Zyc7CisKK2Z1bmN0aW9uIHBhdGhGcm9tU3RhciAocmFkaXVzLCBpbm5l
clJhZGl1cywgc2lkZXMpIHsKKyAgICB2YXIgcGF0aCA9IFtdOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2lkZXMgKiAyOyArK2kpIHsKKyAgICAgICAgdmFyIHRoZXRhID0gTWF0aC5QSSAqIGkg
LyBzaWRlcyArIChNYXRoLlBJIC8gMik7CisgICAgICAgIHZhciByID0gKGkgJSAyKSA/IHJhZGl1
cyA6IGlubmVyUmFkaXVzOworICAgICAgICB2YXIgeCA9IHIgKiBNYXRoLmNvcyh0aGV0YSk7Cisg
ICAgICAgIHZhciB5ID0gciAqIE1hdGguc2luKHRoZXRhKTsKKyAgICAgICAgcGF0aC5wdXNoKChp
ID8gJ0wnIDogJ00nKSwgeCwgeSk7CisgICAgfQorICAgIHBhdGgucHVzaCgnWicpOworICAgIHJl
dHVybiBwYXRoLmpvaW4oJyAnKTsKK30KKworZnVuY3Rpb24gbmV3U3ZnRWxlbWVudCAodGFnTmFt
ZSwgcGFyZW50Tm9kZSwgYXR0cnMpIHsKKyAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyhTVkdfTlMsIHRhZ05hbWUpOworICAgIGlmIChhdHRycykgeworICAgICAgICBmb3Ig
KHZhciBrIGluIGF0dHJzKSB7CisgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShrLCBhdHRy
c1trXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBhcmVudE5vZGUpIHsKKyAgICAgICAg
cGFyZW50Tm9kZS5hcHBlbmRDaGlsZChub2RlKTsKKyAgICB9CisgICAgcmV0dXJuIG5vZGU7Cit9
CisKK2Z1bmN0aW9uIHNldENlbnRlclBvc2l0aW9uIChub2RlLCB4LCB5KSB7CisgICAgbm9kZS5z
ZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJDEsICQyKScKKyAgICAgICAgLnJl
cGxhY2UoJyQxJywgeCkKKyAgICAgICAgLnJlcGxhY2UoJyQyJywgeSkpOworfQorCit2YXIgYXJt
ZWQgPSBudWxsOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgp
IHsKKworICAgIHZhciBzdmdDb250YWluZXIgPSBuZXdTdmdFbGVtZW50KCdzdmcnLCBkb2N1bWVu
dC5ib2R5KTsKKyAgICB2YXIgc2hhcGVzID0gWworICAgICAgICB7IHBvczogWyAxMDAsIDEwMCBd
LCBzaXplOiA2MCwgaGFzU3Ryb2tlOiBmYWxzZSB9LAorICAgICAgICB7IHBvczogWyAyNTAsIDEw
MCBdLCBzaXplOiA2MCwgaGFzU3Ryb2tlOiB0cnVlIH0sCisgICAgICAgIHsgcG9zOiBbIDQwMCwg
MTAwIF0sIHNpemU6IDUwLCBoYXNTdHJva2U6IHRydWUgfQorICAgIF07CisJc3ZnQ29udGFpbmVy
LnN0eWxlLldlYmtpdFNoYWRvdyA9ICc1cHggNXB4IDVweCByZWQnOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc2hhcGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBzaGFwZSA9IHNoYXBl
c1tpXTsKKwkJdmFyIGdyb3VwID0gbmV3U3ZnRWxlbWVudCgnZycsIHN2Z0NvbnRhaW5lcik7Cisg
ICAgICAgIHZhciBub2RlID0gbmV3U3ZnRWxlbWVudCgncGF0aCcsIGdyb3VwLCB7CisgICAgICAg
ICAgICBkOiBwYXRoRnJvbVN0YXIoc2hhcGUuc2l6ZSwgc2hhcGUuc2l6ZSAvIDIsIDUpLAorICAg
ICAgICAgICAgZmlsbDogJyM5OTknLAorICAgICAgICAgICAgc3Ryb2tlOiAnYmxhY2snLAorICAg
ICAgICAgICAgJ3N0cm9rZS13aWR0aCc6IDEwLAorICAgICAgICB9KTsKKyAgICAgICAgc2V0Q2Vu
dGVyUG9zaXRpb24obm9kZSwgc2hhcGUucG9zWzBdLCBzaGFwZS5wb3NbMV0pOworICAgICAgICBp
ZiAoc2hhcGVzW2ldLmhhc1N0cm9rZSkgeworICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUo
J3N0cm9rZS1kYXNoYXJyYXknLCAyMCk7CisgICAgICAgIH0KKyAgICAgICAgbm9kZS5hZGRFdmVu
dExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZXYpIHsKKyAgICAgICAgICAgIHZhciBl
ID0gZXYgfHwgZXZlbnQ7CisgICAgICAgICAgICBhcm1lZCA9IHsgbm9kZTogZS50YXJnZXQgfHwg
ZS5zcmNFbGVtZW50IH07CisgICAgICAgIH0pOworICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVu
ZXIoJ21vdXNldXAnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhcm1lZCA9IG51bGw7Cisg
ICAgICAgIH0pOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3Zl
JywgZnVuY3Rpb24gKGV2KSB7CisgICAgICAgIGlmIChhcm1lZCkgeworICAgICAgICAgICAgdmFy
IGUgPSBldiB8fCBldmVudDsKKyAgICAgICAgICAgIHNldENlbnRlclBvc2l0aW9uKGFybWVkLm5v
ZGUsIGUuY2xpZW50WCwgZS5jbGllbnRZKTsKKyAgICAgICAgfQorICAgIH0pOworfSk7CisKKy8v
LS0+Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctd2l0aC1vcGFjaXR5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2Nzcy9jb21wb3NpdGUtc2hhZG93LXdpdGgt
b3BhY2l0eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2Nzcy9jb21wb3Np
dGUtc2hhZG93LXdpdGgtb3BhY2l0eS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Cis8IS0tCisK
K1NWR19OUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7CisKK2Z1bmN0aW9uIHBhdGhG
cm9tU3RhciAocmFkaXVzLCBpbm5lclJhZGl1cywgc2lkZXMpIHsKKyAgICB2YXIgcGF0aCA9IFtd
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lkZXMgKiAyOyArK2kpIHsKKyAgICAgICAgdmFy
IHRoZXRhID0gTWF0aC5QSSAqIGkgLyBzaWRlcyArIChNYXRoLlBJIC8gMik7CisgICAgICAgIHZh
ciByID0gKGkgJSAyKSA/IHJhZGl1cyA6IGlubmVyUmFkaXVzOworICAgICAgICB2YXIgeCA9IHIg
KiBNYXRoLmNvcyh0aGV0YSk7CisgICAgICAgIHZhciB5ID0gciAqIE1hdGguc2luKHRoZXRhKTsK
KyAgICAgICAgcGF0aC5wdXNoKChpID8gJ0wnIDogJ00nKSwgeCwgeSk7CisgICAgfQorICAgIHBh
dGgucHVzaCgnWicpOworICAgIHJldHVybiBwYXRoLmpvaW4oJyAnKTsKK30KKworZnVuY3Rpb24g
bmV3U3ZnRWxlbWVudCAodGFnTmFtZSwgcGFyZW50Tm9kZSwgYXR0cnMpIHsKKyAgICB2YXIgbm9k
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIHRhZ05hbWUpOworICAgIGlmIChh
dHRycykgeworICAgICAgICBmb3IgKHZhciBrIGluIGF0dHJzKSB7CisgICAgICAgICAgICBub2Rl
LnNldEF0dHJpYnV0ZShrLCBhdHRyc1trXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBh
cmVudE5vZGUpIHsKKyAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChub2RlKTsKKyAgICB9
CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK2Z1bmN0aW9uIHNldENlbnRlclBvc2l0aW9uIChub2Rl
LCB4LCB5KSB7CisgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUo
JDEsICQyKScKKyAgICAgICAgLnJlcGxhY2UoJyQxJywgeCkKKyAgICAgICAgLnJlcGxhY2UoJyQy
JywgeSkpOworfQorCit2YXIgYXJtZWQgPSBudWxsOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cignbG9hZCcsIGZ1bmN0aW9uICgpIHsKKworICAgIHZhciBzdmdDb250YWluZXIgPSBuZXdTdmdF
bGVtZW50KCdzdmcnLCBkb2N1bWVudC5ib2R5KTsKKyAgICB2YXIgc2hhcGVzID0gWworICAgICAg
ICB7IHBvczogWyAxMDAsIDEwMCBdLCBzaXplOiA2MCwgaGFzU3Ryb2tlOiBmYWxzZSB9LAorICAg
ICAgICB7IHBvczogWyAyNTAsIDEwMCBdLCBzaXplOiA2MCwgaGFzU3Ryb2tlOiB0cnVlIH0sCisg
ICAgICAgIHsgcG9zOiBbIDQwMCwgMTAwIF0sIHNpemU6IDUwLCBoYXNTdHJva2U6IHRydWUgfQor
ICAgIF07CisJc3ZnQ29udGFpbmVyLnN0eWxlLldlYmtpdFNoYWRvdyA9ICc1cHggNXB4IDVweCBy
ZWQnOworICAgIHN2Z0NvbnRhaW5lci5zdHlsZS5vcGFjaXR5ID0gJzAuNSc7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzaGFwZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHNoYXBlID0g
c2hhcGVzW2ldOworCQl2YXIgZ3JvdXAgPSBuZXdTdmdFbGVtZW50KCdnJywgc3ZnQ29udGFpbmVy
KTsKKyAgICAgICAgdmFyIG5vZGUgPSBuZXdTdmdFbGVtZW50KCdwYXRoJywgZ3JvdXAsIHsKKyAg
ICAgICAgICAgIGQ6IHBhdGhGcm9tU3RhcihzaGFwZS5zaXplLCBzaGFwZS5zaXplIC8gMiwgNSks
CisgICAgICAgICAgICBmaWxsOiAnIzk5OScsCisgICAgICAgICAgICBzdHJva2U6ICdibGFjaycs
CisgICAgICAgICAgICAnc3Ryb2tlLXdpZHRoJzogMTAsCisgICAgICAgIH0pOworICAgICAgICBz
ZXRDZW50ZXJQb3NpdGlvbihub2RlLCBzaGFwZS5wb3NbMF0sIHNoYXBlLnBvc1sxXSk7CisgICAg
ICAgIGlmIChzaGFwZXNbaV0uaGFzU3Ryb2tlKSB7CisgICAgICAgICAgICBub2RlLnNldEF0dHJp
YnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsIDIwKTsKKyAgICAgICAgfQorICAgICAgICBub2RlLmFk
ZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldikgeworICAgICAgICAgICAg
dmFyIGUgPSBldiB8fCBldmVudDsKKyAgICAgICAgICAgIGFybWVkID0geyBub2RlOiBlLnRhcmdl
dCB8fCBlLnNyY0VsZW1lbnQgfTsKKyAgICAgICAgfSk7CisgICAgICAgIG5vZGUuYWRkRXZlbnRM
aXN0ZW5lcignbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFybWVkID0gbnVs
bDsKKyAgICAgICAgfSk7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZW1vdmUnLCBmdW5jdGlvbiAoZXYpIHsKKyAgICAgICAgaWYgKGFybWVkKSB7CisgICAgICAgICAg
ICB2YXIgZSA9IGV2IHx8IGV2ZW50OworICAgICAgICAgICAgc2V0Q2VudGVyUG9zaXRpb24oYXJt
ZWQubm9kZSwgZS5jbGllbnRYLCBlLmNsaWVudFkpOworICAgICAgICB9CisgICAgfSk7Cit9KTsK
KworLy8tLT4KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzwvYm9keT4KKzwvaHRtbD4K
Cg==
</data>
<flag name="review"
          id="26483"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>