<?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>136714</bug_id>
          
          <creation_ts>2014-09-10 13:56:39 -0700</creation_ts>
          <short_desc>AX: in an aria-labelledby computation, do not traverse into elements whose nameFrom value does not include &apos;contents&apos;</short_desc>
          <delta_ts>2014-09-29 14:12:29 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>136689</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1034398</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-09-10 13:56:39 -0700</bug_when>
    <thetext>Regression r173459: in an aria-labelledby computation, do not traverse into elements whose nameFrom value does not include &quot;contents&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034403</commentid>
    <comment_count>1</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-09-10 14:07:20 -0700</bug_when>
    <thetext>Assigning to myself to patch the test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034498</commentid>
    <comment_count>2</comment_count>
      <attachid>237926</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-09-10 17:59:51 -0700</bug_when>
    <thetext>Created attachment 237926
layout test update

New test case demonstrated a few regressions and other failures of previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034499</commentid>
    <comment_count>3</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-09-10 18:04:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/18300212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036772</commentid>
    <comment_count>4</comment_count>
      <attachid>238554</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-09-23 11:30:50 -0700</bug_when>
    <thetext>Created attachment 238554
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036860</commentid>
    <comment_count>5</comment_count>
      <attachid>238554</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-09-23 15:52:36 -0700</bug_when>
    <thetext>Comment on attachment 238554
patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +2014-09-23  Chris Fleizach  &lt;cfleizach@apple.com&gt;
&gt; +
&gt; +        AX: In an aria-labelledby computation, do not traverse into elements whose nameFrom value does not include &apos;contents&apos;
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=136714
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        There are certain ARIA elements that tell us we should not query their children when determining the name of the object.
&gt; +        Those ones have the &quot;nameFrom&quot; property set to &quot;author&quot; instead of &quot;contents.&quot; WebKit needs to honor that status.
&gt; +
&gt; +        Modified: accessibility/aria-labelledby-with-descendants.html
&gt; +
&gt; +        * accessibility/AccessibilityNodeObject.cpp:
&gt; +        (WebCore::shouldUseAccessiblityObjectInnerText):
&gt; +        (WebCore::accessibleNameForNode):
&gt; +        * accessibility/AccessibilityObject.cpp:
&gt; +        (WebCore::AccessibilityObject::accessibleNameDerivesFromContent):
&gt; +        * accessibility/AccessibilityObject.h:
&gt; +

This chunk seems to be duplicated in the patch (yet probably harmless)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037641</commentid>
    <comment_count>6</comment_count>
      <attachid>238554</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-09-27 00:00:32 -0700</bug_when>
    <thetext>Comment on attachment 238554
patch

Removing review. After scrutizning the layout test results, I realized we were missing a few cases. The changes were big enough that I need a new review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037647</commentid>
    <comment_count>7</comment_count>
      <attachid>238766</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-09-27 00:20:28 -0700</bug_when>
    <thetext>Created attachment 238766
new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037648</commentid>
    <comment_count>8</comment_count>
      <attachid>238767</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-09-27 00:25:16 -0700</bug_when>
    <thetext>Created attachment 238767
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037823</commentid>
    <comment_count>9</comment_count>
      <attachid>238767</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-28 17:17:54 -0700</bug_when>
    <thetext>Comment on attachment 238767
patch

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

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1645
&gt; +static void appendStringBuildTextToName(String&amp; text, StringBuilder&amp; builder)

This should take const String&amp; text. Also the StringBuilder should be the first argument. Also not sure that &quot;append string build text to name&quot; is the best name for this helper function. I think it should probably just be called &quot;append name&quot; or perhaps &quot;append name to string builder&quot;.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1670
&gt; +            String axName = accessibleNameForNode(child-&gt;node());
&gt; +            appendStringBuildTextToName(axName, builder);

This would read better without the local variable.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1864
&gt; +        String valueDesc = axObject-&gt;valueDescription();
&gt; +        if (!valueDesc.isEmpty())
&gt; +            return valueDesc;

Please don’t abbreviate “description” as “desc” in WebKit code.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1875
&gt; +    }
&gt;      else

WebKit style puts the } on the same line as the else.

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:292
&gt; +bool AccessibilityObject::accessibleNameDerivesFromContent() const

This has some long case lists in it. Do we have test coverage for all these cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037951</commentid>
    <comment_count>10</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-09-29 09:13:27 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 238767 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238767&amp;action=review
&gt; 

Thanks for your feedback. 

&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1645
&gt; &gt; +static void appendStringBuildTextToName(String&amp; text, StringBuilder&amp; builder)
&gt; 
&gt; This should take const String&amp; text. Also the StringBuilder should be the first argument. Also not sure that &quot;append string build text to name&quot; is the best name for this helper function. I think it should probably just be called &quot;append name&quot; or perhaps &quot;append name to string builder&quot;.
&gt; 

Done

&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1670
&gt; &gt; +            String axName = accessibleNameForNode(child-&gt;node());
&gt; &gt; +            appendStringBuildTextToName(axName, builder);
&gt; 
&gt; This would read better without the local variable.
&gt; 

Will do

&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1864
&gt; &gt; +        String valueDesc = axObject-&gt;valueDescription();
&gt; &gt; +        if (!valueDesc.isEmpty())
&gt; &gt; +            return valueDesc;
&gt; 
&gt; Please don’t abbreviate “description” as “desc” in WebKit code.

Will do
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1875
&gt; &gt; +    }
&gt; &gt;      else
&gt; 
&gt; WebKit style puts the } on the same line as the else.
&gt; 

fixed

&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:292
&gt; &gt; +bool AccessibilityObject::accessibleNameDerivesFromContent() const
&gt; 
&gt; This has some long case lists in it. Do we have test coverage for all these cases?

I&apos;ll fill out the rest of the test coverage.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037995</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-09-29 11:19:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/174074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038010</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-29 12:29:02 -0700</bug_when>
    <thetext>Looks like this change broke two accessibility tests:

https://build.webkit.org/results/Apple%20Mavericks%20Release%20WK1%20(Tests)/r174074%20(8854)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038015</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-09-29 12:36:55 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Looks like this change broke two accessibility tests:
&gt; 
&gt; https://build.webkit.org/results/Apple%20Mavericks%20Release%20WK1%20(Tests)/r174074%20(8854)/results.html

Ok, I&apos;m on it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038051</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-29 14:11:52 -0700</bug_when>
    <thetext>I think that Roger addressed this with &lt;https://trac.webkit.org/changeset/174080&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038053</commentid>
    <comment_count>15</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-09-29 14:12:29 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I think that Roger addressed this with &lt;https://trac.webkit.org/changeset/174080&gt;.

I think so. His changes were inline with the same changes I was going to make</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>237926</attachid>
            <date>2014-09-10 17:59:51 -0700</date>
            <delta_ts>2014-09-10 17:59:51 -0700</delta_ts>
            <desc>layout test update</desc>
            <filename>aria-labelledby-with-descendants.html</filename>
            <type>text/html</type>
            <size>3937</size>
            <attacher name="James Craig">jcraig</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgo8aHRtbD4KPGhl
YWQ+CjxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgo8
L2hlYWQ+Cjxib2R5IGlkPSJib2R5Ij4KCjxkaXYgaWQ9ImNvbnRlbnQiPgoKPGRpdiBjbGFzcz0i
ZXgiIGRhdGEtbGFiZWw9ImhlbGxvIGxpbmsgdXNlIHdvcmxkIHRlc3QxIHRlc3QyIHRlc3QzIiBh
cmlhLWxhYmVsbGVkYnk9ImEgYiIgaWQ9Imdyb3VwIiByb2xlPSJncm91cCI+Z3JvdXAgdGV4dDwv
ZGl2Pgo8ZGl2IGlkPSJhIj5oZWxsbyA8YSBocmVmPSIjIj5saW5rPC9hPiA8ZGl2IHJvbGU9Imdy
b3VwIj5za2lwPC9kaXY+IDxkaXYgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9InVzZSI+c2tpcDwv
ZGl2PiB3b3JsZDwvZGl2Pgo8IS0tIHBhcmFncmFwaCByb2xlIGlzIGFtYmlndW91cyBzbyBva2F5
IHRvIGxlYXZlIG5leHQgZXhhbXBsZSBhcyBpdCAtLT4KPGRpdiBpZD0iYiI+PGJ1dHRvbj50ZXN0
MTwvYnV0dG9uPjxwIHRhYmluZGV4PTA+dGVzdDIgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPmhp
ZGRlbjwvc3Bhbj4gdGVzdDM8L3A+PC9kaXY+CgoKPGlucHV0IHR5cGU9ImNoZWNrYm94IiBhcmlh
LWxhYmVsbGVkYnk9InJldmVyc2VsYWJlbGZvciIgY2xhc3M9ImV4IiBkYXRhLWxhYmVsPSJmb28g
YmFyIiBkYXRhLW5vdGU9ImxhYmVsbGVkIGJ5IGxhYmVsIGVsZW1lbnQiPgo8bGFiZWwgaWQ9InJl
dmVyc2VsYWJlbGZvciI+Zm9vIDxzcGFuIHJvbGU9InRleHQiIGFyaWEtbGFiZWw9ImJhciI+c2tp
cDwvc3Bhbj48L2xhYmVsPgo8YnI+Cgo8aW5wdXQgdHlwZT0iY2hlY2tib3giIGFyaWEtbGFiZWxs
ZWRieT0icmV2ZXJzZWxhYmVsZm9yd2l0aGRpdiIgY2xhc3M9ImV4IiBkYXRhLWxhYmVsPSJmb28g
YmFyIiBkYXRhLW5vdGU9ImxhYmVsbGVkIGJ5IGRpdiBlbGVtZW50Ij4KPGRpdiBpZD0icmV2ZXJz
ZWxhYmVsZm9yd2l0aGRpdiI+Zm9vIDxzcGFuIHJvbGU9InRleHQiIGFyaWEtbGFiZWw9ImJhciI+
c2tpcDwvc3Bhbj48L2Rpdj4KPGJyPgoKPCEtLSB3b3VsZCBiZSAiYmFyIiBuYXRpdmVseSwgYnV0
IGxhYmVsIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiB0byAiZm9vIiBieSBsYWJlbGxlZGJ5IC0tPgo8
ZGl2IGlkPSJvdmVycmlkZXNuYXRpdmVsYWJlbCI+Zm9vPC9kaXY+PGxhYmVsIGZvcj0ibmF0aXZl
bGFiZWxvdmVycmlkZGVuIj5iYXI8L2xhYmVsPgo8aW5wdXQgY2xhc3M9ImV4IiBkYXRhLWxhYmVs
PSJmb28iIGlkPSJuYXRpdmVsYWJlbG92ZXJyaWRkZW4iIHR5cGU9InRleHQiIGFyaWEtbGFiZWxs
ZWRieT0ib3ZlcnJpZGVzbmF0aXZlbGFiZWwiIGRhdGEtbm90ZT0ib3ZlcnJpZGVzIG5hdGl2ZSBs
YWJlbCI+Cgo8IS0tIHNlbGYtcmVmZXJlbmNpbmcgbGFiZWxsZWRieSBpbiBjb21iaW5hdGlvbiB3
aXRoIGV4dGVybmFsIHJlZmVyZW5jZSAtLT4KPGRpdiBpZD0icHJvZHVjdG5hbWUiPjxuYXYgcm9s
ZT0ibmF2aWdhdGlvbiI+PCEtLSBuYXYgZG9lcyBub3QgZ2V0IG5hbWVGcm9tOmNvbnRlbnRzIC0t
PnByb2R1Y3QgbmFtZTwvbmF2PjwvZGl2Pgo8YnV0dG9uIGNsYXNzPSJleCIgZGF0YS1sYWJlbD0i
RGVsZXRlIiBhcmlhLWxhYmVsPSJEZWxldGUiIGFyaWEtbGFiZWxsZWRieT0iZGVsZXRlYnV0dG9u
IHByb2R1Y3RuYW1lIiBpZD0iZGVsZXRlYnV0dG9uIiBkYXRhLW5vdGU9InNlbGYtcmVmZXJlbmNp
YWwgbGFiZWxsZWRieSBpbmNsdWRlcyBuYXYiPng8L2J1dHRvbj4KCjwhLS0gc2VsZi1yZWZlcmVu
Y2luZyBsYWJlbGxlZGJ5IGluIGNvbWJpbmF0aW9uIHdpdGggZXh0ZXJuYWwgcmVmZXJlbmNlIC0t
Pgo8ZGl2IGlkPSJwcm9kdWN0bmFtZSI+PG5hdiByb2xlPSJoZWFkaW5nIj48IS0tIG5hdiBkb2Vz
IG5vdCBnZXQgbmFtZUZyb206Y29udGVudHMsIGJ1dCBoZWFkaW5nIGRvZXMuIC0tPnByb2R1Y3Qg
bmFtZTwvbmF2PjwvZGl2Pgo8YnV0dG9uIGNsYXNzPSJleCIgZGF0YS1sYWJlbD0iRGVsZXRlIHBy
b2R1Y3QgbmFtZSIgYXJpYS1sYWJlbD0iRGVsZXRlIiBhcmlhLWxhYmVsbGVkYnk9ImRlbGV0ZWJ1
dHRvbiBwcm9kdWN0bmFtZSIgaWQ9ImRlbGV0ZWJ1dHRvbiIgZGF0YS1ub3RlPSJzZWxmLXJlZmVy
ZW5jaWFsIGxhYmVsbGVkYnkgaW5jbHVkZXMgaGVhZGluZyI+eDwvYnV0dG9uPgoKCjxkaXYgY2xh
c3M9ImV4IiBkYXRhLWxhYmVsPSJmb28gYmFyIGJheiBib3AgYmFwIGJvb20iIGFyaWEtbGFiZWxs
ZWRieT0iYTIgYjIiIHJvbGU9Imdyb3VwIiBkYXRhLW5vdGU9ImluY2x1ZGVzIGZvcm0gZWxlbWVu
dHMiPmZvbzwvZGl2Pgo8YnV0dG9uIGlkPSJhMiI+IGZvbyA8aW1nIHNyYz0iIyIgYWx0PSJiYXIi
PiBiYXo8L2J1dHRvbj4KPGRpdiBpZD0iYjIiPmJvcCA8aW5wdXQgdmFsdWU9ImJhcCI+IDxpbnB1
dCB0eXBlPSJyYW5nZSIgYXJpYS12YWx1ZXRleHQ9ImJvb20iPjwvZGl2PgoKCgo8L2Rpdj4KCjxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgo8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KCjxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCmlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRo
YXQgbmF0aXZlIGVsZW1lbnRzIGFuZCBBUklBIG92ZXJyaWRlcyByZXN1bHQgaW4gdGhlIHNhbWUg
QVJJQSBjb21wdXRlZCByb2xlLCByZWdhcmRsZXNzIG9mIHBsYXRmb3JtLiIpCiAgICB2YXIgZXhh
bXBsZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuZXgiKTsKICAgIGZvciAodmFyIGkg
PSAwLCBjID0gZXhhbXBsZXMubGVuZ3RoOyBpIDwgYzsgaSsrKSB7CiAgICAgICAgdmFyIGVsID0g
ZXhhbXBsZXNbaV07CgkJZWwuaWQgPSBlbC5pZCB8fCAiZXgiICsgaTsKCgkJdmFyIG5vdGUgPSBl
bC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7CgkJaWYgKGVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1ub3Rl
JykpCgkJCW5vdGUgKz0gIiAiICsgZWwuZ2V0QXR0cmlidXRlKCdkYXRhLW5vdGUnKTsKCiAgICAg
ICAgYXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKGVsLmlkKTsKICAgICAgICBpZiAoIWF4RWxlbWVudCkKICAgICAgICAJY29udGludWU7Cgog
ICAgICAgIGNvbXB1dGVkTGFiZWwgPSBheEVsZW1lbnQuZGVzY3JpcHRpb24ucmVwbGFjZSgiQVhE
ZXNjcmlwdGlvbjogIiwgIiIpOwogICAgICAgIGV4cGVjdGVkTGFiZWwgPSAiIjsKICAgICAgICBp
ZiAoZWwuaGFzQXR0cmlidXRlKCJkYXRhLWxhYmVsIikpIHsKICAgICAgICAgICAgZXhwZWN0ZWRM
YWJlbCA9IGVsLmdldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbCIpOwogICAgICAgIH0KCiAgICAgICAg
bWF0Y2hlZFJlc3VsdHMgPSAoY29tcHV0ZWRMYWJlbCA9PSBleHBlY3RlZExhYmVsKQoKICAgICAg
ICByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwogICAgICAgIGlm
IChtYXRjaGVkUmVzdWx0cykgewogICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJQQVNT
OiAnIiArIGNvbXB1dGVkTGFiZWwgKyAiJyAoIiArIG5vdGUgKyAiKVxuIjsKICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJGQUlMOiAnIiArIGNvbXB1dGVk
TGFiZWwgKyAiJyBFeHBlY3RlZDogJyIgKyBleHBlY3RlZExhYmVsICsgIicgKCIgKyBub3RlICsg
IilcbiI7CiAgICAgICAgfQogICAgfQoKICAgIC8vIE9uY2UgdGVzdHMgYXJlIGNvbXBsZXRlLCBo
aWRlIGFsbCB0aGUgZXhhbXBsZSBtYXJrdXAuCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29udGVudCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cgp9Cgo8L3NjcmlwdD4KCjxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238554</attachid>
            <date>2014-09-23 11:30:50 -0700</date>
            <delta_ts>2014-09-27 00:20:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>12700</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mzg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE0LTA5LTIzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEluIGFuIGFyaWEt
bGFiZWxsZWRieSBjb21wdXRhdGlvbiwgZG8gbm90IHRyYXZlcnNlIGludG8gZWxlbWVudHMgd2hv
c2UgbmFtZUZyb20gdmFsdWUgZG9lcyBub3QgaW5jbHVkZSAnY29udGVudHMnCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgY2VydGFpbiBB
UklBIGVsZW1lbnRzIHRoYXQgdGVsbCB1cyB3ZSBzaG91bGQgbm90IHF1ZXJ5IHRoZWlyIGNoaWxk
cmVuIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIG5hbWUgb2YgdGhlIG9iamVjdC4KKyAgICAgICAgVGhv
c2Ugb25lcyBoYXZlIHRoZSAibmFtZUZyb20iIHByb3BlcnR5IHNldCB0byAiYXV0aG9yIiBpbnN0
ZWFkIG9mICJjb250ZW50cy4iIFdlYktpdCBuZWVkcyB0byBob25vciB0aGF0IHN0YXR1cy4KKwor
ICAgICAgICBNb2RpZmllZDogYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktd2l0aC1kZXNj
ZW5kYW50cy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUFjY2Vzc2libGl0eU9iamVj
dElubmVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjphY2Nlc3NpYmxlTmFtZUZvck5vZGUpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9t
Q29udGVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6
CisKIDIwMTQtMDktMjMgIEVkdWFyZG8gTGltYSBNaXRldiAgPGVsaW1hQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gQWRkcyBpbXBsZW1lbnRhdGlvbiBvZiBzdWJ0bGUgY3J5cHRvIEhNQUMg
YWxnb3JpdGhtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzM4ODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wOS0y
MyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBJ
biBhbiBhcmlhLWxhYmVsbGVkYnkgY29tcHV0YXRpb24sIGRvIG5vdCB0cmF2ZXJzZSBpbnRvIGVs
ZW1lbnRzIHdob3NlIG5hbWVGcm9tIHZhbHVlIGRvZXMgbm90IGluY2x1ZGUgJ2NvbnRlbnRzJwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NzE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJl
IGNlcnRhaW4gQVJJQSBlbGVtZW50cyB0aGF0IHRlbGwgdXMgd2Ugc2hvdWxkIG5vdCBxdWVyeSB0
aGVpciBjaGlsZHJlbiB3aGVuIGRldGVybWluaW5nIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QuCisg
ICAgICAgIFRob3NlIG9uZXMgaGF2ZSB0aGUgIm5hbWVGcm9tIiBwcm9wZXJ0eSBzZXQgdG8gImF1
dGhvciIgaW5zdGVhZCBvZiAiY29udGVudHMuIiBXZWJLaXQgbmVlZHMgdG8gaG9ub3IgdGhhdCBz
dGF0dXMuCisKKyAgICAgICAgTW9kaWZpZWQ6IGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5
LXdpdGgtZGVzY2VuZGFudHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VBY2Nlc3Np
YmxpdHlPYmplY3RJbm5lclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJsZU5hbWVG
b3JOb2RlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU5hbWVE
ZXJpdmVzRnJvbUNvbnRlbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorCiAyMDE0LTA5LTIzICBFZHVhcmRvIExpbWEgTWl0ZXYgIDxlbGltYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZHMgaW1wbGVtZW50YXRpb24gb2Ygc3VidGxlIGNy
eXB0byBITUFDIGFsZ29yaXRobQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJKHJldmlzaW9uIDE3Mzg4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEwLDYgKzE2MTAsMTEgQEAKICAgICAvLyBxdWl0
ZSBsb25nLiBBcyBhIGhldXJpc3RpYywgc2tpcCBsaW5rcywgY29udHJvbHMsIGFuZCBlbGVtZW50
cyB0aGF0IGFyZSB1c3VhbGx5CiAgICAgLy8gY29udGFpbmVycyB3aXRoIGxvdHMgb2YgY2hpbGRy
ZW4uCiAKKyAgICAvLyBBUklBIHN0YXRlcyB0aGF0IGNlcnRhaW4gZWxlbWVudHMgYXJlIG5vdCBh
bGxvd2VkIHRvIGV4cG9zZSB0aGVpciBjaGlsZHJlbiBjb250ZW50IGZvciBuYW1lIGNhbGN1bGF0
aW9uLgorICAgIGlmIChtb2RlLmNoaWxkcmVuSW5jbHVzaW9uID09IEFjY2Vzc2liaWxpdHlUZXh0
VW5kZXJFbGVtZW50TW9kZTo6VGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlTmFtZUZyb21Db250
ZW50c0NoaWxkcmVuCisgICAgICAgICYmICFvYmotPmFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21D
b250ZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2Uob2JqLT5nZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgInRydWUiKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMTg0OSw3ICsxODU0LDcgQEAKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShub2RlKTsKICAgICBTdHJpbmcgdGV4dDsKICAgICBpZiAoYXhPYmpl
Y3QpCi0gICAgICAgIHRleHQgPSBheE9iamVjdC0+dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmls
aXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
OjpUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hpbGRyZW4sIHRydWUpKTsKKyAgICAg
ICAgdGV4dCA9IGF4T2JqZWN0LT50ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5k
ZXJFbGVtZW50TW9kZShBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGU6OlRleHRVbmRl
ckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiwgdHJ1ZSkpOwogICAg
IGVsc2UKICAgICAgICAgdGV4dCA9IGVsZW1lbnQtPmlubmVyVGV4dCgpOwogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxNzM4ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNiArMjg3LDU3
IEBACiAgICAgICAgIHx8IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpLmNvbnRhaW5zKCp0ZXh0
LCBmYWxzZSkKICAgICAgICAgfHwgc3RyaW5nVmFsdWUoKS5jb250YWlucygqdGV4dCwgZmFsc2Up
OwogfQorCisvLyBBUklBIG1hcmtzIGVsZW1lbnRzIGFzIGhhdmluZyB0aGVpciBhY2Nlc3NpYmxl
IG5hbWUgZGVyaXZlIGZyb20gZWl0aGVyIHRoZWlyIGNvbnRlbnRzLCBvciB0aGVpciBhdXRob3Ig
cHJvdmlkZSBuYW1lLgorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmxlTmFtZURl
cml2ZXNGcm9tQ29udGVudCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChhcmlhUm9sZUF0dHJpYnV0
ZSgpKSB7CisgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKKyAgICBjYXNlIEFwcGxpY2F0
aW9uQWxlcnREaWFsb2dSb2xlOgorICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgorICAg
IGNhc2UgQXBwbGljYXRpb25Mb2dSb2xlOgorICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9s
ZToKKyAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKKyAgICBjYXNlIEFwcGxpY2F0aW9u
VGltZXJSb2xlOgorICAgIGNhc2UgQ29tYm9Cb3hSb2xlOgorICAgIGNhc2UgRGVmaW5pdGlvblJv
bGU6CisgICAgY2FzZSBEb2N1bWVudFJvbGU6CisgICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xl
OgorICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKKyAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6
CisgICAgY2FzZSBEb2N1bWVudFJlZ2lvblJvbGU6CisgICAgY2FzZSBGb3JtUm9sZToKKyAgICBj
YXNlIEdyaWRSb2xlOgorICAgIGNhc2UgR3JvdXBSb2xlOgorICAgIGNhc2UgSW1hZ2VSb2xlOgor
ICAgIGNhc2UgTGlzdFJvbGU6CisgICAgY2FzZSBMaXN0Qm94Um9sZToKKyAgICBjYXNlIExhbmRt
YXJrQXBwbGljYXRpb25Sb2xlOgorICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgorICAgIGNh
c2UgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZToKKyAgICBjYXNlIExhbmRtYXJrQ29udGVudElu
Zm9Sb2xlOgorICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZToKKyAgICBjYXNlIExhbmRt
YXJrTWFpblJvbGU6CisgICAgY2FzZSBMYW5kbWFya1NlYXJjaFJvbGU6CisgICAgY2FzZSBNZW51
Um9sZToKKyAgICBjYXNlIE1lbnVCYXJSb2xlOgorICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JS
b2xlOgorICAgIGNhc2UgUmFkaW9Hcm91cFJvbGU6CisgICAgY2FzZSBTY3JvbGxCYXJSb2xlOgor
ICAgIGNhc2UgU2xpZGVyUm9sZToKKyAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgorICAgIGNhc2Ug
U3BsaXR0ZXJSb2xlOgorICAgIGNhc2UgVGFiTGlzdFJvbGU6CisgICAgY2FzZSBUYWJQYW5lbFJv
bGU6CisgICAgY2FzZSBUZXh0QXJlYVJvbGU6CisgICAgY2FzZSBUb29sYmFyUm9sZToKKyAgICBj
YXNlIFRyZWVHcmlkUm9sZToKKyAgICBjYXNlIFRyZWVSb2xlOgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQogICAgIAog
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkTGFiZWwoKQogewpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJ
KHJldmlzaW9uIDE3Mzg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNiArMjQ4LDcgQEAKICAgICBl
bnVtIENoaWxkcmVuSW5jbHVzaW9uIHsKICAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVTa2lw
SWdub3JlZENoaWxkcmVuLAogICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVBbGxD
aGlsZHJlbiwKKyAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlTmFtZUZyb21Db250
ZW50c0NoaWxkcmVuLCAvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIEFSSUEgY29uY2VwdDogbmFtZUZy
b20KICAgICB9OwogICAgIAogICAgIENoaWxkcmVuSW5jbHVzaW9uIGNoaWxkcmVuSW5jbHVzaW9u
OwpAQCAtNjY3LDYgKzY2OCw3IEBACiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0
dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcg
YXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdDsKKyAgICBib29s
IGFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3Q7CiAgICAgCiAgICAgLy8g
QWJicmV2aWF0aW9ucwogICAgIHZpcnR1YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mzg4MSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0
LTA5LTIzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVncmVzc2lvbiByMTczNDU5OiBpbiBhbiBhcmlhLWxhYmVsbGVkYnkgY29tcHV0YXRpb24sIGRv
IG5vdCB0cmF2ZXJzZSBpbnRvIGVsZW1lbnRzIHdob3NlIG5hbWVGcm9tIHZhbHVlIGRvZXMgbm90
IGluY2x1ZGUgJ2NvbnRlbnRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM2NzE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRh
bnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRi
eS13aXRoLWRlc2NlbmRhbnRzLmh0bWw6CisKIDIwMTQtMDktMjMgIEVkdWFyZG8gTGltYSBNaXRl
diAgPGVsaW1hQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkcyBpbXBsZW1lbnRhdGlv
biBvZiBzdWJ0bGUgY3J5cHRvIEhNQUMgYWxnb3JpdGhtCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13
aXRoLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTczODgxKQorKysgTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktd2l0aC1kZXNjZW5kYW50cy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACisKKwogVGhpcyB0ZXN0cyB0
aGF0IGlmIGFyaWEtbGFiZWxsZWRieSBpcyBwb2ludGluZyB0byBub2RlcyB3aXRoIGRlc2NlbmRh
bnRzLCBpdCByZXR1cm5zIGFsbCB0ZXh0LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkBA
IC0zLDUgKzUsMjUgQEAKIAogCi1hcmlhLWxhYmVsbGVkYnkgZGVzY3JpcHRpb246IEFYRGVzY3Jp
cHRpb246IGhlbGxvIGxpbmsgd29ybGQgdGVzdDEgdGVzdDIgdGVzdDMKK3Rlc3QgMTogYXJpYS1s
YWJlbGxlZGJ5IGRlc2NyaXB0aW9uOiBBWERlc2NyaXB0aW9uOiBoZWxsbyBsaW5rIHdvcmxkIHRl
c3QxIHRlc3QyIHRlc3QzCit0ZXN0IDE6IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiBoZWxsbyBsaW5r
IHVzZSB3b3JsZCB0ZXN0MSB0ZXN0MiB0ZXN0MworCit0ZXN0IDI6IGFyaWEtbGFiZWxsZWRieSBk
ZXNjcmlwdGlvbjogQVhEZXNjcmlwdGlvbjogZm9vIGJhcgordGVzdCAyOiBleHBlY3RlZCBkZXNj
cmlwdGlvbjogZm9vIGJhcgorCit0ZXN0IDM6IGFyaWEtbGFiZWxsZWRieSBkZXNjcmlwdGlvbjog
QVhEZXNjcmlwdGlvbjogZm9vIGJhcgordGVzdCAzOiBleHBlY3RlZCBkZXNjcmlwdGlvbjogZm9v
IGJhcgorCit0ZXN0IDQ6IGFyaWEtbGFiZWxsZWRieSBkZXNjcmlwdGlvbjogQVhEZXNjcmlwdGlv
bjogZm9vCit0ZXN0IDQ6IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiBmb28KKwordGVzdCA1OiBhcmlh
LWxhYmVsbGVkYnkgZGVzY3JpcHRpb246IEFYRGVzY3JpcHRpb246IERlbGV0ZQordGVzdCA1OiBl
eHBlY3RlZCBkZXNjcmlwdGlvbjogRGVsZXRlCisKK3Rlc3QgNjogYXJpYS1sYWJlbGxlZGJ5IGRl
c2NyaXB0aW9uOiBBWERlc2NyaXB0aW9uOiBEZWxldGUKK3Rlc3QgNjogZXhwZWN0ZWQgZGVzY3Jp
cHRpb246IERlbGV0ZSBwcm9kdWN0IG5hbWUKKwordGVzdCA3OiBhcmlhLWxhYmVsbGVkYnkgZGVz
Y3JpcHRpb246IEFYRGVzY3JpcHRpb246IGZvbyBiYXIgYmF6IGJvcCBiYXAKK3Rlc3QgNzogZXhw
ZWN0ZWQgZGVzY3JpcHRpb246IGZvbyBiYXIgYmF6IGJvcCBiYXAgYm9vbQorCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YXJpYS1sYWJlbGxlZGJ5LXdpdGgtZGVzY2VuZGFudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRhbnRzLmh0
bWwJKHJldmlzaW9uIDE3Mzg4MSkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1s
YWJlbGxlZGJ5LXdpdGgtZGVzY2VuZGFudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNywxOSAr
NywzNiBAQAogCiA8ZGl2IGlkPSJjb250ZW50Ij4KIAotPGRpdiBhcmlhLWxhYmVsbGVkYnk9ImEg
YiIgaWQ9Imdyb3VwIiByb2xlPSJncm91cCI+Ci1ncm91cCB0ZXh0Ci08L2Rpdj4KKzxkaXYgY2xh
c3M9ImV4IiBkYXRhLWxhYmVsPSJoZWxsbyBsaW5rIHVzZSB3b3JsZCB0ZXN0MSB0ZXN0MiB0ZXN0
MyIgYXJpYS1sYWJlbGxlZGJ5PSJhMSBiMSIgaWQ9InRlc3QxIiByb2xlPSJncm91cCI+Z3JvdXAg
dGV4dDwvZGl2PgorPGRpdiBpZD0iYTEiPmhlbGxvIDxhIGhyZWY9IiMiPmxpbms8L2E+IDxkaXYg
cm9sZT0iZ3JvdXAiPnNraXA8L2Rpdj4gPGRpdiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0idXNl
Ij5za2lwPC9kaXY+IHdvcmxkPC9kaXY+Cis8IS0tIHBhcmFncmFwaCByb2xlIGlzIGFtYmlndW91
cyBzbyBva2F5IHRvIGxlYXZlIG5leHQgZXhhbXBsZSBhcyBpdCAtLT4KKzxkaXYgaWQ9ImIxIj48
YnV0dG9uPnRlc3QxPC9idXR0b24+PHAgdGFiaW5kZXg9MD50ZXN0MiA8c3BhbiBhcmlhLWhpZGRl
bj0idHJ1ZSI+aGlkZGVuPC9zcGFuPiB0ZXN0MzwvcD48L2Rpdj4KIAotPGRpdiBpZD0iYSI+Ci1o
ZWxsbyA8YSBocmVmPSIjIj5saW5rPC9hPiB3b3JsZAotPC9kaXY+Cis8aW5wdXQgdHlwZT0iY2hl
Y2tib3giIGFyaWEtbGFiZWxsZWRieT0icmV2ZXJzZWxhYmVsZm9yIiBpZD0idGVzdDIiIGNsYXNz
PSJleCIgZGF0YS1sYWJlbD0iZm9vIGJhciIgZGF0YS1ub3RlPSJsYWJlbGxlZCBieSBsYWJlbCBl
bGVtZW50Ij4KKzxsYWJlbCBpZD0icmV2ZXJzZWxhYmVsZm9yIj5mb28gPHNwYW4gcm9sZT0idGV4
dCIgYXJpYS1sYWJlbD0iYmFyIj5za2lwPC9zcGFuPjwvbGFiZWw+Cis8YnI+CiAKLTxkaXYgaWQ9
ImIiPgotPGJ1dHRvbj50ZXN0MTwvYnV0dG9uPiAKLTxwIHRhYmluZGV4PTA+dGVzdDIgPHNwYW4g
YXJpYS1oaWRkZW49InRydWUiPmhpZGRlbjwvc3Bhbj4gdGVzdDM8L3A+Ci08L2Rpdj4KKzxpbnB1
dCB0eXBlPSJjaGVja2JveCIgYXJpYS1sYWJlbGxlZGJ5PSJyZXZlcnNlbGFiZWxmb3J3aXRoZGl2
IiBpZD0idGVzdDMiIGNsYXNzPSJleCIgZGF0YS1sYWJlbD0iZm9vIGJhciIgZGF0YS1ub3RlPSJs
YWJlbGxlZCBieSBkaXYgZWxlbWVudCI+Cis8ZGl2IGlkPSJyZXZlcnNlbGFiZWxmb3J3aXRoZGl2
Ij5mb28gPHNwYW4gcm9sZT0idGV4dCIgYXJpYS1sYWJlbD0iYmFyIj5za2lwPC9zcGFuPjwvZGl2
PgorPGJyPgogCis8IS0tIHdvdWxkIGJlICJiYXIiIG5hdGl2ZWx5LCBidXQgbGFiZWwgZXhwbGlj
aXRseSBvdmVycmlkZGVuIHRvICJmb28iIGJ5IGxhYmVsbGVkYnkgLS0+Cis8ZGl2IGlkPSJvdmVy
cmlkZXNuYXRpdmVsYWJlbCI+Zm9vPC9kaXY+PGxhYmVsIGZvcj0ibmF0aXZlbGFiZWxvdmVycmlk
ZGVuIj5iYXI8L2xhYmVsPgorPGlucHV0IGNsYXNzPSJleCIgZGF0YS1sYWJlbD0iZm9vIiBpZD0i
dGVzdDQiIHR5cGU9InRleHQiIGFyaWEtbGFiZWxsZWRieT0ib3ZlcnJpZGVzbmF0aXZlbGFiZWwi
IGRhdGEtbm90ZT0ib3ZlcnJpZGVzIG5hdGl2ZSBsYWJlbCI+CisKKzwhLS0gc2VsZi1yZWZlcmVu
Y2luZyBsYWJlbGxlZGJ5IGluIGNvbWJpbmF0aW9uIHdpdGggZXh0ZXJuYWwgcmVmZXJlbmNlIC0t
PgorPGRpdiBpZD0icHJvZHVjdG5hbWUiPjxuYXYgcm9sZT0ibmF2aWdhdGlvbiI+PCEtLSBuYXYg
ZG9lcyBub3QgZ2V0IG5hbWVGcm9tOmNvbnRlbnRzIC0tPnByb2R1Y3QgbmFtZTwvbmF2PjwvZGl2
PgorPGJ1dHRvbiBjbGFzcz0iZXgiIGRhdGEtbGFiZWw9IkRlbGV0ZSIgYXJpYS1sYWJlbD0iRGVs
ZXRlIiBhcmlhLWxhYmVsbGVkYnk9ImRlbGV0ZWJ1dHRvbiBwcm9kdWN0bmFtZSIgaWQ9InRlc3Q1
IiBkYXRhLW5vdGU9InNlbGYtcmVmZXJlbmNpYWwgbGFiZWxsZWRieSBpbmNsdWRlcyBuYXYiPng8
L2J1dHRvbj4KKworPCEtLSBzZWxmLXJlZmVyZW5jaW5nIGxhYmVsbGVkYnkgaW4gY29tYmluYXRp
b24gd2l0aCBleHRlcm5hbCByZWZlcmVuY2UgLS0+Cis8ZGl2IGlkPSJwcm9kdWN0bmFtZSI+PG5h
diByb2xlPSJoZWFkaW5nIj48IS0tIG5hdiBkb2VzIG5vdCBnZXQgbmFtZUZyb206Y29udGVudHMs
IGJ1dCBoZWFkaW5nIGRvZXMuIC0tPnByb2R1Y3QgbmFtZTwvbmF2PjwvZGl2PgorPGJ1dHRvbiBj
bGFzcz0iZXgiIGRhdGEtbGFiZWw9IkRlbGV0ZSBwcm9kdWN0IG5hbWUiIGFyaWEtbGFiZWw9IkRl
bGV0ZSIgYXJpYS1sYWJlbGxlZGJ5PSJkZWxldGVidXR0b24gcHJvZHVjdG5hbWUiIGlkPSJ0ZXN0
NiIgZGF0YS1ub3RlPSJzZWxmLXJlZmVyZW5jaWFsIGxhYmVsbGVkYnkgaW5jbHVkZXMgaGVhZGlu
ZyI+eDwvYnV0dG9uPgorCis8ZGl2IGNsYXNzPSJleCIgZGF0YS1sYWJlbD0iZm9vIGJhciBiYXog
Ym9wIGJhcCBib29tIiBhcmlhLWxhYmVsbGVkYnk9ImEzIGIzIiBpZD0idGVzdDciIHJvbGU9Imdy
b3VwIiBkYXRhLW5vdGU9ImluY2x1ZGVzIGZvcm0gZWxlbWVudHMiPmZvbzwvZGl2PgorPGJ1dHRv
biBpZD0iYTMiPiBmb28gPGltZyBzcmM9IiMiIGFsdD0iYmFyIj4gYmF6PC9idXR0b24+Cis8ZGl2
IGlkPSJiMyI+Ym9wIDxpbnB1dCB2YWx1ZT0iYmFwIj4gPGlucHV0IHR5cGU9InJhbmdlIiBhcmlh
LXZhbHVldGV4dD0iYm9vbSI+PC9kaXY+CisKKwogPC9kaXY+CiAKIDxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgpAQCAtMzAsOCArNDcsMTEgQEAKICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGF0IGlmIGFyaWEtbGFiZWxsZWRieSBpcyBwb2ludGluZyB0byBub2RlcyB3aXRoIGRlc2NlbmRh
bnRzLCBpdCByZXR1cm5zIGFsbCB0ZXh0LiIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgewotICAgICAgICAgIHZhciBncm91cCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZ3JvdXAiKTsKLSAgICAgICAgICBkZWJ1Zygi
YXJpYS1sYWJlbGxlZGJ5IGRlc2NyaXB0aW9uOiAiICsgZ3JvdXAuZGVzY3JpcHRpb24pOworICAg
ICAgICAgIGZvciAodmFyIGsgPSAxOyBrIDwgODsgaysrKSB7CisgICAgICAgICAgICAgIHZhciB0
ZXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXN0
IiArIGspOworICAgICAgICAgICAgICBkZWJ1ZygidGVzdCAiICsgayArICI6IGFyaWEtbGFiZWxs
ZWRieSBkZXNjcmlwdGlvbjogIiArIHRlc3QuZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICBk
ZWJ1ZygidGVzdCAiICsgayArICI6IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiAiICsgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QiICsgaykuZ2V0QXR0cmlidXRlKCJkYXRhLWxhYmVsIikgKyAi
XG4iKTsKKyAgICAgICAgICB9CiAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238766</attachid>
            <date>2014-09-27 00:20:28 -0700</date>
            <delta_ts>2014-09-27 00:25:16 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15129</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzkwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE0LTA5LTIzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEluIGFuIGFyaWEt
bGFiZWxsZWRieSBjb21wdXRhdGlvbiwgZG8gbm90IHRyYXZlcnNlIGludG8gZWxlbWVudHMgd2hv
c2UgbmFtZUZyb20gdmFsdWUgZG9lcyBub3QgaW5jbHVkZSAnY29udGVudHMnCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3MTQKKworICAgICAgICBV
bnJldmlld2VkIChPT1BTKQorCisgICAgICAgIFRoZXJlIGFyZSBjZXJ0YWluIEFSSUEgZWxlbWVu
dHMgdGhhdCB0ZWxsIHVzIHdlIHNob3VsZCBub3QgcXVlcnkgdGhlaXIgY2hpbGRyZW4gd2hlbiBk
ZXRlcm1pbmluZyB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0LgorICAgICAgICBUaG9zZSBvbmVzIGhh
dmUgdGhlICJuYW1lRnJvbSIgcHJvcGVydHkgc2V0IHRvICJhdXRob3IiIGluc3RlYWQgb2YgImNv
bnRlbnRzLiIgV2ViS2l0IG5lZWRzIHRvIGhvbm9yIHRoYXQgc3RhdHVzLgorCisgICAgICAgIE1v
ZGlmaWVkOiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRhbnRzLmh0
bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVXNlQWNjZXNzaWJsaXR5T2JqZWN0SW5uZXJUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2libGVOYW1lRm9yTm9kZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKwogMjAxNC0w
OS0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBpczxIVE1MKkVsZW1lbnQ+KCkgZm9yIHR5cGUgY2hlY2tpbmcKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwCShyZXZpc2lvbiAxNzM5MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxMCw2
ICsxNjEwLDExIEBACiAgICAgLy8gcXVpdGUgbG9uZy4gQXMgYSBoZXVyaXN0aWMsIHNraXAgbGlu
a3MsIGNvbnRyb2xzLCBhbmQgZWxlbWVudHMgdGhhdCBhcmUgdXN1YWxseQogICAgIC8vIGNvbnRh
aW5lcnMgd2l0aCBsb3RzIG9mIGNoaWxkcmVuLgogCisgICAgLy8gQVJJQSBzdGF0ZXMgdGhhdCBj
ZXJ0YWluIGVsZW1lbnRzIGFyZSBub3QgYWxsb3dlZCB0byBleHBvc2UgdGhlaXIgY2hpbGRyZW4g
Y29udGVudCBmb3IgbmFtZSBjYWxjdWxhdGlvbi4KKyAgICBpZiAobW9kZS5jaGlsZHJlbkluY2x1
c2lvbiA9PSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGU6OlRleHRVbmRlckVsZW1l
bnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbgorICAgICAgICAmJiAhb2JqLT5h
Y2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG9iai0+Z2V0QXR0cmlidXRlKGFyaWFf
aGlkZGVuQXR0ciksICJ0cnVlIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTE2
MzcsNiArMTY0MiwxMyBAQAogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gYWRkIGFuIGFkZGl0aW9u
YWwgc3BhY2UgYmVmb3JlIG9yIGFmdGVyIGEgbGluZSBicmVhay4KICAgICByZXR1cm4gIShpc0hU
TUxMaW5lQnJlYWsoY2hpbGRUZXh0WzBdKSB8fCBpc0hUTUxMaW5lQnJlYWsoYnVpbGRlcltidWls
ZGVyLmxlbmd0aCgpIC0gMV0pKTsKIH0KKyAgICAKK3N0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ0J1
aWxkVGV4dFRvTmFtZShTdHJpbmcmIHRleHQsIFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCit7Cisg
ICAgaWYgKHNob3VsZEFkZFNwYWNlQmVmb3JlQXBwZW5kaW5nTmV4dEVsZW1lbnQoYnVpbGRlciwg
dGV4dCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgYnVpbGRlci5hcHBlbmQo
dGV4dCk7Cit9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxl
bWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgbW9kZSkgY29uc3QKIHsKQEAg
LTE2NTIsNiArMTY2NCwxNCBAQAogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZv
ciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIAorICAgICAgICBib29sIHNob3Vs
ZERlcml2ZU5hbWVGcm9tQXV0aG9yID0gKG1vZGUuY2hpbGRyZW5JbmNsdXNpb24gPT0gQWNjZXNz
aWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlOjpUZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVO
YW1lRnJvbUNvbnRlbnRzQ2hpbGRyZW4gJiYgIWNoaWxkLT5hY2Nlc3NpYmxlTmFtZURlcml2ZXNG
cm9tQ29udGVudCgpKTsKKyAgICAgICAgaWYgKHNob3VsZERlcml2ZU5hbWVGcm9tQXV0aG9yKSB7
CisgICAgICAgICAgICBTdHJpbmcgYXhOYW1lID0gYWNjZXNzaWJsZU5hbWVGb3JOb2RlKGNoaWxk
LT5ub2RlKCkpOworICAgICAgICAgICAgYXBwZW5kU3RyaW5nQnVpbGRUZXh0VG9OYW1lKGF4TmFt
ZSwgYnVpbGRlcik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgaWYgKCFzaG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQoY2hpbGQs
IG1vZGUpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE2NTksMTkgKzE2NzksMTQgQEAK
ICAgICAgICAgICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4gdGV4dE9yZGVyOwogICAgICAg
ICAgICAgdG9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdChjaGlsZCktPmFsdGVybmF0aXZlVGV4dCh0
ZXh0T3JkZXIpOwogICAgICAgICAgICAgaWYgKHRleHRPcmRlci5zaXplKCkgPiAwICYmIHRleHRP
cmRlclswXS50ZXh0Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNob3VsZEFkZFNw
YWNlQmVmb3JlQXBwZW5kaW5nTmV4dEVsZW1lbnQoYnVpbGRlciwgdGV4dE9yZGVyWzBdLnRleHQp
KQotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHRleHRPcmRlclswXS50ZXh0KTsKKyAgICAgICAgICAgICAgICBh
cHBlbmRTdHJpbmdCdWlsZFRleHRUb05hbWUodGV4dE9yZGVyWzBdLnRleHQsIGJ1aWxkZXIpOwog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KKyAg
ICAgICAgCiAgICAgICAgIFN0cmluZyBjaGlsZFRleHQgPSBjaGlsZC0+dGV4dFVuZGVyRWxlbWVu
dChtb2RlKTsKLSAgICAgICAgaWYgKGNoaWxkVGV4dC5sZW5ndGgoKSkgewotICAgICAgICAgICAg
aWYgKHNob3VsZEFkZFNwYWNlQmVmb3JlQXBwZW5kaW5nTmV4dEVsZW1lbnQoYnVpbGRlciwgY2hp
bGRUZXh0KSkKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoY2hpbGRUZXh0KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoY2hp
bGRUZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAgYXBwZW5kU3RyaW5nQnVpbGRUZXh0VG9OYW1l
KGNoaWxkVGV4dCwgYnVpbGRlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKS5zdHJpcFdoaXRlU3BhY2UoKS5zaW1wbGlmeVdoaXRlU3BhY2UoaXNIVE1MU3BhY2VCdXRO
b3RMaW5lQnJlYWspOwpAQCAtMTg0MCwxOSArMTg1NSwyNyBAQAogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgYWx0ID0gZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhbHRBdHRyKTsKICAgICBpZiAo
IWFsdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhbHQ7CisKKyAgICAvLyBJZiB0aGUgbm9k
ZSBjYW4gYmUgdHVybmVkIGludG8gYW4gQVggb2JqZWN0LCB3ZSBjYW4gdXNlIHN0YW5kYXJkIG5h
bWUgY29tcHV0YXRpb24gcnVsZXMuCisgICAgLy8gSWYgaG93ZXZlciwgdGhlIG5vZGUgY2Fubm90
IChiZWNhdXNlIHRoZXJlJ3Mgbm8gcmVuZGVyZXIgZS5nLikgZmFsbGJhY2sgdG8gdXNpbmcgdGhl
IGJhc2ljIHRleHQgdW5kZXJuZWF0aC4KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShub2RlKTsK
KyAgICBpZiAoYXhPYmplY3QpIHsKKyAgICAgICAgU3RyaW5nIHZhbHVlRGVzYyA9IGF4T2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CisgICAgICAgIGlmICghdmFsdWVEZXNjLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZURlc2M7CisgICAgfQogICAgIAogICAgIGlmIChpc0hU
TUxJbnB1dEVsZW1lbnQobm9kZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRF
bGVtZW50Pigqbm9kZSkudmFsdWUoKTsKICAgICAKLSAgICAvLyBJZiB0aGUgbm9kZSBjYW4gYmUg
dHVybmVkIGludG8gYW4gQVggb2JqZWN0LCB3ZSBjYW4gdXNlIHN0YW5kYXJkIG5hbWUgY29tcHV0
YXRpb24gcnVsZXMuCi0gICAgLy8gSWYgaG93ZXZlciwgdGhlIG5vZGUgY2Fubm90IChiZWNhdXNl
IHRoZXJlJ3Mgbm8gcmVuZGVyZXIgZS5nLikgZmFsbGJhY2sgdG8gdXNpbmcgdGhlIGJhc2ljIHRl
eHQgdW5kZXJuZWF0aC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IG5vZGUt
PmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShub2RlKTsKICAgICBTdHJp
bmcgdGV4dDsKLSAgICBpZiAoYXhPYmplY3QpCi0gICAgICAgIHRleHQgPSBheE9iamVjdC0+dGV4
dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQWNjZXNzaWJp
bGl0eVRleHRVbmRlckVsZW1lbnRNb2RlOjpUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVk
Q2hpbGRyZW4sIHRydWUpKTsKKyAgICBpZiAoYXhPYmplY3QpIHsKKyAgICAgICAgaWYgKGF4T2Jq
ZWN0LT5hY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgpKQorICAgICAgICAgICAgdGV4
dCA9IGF4T2JqZWN0LT50ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVt
ZW50TW9kZShBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGU6OlRleHRVbmRlckVsZW1l
bnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiwgdHJ1ZSkpOworICAgIH0KICAg
ICBlbHNlCiAgICAgICAgIHRleHQgPSBlbGVtZW50LT5pbm5lclRleHQoKTsKLSAgICAKKwogICAg
IGlmICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0OwogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxNzM5MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDY5
IEBACiAgICAgICAgIHx8IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpLmNvbnRhaW5zKCp0ZXh0
LCBmYWxzZSkKICAgICAgICAgfHwgc3RyaW5nVmFsdWUoKS5jb250YWlucygqdGV4dCwgZmFsc2Up
OwogfQorCisvLyBBUklBIG1hcmtzIGVsZW1lbnRzIGFzIGhhdmluZyB0aGVpciBhY2Nlc3NpYmxl
IG5hbWUgZGVyaXZlIGZyb20gZWl0aGVyIHRoZWlyIGNvbnRlbnRzLCBvciB0aGVpciBhdXRob3Ig
cHJvdmlkZSBuYW1lLgorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmxlTmFtZURl
cml2ZXNGcm9tQ29udGVudCgpIGNvbnN0Cit7CisgICAgLy8gRmlyc3QgY2hlY2sgZm9yIG9iamVj
dHMgc3BlY2lmaWNhbGx5IGlkZW50aWZpZWQgYnkgQVJJQS4KKyAgICBzd2l0Y2ggKGFyaWFSb2xl
QXR0cmlidXRlKCkpIHsKKyAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xlOgorICAgIGNhc2Ug
QXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGU6CisgICAgY2FzZSBBcHBsaWNhdGlvbkRpYWxvZ1Jv
bGU6CisgICAgY2FzZSBBcHBsaWNhdGlvbkxvZ1JvbGU6CisgICAgY2FzZSBBcHBsaWNhdGlvbk1h
cnF1ZWVSb2xlOgorICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAgIGNhc2UgQXBw
bGljYXRpb25UaW1lclJvbGU6CisgICAgY2FzZSBDb21ib0JveFJvbGU6CisgICAgY2FzZSBEZWZp
bml0aW9uUm9sZToKKyAgICBjYXNlIERvY3VtZW50Um9sZToKKyAgICBjYXNlIERvY3VtZW50QXJ0
aWNsZVJvbGU6CisgICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgorICAgIGNhc2UgRG9jdW1lbnRO
b3RlUm9sZToKKyAgICBjYXNlIERvY3VtZW50UmVnaW9uUm9sZToKKyAgICBjYXNlIEZvcm1Sb2xl
OgorICAgIGNhc2UgR3JpZFJvbGU6CisgICAgY2FzZSBHcm91cFJvbGU6CisgICAgY2FzZSBJbWFn
ZVJvbGU6CisgICAgY2FzZSBMaXN0Um9sZToKKyAgICBjYXNlIExpc3RCb3hSb2xlOgorICAgIGNh
c2UgTGFuZG1hcmtBcHBsaWNhdGlvblJvbGU6CisgICAgY2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6
CisgICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgorICAgIGNhc2UgTGFuZG1hcmtD
b250ZW50SW5mb1JvbGU6CisgICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgorICAgIGNh
c2UgTGFuZG1hcmtNYWluUm9sZToKKyAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKKyAgICBj
YXNlIE1lbnVSb2xlOgorICAgIGNhc2UgTWVudUJhclJvbGU6CisgICAgY2FzZSBQcm9ncmVzc0lu
ZGljYXRvclJvbGU6CisgICAgY2FzZSBSYWRpb0dyb3VwUm9sZToKKyAgICBjYXNlIFNjcm9sbEJh
clJvbGU6CisgICAgY2FzZSBTbGlkZXJSb2xlOgorICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6Cisg
ICAgY2FzZSBTcGxpdHRlclJvbGU6CisgICAgY2FzZSBUYWJMaXN0Um9sZToKKyAgICBjYXNlIFRh
YlBhbmVsUm9sZToKKyAgICBjYXNlIFRleHRBcmVhUm9sZToKKyAgICBjYXNlIFRvb2xiYXJSb2xl
OgorICAgIGNhc2UgVHJlZUdyaWRSb2xlOgorICAgIGNhc2UgVHJlZVJvbGU6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgCisg
ICAgLy8gTm93IGNoZWNrIGZvciBnZW5lcmljYWxseSBkZXJpdmVkIGVsZW1lbnRzIG5vdyB0aGF0
IHdlIGtub3cgdGhlIGVsZW1lbnQgZG9lcyBub3QgbWF0Y2ggYSBzcGVjaWZpYyBBUklBIHJvbGUu
CisgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIGNhc2UgU2xpZGVyUm9sZToKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb21wdXRlZExhYmVsKCkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBiZWluZyBjYWxsZWQg
YnkgV2ViS2l0IGluc3BlY3Rvciwgd2hpY2ggbWF5IGhhcHBlbiBhdCBhbnkgdGltZSwgc28gd2Ug
bmVlZCB0byB1cGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgbm93LgpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9u
IDE3MzkwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNiArMjQ4LDcgQEAKICAgICBlbnVtIENoaWxk
cmVuSW5jbHVzaW9uIHsKICAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVTa2lwSWdub3JlZENo
aWxkcmVuLAogICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVBbGxDaGlsZHJlbiwK
KyAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlTmFtZUZyb21Db250ZW50c0NoaWxk
cmVuLCAvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIEFSSUEgY29uY2VwdDogbmFtZUZyb20KICAgICB9
OwogICAgIAogICAgIENoaWxkcmVuSW5jbHVzaW9uIGNoaWxkcmVuSW5jbHVzaW9uOwpAQCAtNjY3
LDYgKzY2OCw3IEBACiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2Ny
aWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdDsKKyAgICBib29sIGFjY2Vzc2li
bGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3Q7CiAgICAgCiAgICAgLy8gQWJicmV2aWF0
aW9ucwogICAgIHZpcnR1YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzkwOSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0LTA5LTIzICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lv
biByMTczNDU5OiBpbiBhbiBhcmlhLWxhYmVsbGVkYnkgY29tcHV0YXRpb24sIGRvIG5vdCB0cmF2
ZXJzZSBpbnRvIGVsZW1lbnRzIHdob3NlIG5hbWVGcm9tIHZhbHVlIGRvZXMgbm90IGluY2x1ZGUg
J2NvbnRlbnRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM2NzE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyaW8gU2FuY2hleiBQcmFkYS4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LXdpdGgtZGVzY2VuZGFudHMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LXdp
dGgtZGVzY2VuZGFudHMuaHRtbDoKKwogMjAxNC0wOS0yMyAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgc3R5bGUgcmVzb2x1dGlvbiBjYWNoZSBh
cHBsaWVzIHByb3BlcnRpZXMgaW5jb3JyZWN0bHkgd2hlbmV2ZXIgZGlyZWN0aW9uICE9IGx0cgpJ
bmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktd2l0aC1kZXNj
ZW5kYW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9hcmlhLWxhYmVsbGVkYnktd2l0aC1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE3MzkwOSkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5
LXdpdGgtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NSBAQAorCisKIFRoaXMgdGVzdHMgdGhhdCBpZiBhcmlhLWxhYmVsbGVkYnkgaXMgcG9pbnRpbmcg
dG8gbm9kZXMgd2l0aCBkZXNjZW5kYW50cywgaXQgcmV0dXJucyBhbGwgdGV4dC4KIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgpAQCAtMyw1ICs1LDI1IEBACiAKIAotYXJpYS1sYWJlbGxlZGJ5
IGRlc2NyaXB0aW9uOiBBWERlc2NyaXB0aW9uOiBoZWxsbyBsaW5rIHdvcmxkIHRlc3QxIHRlc3Qy
IHRlc3QzCit0ZXN0IDE6IGFyaWEtbGFiZWxsZWRieSBkZXNjcmlwdGlvbjogQVhEZXNjcmlwdGlv
bjogaGVsbG8gbGluayB1c2Ugd29ybGQgdGVzdDEgdGVzdDIgdGVzdDMKK3Rlc3QgMTogZXhwZWN0
ZWQgZGVzY3JpcHRpb246IGhlbGxvIGxpbmsgdXNlIHdvcmxkIHRlc3QxIHRlc3QyIHRlc3QzCisK
K3Rlc3QgMjogYXJpYS1sYWJlbGxlZGJ5IGRlc2NyaXB0aW9uOiBBWERlc2NyaXB0aW9uOiBmb28g
YmFyCit0ZXN0IDI6IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiBmb28gYmFyCisKK3Rlc3QgMzogYXJp
YS1sYWJlbGxlZGJ5IGRlc2NyaXB0aW9uOiBBWERlc2NyaXB0aW9uOiBmb28gYmFyCit0ZXN0IDM6
IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiBmb28gYmFyCisKK3Rlc3QgNDogYXJpYS1sYWJlbGxlZGJ5
IGRlc2NyaXB0aW9uOiBBWERlc2NyaXB0aW9uOiBmb28KK3Rlc3QgNDogZXhwZWN0ZWQgZGVzY3Jp
cHRpb246IGZvbworCit0ZXN0IDU6IGFyaWEtbGFiZWxsZWRieSBkZXNjcmlwdGlvbjogQVhEZXNj
cmlwdGlvbjogRGVsZXRlIAordGVzdCA1OiBleHBlY3RlZCBkZXNjcmlwdGlvbjogRGVsZXRlCisK
K3Rlc3QgNjogYXJpYS1sYWJlbGxlZGJ5IGRlc2NyaXB0aW9uOiBBWERlc2NyaXB0aW9uOiBEZWxl
dGUgcHJvZHVjdCBuYW1lCit0ZXN0IDY6IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiBEZWxldGUgcHJv
ZHVjdCBuYW1lCisKK3Rlc3QgNzogYXJpYS1sYWJlbGxlZGJ5IGRlc2NyaXB0aW9uOiBBWERlc2Ny
aXB0aW9uOiBmb28gYmFyIGJheiBib3AgYmFwIGJvb20KK3Rlc3QgNzogZXhwZWN0ZWQgZGVzY3Jp
cHRpb246IGZvbyBiYXIgYmF6IGJvcCBiYXAgYm9vbQorCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxl
ZGJ5LXdpdGgtZGVzY2VuZGFudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRhbnRzLmh0bWwJKHJldmlzaW9u
IDE3MzkwOSkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LXdp
dGgtZGVzY2VuZGFudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNywxOSArNywzNiBAQAogCiA8
ZGl2IGlkPSJjb250ZW50Ij4KIAotPGRpdiBhcmlhLWxhYmVsbGVkYnk9ImEgYiIgaWQ9Imdyb3Vw
IiByb2xlPSJncm91cCI+Ci1ncm91cCB0ZXh0Ci08L2Rpdj4KKzxkaXYgY2xhc3M9ImV4IiBkYXRh
LWxhYmVsPSJoZWxsbyBsaW5rIHVzZSB3b3JsZCB0ZXN0MSB0ZXN0MiB0ZXN0MyIgYXJpYS1sYWJl
bGxlZGJ5PSJhMSBiMSIgaWQ9InRlc3QxIiByb2xlPSJncm91cCI+Z3JvdXAgdGV4dDwvZGl2Pgor
PGRpdiBpZD0iYTEiPmhlbGxvIDxhIGhyZWY9IiMiPmxpbms8L2E+IDxkaXYgcm9sZT0iZ3JvdXAi
PnNraXA8L2Rpdj4gPGRpdiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0idXNlIj5za2lwPC9kaXY+
IHdvcmxkPC9kaXY+Cis8IS0tIHBhcmFncmFwaCByb2xlIGlzIGFtYmlndW91cyBzbyBva2F5IHRv
IGxlYXZlIG5leHQgZXhhbXBsZSBhcyBpdCAtLT4KKzxkaXYgaWQ9ImIxIj48YnV0dG9uPnRlc3Qx
PC9idXR0b24+PHAgdGFiaW5kZXg9MD50ZXN0MiA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+aGlk
ZGVuPC9zcGFuPiB0ZXN0MzwvcD48L2Rpdj4KIAotPGRpdiBpZD0iYSI+Ci1oZWxsbyA8YSBocmVm
PSIjIj5saW5rPC9hPiB3b3JsZAotPC9kaXY+Cis8aW5wdXQgdHlwZT0iY2hlY2tib3giIGFyaWEt
bGFiZWxsZWRieT0icmV2ZXJzZWxhYmVsZm9yIiBpZD0idGVzdDIiIGNsYXNzPSJleCIgZGF0YS1s
YWJlbD0iZm9vIGJhciIgZGF0YS1ub3RlPSJsYWJlbGxlZCBieSBsYWJlbCBlbGVtZW50Ij4KKzxs
YWJlbCBpZD0icmV2ZXJzZWxhYmVsZm9yIj5mb28gPHNwYW4gcm9sZT0idGV4dCIgYXJpYS1sYWJl
bD0iYmFyIj5za2lwPC9zcGFuPjwvbGFiZWw+Cis8YnI+CiAKLTxkaXYgaWQ9ImIiPgotPGJ1dHRv
bj50ZXN0MTwvYnV0dG9uPiAKLTxwIHRhYmluZGV4PTA+dGVzdDIgPHNwYW4gYXJpYS1oaWRkZW49
InRydWUiPmhpZGRlbjwvc3Bhbj4gdGVzdDM8L3A+Ci08L2Rpdj4KKzxpbnB1dCB0eXBlPSJjaGVj
a2JveCIgYXJpYS1sYWJlbGxlZGJ5PSJyZXZlcnNlbGFiZWxmb3J3aXRoZGl2IiBpZD0idGVzdDMi
IGNsYXNzPSJleCIgZGF0YS1sYWJlbD0iZm9vIGJhciIgZGF0YS1ub3RlPSJsYWJlbGxlZCBieSBk
aXYgZWxlbWVudCI+Cis8ZGl2IGlkPSJyZXZlcnNlbGFiZWxmb3J3aXRoZGl2Ij5mb28gPHNwYW4g
cm9sZT0idGV4dCIgYXJpYS1sYWJlbD0iYmFyIj5za2lwPC9zcGFuPjwvZGl2PgorPGJyPgogCis8
IS0tIHdvdWxkIGJlICJiYXIiIG5hdGl2ZWx5LCBidXQgbGFiZWwgZXhwbGljaXRseSBvdmVycmlk
ZGVuIHRvICJmb28iIGJ5IGxhYmVsbGVkYnkgLS0+Cis8ZGl2IGlkPSJvdmVycmlkZXNuYXRpdmVs
YWJlbCI+Zm9vPC9kaXY+PGxhYmVsIGZvcj0ibmF0aXZlbGFiZWxvdmVycmlkZGVuIj5iYXI8L2xh
YmVsPgorPGlucHV0IGNsYXNzPSJleCIgZGF0YS1sYWJlbD0iZm9vIiBpZD0idGVzdDQiIHR5cGU9
InRleHQiIGFyaWEtbGFiZWxsZWRieT0ib3ZlcnJpZGVzbmF0aXZlbGFiZWwiIGRhdGEtbm90ZT0i
b3ZlcnJpZGVzIG5hdGl2ZSBsYWJlbCI+CisKKzwhLS0gc2VsZi1yZWZlcmVuY2luZyBsYWJlbGxl
ZGJ5IGluIGNvbWJpbmF0aW9uIHdpdGggZXh0ZXJuYWwgcmVmZXJlbmNlIC0tPgorPGRpdiBpZD0i
cHJvZHVjdG5hbWUxIj48bmF2IHJvbGU9Im5hdmlnYXRpb24iPjwhLS0gbmF2IGRvZXMgbm90IGdl
dCBuYW1lRnJvbTpjb250ZW50cyAtLT5wcm9kdWN0IG5hbWU8L25hdj48L2Rpdj4KKzxidXR0b24g
Y2xhc3M9ImV4IiBkYXRhLWxhYmVsPSJEZWxldGUiIGFyaWEtbGFiZWw9IkRlbGV0ZSIgYXJpYS1s
YWJlbGxlZGJ5PSJ0ZXN0NSBwcm9kdWN0bmFtZTEiIGlkPSJ0ZXN0NSIgZGF0YS1ub3RlPSJzZWxm
LXJlZmVyZW5jaWFsIGxhYmVsbGVkYnkgaW5jbHVkZXMgbmF2Ij54PC9idXR0b24+CisKKzwhLS0g
c2VsZi1yZWZlcmVuY2luZyBsYWJlbGxlZGJ5IGluIGNvbWJpbmF0aW9uIHdpdGggZXh0ZXJuYWwg
cmVmZXJlbmNlIC0tPgorPGRpdiBpZD0icHJvZHVjdG5hbWUyIj48bmF2IHJvbGU9ImhlYWRpbmci
PjwhLS0gbmF2IGRvZXMgbm90IGdldCBuYW1lRnJvbTpjb250ZW50cywgYnV0IGhlYWRpbmcgZG9l
cy4gLS0+cHJvZHVjdCBuYW1lPC9uYXY+PC9kaXY+Cis8YnV0dG9uIGNsYXNzPSJleCIgZGF0YS1s
YWJlbD0iRGVsZXRlIHByb2R1Y3QgbmFtZSIgYXJpYS1sYWJlbD0iRGVsZXRlIiBhcmlhLWxhYmVs
bGVkYnk9InRlc3Q2IHByb2R1Y3RuYW1lMiIgaWQ9InRlc3Q2IiBkYXRhLW5vdGU9InNlbGYtcmVm
ZXJlbmNpYWwgbGFiZWxsZWRieSBpbmNsdWRlcyBoZWFkaW5nIj54PC9idXR0b24+CisKKzxkaXYg
Y2xhc3M9ImV4IiBkYXRhLWxhYmVsPSJmb28gYmFyIGJheiBib3AgYmFwIGJvb20iIGFyaWEtbGFi
ZWxsZWRieT0iYTMgYjMiIGlkPSJ0ZXN0NyIgcm9sZT0iZ3JvdXAiIGRhdGEtbm90ZT0iaW5jbHVk
ZXMgZm9ybSBlbGVtZW50cyI+Zm9vPC9kaXY+Cis8YnV0dG9uIGlkPSJhMyI+IGZvbyA8aW1nIHNy
Yz0iIyIgYWx0PSJiYXIiPiBiYXo8L2J1dHRvbj4KKzxkaXYgaWQ9ImIzIj5ib3AgPGlucHV0IHZh
bHVlPSJiYXAiPiA8aW5wdXQgdHlwZT0icmFuZ2UiIGFyaWEtdmFsdWV0ZXh0PSJib29tIj48L2Rp
dj4KKworCiA8L2Rpdj4KIAogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC0zMCw4ICs0Nywx
MSBAQAogICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgaWYgYXJpYS1sYWJlbGxlZGJ5
IGlzIHBvaW50aW5nIHRvIG5vZGVzIHdpdGggZGVzY2VuZGFudHMsIGl0IHJldHVybnMgYWxsIHRl
eHQuIik7CiAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAg
ICAgICAgdmFyIGdyb3VwID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJncm91cCIpOwotICAgICAgICAgIGRlYnVnKCJhcmlhLWxhYmVsbGVkYnkgZGVzY3Jp
cHRpb246ICIgKyBncm91cC5kZXNjcmlwdGlvbik7CisgICAgICAgICAgZm9yICh2YXIgayA9IDE7
IGsgPCA4OyBrKyspIHsKKyAgICAgICAgICAgICAgdmFyIHRlc3QgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRlc3QiICsgayk7CisgICAgICAgICAgICAg
IGRlYnVnKCJ0ZXN0ICIgKyBrICsgIjogYXJpYS1sYWJlbGxlZGJ5IGRlc2NyaXB0aW9uOiAiICsg
dGVzdC5kZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgIGRlYnVnKCJ0ZXN0ICIgKyBrICsgIjog
ZXhwZWN0ZWQgZGVzY3JpcHRpb246ICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIg
KyBrKS5nZXRBdHRyaWJ1dGUoImRhdGEtbGFiZWwiKSArICJcbiIpOworICAgICAgICAgIH0KICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxp
dHkgPSAiaGlkZGVuIjsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238767</attachid>
            <date>2014-09-27 00:25:16 -0700</date>
            <delta_ts>2014-09-28 17:17:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15109</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE0LTA5LTIzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEluIGFuIGFyaWEt
bGFiZWxsZWRieSBjb21wdXRhdGlvbiwgZG8gbm90IHRyYXZlcnNlIGludG8gZWxlbWVudHMgd2hv
c2UgbmFtZUZyb20gdmFsdWUgZG9lcyBub3QgaW5jbHVkZSAnY29udGVudHMnCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBub2JvZHkgKE9PUFMpCisKKyAgICAgICAgVGhlcmUgYXJlIGNlcnRhaW4gQVJJ
QSBlbGVtZW50cyB0aGF0IHRlbGwgdXMgd2Ugc2hvdWxkIG5vdCBxdWVyeSB0aGVpciBjaGlsZHJl
biB3aGVuIGRldGVybWluaW5nIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QuCisgICAgICAgIFRob3Nl
IG9uZXMgaGF2ZSB0aGUgIm5hbWVGcm9tIiBwcm9wZXJ0eSBzZXQgdG8gImF1dGhvciIgaW5zdGVh
ZCBvZiAiY29udGVudHMuIiBXZWJLaXQgbmVlZHMgdG8gaG9ub3IgdGhhdCBzdGF0dXMuCisKKyAg
ICAgICAgTW9kaWZpZWQ6IGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LXdpdGgtZGVzY2Vu
ZGFudHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJ
bm5lclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJsZU5hbWVGb3JOb2RlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNv
bnRlbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgor
CiAyMDE0LTA5LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBOT0RFX1RZUEVfQ0FTVFMoKSBtYWNybyBmb3IgSFRNTCBF
bGVtZW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJKHJldmlzaW9uIDE3NDAzNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjA5LDYgKzE2MDksMTEgQEAKICAgICAvLyBxdWl0ZSBsb25nLiBBcyBh
IGhldXJpc3RpYywgc2tpcCBsaW5rcywgY29udHJvbHMsIGFuZCBlbGVtZW50cyB0aGF0IGFyZSB1
c3VhbGx5CiAgICAgLy8gY29udGFpbmVycyB3aXRoIGxvdHMgb2YgY2hpbGRyZW4uCiAKKyAgICAv
LyBBUklBIHN0YXRlcyB0aGF0IGNlcnRhaW4gZWxlbWVudHMgYXJlIG5vdCBhbGxvd2VkIHRvIGV4
cG9zZSB0aGVpciBjaGlsZHJlbiBjb250ZW50IGZvciBuYW1lIGNhbGN1bGF0aW9uLgorICAgIGlm
IChtb2RlLmNoaWxkcmVuSW5jbHVzaW9uID09IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50
TW9kZTo6VGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlTmFtZUZyb21Db250ZW50c0NoaWxkcmVu
CisgICAgICAgICYmICFvYmotPmFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uob2Jq
LT5nZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgInRydWUiKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIApAQCAtMTYzNiw2ICsxNjQxLDEzIEBACiAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBhZGQgYW4gYWRkaXRpb25hbCBzcGFjZSBiZWZvcmUgb3IgYWZ0ZXIgYSBsaW5lIGJyZWFr
LgogICAgIHJldHVybiAhKGlzSFRNTExpbmVCcmVhayhjaGlsZFRleHRbMF0pIHx8IGlzSFRNTExp
bmVCcmVhayhidWlsZGVyW2J1aWxkZXIubGVuZ3RoKCkgLSAxXSkpOwogfQorICAgIAorc3RhdGlj
IHZvaWQgYXBwZW5kU3RyaW5nQnVpbGRUZXh0VG9OYW1lKFN0cmluZyYgdGV4dCwgU3RyaW5nQnVp
bGRlciYgYnVpbGRlcikKK3sKKyAgICBpZiAoc2hvdWxkQWRkU3BhY2VCZWZvcmVBcHBlbmRpbmdO
ZXh0RWxlbWVudChidWlsZGVyLCB0ZXh0KSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
KyAgICBidWlsZGVyLmFwcGVuZCh0ZXh0KTsKK30KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9k
ZSBtb2RlKSBjb25zdAogewpAQCAtMTY1MSw2ICsxNjYzLDE0IEBACiAKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
CisgICAgICAgIGJvb2wgc2hvdWxkRGVyaXZlTmFtZUZyb21BdXRob3IgPSAobW9kZS5jaGlsZHJl
bkluY2x1c2lvbiA9PSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGU6OlRleHRVbmRl
ckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiAmJiAhY2hpbGQtPmFj
Y2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkpOworICAgICAgICBpZiAoc2hvdWxkRGVy
aXZlTmFtZUZyb21BdXRob3IpIHsKKyAgICAgICAgICAgIFN0cmluZyBheE5hbWUgPSBhY2Nlc3Np
YmxlTmFtZUZvck5vZGUoY2hpbGQtPm5vZGUoKSk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdC
dWlsZFRleHRUb05hbWUoYXhOYW1lLCBidWlsZGVyKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoIXNob3VsZFVzZUFjY2Vzc2libGl0eU9i
amVjdElubmVyVGV4dChjaGlsZCwgbW9kZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAt
MTY1OCwxOSArMTY3OCwxNCBAQAogICAgICAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0
PiB0ZXh0T3JkZXI7CiAgICAgICAgICAgICB0b0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KGNoaWxk
KS0+YWx0ZXJuYXRpdmVUZXh0KHRleHRPcmRlcik7CiAgICAgICAgICAgICBpZiAodGV4dE9yZGVy
LnNpemUoKSA+IDAgJiYgdGV4dE9yZGVyWzBdLnRleHQubGVuZ3RoKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoc2hvdWxkQWRkU3BhY2VCZWZvcmVBcHBlbmRpbmdOZXh0RWxlbWVudChidWlsZGVy
LCB0ZXh0T3JkZXJbMF0udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodGV4dE9yZGVyWzBdLnRleHQp
OworICAgICAgICAgICAgICAgIGFwcGVuZFN0cmluZ0J1aWxkVGV4dFRvTmFtZSh0ZXh0T3JkZXJb
MF0udGV4dCwgYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLQorICAgICAgICAKICAgICAgICAgU3RyaW5nIGNoaWxkVGV4dCA9IGNo
aWxkLT50ZXh0VW5kZXJFbGVtZW50KG1vZGUpOwotICAgICAgICBpZiAoY2hpbGRUZXh0Lmxlbmd0
aCgpKSB7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkQWRkU3BhY2VCZWZvcmVBcHBlbmRpbmdOZXh0
RWxlbWVudChidWlsZGVyLCBjaGlsZFRleHQpKQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjaGlsZFRleHQpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChjaGlsZFRleHQubGVuZ3RoKCkpCisgICAgICAgICAgICBhcHBlbmRT
dHJpbmdCdWlsZFRleHRUb05hbWUoY2hpbGRUZXh0LCBidWlsZGVyKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnN0cmlwV2hpdGVTcGFjZSgpLnNpbXBsaWZ5V2hpdGVT
cGFjZShpc0hUTUxTcGFjZUJ1dE5vdExpbmVCcmVhayk7CkBAIC0xODM5LDE5ICsxODU0LDI3IEBA
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhbHQgPSBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRl
KGFsdEF0dHIpOwogICAgIGlmICghYWx0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFsdDsK
KworICAgIC8vIElmIHRoZSBub2RlIGNhbiBiZSB0dXJuZWQgaW50byBhbiBBWCBvYmplY3QsIHdl
IGNhbiB1c2Ugc3RhbmRhcmQgbmFtZSBjb21wdXRhdGlvbiBydWxlcy4KKyAgICAvLyBJZiBob3dl
dmVyLCB0aGUgbm9kZSBjYW5ub3QgKGJlY2F1c2UgdGhlcmUncyBubyByZW5kZXJlciBlLmcuKSBm
YWxsYmFjayB0byB1c2luZyB0aGUgYmFzaWMgdGV4dCB1bmRlcm5lYXRoLgorICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkt
PmdldE9yQ3JlYXRlKG5vZGUpOworICAgIGlmIChheE9iamVjdCkgeworICAgICAgICBTdHJpbmcg
dmFsdWVEZXNjID0gYXhPYmplY3QtPnZhbHVlRGVzY3JpcHRpb24oKTsKKyAgICAgICAgaWYgKCF2
YWx1ZURlc2MuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlRGVzYzsKKyAgICB9
CiAgICAgCiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpLnZhbHVlKCk7CiAgICAgCi0gICAg
Ly8gSWYgdGhlIG5vZGUgY2FuIGJlIHR1cm5lZCBpbnRvIGFuIEFYIG9iamVjdCwgd2UgY2FuIHVz
ZSBzdGFuZGFyZCBuYW1lIGNvbXB1dGF0aW9uIHJ1bGVzLgotICAgIC8vIElmIGhvd2V2ZXIsIHRo
ZSBub2RlIGNhbm5vdCAoYmVjYXVzZSB0aGVyZSdzIG5vIHJlbmRlcmVyIGUuZy4pIGZhbGxiYWNr
IHRvIHVzaW5nIHRoZSBiYXNpYyB0ZXh0IHVuZGVybmVhdGguCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogYXhPYmplY3QgPSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUobm9kZSk7CiAgICAgU3RyaW5nIHRleHQ7Ci0gICAgaWYgKGF4T2JqZWN0KQotICAgICAg
ICB0ZXh0ID0gYXhPYmplY3QtPnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRl
ckVsZW1lbnRNb2RlKEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6VGV4dFVuZGVy
RWxlbWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLCB0cnVlKSk7CisgICAgaWYgKGF4T2JqZWN0
KSB7CisgICAgICAgIGlmIChheE9iamVjdC0+YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRl
bnQoKSkKKyAgICAgICAgICAgIHRleHQgPSBheE9iamVjdC0+dGV4dFVuZGVyRWxlbWVudChBY2Nl
c3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1l
bnRNb2RlOjpUZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRy
ZW4sIHRydWUpKTsKKyAgICB9CiAgICAgZWxzZQogICAgICAgICB0ZXh0ID0gZWxlbWVudC0+aW5u
ZXJUZXh0KCk7Ci0gICAgCisKICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdGV4dDsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTc0MDM0KQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg3LDcgKzI4Nyw2OSBAQAogICAgICAgICB8fCBhY2Nlc3NpYmlsaXR5RGVzY3Jp
cHRpb24oKS5jb250YWlucygqdGV4dCwgZmFsc2UpCiAgICAgICAgIHx8IHN0cmluZ1ZhbHVlKCku
Y29udGFpbnMoKnRleHQsIGZhbHNlKTsKIH0KKworLy8gQVJJQSBtYXJrcyBlbGVtZW50cyBhcyBo
YXZpbmcgdGhlaXIgYWNjZXNzaWJsZSBuYW1lIGRlcml2ZSBmcm9tIGVpdGhlciB0aGVpciBjb250
ZW50cywgb3IgdGhlaXIgYXV0aG9yIHByb3ZpZGUgbmFtZS4KK2Jvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdAoreworICAgIC8v
IEZpcnN0IGNoZWNrIGZvciBvYmplY3RzIHNwZWNpZmljYWxseSBpZGVudGlmaWVkIGJ5IEFSSUEu
CisgICAgc3dpdGNoIChhcmlhUm9sZUF0dHJpYnV0ZSgpKSB7CisgICAgY2FzZSBBcHBsaWNhdGlv
bkFsZXJ0Um9sZToKKyAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgorICAgIGNh
c2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgorICAgIGNhc2UgQXBwbGljYXRpb25Mb2dSb2xlOgor
ICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToKKyAgICBjYXNlIEFwcGxpY2F0aW9uU3Rh
dHVzUm9sZToKKyAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xlOgorICAgIGNhc2UgQ29tYm9C
b3hSb2xlOgorICAgIGNhc2UgRGVmaW5pdGlvblJvbGU6CisgICAgY2FzZSBEb2N1bWVudFJvbGU6
CisgICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgorICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9s
ZToKKyAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6CisgICAgY2FzZSBEb2N1bWVudFJlZ2lvblJv
bGU6CisgICAgY2FzZSBGb3JtUm9sZToKKyAgICBjYXNlIEdyaWRSb2xlOgorICAgIGNhc2UgR3Jv
dXBSb2xlOgorICAgIGNhc2UgSW1hZ2VSb2xlOgorICAgIGNhc2UgTGlzdFJvbGU6CisgICAgY2Fz
ZSBMaXN0Qm94Um9sZToKKyAgICBjYXNlIExhbmRtYXJrQXBwbGljYXRpb25Sb2xlOgorICAgIGNh
c2UgTGFuZG1hcmtCYW5uZXJSb2xlOgorICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9s
ZToKKyAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgorICAgIGNhc2UgTGFuZG1hcmtO
YXZpZ2F0aW9uUm9sZToKKyAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6CisgICAgY2FzZSBMYW5k
bWFya1NlYXJjaFJvbGU6CisgICAgY2FzZSBNZW51Um9sZToKKyAgICBjYXNlIE1lbnVCYXJSb2xl
OgorICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgorICAgIGNhc2UgUmFkaW9Hcm91cFJv
bGU6CisgICAgY2FzZSBTY3JvbGxCYXJSb2xlOgorICAgIGNhc2UgU2xpZGVyUm9sZToKKyAgICBj
YXNlIFNwaW5CdXR0b25Sb2xlOgorICAgIGNhc2UgU3BsaXR0ZXJSb2xlOgorICAgIGNhc2UgVGFi
TGlzdFJvbGU6CisgICAgY2FzZSBUYWJQYW5lbFJvbGU6CisgICAgY2FzZSBUZXh0QXJlYVJvbGU6
CisgICAgY2FzZSBUb29sYmFyUm9sZToKKyAgICBjYXNlIFRyZWVHcmlkUm9sZToKKyAgICBjYXNl
IFRyZWVSb2xlOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIAorICAgIC8vIE5vdyBjaGVjayBmb3IgZ2VuZXJpY2FsbHkgZGVy
aXZlZCBlbGVtZW50cyBub3cgdGhhdCB3ZSBrbm93IHRoZSBlbGVtZW50IGRvZXMgbm90IG1hdGNo
IGEgc3BlY2lmaWMgQVJJQSByb2xlLgorICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKKyAgICBj
YXNlIFNsaWRlclJvbGU6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisgICAgCiBTdHJp
bmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRMYWJlbCgpCiB7CiAgICAgLy8gVGhpcyBt
ZXRob2QgaXMgYmVpbmcgY2FsbGVkIGJ5IFdlYktpdCBpbnNwZWN0b3IsIHdoaWNoIG1heSBoYXBw
ZW4gYXQgYW55IHRpbWUsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIG91ciBiYWNraW5nIHN0b3JlIG5v
dy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCShyZXZpc2lvbiAxNzQwMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDYgKzI0
OCw3IEBACiAgICAgZW51bSBDaGlsZHJlbkluY2x1c2lvbiB7CiAgICAgICAgIFRleHRVbmRlckVs
ZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwKICAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1v
ZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCisgICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVk
ZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiwgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNv
bmNlcHQ6IG5hbWVGcm9tCiAgICAgfTsKICAgICAKICAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGls
ZHJlbkluY2x1c2lvbjsKQEAgLTY2Nyw2ICs2NjgsNyBAQAogICAgIHZpcnR1YWwgU3RyaW5nIGFy
aWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZp
cnR1YWwgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwbGFjZWhvbGRlclZhbHVlKCkgY29u
c3Q7CisgICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgpIGNvbnN0Owog
ICAgIAogICAgIC8vIEFiYnJldmlhdGlvbnMKICAgICB2aXJ0dWFsIFN0cmluZyBleHBhbmRlZFRl
eHRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NzQwMzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNC0wOS0yMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZ3Jlc3Npb24gcjE3MzQ1OTogaW4gYW4gYXJpYS1sYWJlbGxlZGJ5IGNv
bXB1dGF0aW9uLCBkbyBub3QgdHJhdmVyc2UgaW50byBlbGVtZW50cyB3aG9zZSBuYW1lRnJvbSB2
YWx1ZSBkb2VzIG5vdCBpbmNsdWRlICdjb250ZW50cycKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5v
Ym9keSAoT09QUykuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13
aXRoLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRhbnRzLmh0bWw6CisKIDIwMTQtMDktMjYgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgTWFyayBmYXN0L3Nl
bGVjdG9ycy9udGgtY2hpbGQtb2YtYmFzaWNzIGFzIFNsb3cKSW5kZXg6IExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LXdpdGgtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5
LXdpdGgtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNzQwMzQpCisrKyBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRhbnRzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKKworCiBUaGlzIHRlc3Rz
IHRoYXQgaWYgYXJpYS1sYWJlbGxlZGJ5IGlzIHBvaW50aW5nIHRvIG5vZGVzIHdpdGggZGVzY2Vu
ZGFudHMsIGl0IHJldHVybnMgYWxsIHRleHQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
QEAgLTMsNSArNSwyNSBAQAogCiAKLWFyaWEtbGFiZWxsZWRieSBkZXNjcmlwdGlvbjogQVhEZXNj
cmlwdGlvbjogaGVsbG8gbGluayB3b3JsZCB0ZXN0MSB0ZXN0MiB0ZXN0MwordGVzdCAxOiBhcmlh
LWxhYmVsbGVkYnkgZGVzY3JpcHRpb246IEFYRGVzY3JpcHRpb246IGhlbGxvIGxpbmsgdXNlIHdv
cmxkIHRlc3QxIHRlc3QyIHRlc3QzCit0ZXN0IDE6IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiBoZWxs
byBsaW5rIHVzZSB3b3JsZCB0ZXN0MSB0ZXN0MiB0ZXN0MworCit0ZXN0IDI6IGFyaWEtbGFiZWxs
ZWRieSBkZXNjcmlwdGlvbjogQVhEZXNjcmlwdGlvbjogZm9vIGJhcgordGVzdCAyOiBleHBlY3Rl
ZCBkZXNjcmlwdGlvbjogZm9vIGJhcgorCit0ZXN0IDM6IGFyaWEtbGFiZWxsZWRieSBkZXNjcmlw
dGlvbjogQVhEZXNjcmlwdGlvbjogZm9vIGJhcgordGVzdCAzOiBleHBlY3RlZCBkZXNjcmlwdGlv
bjogZm9vIGJhcgorCit0ZXN0IDQ6IGFyaWEtbGFiZWxsZWRieSBkZXNjcmlwdGlvbjogQVhEZXNj
cmlwdGlvbjogZm9vCit0ZXN0IDQ6IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiBmb28KKwordGVzdCA1
OiBhcmlhLWxhYmVsbGVkYnkgZGVzY3JpcHRpb246IEFYRGVzY3JpcHRpb246IERlbGV0ZSAKK3Rl
c3QgNTogZXhwZWN0ZWQgZGVzY3JpcHRpb246IERlbGV0ZQorCit0ZXN0IDY6IGFyaWEtbGFiZWxs
ZWRieSBkZXNjcmlwdGlvbjogQVhEZXNjcmlwdGlvbjogRGVsZXRlIHByb2R1Y3QgbmFtZQordGVz
dCA2OiBleHBlY3RlZCBkZXNjcmlwdGlvbjogRGVsZXRlIHByb2R1Y3QgbmFtZQorCit0ZXN0IDc6
IGFyaWEtbGFiZWxsZWRieSBkZXNjcmlwdGlvbjogQVhEZXNjcmlwdGlvbjogZm9vIGJhciBiYXog
Ym9wIGJhcCBib29tCit0ZXN0IDc6IGV4cGVjdGVkIGRlc2NyaXB0aW9uOiBmb28gYmFyIGJheiBi
b3AgYmFwIGJvb20KKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRhbnRz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVs
bGVkYnktd2l0aC1kZXNjZW5kYW50cy5odG1sCShyZXZpc2lvbiAxNzQwMzQpCisrKyBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS13aXRoLWRlc2NlbmRhbnRzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTcsMTkgKzcsMzYgQEAKIAogPGRpdiBpZD0iY29udGVudCI+CiAK
LTxkaXYgYXJpYS1sYWJlbGxlZGJ5PSJhIGIiIGlkPSJncm91cCIgcm9sZT0iZ3JvdXAiPgotZ3Jv
dXAgdGV4dAotPC9kaXY+Cis8ZGl2IGNsYXNzPSJleCIgZGF0YS1sYWJlbD0iaGVsbG8gbGluayB1
c2Ugd29ybGQgdGVzdDEgdGVzdDIgdGVzdDMiIGFyaWEtbGFiZWxsZWRieT0iYTEgYjEiIGlkPSJ0
ZXN0MSIgcm9sZT0iZ3JvdXAiPmdyb3VwIHRleHQ8L2Rpdj4KKzxkaXYgaWQ9ImExIj5oZWxsbyA8
YSBocmVmPSIjIj5saW5rPC9hPiA8ZGl2IHJvbGU9Imdyb3VwIj5za2lwPC9kaXY+IDxkaXYgcm9s
ZT0iZ3JvdXAiIGFyaWEtbGFiZWw9InVzZSI+c2tpcDwvZGl2PiB3b3JsZDwvZGl2PgorPCEtLSBw
YXJhZ3JhcGggcm9sZSBpcyBhbWJpZ3VvdXMgc28gb2theSB0byBsZWF2ZSBuZXh0IGV4YW1wbGUg
YXMgaXQgLS0+Cis8ZGl2IGlkPSJiMSI+PGJ1dHRvbj50ZXN0MTwvYnV0dG9uPjxwIHRhYmluZGV4
PTA+dGVzdDIgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPmhpZGRlbjwvc3Bhbj4gdGVzdDM8L3A+
PC9kaXY+CiAKLTxkaXYgaWQ9ImEiPgotaGVsbG8gPGEgaHJlZj0iIyI+bGluazwvYT4gd29ybGQK
LTwvZGl2PgorPGlucHV0IHR5cGU9ImNoZWNrYm94IiBhcmlhLWxhYmVsbGVkYnk9InJldmVyc2Vs
YWJlbGZvciIgaWQ9InRlc3QyIiBjbGFzcz0iZXgiIGRhdGEtbGFiZWw9ImZvbyBiYXIiIGRhdGEt
bm90ZT0ibGFiZWxsZWQgYnkgbGFiZWwgZWxlbWVudCI+Cis8bGFiZWwgaWQ9InJldmVyc2VsYWJl
bGZvciI+Zm9vIDxzcGFuIHJvbGU9InRleHQiIGFyaWEtbGFiZWw9ImJhciI+c2tpcDwvc3Bhbj48
L2xhYmVsPgorPGJyPgogCi08ZGl2IGlkPSJiIj4KLTxidXR0b24+dGVzdDE8L2J1dHRvbj4gCi08
cCB0YWJpbmRleD0wPnRlc3QyIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj5oaWRkZW48L3NwYW4+
IHRlc3QzPC9wPgotPC9kaXY+Cis8aW5wdXQgdHlwZT0iY2hlY2tib3giIGFyaWEtbGFiZWxsZWRi
eT0icmV2ZXJzZWxhYmVsZm9yd2l0aGRpdiIgaWQ9InRlc3QzIiBjbGFzcz0iZXgiIGRhdGEtbGFi
ZWw9ImZvbyBiYXIiIGRhdGEtbm90ZT0ibGFiZWxsZWQgYnkgZGl2IGVsZW1lbnQiPgorPGRpdiBp
ZD0icmV2ZXJzZWxhYmVsZm9yd2l0aGRpdiI+Zm9vIDxzcGFuIHJvbGU9InRleHQiIGFyaWEtbGFi
ZWw9ImJhciI+c2tpcDwvc3Bhbj48L2Rpdj4KKzxicj4KIAorPCEtLSB3b3VsZCBiZSAiYmFyIiBu
YXRpdmVseSwgYnV0IGxhYmVsIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiB0byAiZm9vIiBieSBsYWJl
bGxlZGJ5IC0tPgorPGRpdiBpZD0ib3ZlcnJpZGVzbmF0aXZlbGFiZWwiPmZvbzwvZGl2PjxsYWJl
bCBmb3I9Im5hdGl2ZWxhYmVsb3ZlcnJpZGRlbiI+YmFyPC9sYWJlbD4KKzxpbnB1dCBjbGFzcz0i
ZXgiIGRhdGEtbGFiZWw9ImZvbyIgaWQ9InRlc3Q0IiB0eXBlPSJ0ZXh0IiBhcmlhLWxhYmVsbGVk
Ynk9Im92ZXJyaWRlc25hdGl2ZWxhYmVsIiBkYXRhLW5vdGU9Im92ZXJyaWRlcyBuYXRpdmUgbGFi
ZWwiPgorCis8IS0tIHNlbGYtcmVmZXJlbmNpbmcgbGFiZWxsZWRieSBpbiBjb21iaW5hdGlvbiB3
aXRoIGV4dGVybmFsIHJlZmVyZW5jZSAtLT4KKzxkaXYgaWQ9InByb2R1Y3RuYW1lMSI+PG5hdiBy
b2xlPSJuYXZpZ2F0aW9uIj48IS0tIG5hdiBkb2VzIG5vdCBnZXQgbmFtZUZyb206Y29udGVudHMg
LS0+cHJvZHVjdCBuYW1lPC9uYXY+PC9kaXY+Cis8YnV0dG9uIGNsYXNzPSJleCIgZGF0YS1sYWJl
bD0iRGVsZXRlIiBhcmlhLWxhYmVsPSJEZWxldGUiIGFyaWEtbGFiZWxsZWRieT0idGVzdDUgcHJv
ZHVjdG5hbWUxIiBpZD0idGVzdDUiIGRhdGEtbm90ZT0ic2VsZi1yZWZlcmVuY2lhbCBsYWJlbGxl
ZGJ5IGluY2x1ZGVzIG5hdiI+eDwvYnV0dG9uPgorCis8IS0tIHNlbGYtcmVmZXJlbmNpbmcgbGFi
ZWxsZWRieSBpbiBjb21iaW5hdGlvbiB3aXRoIGV4dGVybmFsIHJlZmVyZW5jZSAtLT4KKzxkaXYg
aWQ9InByb2R1Y3RuYW1lMiI+PG5hdiByb2xlPSJoZWFkaW5nIj48IS0tIG5hdiBkb2VzIG5vdCBn
ZXQgbmFtZUZyb206Y29udGVudHMsIGJ1dCBoZWFkaW5nIGRvZXMuIC0tPnByb2R1Y3QgbmFtZTwv
bmF2PjwvZGl2PgorPGJ1dHRvbiBjbGFzcz0iZXgiIGRhdGEtbGFiZWw9IkRlbGV0ZSBwcm9kdWN0
IG5hbWUiIGFyaWEtbGFiZWw9IkRlbGV0ZSIgYXJpYS1sYWJlbGxlZGJ5PSJ0ZXN0NiBwcm9kdWN0
bmFtZTIiIGlkPSJ0ZXN0NiIgZGF0YS1ub3RlPSJzZWxmLXJlZmVyZW5jaWFsIGxhYmVsbGVkYnkg
aW5jbHVkZXMgaGVhZGluZyI+eDwvYnV0dG9uPgorCis8ZGl2IGNsYXNzPSJleCIgZGF0YS1sYWJl
bD0iZm9vIGJhciBiYXogYm9wIGJhcCBib29tIiBhcmlhLWxhYmVsbGVkYnk9ImEzIGIzIiBpZD0i
dGVzdDciIHJvbGU9Imdyb3VwIiBkYXRhLW5vdGU9ImluY2x1ZGVzIGZvcm0gZWxlbWVudHMiPmZv
bzwvZGl2PgorPGJ1dHRvbiBpZD0iYTMiPiBmb28gPGltZyBzcmM9IiMiIGFsdD0iYmFyIj4gYmF6
PC9idXR0b24+Cis8ZGl2IGlkPSJiMyI+Ym9wIDxpbnB1dCB2YWx1ZT0iYmFwIj4gPGlucHV0IHR5
cGU9InJhbmdlIiBhcmlhLXZhbHVldGV4dD0iYm9vbSI+PC9kaXY+CisKKwogPC9kaXY+CiAKIDxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgpAQCAtMzAsOCArNDcsMTEgQEAKICAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyB0aGF0IGlmIGFyaWEtbGFiZWxsZWRieSBpcyBwb2ludGluZyB0byBub2Rl
cyB3aXRoIGRlc2NlbmRhbnRzLCBpdCByZXR1cm5zIGFsbCB0ZXh0LiIpOwogCiAgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICAgIHZhciBncm91cCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZ3JvdXAiKTsKLSAg
ICAgICAgICBkZWJ1ZygiYXJpYS1sYWJlbGxlZGJ5IGRlc2NyaXB0aW9uOiAiICsgZ3JvdXAuZGVz
Y3JpcHRpb24pOworICAgICAgICAgIGZvciAodmFyIGsgPSAxOyBrIDwgODsgaysrKSB7CisgICAg
ICAgICAgICAgIHZhciB0ZXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJ0ZXN0IiArIGspOworICAgICAgICAgICAgICBkZWJ1ZygidGVzdCAiICsgayAr
ICI6IGFyaWEtbGFiZWxsZWRieSBkZXNjcmlwdGlvbjogIiArIHRlc3QuZGVzY3JpcHRpb24pOwor
ICAgICAgICAgICAgICBkZWJ1ZygidGVzdCAiICsgayArICI6IGV4cGVjdGVkIGRlc2NyaXB0aW9u
OiAiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiICsgaykuZ2V0QXR0cmlidXRlKCJk
YXRhLWxhYmVsIikgKyAiXG4iKTsKKyAgICAgICAgICB9CiAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAg
fQogCg==
</data>
<flag name="review"
          id="263501"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>