<?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>146241</bug_id>
          
          <creation_ts>2015-06-23 11:26:33 -0700</creation_ts>
          <short_desc>[Content Extensions] Add a way to match a domain but not subdomains</short_desc>
          <delta_ts>2015-06-25 17:58:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104129</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-23 11:26:33 -0700</bug_when>
    <thetext>It is currently impossible to have an if-domain apply to sub1.sub2.webkit.org but not sub2.webkit.org because if-domain applies to the domain and any subdomains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104135</commentid>
    <comment_count>1</comment_count>
      <attachid>255418</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-23 11:31:18 -0700</bug_when>
    <thetext>Created attachment 255418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104137</commentid>
    <comment_count>2</comment_count>
      <attachid>255419</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-23 11:39:17 -0700</bug_when>
    <thetext>Created attachment 255419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104166</commentid>
    <comment_count>3</comment_count>
      <attachid>255419</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-23 13:49:47 -0700</bug_when>
    <thetext>Comment on attachment 255419
Patch

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

&gt; Source/WebCore/contentextensions/CombinedURLFilters.cpp:125
&gt; +    if (domain.length() &amp;&amp; domain[0] == &apos;*&apos;) {

WTF::String operator[] returns 0 for characters past the end of the string, so you don’t need the domain.length() here. Not sure I love that design, but there’s no need for the redundant check. Note that WTF::StringView does not work that way.

&gt; Source/WebCore/contentextensions/CombinedURLFilters.cpp:131
&gt; +        prependDot.reserveInitialCapacity(domain.length() + 2);

I suggest putting domain.length() into a local. Not sure it will be CSE eliminated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104171</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-23 14:02:51 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=255419&amp;action=review

&gt; Source/WebCore/ChangeLog:10
&gt; +        This patch makes it possible to have a trigger with an if-domain apply to sub2.sub1.webkit.org
&gt; +        but not sub1.webkit.org by making the domains default to only applying to the domain and not subdomains.
&gt; +        To make a domain apply to a domain and any subdomains, the domain must begin with a &apos;*&apos;.

This is backward incompatible. Make sure to have a radar for this patch and fill the documentation section.

&gt; Source/WebCore/contentextensions/CombinedURLFilters.cpp:126
&gt; +        

Extra blank line.

&gt; Source/WebCore/contentextensions/CombinedURLFilters.cpp:130
&gt; +        Vector&lt;Term&gt; prependDot;
&gt; +        Vector&lt;Term&gt; prependBeginningOfLine;

I wonder if we could make those name clearer.

What about:
-Vector&lt;Term&gt; anySubdomains;
-Vector&lt;Term&gt; exactDomain;

Or something like that.

&gt; Source/WebCore/contentextensions/CombinedURLFilters.cpp:151
&gt; +        

Blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104814</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-25 17:53:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; WTF::String operator[] returns 0 for characters past the end of the string, so you don’t need the domain.length() here. Not sure I love that design, but there’s no need for the redundant check. Note that WTF::StringView does not work that way.
That is not a good design.  I&apos;m going to keep this check here in anticipation of us writing a better operator[].
(In reply to comment #4)
&gt; &gt; Source/WebCore/contentextensions/CombinedURLFilters.cpp:130
&gt; &gt; +        Vector&lt;Term&gt; prependDot;
&gt; &gt; +        Vector&lt;Term&gt; prependBeginningOfLine;
&gt; 
&gt; I wonder if we could make those name clearer.
The names are based on what the regular expression syntax with the same functionality would be. The comments indicate what they mean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104816</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-25 17:58:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/185973</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255418</attachid>
            <date>2015-06-23 11:31:18 -0700</date>
            <delta_ts>2015-06-23 11:39:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146241-20150623113035.patch</filename>
            <type>text/plain</type>
            <size>10633</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA2LTIzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gQWRkIGEgd2F5IHRvIG1hdGNoIGEgZG9tYWluIGJ1dCBub3Qgc3ViZG9tYWlu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjQx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBoYXZlIGEgdHJpZ2dlciB3aXRoIGFuIGlmLWRvbWFp
biBhcHBseSB0byBzdWIyLnN1YjEud2Via2l0Lm9yZworICAgICAgICBidXQgbm90IHN1YjEud2Vi
a2l0Lm9yZyBieSBtYWtpbmcgdGhlIGRvbWFpbnMgZGVmYXVsdCB0byBvbmx5IGFwcGx5aW5nIHRv
IHRoZSBkb21haW4gYW5kIG5vdCBzdWJkb21haW5zLgorICAgICAgICBUbyBtYWtlIGEgZG9tYWlu
IGFwcGx5IHRvIGEgZG9tYWluIGFuZCBhbnkgc3ViZG9tYWlucywgdGhlIGRvbWFpbiBtdXN0IGJl
Z2luIHdpdGggYSAnKicuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVS
TEZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJp
bmVkVVJMRmlsdGVyczo6YWRkRG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICBNYWtlIGRv
bWFpbnMgYXBwbHkgb25seSB0byB0aGUgZXhhY3QgZG9tYWluIHVubGVzcyB0aGVyZSBpcyBhICog
YXQgdGhlIGJlZ2lubmluZywKKyAgICAgICAgaW4gd2hpY2ggY2FzZSB0aGV5IGFwcGx5IHRvIHRo
ZSBkb21haW4gYW5kIGFueSBzdWJkb21haW5zLgorCiAyMDE1LTA2LTIzICBKYXZpZXIgRmVybmFu
ZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRd
IFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjogYXZvaWQgY29tcHV0aW5nIG92ZXJmbG93IGFsaWdu
bWVudCBpZiBub3QgbmVlZGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAJKHJldmlzaW9uIDE4NTg0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwzMSArMTIyLDQ1IEBAIGJvb2wgQ29tYmluZWRVUkxG
aWx0ZXJzOjppc0VtcHR5KCkgY29uc3QKIAogdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFkZERv
bWFpbih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgLy8g
VGhpcyBpcyBsaWtlIGFkZGluZyAoLnxeKWRvbWFpbiQgYnkgYWRkaW5nIHR3byBWZWN0b3I8VGVy
bT4ncywKLSAgICAvLyBidXQgaW50ZXJwcmV0aW5nIGRvbWFpbiBhcyBhIHNlcmllcyBvZiBjaGFy
YWN0ZXJzLCBub3QgYSByZWd1bGFyIGV4cHJlc3Npb24uCi0gICAgLy8gVGhpcyB3YXkgYSBkb21h
aW4gb2YgIndlYmtpdC5vcmciIHdpbGwgbWF0Y2ggImJ1Z3Mud2Via2l0Lm9yZyIgYW5kICJ3ZWJr
aXQub3JnIi4KLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG1hdGNoaW5nIG9ubHkgc3Vi
ZG9tYWlucyBvciBubyBzdWJkb21haW5zLgotICAgIFZlY3RvcjxUZXJtPiBwcmVwZW5kRG90Owot
ICAgIFZlY3RvcjxUZXJtPiBwcmVwZW5kQmVnaW5uaW5nT2ZMaW5lOwotICAgIHByZXBlbmREb3Qu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW4ubGVuZ3RoKCkgKyAzKTsKLSAgICBwcmVwZW5k
QmVnaW5uaW5nT2ZMaW5lLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWluLmxlbmd0aCgpICsg
MSk7IC8vIFRoaXMgaXMganVzdCBubyAuKiBhdCB0aGUgYmVnaW5uaW5nLgotICAgIAotICAgIFRl
cm0gY2Fub25pY2FsRG90U3RhcihUZXJtOjpVbml2ZXJzYWxUcmFuc2l0aW9uKTsKLSAgICBjYW5v
bmljYWxEb3RTdGFyLnF1YW50aWZ5KEF0b21RdWFudGlmaWVyOjpaZXJvT3JNb3JlKTsKLSAgICBw
cmVwZW5kRG90LnVuY2hlY2tlZEFwcGVuZChjYW5vbmljYWxEb3RTdGFyKTsKLSAgICBwcmVwZW5k
RG90LnVuY2hlY2tlZEFwcGVuZChUZXJtKCcuJywgdHJ1ZSkpOwotICAgIAotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkb21haW4ubGVuZ3RoKCk7IGkrKykgewotICAgICAgICBBU1NFUlQo
aXNBU0NJSShkb21haW5baV0pKTsKLSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoZG9tYWlu
W2ldKSk7Ci0gICAgICAgIHByZXBlbmREb3QudW5jaGVja2VkQXBwZW5kKFRlcm0oZG9tYWluW2ld
LCB0cnVlKSk7Ci0gICAgICAgIHByZXBlbmRCZWdpbm5pbmdPZkxpbmUudW5jaGVja2VkQXBwZW5k
KFRlcm0oZG9tYWluW2ldLCB0cnVlKSk7CisgICAgaWYgKGRvbWFpbi5sZW5ndGgoKSAmJiBkb21h
aW5bMF0gPT0gJyonKSB7CisgICAgICAgIAorICAgICAgICAvLyBJZiBkb21haW4gc3RhcnRzIHdp
dGggYSAnKicgdGhlbiBpdCBtZWFucyBtYXRjaCBkb21haW4gYW5kIGl0cyBzdWJkb21haW5zLCBs
aWtlIChefC4pZG9tYWluJAorICAgICAgICAvLyBUaGlzIHdheSBhIGRvbWFpbiBvZiAiKndlYmtp
dC5vcmciIHdpbGwgbWF0Y2ggImJ1Z3Mud2Via2l0Lm9yZyIgYW5kICJ3ZWJraXQub3JnIi4KKyAg
ICAgICAgVmVjdG9yPFRlcm0+IHByZXBlbmREb3Q7CisgICAgICAgIFZlY3RvcjxUZXJtPiBwcmVw
ZW5kQmVnaW5uaW5nT2ZMaW5lOworICAgICAgICBwcmVwZW5kRG90LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZG9tYWluLmxlbmd0aCgpICsgMik7CisgICAgICAgIHByZXBlbmRCZWdpbm5pbmdPZkxp
bmUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW4ubGVuZ3RoKCkpOyAvLyBUaGlzIGlzIGp1
c3Qgbm8gLiogYXQgdGhlIGJlZ2lubmluZy4KKyAgICAgICAgCisgICAgICAgIFRlcm0gY2Fub25p
Y2FsRG90U3RhcihUZXJtOjpVbml2ZXJzYWxUcmFuc2l0aW9uKTsKKyAgICAgICAgY2Fub25pY2Fs
RG90U3Rhci5xdWFudGlmeShBdG9tUXVhbnRpZmllcjo6WmVyb09yTW9yZSk7CisgICAgICAgIHBy
ZXBlbmREb3QudW5jaGVja2VkQXBwZW5kKGNhbm9uaWNhbERvdFN0YXIpOworICAgICAgICBwcmVw
ZW5kRG90LnVuY2hlY2tlZEFwcGVuZChUZXJtKCcuJywgdHJ1ZSkpOworICAgICAgICAKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGRvbWFpbi5sZW5ndGgoKTsgaSsrKSB7CisgICAg
ICAgICAgICBBU1NFUlQoaXNBU0NJSShkb21haW5baV0pKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
aXNBU0NJSVVwcGVyKGRvbWFpbltpXSkpOworICAgICAgICAgICAgcHJlcGVuZERvdC51bmNoZWNr
ZWRBcHBlbmQoVGVybShkb21haW5baV0sIHRydWUpKTsKKyAgICAgICAgICAgIHByZXBlbmRCZWdp
bm5pbmdPZkxpbmUudW5jaGVja2VkQXBwZW5kKFRlcm0oZG9tYWluW2ldLCB0cnVlKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcHJlcGVuZERvdC51bmNoZWNrZWRBcHBlbmQoVGVybTo6RW5kT2ZMaW5l
QXNzZXJ0aW9uVGVybSk7CisgICAgICAgIHByZXBlbmRCZWdpbm5pbmdPZkxpbmUudW5jaGVja2Vk
QXBwZW5kKFRlcm06OkVuZE9mTGluZUFzc2VydGlvblRlcm0pOworICAgICAgICAKKyAgICAgICAg
YWRkUGF0dGVybihhY3Rpb25JZCwgcHJlcGVuZERvdCk7CisgICAgICAgIGFkZFBhdHRlcm4oYWN0
aW9uSWQsIHByZXBlbmRCZWdpbm5pbmdPZkxpbmUpOworICAgIH0gZWxzZSB7CisgICAgICAgIAor
ICAgICAgICAvLyBUaGlzIGlzIGxpa2UgYWRkaW5nIF5kb21haW4kLCBidXQgaW50ZXJwcmV0aW5n
IGRvbWFpbiBhcyBhIHNlcmllcyBvZiBjaGFyYWN0ZXJzLCBub3QgYSByZWd1bGFyIGV4cHJlc3Np
b24uCisgICAgICAgIC8vICJ3ZWJraXQub3JnIiB3aWxsIG1hdGNoICJ3ZWJraXQub3JnIiBidXQg
bm90ICJidWdzLndlYmtpdC5vcmciLgorICAgICAgICBWZWN0b3I8VGVybT4gcHJlcGVuZEJlZ2lu
bmluZ09mTGluZTsKKyAgICAgICAgcHJlcGVuZEJlZ2lubmluZ09mTGluZS5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGRvbWFpbi5sZW5ndGgoKSArIDEpOyAvLyBUaGlzIGlzIGp1c3Qgbm8gLiogYXQg
dGhlIGJlZ2lubmluZy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbWFpbi5s
ZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShkb21haW5baV0pKTsK
KyAgICAgICAgICAgIEFTU0VSVCghaXNBU0NJSVVwcGVyKGRvbWFpbltpXSkpOworICAgICAgICAg
ICAgcHJlcGVuZEJlZ2lubmluZ09mTGluZS51bmNoZWNrZWRBcHBlbmQoVGVybShkb21haW5baV0s
IHRydWUpKTsKKyAgICAgICAgfQorICAgICAgICBwcmVwZW5kQmVnaW5uaW5nT2ZMaW5lLnVuY2hl
Y2tlZEFwcGVuZChUZXJtOjpFbmRPZkxpbmVBc3NlcnRpb25UZXJtKTsKKyAgICAgICAgYWRkUGF0
dGVybihhY3Rpb25JZCwgcHJlcGVuZEJlZ2lubmluZ09mTGluZSk7CiAgICAgfQotICAgIHByZXBl
bmREb3QudW5jaGVja2VkQXBwZW5kKFRlcm06OkVuZE9mTGluZUFzc2VydGlvblRlcm0pOwotICAg
IHByZXBlbmRCZWdpbm5pbmdPZkxpbmUudW5jaGVja2VkQXBwZW5kKFRlcm06OkVuZE9mTGluZUFz
c2VydGlvblRlcm0pOwotICAgIAotICAgIGFkZFBhdHRlcm4oYWN0aW9uSWQsIHByZXBlbmREb3Qp
OwotICAgIGFkZFBhdHRlcm4oYWN0aW9uSWQsIHByZXBlbmRCZWdpbm5pbmdPZkxpbmUpOwogfQog
CiB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybih1aW50NjRfdCBhY3Rpb25JZCwg
Y29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZXJuKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1ODc5KQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDYtMjMgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVu
dCBFeHRlbnNpb25zXSBBZGQgYSB3YXkgdG8gbWF0Y2ggYSBkb21haW4gYnV0IG5vdCBzdWJkb21h
aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYy
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICBVcGRhdGUgc3ViZG9tYWluIHRlc3Qg
YmVjYXVzZSBvZiBjaGFuZ2VkIGJlaGF2aW9yIGFuZCBhZGQgdGVzdCBmb3IgbmV3ICcqJyBmdW5j
dGlvbmFsaXR5LgorCiAyMDE1LTA2LTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBXS0ZyYW1lSW5mbyBzaG91bGQgaGF2ZSBhbiBhY2Nlc3NvciBmb3IgdGhl
IEZyYW1lJ3MgY3VycmVudCBzZWN1cml0eSBvcmlnaW4uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHJl
dmlzaW9uIDE4NTg0MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw3ICs0MDgsNyBAQCBURVNU
X0YoQ29udGVudEV4dGVuc2lvblRlc3QsIERvbWFpblRyaWdnCiAgICAgdGVzdFJlcXVlc3QoaWZE
b21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0
Lmh0bSIpLCB7IH0pOwogICAgIHRlc3RSZXF1ZXN0KGlmRG9tYWluQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy90ZXN0Lmh0bSIpLCB7IH0pOwogICAg
IHRlc3RSZXF1ZXN0KGlmRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDov
L3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKLSAgICB0ZXN0UmVxdWVzdChpZkRvbWFpbkJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly9idWdzLndlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChp
ZkRvbWFpbkJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvdGVzdC5odG1sIiksIHsgfSk7CiAgICAgdGVzdFJlcXVlc3QoaWZEb21haW5CYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG0iKSwgeyB9
KTsKICAgICB0ZXN0UmVxdWVzdChpZkRvbWFpbkJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Imh0dHA6Ly93ZWJraXQub3JnYW5pemF0aW9uL3Rlc3QuaHRtIiksIHsgfSk7CiAgICAgdGVzdFJl
cXVlc3QoaWZEb21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90X3dl
YmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7CkBAIC00MTgsMTEgKzQxOCwzMSBAQCBURVNUX0Yo
Q29udGVudEV4dGVuc2lvblRlc3QsIERvbWFpblRyaWdnCiAgICAgdGVzdFJlcXVlc3QodW5sZXNz
RG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVz
dC5odG0iKSwgeyB9KTsKICAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5CYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsgfSk7
CiAgICAgdGVzdFJlcXVlc3QodW5sZXNzRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7Ci0gICAgdGVzdFJlcXVlc3Qo
dW5sZXNzRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5C
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3Qu
aHRtbCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CiAg
ICAgdGVzdFJlcXVlc3QodW5sZXNzRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
aHR0cDovL25vdF93ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsgfSk7CiAgICAgdGVzdFJlcXVlc3Qo
dW5sZXNzRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5v
cmdhbml6YXRpb24vdGVzdC5odG0iKSwgeyB9KTsKICAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21h
aW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVz
dC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsK
ICAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJodHRwOi8vd2Via2l0Lm9yZ2FuaXphdGlvbi90ZXN0Lmh0bWwiKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIAorICAgIGF1dG8gaWZEb21haW5T
dGFyQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwidGVzdFxcXFwuaHRtbFwiLCBcImlmLWRv
bWFpblwiOltcIip3ZWJraXQub3JnXCJdfX1dIik7CisgICAgdGVzdFJlcXVlc3QoaWZEb21haW5T
dGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5o
dG0iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChpZkRvbWFpblN0YXJCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsgfSk7Cisg
ICAgdGVzdFJlcXVlc3QoaWZEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
aHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChpZkRvbWFpblN0YXJCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3QuaHRtbCIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3QoaWZEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDov
L25vdF93ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZEb21h
aW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmdhbml6
YXRpb24vdGVzdC5odG0iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChpZkRvbWFpblN0YXJCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG1s
IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmdhbml6YXRpb24vdGVzdC5odG1sIiksIHsgfSk7
CisgICAgCisgICAgYXV0byB1bmxlc3NEb21haW5TdGFyQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJb
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwidGVzdFxcXFwuaHRtbFwiLCBcInVubGVzcy1kb21haW5cIjpbXCIqd2Via2l0Lm9yZ1wi
XX19XSIpOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bSIpLCB7IH0pOworICAgIHRl
c3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qo
dW5sZXNzRG9tYWluU3RhckJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJr
aXQub3JnL3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0
YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rl
c3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG0iKSwg
eyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmdhbml6YXRpb24vdGVzdC5odG0iKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaHR0cDovL25vdF93ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzRG9t
YWluU3RhckJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnYW5p
emF0aW9uL3Rlc3QuaHRtbCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CiAKICAgICBhdXRvIGNvbWJpbmVkQmFja2VuZDEgPSBtYWtlQmFja2VuZCgiW3tc
ImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcInRlc3RfYmxvY2tfbG9hZFwiLCBcImlmLWRvbWFpblwiOltcIndlYmtpdC5vcmdcIl19fSwi
CiAgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9jay1jb29raWVzXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RfYmxvY2tfY29va2llc1wiLCBcInVubGVzcy1k
b21haW5cIjpbXCJ3ZWJraXQub3JnXCJdfX1dIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255419</attachid>
            <date>2015-06-23 11:39:17 -0700</date>
            <delta_ts>2015-06-23 13:49:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146241-20150623113834.patch</filename>
            <type>text/plain</type>
            <size>13837</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA2LTIzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gQWRkIGEgd2F5IHRvIG1hdGNoIGEgZG9tYWluIGJ1dCBub3Qgc3ViZG9tYWlu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjQx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBoYXZlIGEgdHJpZ2dlciB3aXRoIGFuIGlmLWRvbWFp
biBhcHBseSB0byBzdWIyLnN1YjEud2Via2l0Lm9yZworICAgICAgICBidXQgbm90IHN1YjEud2Vi
a2l0Lm9yZyBieSBtYWtpbmcgdGhlIGRvbWFpbnMgZGVmYXVsdCB0byBvbmx5IGFwcGx5aW5nIHRv
IHRoZSBkb21haW4gYW5kIG5vdCBzdWJkb21haW5zLgorICAgICAgICBUbyBtYWtlIGEgZG9tYWlu
IGFwcGx5IHRvIGEgZG9tYWluIGFuZCBhbnkgc3ViZG9tYWlucywgdGhlIGRvbWFpbiBtdXN0IGJl
Z2luIHdpdGggYSAnKicuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVS
TEZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJp
bmVkVVJMRmlsdGVyczo6YWRkRG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICBNYWtlIGRv
bWFpbnMgYXBwbHkgb25seSB0byB0aGUgZXhhY3QgZG9tYWluIHVubGVzcyB0aGVyZSBpcyBhICog
YXQgdGhlIGJlZ2lubmluZywKKyAgICAgICAgaW4gd2hpY2ggY2FzZSB0aGV5IGFwcGx5IHRvIHRo
ZSBkb21haW4gYW5kIGFueSBzdWJkb21haW5zLgorCiAyMDE1LTA2LTIzICBKYXZpZXIgRmVybmFu
ZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRd
IFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjogYXZvaWQgY29tcHV0aW5nIG92ZXJmbG93IGFsaWdu
bWVudCBpZiBub3QgbmVlZGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAJKHJldmlzaW9uIDE4NTg0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwzMSArMTIyLDQ1IEBAIGJvb2wgQ29tYmluZWRVUkxG
aWx0ZXJzOjppc0VtcHR5KCkgY29uc3QKIAogdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFkZERv
bWFpbih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgLy8g
VGhpcyBpcyBsaWtlIGFkZGluZyAoLnxeKWRvbWFpbiQgYnkgYWRkaW5nIHR3byBWZWN0b3I8VGVy
bT4ncywKLSAgICAvLyBidXQgaW50ZXJwcmV0aW5nIGRvbWFpbiBhcyBhIHNlcmllcyBvZiBjaGFy
YWN0ZXJzLCBub3QgYSByZWd1bGFyIGV4cHJlc3Npb24uCi0gICAgLy8gVGhpcyB3YXkgYSBkb21h
aW4gb2YgIndlYmtpdC5vcmciIHdpbGwgbWF0Y2ggImJ1Z3Mud2Via2l0Lm9yZyIgYW5kICJ3ZWJr
aXQub3JnIi4KLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG1hdGNoaW5nIG9ubHkgc3Vi
ZG9tYWlucyBvciBubyBzdWJkb21haW5zLgotICAgIFZlY3RvcjxUZXJtPiBwcmVwZW5kRG90Owot
ICAgIFZlY3RvcjxUZXJtPiBwcmVwZW5kQmVnaW5uaW5nT2ZMaW5lOwotICAgIHByZXBlbmREb3Qu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW4ubGVuZ3RoKCkgKyAzKTsKLSAgICBwcmVwZW5k
QmVnaW5uaW5nT2ZMaW5lLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWluLmxlbmd0aCgpICsg
MSk7IC8vIFRoaXMgaXMganVzdCBubyAuKiBhdCB0aGUgYmVnaW5uaW5nLgotICAgIAotICAgIFRl
cm0gY2Fub25pY2FsRG90U3RhcihUZXJtOjpVbml2ZXJzYWxUcmFuc2l0aW9uKTsKLSAgICBjYW5v
bmljYWxEb3RTdGFyLnF1YW50aWZ5KEF0b21RdWFudGlmaWVyOjpaZXJvT3JNb3JlKTsKLSAgICBw
cmVwZW5kRG90LnVuY2hlY2tlZEFwcGVuZChjYW5vbmljYWxEb3RTdGFyKTsKLSAgICBwcmVwZW5k
RG90LnVuY2hlY2tlZEFwcGVuZChUZXJtKCcuJywgdHJ1ZSkpOwotICAgIAotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkb21haW4ubGVuZ3RoKCk7IGkrKykgewotICAgICAgICBBU1NFUlQo
aXNBU0NJSShkb21haW5baV0pKTsKLSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoZG9tYWlu
W2ldKSk7Ci0gICAgICAgIHByZXBlbmREb3QudW5jaGVja2VkQXBwZW5kKFRlcm0oZG9tYWluW2ld
LCB0cnVlKSk7Ci0gICAgICAgIHByZXBlbmRCZWdpbm5pbmdPZkxpbmUudW5jaGVja2VkQXBwZW5k
KFRlcm0oZG9tYWluW2ldLCB0cnVlKSk7CisgICAgaWYgKGRvbWFpbi5sZW5ndGgoKSAmJiBkb21h
aW5bMF0gPT0gJyonKSB7CisgICAgICAgIAorICAgICAgICAvLyBJZiBkb21haW4gc3RhcnRzIHdp
dGggYSAnKicgdGhlbiBpdCBtZWFucyBtYXRjaCBkb21haW4gYW5kIGl0cyBzdWJkb21haW5zLCBs
aWtlIChefC4pZG9tYWluJAorICAgICAgICAvLyBUaGlzIHdheSBhIGRvbWFpbiBvZiAiKndlYmtp
dC5vcmciIHdpbGwgbWF0Y2ggImJ1Z3Mud2Via2l0Lm9yZyIgYW5kICJ3ZWJraXQub3JnIi4KKyAg
ICAgICAgVmVjdG9yPFRlcm0+IHByZXBlbmREb3Q7CisgICAgICAgIFZlY3RvcjxUZXJtPiBwcmVw
ZW5kQmVnaW5uaW5nT2ZMaW5lOworICAgICAgICBwcmVwZW5kRG90LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZG9tYWluLmxlbmd0aCgpICsgMik7CisgICAgICAgIHByZXBlbmRCZWdpbm5pbmdPZkxp
bmUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW4ubGVuZ3RoKCkpOyAvLyBUaGlzIGlzIGp1
c3Qgbm8gLiogYXQgdGhlIGJlZ2lubmluZy4KKyAgICAgICAgCisgICAgICAgIFRlcm0gY2Fub25p
Y2FsRG90U3RhcihUZXJtOjpVbml2ZXJzYWxUcmFuc2l0aW9uKTsKKyAgICAgICAgY2Fub25pY2Fs
RG90U3Rhci5xdWFudGlmeShBdG9tUXVhbnRpZmllcjo6WmVyb09yTW9yZSk7CisgICAgICAgIHBy
ZXBlbmREb3QudW5jaGVja2VkQXBwZW5kKGNhbm9uaWNhbERvdFN0YXIpOworICAgICAgICBwcmVw
ZW5kRG90LnVuY2hlY2tlZEFwcGVuZChUZXJtKCcuJywgdHJ1ZSkpOworICAgICAgICAKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGRvbWFpbi5sZW5ndGgoKTsgaSsrKSB7CisgICAg
ICAgICAgICBBU1NFUlQoaXNBU0NJSShkb21haW5baV0pKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
aXNBU0NJSVVwcGVyKGRvbWFpbltpXSkpOworICAgICAgICAgICAgcHJlcGVuZERvdC51bmNoZWNr
ZWRBcHBlbmQoVGVybShkb21haW5baV0sIHRydWUpKTsKKyAgICAgICAgICAgIHByZXBlbmRCZWdp
bm5pbmdPZkxpbmUudW5jaGVja2VkQXBwZW5kKFRlcm0oZG9tYWluW2ldLCB0cnVlKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcHJlcGVuZERvdC51bmNoZWNrZWRBcHBlbmQoVGVybTo6RW5kT2ZMaW5l
QXNzZXJ0aW9uVGVybSk7CisgICAgICAgIHByZXBlbmRCZWdpbm5pbmdPZkxpbmUudW5jaGVja2Vk
QXBwZW5kKFRlcm06OkVuZE9mTGluZUFzc2VydGlvblRlcm0pOworICAgICAgICAKKyAgICAgICAg
YWRkUGF0dGVybihhY3Rpb25JZCwgcHJlcGVuZERvdCk7CisgICAgICAgIGFkZFBhdHRlcm4oYWN0
aW9uSWQsIHByZXBlbmRCZWdpbm5pbmdPZkxpbmUpOworICAgIH0gZWxzZSB7CisgICAgICAgIAor
ICAgICAgICAvLyBUaGlzIGlzIGxpa2UgYWRkaW5nIF5kb21haW4kLCBidXQgaW50ZXJwcmV0aW5n
IGRvbWFpbiBhcyBhIHNlcmllcyBvZiBjaGFyYWN0ZXJzLCBub3QgYSByZWd1bGFyIGV4cHJlc3Np
b24uCisgICAgICAgIC8vICJ3ZWJraXQub3JnIiB3aWxsIG1hdGNoICJ3ZWJraXQub3JnIiBidXQg
bm90ICJidWdzLndlYmtpdC5vcmciLgorICAgICAgICBWZWN0b3I8VGVybT4gcHJlcGVuZEJlZ2lu
bmluZ09mTGluZTsKKyAgICAgICAgcHJlcGVuZEJlZ2lubmluZ09mTGluZS5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGRvbWFpbi5sZW5ndGgoKSArIDEpOyAvLyBUaGlzIGlzIGp1c3Qgbm8gLiogYXQg
dGhlIGJlZ2lubmluZy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbWFpbi5s
ZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShkb21haW5baV0pKTsK
KyAgICAgICAgICAgIEFTU0VSVCghaXNBU0NJSVVwcGVyKGRvbWFpbltpXSkpOworICAgICAgICAg
ICAgcHJlcGVuZEJlZ2lubmluZ09mTGluZS51bmNoZWNrZWRBcHBlbmQoVGVybShkb21haW5baV0s
IHRydWUpKTsKKyAgICAgICAgfQorICAgICAgICBwcmVwZW5kQmVnaW5uaW5nT2ZMaW5lLnVuY2hl
Y2tlZEFwcGVuZChUZXJtOjpFbmRPZkxpbmVBc3NlcnRpb25UZXJtKTsKKyAgICAgICAgYWRkUGF0
dGVybihhY3Rpb25JZCwgcHJlcGVuZEJlZ2lubmluZ09mTGluZSk7CiAgICAgfQotICAgIHByZXBl
bmREb3QudW5jaGVja2VkQXBwZW5kKFRlcm06OkVuZE9mTGluZUFzc2VydGlvblRlcm0pOwotICAg
IHByZXBlbmRCZWdpbm5pbmdPZkxpbmUudW5jaGVja2VkQXBwZW5kKFRlcm06OkVuZE9mTGluZUFz
c2VydGlvblRlcm0pOwotICAgIAotICAgIGFkZFBhdHRlcm4oYWN0aW9uSWQsIHByZXBlbmREb3Qp
OwotICAgIGFkZFBhdHRlcm4oYWN0aW9uSWQsIHByZXBlbmRCZWdpbm5pbmdPZkxpbmUpOwogfQog
CiB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybih1aW50NjRfdCBhY3Rpb25JZCwg
Y29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZXJuKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1ODc5KQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDYtMjMgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVu
dCBFeHRlbnNpb25zXSBBZGQgYSB3YXkgdG8gbWF0Y2ggYSBkb21haW4gYnV0IG5vdCBzdWJkb21h
aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYy
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICBVcGRhdGUgc3ViZG9tYWluIHRlc3Qg
YmVjYXVzZSBvZiBjaGFuZ2VkIGJlaGF2aW9yIGFuZCBhZGQgdGVzdCBmb3IgbmV3ICcqJyBmdW5j
dGlvbmFsaXR5LgorCiAyMDE1LTA2LTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBXS0ZyYW1lSW5mbyBzaG91bGQgaGF2ZSBhbiBhY2Nlc3NvciBmb3IgdGhl
IEZyYW1lJ3MgY3VycmVudCBzZWN1cml0eSBvcmlnaW4uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHJl
dmlzaW9uIDE4NTg0MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw3ICs0MDgsOCBAQCBURVNU
X0YoQ29udGVudEV4dGVuc2lvblRlc3QsIERvbWFpblRyaWdnCiAgICAgdGVzdFJlcXVlc3QoaWZE
b21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0
Lmh0bSIpLCB7IH0pOwogICAgIHRlc3RSZXF1ZXN0KGlmRG9tYWluQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy90ZXN0Lmh0bSIpLCB7IH0pOwogICAg
IHRlc3RSZXF1ZXN0KGlmRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDov
L3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKLSAgICB0ZXN0UmVxdWVzdChpZkRvbWFpbkJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly9idWdzLndlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChp
ZkRvbWFpbkJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvdGVzdC5odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZEb21haW5CYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vc3ViMi5zdWIxLndlYmtpdC5vcmcvdGVzdC5odG1s
IiksIHsgfSk7CiAgICAgdGVzdFJlcXVlc3QoaWZEb21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG0iKSwgeyB9KTsKICAgICB0ZXN0
UmVxdWVzdChpZkRvbWFpbkJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJr
aXQub3JnYW5pemF0aW9uL3Rlc3QuaHRtIiksIHsgfSk7CiAgICAgdGVzdFJlcXVlc3QoaWZEb21h
aW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVz
dC5odG1sIiksIHsgfSk7CkBAIC00MTgsMTEgKzQxOSw1OCBAQCBURVNUX0YoQ29udGVudEV4dGVu
c2lvblRlc3QsIERvbWFpblRyaWdnCiAgICAgdGVzdFJlcXVlc3QodW5sZXNzRG9tYWluQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG0iKSwgeyB9
KTsKICAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsgfSk7CiAgICAgdGVzdFJl
cXVlc3QodW5sZXNzRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dl
YmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7Ci0gICAgdGVzdFJlcXVlc3QodW5sZXNzRG9tYWlu
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy90ZXN0
Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5CYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3QodW5sZXNzRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3N1YjIu
c3ViMS53ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpCbG9ja0xvYWQgfSk7CiAgICAgdGVzdFJlcXVlc3QodW5sZXNzRG9tYWluQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL25vdF93ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsg
fSk7CiAgICAgdGVzdFJlcXVlc3QodW5sZXNzRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaHR0cDovL3dlYmtpdC5vcmdhbml6YXRpb24vdGVzdC5odG0iKSwgeyB9KTsKICAgICB0
ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRw
Oi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKICAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5CYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZ2FuaXphdGlvbi90ZXN0Lmh0
bWwiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IAorICAgIGF1dG8gaWZEb21haW5TdGFyQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwidGVz
dFxcXFwuaHRtbFwiLCBcImlmLWRvbWFpblwiOltcIip3ZWJraXQub3JnXCJdfX1dIik7CisgICAg
dGVzdFJlcXVlc3QoaWZEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0
cDovL3dlYmtpdC5vcmcvdGVzdC5odG0iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChpZkRvbWFp
blN0YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Rlc3QuaHRtIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZEb21haW5TdGFyQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVz
dChpZkRvbWFpblN0YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53
ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZEb21haW5TdGFyQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiaHR0cDovL3N1YjIuc3ViMS53ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3QoaWZEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL25v
dF93ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZEb21haW5T
dGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmdhbml6YXRp
b24vdGVzdC5odG0iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChpZkRvbWFpblN0YXJCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG1sIiks
IHsgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmdhbml6YXRpb24vdGVzdC5odG1sIiksIHsgfSk7Cisg
ICAgCisgICAgYXV0byB1bmxlc3NEb21haW5TdGFyQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wi
YWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwi
OlwidGVzdFxcXFwuaHRtbFwiLCBcInVubGVzcy1kb21haW5cIjpbXCIqd2Via2l0Lm9yZ1wiXX19
XSIpOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bSIpLCB7IH0pOworICAgIHRlc3RS
ZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Rlc3QuaHRtIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QodW5s
ZXNzRG9tYWluU3RhckJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQu
b3JnL3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3Qu
aHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vc3ViMi5zdWIxLndlYmtpdC5vcmcvdGVzdC5odG1s
IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzRG9tYWluU3RhckJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy90ZXN0Lmh0bSIpLCB7IH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJodHRwOi8vd2Via2l0Lm9yZ2FuaXphdGlvbi90ZXN0Lmh0bSIpLCB7IH0pOworICAgIHRl
c3RSZXF1ZXN0KHVubGVzc0RvbWFpblN0YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NEb21haW5TdGFy
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmdhbml6YXRpb24v
dGVzdC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9
KTsKKworICAgIGF1dG8gaWZTdWJEb21haW5CYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ0
ZXN0XFxcXC5odG1sXCIsIFwiaWYtZG9tYWluXCI6W1wic3ViMS53ZWJraXQub3JnXCJdfX1dIik7
CisgICAgdGVzdFJlcXVlc3QoaWZTdWJEb21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChp
ZlN1YkRvbWFpbkJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvdGVzdC5odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZTdWJEb21haW5CYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vc3ViMS53ZWJraXQub3JnL3Rlc3QuaHRt
bCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3QoaWZTdWJEb21haW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRw
Oi8vc3ViMi5zdWIxLndlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7CisKKyAgICBhdXRvIGlm
U3ViRG9tYWluU3RhckJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVc
IjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RcXFxcLmh0bWxc
IiwgXCJpZi1kb21haW5cIjpbXCIqc3ViMS53ZWJraXQub3JnXCJdfX1dIik7CisgICAgdGVzdFJl
cXVlc3QoaWZTdWJEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDov
L3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoaWZTdWJEb21h
aW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy90ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChpZlN1YkRvbWFpblN0YXJCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vc3ViMS53ZWJraXQub3JnL3Rlc3QuaHRt
bCIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3QoaWZTdWJEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
aHR0cDovL3N1YjIuc3ViMS53ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisKKyAgICBhdXRvIHVubGVzc1N1YkRvbWFp
bkJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RcXFxcLmh0bWxcIiwgXCJ1bmxlc3Mt
ZG9tYWluXCI6W1wic3ViMS53ZWJraXQub3JnXCJdfX1dIik7CisgICAgdGVzdFJlcXVlc3QodW5s
ZXNzU3ViRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5v
cmcvdGVzdC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NTdWJEb21haW5CYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJodHRwOi8vYnVncy53ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QodW5s
ZXNzU3ViRG9tYWluQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3N1YjEud2Vi
a2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NTdWJEb21h
aW5CYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vc3ViMi5zdWIxLndlYmtpdC5v
cmcvdGVzdC5odG1sIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICAKKyAgICBhdXRvIHVubGVzc1N1YkRvbWFpblN0YXJCYWNrZW5kID0gbWFrZUJh
Y2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJ0ZXN0XFxcXC5odG1sXCIsIFwidW5sZXNzLWRvbWFpblwiOltcIipzdWIx
LndlYmtpdC5vcmdcIl19fV0iKTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NTdWJEb21haW5TdGFy
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1s
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdCh1bmxlc3NTdWJEb21haW5TdGFyQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc1N1YkRv
bWFpblN0YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vc3ViMS53ZWJraXQu
b3JnL3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc1N1YkRvbWFpblN0
YXJCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vc3ViMi5zdWIxLndlYmtpdC5v
cmcvdGVzdC5odG1sIiksIHsgfSk7CiAKICAgICBhdXRvIGNvbWJpbmVkQmFja2VuZDEgPSBtYWtl
QmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntc
InVybC1maWx0ZXJcIjpcInRlc3RfYmxvY2tfbG9hZFwiLCBcImlmLWRvbWFpblwiOltcIndlYmtp
dC5vcmdcIl19fSwiCiAgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9jay1jb29r
aWVzXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RfYmxvY2tfY29va2llc1wi
LCBcInVubGVzcy1kb21haW5cIjpbXCJ3ZWJraXQub3JnXCJdfX1dIik7Cg==
</data>
<flag name="review"
          id="280499"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>