<?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>137597</bug_id>
          
          <creation_ts>2014-10-10 00:19:36 -0700</creation_ts>
          <short_desc>Support activation behavior of link element</short_desc>
          <delta_ts>2015-06-01 11:05: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>New Bugs</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="Dhi Aurrahman">diorahman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040833</commentid>
    <comment_count>0</comment_count>
    <who name="Dhi Aurrahman">diorahman</who>
    <bug_when>2014-10-10 00:19:36 -0700</bug_when>
    <thetext>Support activation behavior of link element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040835</commentid>
    <comment_count>1</comment_count>
      <attachid>239605</attachid>
    <who name="Dhi Aurrahman">diorahman</who>
    <bug_when>2014-10-10 00:29:41 -0700</bug_when>
    <thetext>Created attachment 239605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041102</commentid>
    <comment_count>2</comment_count>
      <attachid>239605</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-10 22:27:09 -0700</bug_when>
    <thetext>Comment on attachment 239605
Patch

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

The patch is great. The changelogs are great. The tests are really well done.

r- because of the duplicated isLinkClick() in HTMLLinkElement and HTMLAnchorElement. Otherwise this is nearly perfect.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:413
&gt; +bool HTMLLinkElement::isLinkClick(Event* event)
&gt; +{
&gt; +    return event-&gt;type() == eventNames().clickEvent &amp;&amp; (!is&lt;MouseEvent&gt;(*event) || downcast&lt;MouseEvent&gt;(*event).button() != RightButton);
&gt; +}

Since this code is duplicated in HTMLAnchorElement, we should put it in a common place.

I suggest adding a static function &quot;isRightClick&quot; to the class MouseEvent. Then modify HTMLAnchorElement and HTMLLinkElement to use that function.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:420
&gt; +    if (url.isNull())
&gt; +        return;

I believe this is an interesting case, there should be a test for it if possible.

Maybe:
1) Create a click event with document.createEvent.
2) Send it to the &lt;link&gt; element with dispatchEvent()
3) Verify that the event has its default handled.
4) Set a time to 100ms. If the document has not navigated anywhere after the 100ms, finish the test with success.

This might even work when opened on Firefox...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041128</commentid>
    <comment_count>3</comment_count>
    <who name="Dhi Aurrahman">diorahman</who>
    <bug_when>2014-10-11 07:06:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 239605 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239605&amp;action=review
&gt; 
&gt; The patch is great. The changelogs are great. The tests are really well done.
&gt; 
&gt; r- because of the duplicated isLinkClick() in HTMLLinkElement and HTMLAnchorElement. Otherwise this is nearly perfect.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLLinkElement.cpp:413
&gt; &gt; +bool HTMLLinkElement::isLinkClick(Event* event)
&gt; &gt; +{
&gt; &gt; +    return event-&gt;type() == eventNames().clickEvent &amp;&amp; (!is&lt;MouseEvent&gt;(*event) || downcast&lt;MouseEvent&gt;(*event).button() != RightButton);
&gt; &gt; +}
&gt; 
&gt; Since this code is duplicated in HTMLAnchorElement, we should put it in a common place.
&gt; 
&gt; I suggest adding a static function &quot;isRightClick&quot; to the class MouseEvent. Then modify HTMLAnchorElement and HTMLLinkElement to use that function.

I&apos;m not sure with adding a static function &quot;isRightClick&quot;, since the current &quot;isLinkClick&quot; i.e.

return event-&gt;type() == eventNames().clickEvent &amp;&amp; (!is&lt;MouseEvent&gt;(*event) || !downcast&lt;MouseEvent&gt;(*event).button() != RightButton);

`true` if:

1. It is a click event and not a MouseEvent (it doesn&apos;t care about the button, since it is not a MouseEvent)
2. It is a click event and a MouseEvent and the clicked button is not RightButton.

I can however create a bool MouseEvent::isRightClick() as follows,

bool MouseEvent::isRightClick()
{
    return type() == eventNames().clickEvent &amp;&amp; button() == RightButton;
}

But it won&apos;t help to much on HTMLLinkElement::isLinkClick(Event *) and HTMLAnchorElement::isLinkClick(Event *)

bool isLinkClick(Event* event)
{
    return event-&gt;type() == eventNames().clickEvent &amp;&amp; (!is&lt;MouseEvent&gt;(*event) || !downcast&lt;MouseEvent&gt;(*event).isRightClick());
}

Am I missing something here?

&gt; 
&gt; &gt; Source/WebCore/html/HTMLLinkElement.cpp:420
&gt; &gt; +    if (url.isNull())
&gt; &gt; +        return;
&gt; 
&gt; I believe this is an interesting case, there should be a test for it if possible.
&gt; 
&gt; Maybe:
&gt; 1) Create a click event with document.createEvent.
&gt; 2) Send it to the &lt;link&gt; element with dispatchEvent()
&gt; 3) Verify that the event has its default handled.
&gt; 4) Set a time to 100ms. If the document has not navigated anywhere after the 100ms, finish the test with success.
&gt; 
&gt; This might even work when opened on Firefox...

I&apos;m ready with the test (https://gist.github.com/diorahman/b1c2da24d44da2648c36), but I have to confirm the &quot;isRightClick&quot; first, before sending another patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041152</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-11 11:32:19 -0700</bug_when>
    <thetext>Oops, my bad, isRightClick is indeed wrong.

Let&apos;s think about this, what would be a good name for a click event that can either be synthetic or come from the mouse...

Maybe triggersActivationBehavior(Event*) would be a good name, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041157</commentid>
    <comment_count>5</comment_count>
      <attachid>239683</attachid>
    <who name="Dhi Aurrahman">diorahman</who>
    <bug_when>2014-10-11 13:35:40 -0700</bug_when>
    <thetext>Created attachment 239683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041169</commentid>
    <comment_count>6</comment_count>
      <attachid>239683</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-11 16:59:09 -0700</bug_when>
    <thetext>Comment on attachment 239683
Patch

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

The page is good, the additional test looks good too.

I have a minor comment. I r+, cq-, which means the patch is good but it cannot be integrated as it is because of minor review comments.
If you upload a new updated patch, I&apos;ll cq+ that one. If I get the chance tonight I&apos;ll just update this version and land manually.

Great job on this bug.

&gt; Source/WebCore/dom/MouseEvent.cpp:193
&gt; +bool MouseEvent::triggerActivationBehavior(const Event* event)

Seeing this being used in practice, the name does not look right. The function name implies it triggers the Activation Behavior.

I think canTriggerActivationBehavior() would be better.

&gt; Source/WebCore/dom/MouseEvent.h:102
&gt; +    bool static triggerActivationBehavior(const Event*); 

Should be &quot;static bool&quot; instead of &quot;bool static&quot; for WebKit style.

&gt; Source/WebCore/html/HTMLAnchorElement.h:-124
&gt; -

No need to change this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041170</commentid>
    <comment_count>7</comment_count>
      <attachid>239683</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-11 17:31:57 -0700</bug_when>
    <thetext>Comment on attachment 239683
Patch

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

&gt;&gt; Source/WebCore/dom/MouseEvent.cpp:193
&gt;&gt; +bool MouseEvent::triggerActivationBehavior(const Event* event)
&gt; 
&gt; Seeing this being used in practice, the name does not look right. The function name implies it triggers the Activation Behavior.
&gt; 
&gt; I think canTriggerActivationBehavior() would be better.

The argument should probably be a const Event&amp; since it is expected to be non-null.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:410
&gt; +void HTMLLinkElement::handleClick(Event* event)

Ditto. Argument could be an Event&amp;

&gt; Source/WebCore/html/HTMLLinkElement.cpp:420
&gt; +    return;

Please omit this return.

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-element-click-expected.txt:9
&gt; +PASS event.data is &apos;test:ok&apos;

This should appear before the TEST COMPLETE, something is likely wrong with the test?

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-element-click.html:15
&gt; +	shouldBe(&quot;event.data&quot;, &quot;&apos;test:ok&apos;&quot;)

shouldBeEqualToString()

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-element-click.html:16
&gt; +	if (window.testRunner)

finishJSTest();

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-element-click.html:22
&gt; +if (window.testRunner) 

should be window.jsTestIsAsync = true;

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-mouse-click-expected.txt:9
&gt; +PASS event.data is &apos;test:ok&apos;

The fact that the PASS is after the TEST COMPLETE is a bad sign. There is likely something wrong with the test and there is a fair chance it will be flaky.

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-mouse-click.html:15
&gt; +	shouldBe(&quot;event.data&quot;, &quot;&apos;test:ok&apos;&quot;)

shouldBeEqualToString()

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-mouse-click.html:16
&gt; +	if (window.testRunner)

finishJSTest();

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-mouse-click.html:22
&gt; +if (window.testRunner) 

should be window.jsTestIsAsync = true;

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-url-is-null.html:11
&gt; +	if (window.testRunner)

should be a finishJSTest();

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-url-is-null.html:16
&gt; +shouldBe(&quot;target.dispatchEvent(mouseEvent)&quot;, &quot;true&quot;);

shouldBeTrue()

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-url-is-null.html:18
&gt; +if (window.testRunner) 

should be window.jsTestIsAsync = true;

&gt; LayoutTests/fast/dom/resources/html-link-element-activation-behavior-on-element-click-step1.html:15
&gt; +		document.getElementById(&quot;target&quot;).click();

weird indentation

&gt; LayoutTests/fast/dom/resources/html-link-element-activation-behavior-target.html:4
&gt; +		window.parent.postMessage(&quot;test:ok&quot;, &quot;*&quot;);

Weird indentation here. BTW, are you using tabs instead of spaces?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041181</commentid>
    <comment_count>8</comment_count>
      <attachid>239696</attachid>
    <who name="Dhi Aurrahman">diorahman</who>
    <bug_when>2014-10-11 20:58:02 -0700</bug_when>
    <thetext>Created attachment 239696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041185</commentid>
    <comment_count>9</comment_count>
      <attachid>239696</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-11 21:38:40 -0700</bug_when>
    <thetext>Comment on attachment 239696
Patch

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

&gt; Source/WebCore/html/HTMLLinkElement.cpp:402
&gt; +    if (MouseEvent::canTriggerActivationBehavior(*event)) {

nit: We should probably add an ASSERT(event); at the beginning of this function.

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-element-click-expected.txt:6
&gt; +FAIL event.data should be &apos;test:ok&apos;. Was test:ok.

uh oh..

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-element-click.html:15
&gt; +  shouldBeEqualToString(&quot;event.data&quot;, &quot;&apos;test:ok&apos;&quot;)

Remove the single quotes around test:ok

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-on-mouse-click.html:15
&gt; +  shouldBe(&quot;event.data&quot;, &quot;&apos;test:ok&apos;&quot;)

shouldBeEqualToString()

&gt; LayoutTests/fast/dom/html-link-element-activation-behavior-url-is-null.html:15
&gt; +shouldBe(&quot;target.dispatchEvent(mouseEvent)&quot;, &quot;true&quot;);

shouldBeTrue()

&gt; LayoutTests/fast/dom/resources/html-link-element-activation-behavior-target.html:4
&gt; +  window.parent.postMessage(&quot;test:ok&quot;, &quot;*&quot;);

nit: I think we use 4-space indentation in our JS usually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041187</commentid>
    <comment_count>10</comment_count>
      <attachid>239698</attachid>
    <who name="Dhi Aurrahman">diorahman</who>
    <bug_when>2014-10-11 21:56:57 -0700</bug_when>
    <thetext>Created attachment 239698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041188</commentid>
    <comment_count>11</comment_count>
      <attachid>239699</attachid>
    <who name="Dhi Aurrahman">diorahman</who>
    <bug_when>2014-10-11 22:06:29 -0700</bug_when>
    <thetext>Created attachment 239699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041191</commentid>
    <comment_count>12</comment_count>
      <attachid>239699</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-11 23:19:57 -0700</bug_when>
    <thetext>Comment on attachment 239699
Patch

Seems fine, thanks. I&apos;ll let Benjamin take a final look and land it as he already r+&apos;d it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041195</commentid>
    <comment_count>13</comment_count>
      <attachid>239699</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-12 00:59:20 -0700</bug_when>
    <thetext>Comment on attachment 239699
Patch

This last update looks good to me too. Let&apos;s land it!

Thank you for your help on the review Christophe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041196</commentid>
    <comment_count>14</comment_count>
      <attachid>239699</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-12 01:35:37 -0700</bug_when>
    <thetext>Comment on attachment 239699
Patch

Clearing flags on attachment: 239699

Committed r174637: &lt;http://trac.webkit.org/changeset/174637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041197</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-12 01:35:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041201</commentid>
    <comment_count>16</comment_count>
    <who name="Dhi Aurrahman">diorahman</who>
    <bug_when>2014-10-12 02:50:27 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 239699 [details])
&gt; This last update looks good to me too. Let&apos;s land it!
&gt; 
&gt; Thank you for your help on the review Christophe.

Thank you Benjamin and Christophe! I have learned a lot from this process. Thank you. Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041675</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-14 13:46:59 -0700</bug_when>
    <thetext>This patch made fast/dom/remove-body-during-body-replacement2.html very flaky on Mac - it always fails on first try, and then passes on retry.

This may mean that some state leaks from a previous test that breaks this one.

http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=fast%2Fdom%2Fremove-body-during-body-replacement2.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041680</commentid>
    <comment_count>18</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-14 14:03:07 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; This patch made fast/dom/remove-body-during-body-replacement2.html very flaky on Mac - it always fails on first try, and then passes on retry.
&gt; 
&gt; This may mean that some state leaks from a previous test that breaks this one.
&gt; 
&gt; http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=fast%2Fdom%2Fremove-body-during-body-replacement2.html

Those tests look completely unrelated. Maybe a bug in frameloader.

Are you able to reproduce the flakiness locally? I just tried running fast/dom in debug and release and everything was fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098367</commentid>
    <comment_count>19</comment_count>
      <attachid>239699</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-30 18:23:58 -0700</bug_when>
    <thetext>Comment on attachment 239699
Patch

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

&gt; Source/WebCore/html/HTMLLinkElement.cpp:419
&gt; +    frame-&gt;loader().urlSelected(url, target(), PassRefPtr&lt;Event&gt;(&amp;event), LockHistory::No, LockBackForwardList::No, MaybeSendReferrer);

Creating a PassRefPtr from a reference does not make sense.

We should eliminate PassRefPtr&lt;Event&gt; from FrameLoader, and just use pointers. There isn&apos;t transfer of ownership, and the code is not performance sensitive in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098539</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-06-01 11:00:55 -0700</bug_when>
    <thetext>Oh boy, do I ever have questions about this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098541</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-06-01 11:05:27 -0700</bug_when>
    <thetext>Two primary questions for now:

1 - HTMLLinkElement, when clicked, handles the target attribute the same way HTMLAnchorElement does. But the spec makes absolutely no mention of the target attribute, or what it means in the context of a clickable link element. This seems wrong.

2 - HTMLAnchorElement does a lot more stuff in its click handler that HTMLLinkElement does *not* do. One example is running stripLeadingAndTrailingHTMLSpaces on the url string. Another seemingly critical example is running document().completeURL() on the string.

Why is it okay to do that differently?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239605</attachid>
            <date>2014-10-10 00:29:41 -0700</date>
            <delta_ts>2014-10-11 13:35:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137597-20141010142942.patch</filename>
            <type>text/plain</type>
            <size>10797</size>
            <attacher name="Dhi Aurrahman">diorahman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2YTVlY2Q5OTExZDFk
OTExYWMwM2JiZjBjMjNjMjBlNzRiNmUwNC4uNGQzMGYyNDNjZDg5ODhkY2I1NWYwMmYyOWI5NmZh
NTRmMTU5NzM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE0LTEwLTEwICBEaGkg
QXVycmFobWFuICA8ZGlvcmFobWFuQHJvY2t5YmFycy5jb20+CisKKyAgICAgICAgU3VwcG9ydCBh
Y3RpdmF0aW9uIGJlaGF2aW9yIG9mIGxpbmsgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9m
IGxpbmsgZWxlbWVudHMgYXMgZGVmaW5lZCBpbiBbMV0sCisgICAgICAgIGkuZS4gdG8gZm9sbG93
IHRoZSBoeXBlcmxpbmsgY3JlYXRlZCBieSB0aGUgbGluayBlbGVtZW50IHdoZW4gaXQgaXMgZnVs
bHkgYWN0aXZlLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtbGluay1lbGVtZW50CisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLmh0bWwKKworICAgICAgICAqIGh0bWwv
SFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OmlzTGlua0NsaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aGFuZGxl
Q2xpY2spOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisKIDIwMTQtMTAtMDcg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZM
XSBDYWxsIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSgpIGluc3RlYWQgb2YgZGVsZWdhdGVk
U2Nyb2xsUmVxdWVzdGVkKCkgaW4gU2Nyb2xsVmlldzo6c2Nyb2xsVG8oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGRkNmY5ODc4NDUyZmY0MGNiYTA1MTdiOWFm
ZDIxZGNjYTdkMGY5NjEuLjQ2OGEzMTQ2YzBhMWQ4Yjk1YzBhOTA4NTMxNGFlYzI2ZmU4ZjBmMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDkg
QEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0Lmgi
CiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0zOTYsNiArMzk4LDMzIEBAIGJvb2wgSFRNTExpbmtFbGVt
ZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKICAg
ICByZXR1cm4gYXR0cmlidXRlLm5hbWUoKS5sb2NhbE5hbWUoKSA9PSBocmVmQXR0ciB8fCBIVE1M
RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAordm9pZCBIVE1MTGlua0Vs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChpc0xp
bmtDbGljayhldmVudCkpIHsKKyAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIEhUTUxFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKK30KKworYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmlzTGlua0NsaWNrKEV2ZW50KiBldmVudCkK
K3sKKyAgICByZXR1cm4gZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCAm
JiAoIWlzPE1vdXNlRXZlbnQ+KCpldmVudCkgfHwgZG93bmNhc3Q8TW91c2VFdmVudD4oKmV2ZW50
KS5idXR0b24oKSAhPSBSaWdodEJ1dHRvbik7Cit9CisKK3ZvaWQgSFRNTExpbmtFbGVtZW50Ojpo
YW5kbGVDbGljayhFdmVudCogZXZlbnQpCit7CisgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CisgICAgVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm47CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0
ZWQodXJsLCB0YXJnZXQoKSwgZXZlbnQsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJk
TGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyKTsgICAgCisgICAgcmV0dXJuOworfQorCiBVUkwg
SFRNTExpbmtFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChnZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5oCmluZGV4IDVjYWNiNzdkMmFlYTUxNWMwZDU5YmE1NDZhNDc2YjRhOGI2NDcz
MGIuLjc2NDcwZjQ5OTE2NzEzODk4M2FhOTgzYzQ0MTAzN2Y0ZmRiZGQ4MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtOTcsNiArOTcsMTAgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBv
dmVycmlkZTsKIAorICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpbmtDbGljayhFdmVudCopOworICAgIHZvaWQgaGFuZGxl
Q2xpY2soRXZlbnQqKTsKKwogcHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OTg3MjAzMGM5MmFlOWI2N2E1M2VhM2ZkNzljODg4N2I4NzFkMTk0MC4uZjA1MGVlYzdiNWE1MWQ4
OWYwN2Y1ODdiOTNhOTBkMDdhMDdjOGE5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTEw
LTEwICBEaGkgQXVycmFobWFuICA8ZGlvcmFobWFuQHJvY2t5YmFycy5jb20+CisKKyAgICAgICAg
U3VwcG9ydCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9mIGxpbmsgZWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTk3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgY2FzZXMgZm9yIGxp
bmsgZWxlbWVudCBhY3RpdmF0aW9uIGJlaGF2aW9yCisKKyAgICAgICAgKiBmYXN0L2RvbS9odG1s
LWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3Rp
dmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2suaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1j
bGljay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0bWwtbGluay1l
bGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2suaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24t
YmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1zdGVwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1v
bi1tb3VzZS1jbGljay1zdGVwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNv
dXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci10YXJnZXQuaHRtbDog
QWRkZWQuCisKIDIwMTQtMTAtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUm9sbC1vdmVyIENoYW5nZWxvZ3MuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVs
ZW1lbnQtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5r
LWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hODE5YzZkMmMyMjM1Y2VjOWY2ZDZiOWVmZGJkNjdmY2IyMzAyMWMyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQt
YWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwIEBACitUaGlzIHRlc3RzIGh0bWwgbGluayBlbGVtZW50IGFjdGl2YXRpb24gYmVoYXZp
b3Igb24gRE9NIGNsaWNrCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1BBU1MgZXZlbnQuZGF0
YSBpcyAndGVzdDpvaycKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1s
aW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9y
LW9uLWVsZW1lbnQtY2xpY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDlkNWViNmU1Y2I0ODZjZmY1OWI2
MzNhN2NlMTE0NDA4YjAwMmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNr
Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9Im1hc3RlciI+PC9kaXY+Cis8aWZyYW1lIGlkPSJmcmFt
ZSIgc3JjPSJyZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1v
bi1lbGVtZW50LWNsaWNrLXN0ZXAxLmh0bWwiPjwvaWZyYW1lPgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIGh0bWwgbGluayBlbGVtZW50IGFjdGl2YXRpb24gYmVoYXZpb3Igb24g
RE9NIGNsaWNrIik7CitmdW5jdGlvbiBzdGFydCgpeworCWZyYW1lLnBvc3RNZXNzYWdlKCJlbGVt
ZW50OmNsaWNrIiwgIioiKTsKK30KK2Z1bmN0aW9uIGxpc3RlbmVyKGV2ZW50KXsKKwlzaG91bGRC
ZSgiZXZlbnQuZGF0YSIsICIndGVzdDpvayciKQorCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJ
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cit2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZnJhbWUiKS5jb250ZW50V2luZG93Oword2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCBsaXN0ZW5lcik7CitmcmFtZS5vbmxvYWQgPSBzdGFydDsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgCisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtbGlu
ay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2stZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhh
dmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU1MWI5MTg1Mzlk
NzdhNTYyNjQzMDY3YmYzZDJlNGZiNjMzMjAwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91
c2UtY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgaHRtbCBs
aW5rIGVsZW1lbnQgYWN0aXZhdGlvbiBiZWhhdmlvciBvbiBtb3VzZSBjbGljaworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCitQQVNTIGV2ZW50LmRhdGEgaXMgJ3Rlc3Q6b2snCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVo
YXZpb3Itb24tbW91c2UtY2xpY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtbGlu
ay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2suaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNzVkMGE5NTgzZWY0ODhjNDNhMWEwMWVjYjI1ODc2ODFhMjdkYWJiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlv
bi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJtYXN0ZXIi
PjwvZGl2PgorPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2h0bWwtbGluay1lbGVt
ZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2stc3RlcDEuaHRtbCI+PC9pZnJh
bWU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgaHRtbCBsaW5rIGVsZW1lbnQg
YWN0aXZhdGlvbiBiZWhhdmlvciBvbiBtb3VzZSBjbGljayIpOworZnVuY3Rpb24gc3RhcnQoKXsK
KwlmcmFtZS5wb3N0TWVzc2FnZSgibW91c2U6Y2xpY2siLCAiKiIpOworfQorZnVuY3Rpb24gbGlz
dGVuZXIoZXZlbnQpeworCXNob3VsZEJlKCJldmVudC5kYXRhIiwgIid0ZXN0Om9rJyIpCisJaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3ZhciBm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpLmNvbnRlbnRXaW5kb3c7Cit3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGxpc3RlbmVyKTsKK2ZyYW1lLm9ubG9h
ZCA9IHN0YXJ0OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSAKKwl0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVo
YXZpb3Itb24tZWxlbWVudC1jbGljay1zdGVwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay1zdGVwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNTM5NWQyYjYxMjliOGU4NTdiZTQyODQ0
N2JkZjMwMThiZDdmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9y
ZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50
LWNsaWNrLXN0ZXAxLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPGhlYWQ+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorbGluayB7CisJZGlzcGxheTogYmxvY2s7CisJd2lkdGg6IDEwMHB4OworCWhl
aWdodDogMTAwcHg7CisJYm9yZGVyOiAxcHggc29saWQgcmVkOworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxkaXY+PC9kaXY+Cis8bGluayBpZD0idGFyZ2V0IiBocmVmPSJodG1sLWxpbmstZWxlbWVu
dC1hY3RpdmF0aW9uLWJlaGF2aW9yLXRhcmdldC5odG1sIj4KKzxzY3JpcHQ+CisJZnVuY3Rpb24g
ZWxlbWVudENsaWNrKCl7CisJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5jbGlj
aygpOworCX0KKwl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGVsZW1lbnRDbGlj
ayk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlv
bi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1zdGVwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91
c2UtY2xpY2stc3RlcDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDg2ZjI4M2Q5MWI1YmZiYWVhYWUwNTUw
YjAwZmI0Y2I0NmFiNzIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2Ut
Y2xpY2stc3RlcDEuaHRtbApAQCAtMCwwICsxLDIyIEBACis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CitsaW5rIHsKKwlkaXNwbGF5OiBibG9jazsKKwl3aWR0aDogMTAwcHg7CisJaGVp
Z2h0OiAxMDBweDsKKwlib3JkZXI6IDFweCBzb2xpZCByZWQ7Cit9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGRpdj48L2Rpdj4KKzxsaW5rIGlkPSJ0YXJnZXQiIGhyZWY9Imh0bWwtbGluay1lbGVtZW50
LWFjdGl2YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwiPgorPHNjcmlwdD4KKwlmdW5jdGlvbiBt
b3VzZUNsaWNrKCkgeworCQlpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisJCQlldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyg1MCwgMTQwKTsKKwkJCWV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworCQkJ
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworCQl9CQorCX0KKwl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIG1vdXNlQ2xpY2spOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwt
bGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlv
ci10YXJnZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZmM4NDAyMWY5YjVmNGExYTg4MmFiZjBmZWNiNTZi
NmJjMWM0OWU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPGhlYWQ+Cis8c2NyaXB0PgorCWZ1bmN0aW9uIG9rKCl7CisJCXdpbmRv
dy5wYXJlbnQucG9zdE1lc3NhZ2UoInRlc3Q6b2siLCAiKiIpOworCX0KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJvaygpIj4KKzxoMT50YXJnZXQ8L2gxPgorPC9ib2R5PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239683</attachid>
            <date>2014-10-11 13:35:40 -0700</date>
            <delta_ts>2014-10-11 20:57:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137597-20141012033542.patch</filename>
            <type>text/plain</type>
            <size>16758</size>
            <attacher name="Dhi Aurrahman">diorahman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2YTVlY2Q5OTExZDFk
OTExYWMwM2JiZjBjMjNjMjBlNzRiNmUwNC4uYTBkMGVmYWZjMGU2ZjI3NTBkMWYzYzZmOGMxMGU3
Y2FlMGNiNGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTEwLTExICBEaGkg
QXVycmFobWFuICA8ZGlvcmFobWFuQHJvY2t5YmFycy5jb20+CisKKyAgICAgICAgU3VwcG9ydCBh
Y3RpdmF0aW9uIGJlaGF2aW9yIG9mIGxpbmsgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9m
IGxpbmsgZWxlbWVudHMgYXMgZGVmaW5lZCBpbiBbMV0sCisgICAgICAgIGkuZS4gdG8gZm9sbG93
IHRoZSBoeXBlcmxpbmsgY3JlYXRlZCBieSB0aGUgbGluayBlbGVtZW50IHdoZW4gaXQgaXMgZnVs
bHkgYWN0aXZlLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtbGluay1lbGVtZW50CisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51bGwu
aHRtbAorCisgICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VFdmVudDo6dHJpZ2dlckFjdGl2YXRpb25CZWhhdmlvcik6CisgICAgICAgICogZG9tL01v
dXNlRXZlbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTGlua0NsaWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAg
ICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KwogMjAxNC0xMC0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIENhbGwgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKCkgaW5zdGVh
ZCBvZiBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoKSBpbiBTY3JvbGxWaWV3OjpzY3JvbGxUbygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggZGY5NDM4OGM0ZGM1ODQxMzEyMmJjOTgy
NDU4OTc2YTY0ZDJmMTRlMS4uOGI4MTVmOWQwNGEwMGFjNjJiNzI4OThmNDFmMmI4NDY2NGUxNjcw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtMTkwLDYgKzE5MCwxMSBAQCBib29s
IE1vdXNlRXZlbnQ6OmlzRHJhZ0V2ZW50KCkgY29uc3QKICAgICAgICAgICAgICAgIHx8IHQgPT0g
ZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50fHwgdCA9PSBldmVudE5hbWVzKCkuZHJhZ0V2ZW50
IHx8IHQgPT0gZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudDsKIH0KIAorYm9vbCBNb3VzZUV2ZW50
Ojp0cmlnZ2VyQWN0aXZhdGlvbkJlaGF2aW9yKGNvbnN0IEV2ZW50KiBldmVudCkKK3sKKyAgICBy
ZXR1cm4gZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCAmJiAoIWlzPE1v
dXNlRXZlbnQ+KCpldmVudCkgfHwgZG93bmNhc3Q8TW91c2VFdmVudD4oKmV2ZW50KS5idXR0b24o
KSAhPSBSaWdodEJ1dHRvbik7Cit9CisKIGludCBNb3VzZUV2ZW50Ojp3aGljaCgpIGNvbnN0CiB7
CiAgICAgLy8gRm9yIHRoZSBET00sIHRoZSByZXR1cm4gdmFsdWVzIGZvciBsZWZ0LCBtaWRkbGUg
YW5kIHJpZ2h0IG1vdXNlIGJ1dHRvbnMgYXJlIDAsIDEsIDIsIHJlc3BlY3RpdmVseS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCmluZGV4IGFmYzdiZGYwNzhkYmVjMTIzOTkwZjJiNWNlMmRlZWY5ZmU2
ZjFhNjIuLmQ0NTFhZWUyYjllYTdiYzk3ZjA4MzVhMWI1NWIxNmM3MDY4NGM2ZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuaApAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlz
RHJhZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdGF0aWMgdHJpZ2dlckFjdGl2
YXRpb25CZWhhdmlvcihjb25zdCBFdmVudCopOyAKKwogICAgIHZpcnR1YWwgaW50IHdoaWNoKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RXZlbnQ+IGNsb25lRm9y
KEhUTUxJRnJhbWVFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDQ2MmIyMjgyODViZTc5ZmIzNDM5MzM1YTUwMWI0
NThlYWFkNmVlOTEuLmQ3NWFkYmZiMTRiMDZiODA5ODQ5ZTVmMWE5Y2FmZTNlODNiMmZhN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0xODksNyArMTg5
LDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNM
aW5rQ2xpY2soZXZlbnQpICYmIHRyZWF0TGlua0FzTGl2ZUZvckV2ZW50VHlwZShldmVudFR5cGUo
ZXZlbnQpKSkgeworICAgICAgICBpZiAoTW91c2VFdmVudDo6dHJpZ2dlckFjdGl2YXRpb25CZWhh
dmlvcihldmVudCkgJiYgdHJlYXRMaW5rQXNMaXZlRm9yRXZlbnRUeXBlKGV2ZW50VHlwZShldmVu
dCkpKSB7CiAgICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTU5NywxMSArNTk3LDYgQEAgYm9vbCBpc0VudGVyS2V5S2V5ZG93
bkV2ZW50KEV2ZW50KiBldmVudCkKICAgICByZXR1cm4gZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkua2V5ZG93bkV2ZW50ICYmIGlzPEtleWJvYXJkRXZlbnQ+KCpldmVudCkgJiYgZG93bmNh
c3Q8S2V5Ym9hcmRFdmVudD4oKmV2ZW50KS5rZXlJZGVudGlmaWVyKCkgPT0gIkVudGVyIjsKIH0K
IAotYm9vbCBpc0xpbmtDbGljayhFdmVudCogZXZlbnQpCi17Ci0gICAgcmV0dXJuIGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgJiYgKCFpczxNb3VzZUV2ZW50PigqZXZl
bnQpIHx8IGRvd25jYXN0PE1vdXNlRXZlbnQ+KCpldmVudCkuYnV0dG9uKCkgIT0gUmlnaHRCdXR0
b24pOwotfQotCiBib29sIHNob3VsZFByb2hpYml0TGlua3MoRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICByZXR1cm4gaXNJblNWR0ltYWdlKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5oCmluZGV4IDIzMmIwMjU2MDQzZWE1NmI4NWNkMTY4MWY2ZDU4MGI5MTVi
MGY4YzkuLjhjN2MxMDNhZGFiOGUwZDE2NGEzMWRhZDI5OTk4YjgwNzA5Y2RiZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKQEAgLTEyMSw3ICsxMjEsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZvaWQgc2VuZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOwotCiAgICAgdm9pZCBo
YW5kbGVDbGljayhFdmVudCopOwogCiAgICAgZW51bSBFdmVudFR5cGUgewpAQCAtMTUyLDcgKzE1
MSw2IEBAIGlubGluZSBMaW5rSGFzaCBIVE1MQW5jaG9yRWxlbWVudDo6dmlzaXRlZExpbmtIYXNo
KCkgY29uc3QKIC8vIEZ1bmN0aW9ucyBzaGFyZWQgd2l0aCB0aGUgb3RoZXIgYW5jaG9yIGVsZW1l
bnRzIChpLmUuLCBTVkcpLgogCiBib29sIGlzRW50ZXJLZXlLZXlkb3duRXZlbnQoRXZlbnQqKTsK
LWJvb2wgaXNMaW5rQ2xpY2soRXZlbnQqKTsKIGJvb2wgc2hvdWxkUHJvaGliaXRMaW5rcyhFbGVt
ZW50Kik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAppbmRleCBkZDZmOTg3ODQ1MmZmNDBjYmEwNTE3YjlhZmQyMWRjY2E3ZDBm
OTYxLi5lYWNjNjRhNjcyOGFiYjk2NGY2NmFmNmVmMDhlMzlhZTZmNDUzZDc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw5IEBACiAjaW5jbHVk
ZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUg
Ik1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJl
bmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpAQCAtMzk2LDYgKzM5OCwyOCBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0
dHJpYnV0ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0gaHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6Omlz
VVJMQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoTW91c2VFdmVudDo6dHJp
Z2dlckFjdGl2YXRpb25CZWhhdmlvcihldmVudCkpIHsKKyAgICAgICAgaGFuZGxlQ2xpY2soZXZl
bnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEhUTUxFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKK30KKwordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmhhbmRsZUNsaWNr
KEV2ZW50KiBldmVudCkKK3sKKyAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICBV
UkwgdXJsID0gaHJlZigpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZCh1cmwsIHRh
cmdldCgpLCBldmVudCwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywg
TWF5YmVTZW5kUmVmZXJyZXIpOyAgICAKKyAgICByZXR1cm47Cit9CisKIFVSTCBIVE1MTGlua0Vs
ZW1lbnQ6OmhyZWYoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJM
KGdldEF0dHJpYnV0ZShocmVmQXR0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgKaW5kZXggNWNhY2I3N2QyYWVhNTE1YzBkNTliYTU0NmE0NzZiNGE4YjY0NzMwYi4uNzhlMTNj
OTg4YTRjMGY5YWVjNzlkNTBmOGE1NjBkYzQ2YjJiYmM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5oCkBAIC05Nyw2ICs5Nyw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwor
ICAgIHZvaWQgaGFuZGxlQ2xpY2soRXZlbnQqKTsKKwogcHJpdmF0ZToKICAgICBIVE1MTGlua0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAppbmRleCA1NTEwNmNlNmE2ZTA2OTY4
YmVkODk3YTRmMjYyOGYzNTEyMjljYjBiLi5lY2FhZGMwODNjMzFjNThjMDU0YjBhZWNlNTE3ZDhj
YzEyODE5YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKQEAgLTE1NSw3ICsxNTUs
NyBAQCB2b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpc0xpbmtDbGlj
ayhldmVudCkpIHsKKyAgICAgICAgaWYgKE1vdXNlRXZlbnQ6OnRyaWdnZXJBY3RpdmF0aW9uQmVo
YXZpb3IoZXZlbnQpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGhyZWYoKSk7CiAKICAgICAgICAgICAgIGlmICh1cmxbMF0gPT0g
JyMnKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOTg3MjAzMGM5MmFlOWI2N2E1M2VhM2ZkNzljODg4N2I4NzFkMTk0MC4u
YzMxMDU1NGJmOTlmNGQwMGE3YTk2MmQ1ZjQyNDE3Yzg3ODUxMWU2NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDE0LTEwLTExICBEaGkgQXVycmFobWFuICA8ZGlvcmFobWFuQHJvY2t5YmFycy5j
b20+CisKKyAgICAgICAgU3VwcG9ydCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9mIGxpbmsgZWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRl
c3QgY2FzZXMgZm9yIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJlaGF2aW9yLgorCisgICAgICAg
ICogZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVt
ZW50LWNsaWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbC1s
aW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVo
YXZpb3Itb24tbW91c2UtY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNr
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2
YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51bGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1u
dWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9odG1sLWxpbmst
ZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stc3RlcDEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFj
dGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2stc3RlcDEuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVo
YXZpb3ItdGFyZ2V0Lmh0bWw6IEFkZGVkLgorCiAyMDE0LTEwLTA3ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJvbGwtb3ZlciBDaGFuZ2Vsb2dzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZh
dGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTgxOWM2ZDJjMjIzNWNlYzlmNmQ2Yjll
ZmRiZDY3ZmNiMjMwMjFjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVu
dCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9uIERPTSBjbGljaworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCitQQVNTIGV2ZW50LmRhdGEgaXMgJ3Rlc3Q6b2snCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxl
bWVudC1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQt
YWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJj
ZmE2MDI0ZWQyMGRiMDc0MTdhNGQ1OWFlNDI0ZmUzYjQ2NWZjYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZp
b3Itb24tZWxlbWVudC1jbGljay5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJtYXN0ZXIiPjwvZGl2
PgorPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFj
dGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1zdGVwMS5odG1sIj48L2lmcmFtZT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3Rp
dmF0aW9uIGJlaGF2aW9yIG9uIERPTSBjbGljayIpOworZnVuY3Rpb24gc3RhcnQoKXsKKwlmcmFt
ZS5wb3N0TWVzc2FnZSgiZWxlbWVudDpjbGljayIsICIqIik7Cit9CitmdW5jdGlvbiBsaXN0ZW5l
cihldmVudCl7CisJc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAiJ3Rlc3Q6b2snIikKKwlpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQordmFyIGZyYW1l
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lIikuY29udGVudFdpbmRvdzsKK3dpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbGlzdGVuZXIpOworZnJhbWUub25sb2FkID0g
c3RhcnQ7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIAorCXRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQt
YWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1v
dXNlLWNsaWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTUxYjkxODUzOWQ3N2E1NjI2NDMw
NjdiZjNkMmU0ZmI2MzMyMDA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVu
dCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9uIG1vdXNlIGNsaWNrCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKK1BBU1MgZXZlbnQuZGF0YSBpcyAndGVzdDpvaycKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1t
b3VzZS1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQt
YWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MmYz
MzIyZmFjZTk0ZWVmMzU4YzY1MDk5MjcxYmFjNWRhYTMzNDcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9y
LW9uLW1vdXNlLWNsaWNrLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9Im1hc3RlciI+PC9kaXY+Cis8
aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJyZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZh
dGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1zdGVwMS5odG1sIj48L2lmcmFtZT4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9u
IGJlaGF2aW9yIG9uIG1vdXNlIGNsaWNrIik7CitmdW5jdGlvbiBzdGFydCgpeworCWZyYW1lLnBv
c3RNZXNzYWdlKCJtb3VzZTpjbGljayIsICIqIik7Cit9CitmdW5jdGlvbiBsaXN0ZW5lcihldmVu
dCl7CisJc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAiJ3Rlc3Q6b2snIikKKwlpZiAod2luZG93LnRl
c3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQordmFyIGZyYW1lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lIikuY29udGVudFdpbmRvdzsKK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbGlzdGVuZXIpOworZnJhbWUub25sb2FkID0gc3RhcnQ7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIAorCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZh
dGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1udWxsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDUyYTEwNmFjYzk2ZjkyNTg4ZTE2NGUxYjAyN2Y3NDg3
OGIyM2ZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5r
LWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJl
aGF2aW9yIHdoZW4gdXJsIGlzIG51bGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgdGFyZ2V0LmRpc3BhdGNoRXZlbnQobW91c2VFdmVudCkgaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3It
dXJsLWlzLW51bGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50
LWFjdGl2YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51bGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWU0MzJj
NTAzYjVmZGY5OGZkODk2MTQ2YTIwMThjZDZjNjdiOWJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci11
cmwtaXMtbnVsbC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8bGluayBpZD0idGFyZ2V0Ij4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJlaGF2
aW9yIHdoZW4gdXJsIGlzIG51bGwiKTsKK2Z1bmN0aW9uIG5vdE5hdmlnYXRlZEFueXdoZXJlKCl7
CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30K
K3ZhciBtb3VzZUV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoImNsaWNrIik7Cit2YXIgdGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworc2hvdWxkQmUoInRhcmdldC5kaXNw
YXRjaEV2ZW50KG1vdXNlRXZlbnQpIiwgInRydWUiKTsKK3NldFRpbWVvdXQobm90TmF2aWdhdGVk
QW55d2hlcmUsIDEwMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIAorCXRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2Vz
L2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1z
dGVwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVt
ZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1zdGVwMS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQzNTM5NWQyYjYxMjliOGU4NTdiZTQyODQ0N2JkZjMwMThiZDdmN2UKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1l
bnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLXN0ZXAxLmh0bWwKQEAgLTAs
MCArMSwxOCBAQAorPGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorbGluayB7CisJZGlz
cGxheTogYmxvY2s7CisJd2lkdGg6IDEwMHB4OworCWhlaWdodDogMTAwcHg7CisJYm9yZGVyOiAx
cHggc29saWQgcmVkOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxkaXY+PC9kaXY+Cis8bGluayBp
ZD0idGFyZ2V0IiBocmVmPSJodG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXRh
cmdldC5odG1sIj4KKzxzY3JpcHQ+CisJZnVuY3Rpb24gZWxlbWVudENsaWNrKCl7CisJCWRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5jbGljaygpOworCX0KKwl3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIGVsZW1lbnRDbGljayk7Cis8L3NjcmlwdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNv
dXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGlj
ay1zdGVwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1l
bGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2stc3RlcDEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MDg2ZjI4M2Q5MWI1YmZiYWVhYWUwNTUwYjAwZmI0Y2I0NmFiNzIwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVt
ZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2stc3RlcDEuaHRtbApAQCAtMCww
ICsxLDIyIEBACis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitsaW5rIHsKKwlkaXNw
bGF5OiBibG9jazsKKwl3aWR0aDogMTAwcHg7CisJaGVpZ2h0OiAxMDBweDsKKwlib3JkZXI6IDFw
eCBzb2xpZCByZWQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGRpdj48L2Rpdj4KKzxsaW5rIGlk
PSJ0YXJnZXQiIGhyZWY9Imh0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdGFy
Z2V0Lmh0bWwiPgorPHNjcmlwdD4KKwlmdW5jdGlvbiBtb3VzZUNsaWNrKCkgeworCQlpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisJCQlldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgMTQwKTsK
KwkJCWV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworCQkJZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
CQl9CQorCX0KKwl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG1vdXNlQ2xpY2sp
OworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24t
YmVoYXZpb3ItdGFyZ2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRt
bC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci10YXJnZXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZmM4NDAyMWY5YjVmNGExYTg4MmFiZjBmZWNiNTZiNmJjMWM0OWU1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFj
dGl2YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGhlYWQ+Cis8
c2NyaXB0PgorCWZ1bmN0aW9uIG9rKCl7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoInRl
c3Q6b2siLCAiKiIpOworCX0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvaygp
Ij4KKzxoMT50YXJnZXQ8L2gxPgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239696</attachid>
            <date>2014-10-11 20:58:02 -0700</date>
            <delta_ts>2014-10-11 21:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137597-20141012105804.patch</filename>
            <type>text/plain</type>
            <size>16402</size>
            <attacher name="Dhi Aurrahman">diorahman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2YTVlY2Q5OTExZDFk
OTExYWMwM2JiZjBjMjNjMjBlNzRiNmUwNC4uYTBkMGVmYWZjMGU2ZjI3NTBkMWYzYzZmOGMxMGU3
Y2FlMGNiNGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTEwLTExICBEaGkg
QXVycmFobWFuICA8ZGlvcmFobWFuQHJvY2t5YmFycy5jb20+CisKKyAgICAgICAgU3VwcG9ydCBh
Y3RpdmF0aW9uIGJlaGF2aW9yIG9mIGxpbmsgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9m
IGxpbmsgZWxlbWVudHMgYXMgZGVmaW5lZCBpbiBbMV0sCisgICAgICAgIGkuZS4gdG8gZm9sbG93
IHRoZSBoeXBlcmxpbmsgY3JlYXRlZCBieSB0aGUgbGluayBlbGVtZW50IHdoZW4gaXQgaXMgZnVs
bHkgYWN0aXZlLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtbGluay1lbGVtZW50CisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51bGwu
aHRtbAorCisgICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VFdmVudDo6dHJpZ2dlckFjdGl2YXRpb25CZWhhdmlvcik6CisgICAgICAgICogZG9tL01v
dXNlRXZlbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTGlua0NsaWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAg
ICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KwogMjAxNC0xMC0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIENhbGwgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKCkgaW5zdGVh
ZCBvZiBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoKSBpbiBTY3JvbGxWaWV3OjpzY3JvbGxUbygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggZGY5NDM4OGM0ZGM1ODQxMzEyMmJjOTgy
NDU4OTc2YTY0ZDJmMTRlMS4uMTg3NTA4OTQ2NzZjMjViNjhhNDc1YzhhYjg4ZGI5NzNhODVhNjhi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtMTkwLDYgKzE5MCwxMSBAQCBib29s
IE1vdXNlRXZlbnQ6OmlzRHJhZ0V2ZW50KCkgY29uc3QKICAgICAgICAgICAgICAgIHx8IHQgPT0g
ZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50fHwgdCA9PSBldmVudE5hbWVzKCkuZHJhZ0V2ZW50
IHx8IHQgPT0gZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudDsKIH0KIAorYm9vbCBNb3VzZUV2ZW50
OjpjYW5UcmlnZ2VyQWN0aXZhdGlvbkJlaGF2aW9yKGNvbnN0IEV2ZW50JiBldmVudCkKK3sKKyAg
ICByZXR1cm4gZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmICghaXM8
TW91c2VFdmVudD4oZXZlbnQpIHx8IGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24o
KSAhPSBSaWdodEJ1dHRvbik7Cit9CisKIGludCBNb3VzZUV2ZW50Ojp3aGljaCgpIGNvbnN0CiB7
CiAgICAgLy8gRm9yIHRoZSBET00sIHRoZSByZXR1cm4gdmFsdWVzIGZvciBsZWZ0LCBtaWRkbGUg
YW5kIHJpZ2h0IG1vdXNlIGJ1dHRvbnMgYXJlIDAsIDEsIDIsIHJlc3BlY3RpdmVseS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCmluZGV4IGFmYzdiZGYwNzhkYmVjMTIzOTkwZjJiNWNlMmRlZWY5ZmU2
ZjFhNjIuLmE1OGIzNWU1NDE4ZmY4MjcxNWFhZWQzNDk3Y2FlMzVhMmZlMGIwMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuaApAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlz
RHJhZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RhdGljIGJvb2wgY2FuVHJpZ2dlckFj
dGl2YXRpb25CZWhhdmlvcihjb25zdCBFdmVudCYpOyAKKwogICAgIHZpcnR1YWwgaW50IHdoaWNo
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RXZlbnQ+IGNsb25l
Rm9yKEhUTUxJRnJhbWVFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDQ2MmIyMjgyODViZTc5ZmIzNDM5MzM1YTUw
MWI0NThlYWFkNmVlOTEuLjlhMTUzMzBhOTlkZGExM2FhMzIzYjczNWM0M2ZkNDRiZTNmZTczNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
aXNMaW5rQ2xpY2soZXZlbnQpICYmIHRyZWF0TGlua0FzTGl2ZUZvckV2ZW50VHlwZShldmVudFR5
cGUoZXZlbnQpKSkgeworICAgICAgICBpZiAoTW91c2VFdmVudDo6Y2FuVHJpZ2dlckFjdGl2YXRp
b25CZWhhdmlvcigqZXZlbnQpICYmIHRyZWF0TGlua0FzTGl2ZUZvckV2ZW50VHlwZShldmVudFR5
cGUoZXZlbnQpKSkgewogICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01OTcsMTEgKzU5Nyw2IEBAIGJvb2wgaXNFbnRlcktl
eUtleWRvd25FdmVudChFdmVudCogZXZlbnQpCiAgICAgcmV0dXJuIGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBpczxLZXlib2FyZEV2ZW50PigqZXZlbnQpICYm
IGRvd25jYXN0PEtleWJvYXJkRXZlbnQ+KCpldmVudCkua2V5SWRlbnRpZmllcigpID09ICJFbnRl
ciI7CiB9CiAKLWJvb2wgaXNMaW5rQ2xpY2soRXZlbnQqIGV2ZW50KQotewotICAgIHJldHVybiBl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmICghaXM8TW91c2VFdmVu
dD4oKmV2ZW50KSB8fCBkb3duY2FzdDxNb3VzZUV2ZW50PigqZXZlbnQpLmJ1dHRvbigpICE9IFJp
Z2h0QnV0dG9uKTsKLX0KLQogYm9vbCBzaG91bGRQcm9oaWJpdExpbmtzKEVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgcmV0dXJuIGlzSW5TVkdJbWFnZShlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCAyMzJiMDI1NjA0M2VhNTZiODVjZDE2ODFmNmQ1
ODBiOTE1YjBmOGM5Li4xOTc0MTA3NDFiZGQwZTgzODhjMGQzODVmNDhhNDExODVhNTk2YTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC0xNTIsNyArMTUyLDYg
QEAgaW5saW5lIExpbmtIYXNoIEhUTUxBbmNob3JFbGVtZW50Ojp2aXNpdGVkTGlua0hhc2goKSBj
b25zdAogLy8gRnVuY3Rpb25zIHNoYXJlZCB3aXRoIHRoZSBvdGhlciBhbmNob3IgZWxlbWVudHMg
KGkuZS4sIFNWRykuCiAKIGJvb2wgaXNFbnRlcktleUtleWRvd25FdmVudChFdmVudCopOwotYm9v
bCBpc0xpbmtDbGljayhFdmVudCopOwogYm9vbCBzaG91bGRQcm9oaWJpdExpbmtzKEVsZW1lbnQq
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCmluZGV4IGRkNmY5ODc4NDUyZmY0MGNiYTA1MTdiOWFmZDIxZGNjYTdkMGY5NjEu
LmM4NjQ2MTVlYjNhNTVjOTYxNzc5ZTBkMWJjYjg3YTNkMmI1YmUyYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTWVk
aWFRdWVyeUV2YWx1YXRvci5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgpAQCAtMzk2LDYgKzM5NywyNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJp
YnV0ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0gaHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJM
QXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoTW91c2VFdmVudDo6Y2FuVHJp
Z2dlckFjdGl2YXRpb25CZWhhdmlvcigqZXZlbnQpKSB7CisgICAgICAgIGhhbmRsZUNsaWNrKCpl
dmVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSFRNTEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOworfQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6aGFuZGxlQ2xp
Y2soRXZlbnQmIGV2ZW50KQoreworICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAg
VVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47
CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybjsKKyAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQodXJsLCB0
YXJnZXQoKSwgUGFzc1JlZlB0cjxFdmVudD4oJmV2ZW50KSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2Nr
QmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIpOworfQorCiBVUkwgSFRNTExp
bmtFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChnZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5oCmluZGV4IDVjYWNiNzdkMmFlYTUxNWMwZDU5YmE1NDZhNDc2YjRhOGI2NDczMGIuLmNk
ZDdiNDc3ZGFlZjNjNTMwZTlkNDdlMjVmYmZmZjU5YmU5MzNhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaApAQCAtOTcsNiArOTcsOSBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRl
OwogCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGhhbmRsZUNsaWNrKEV2ZW50Jik7CisKIHByaXZhdGU6CiAgICAgSFRNTExp
bmtFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5
UGFyc2VyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggNTUxMDZjZTZhNmUw
Njk2OGJlZDg5N2E0ZjI2MjhmMzUxMjI5Y2IwYi4uMTkyMzFkMGI0YTEwM2U3YTI4NzNlNDNiMjAy
MTIzNThiZDc2YWVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNMaW5r
Q2xpY2soZXZlbnQpKSB7CisgICAgICAgIGlmIChNb3VzZUV2ZW50OjpjYW5UcmlnZ2VyQWN0aXZh
dGlvbkJlaGF2aW9yKCpldmVudCkpIHsKICAgICAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaHJlZigpKTsKIAogICAgICAgICAgICAgaWYgKHVy
bFswXSA9PSAnIycpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ODcyMDMwYzkyYWU5YjY3YTUzZWEzZmQ3OWM4ODg3Yjg3
MWQxOTQwLi5jMzEwNTU0YmY5OWY0ZDAwYTdhOTYyZDVmNDI0MTdjODc4NTExZTY2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTQtMTAtMTEgIERoaSBBdXJyYWhtYW4gIDxkaW9yYWhtYW5Acm9j
a3liYXJzLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFjdGl2YXRpb24gYmVoYXZpb3Igb2YgbGlu
ayBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzc1OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdGVzdCBjYXNlcyBmb3IgbGluayBlbGVtZW50IGFjdGl2YXRpb24gYmVoYXZpb3IuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9y
LW9uLWVsZW1lbnQtY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2su
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZh
dGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91
c2UtY2xpY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbC1saW5rLWVsZW1l
bnQtYWN0aXZhdGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3It
dXJsLWlzLW51bGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2h0
bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1zdGVw
MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVs
ZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1zdGVwMS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZh
dGlvbi1iZWhhdmlvci10YXJnZXQuaHRtbDogQWRkZWQuCisKIDIwMTQtMTAtMDcgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbC1vdmVyIENoYW5n
ZWxvZ3MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVu
dC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1v
bi1lbGVtZW50LWNsaWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWQ4NjY5Mjk4YWJjNTQ0
MzE0NzdjNmU0ZWRjNmRkMDIyZjlhZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50
LWNsaWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIGh0bWwgbGlu
ayBlbGVtZW50IGFjdGl2YXRpb24gYmVoYXZpb3Igb24gRE9NIGNsaWNrCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitGQUlMIGV2ZW50LmRhdGEgc2hvdWxkIGJlICd0ZXN0Om9rJy4g
V2FzIHRlc3Q6b2suCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1l
bnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1l
bnQtY2xpY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzczMTEyOGFiYzMwNTllMWRmNTdkMjQ1NmM5NDVh
OGQ0YzAxNjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1s
aW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLmh0bWwKQEAg
LTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9Im1hc3RlciI+PC9kaXY+Cis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJy
ZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50
LWNsaWNrLXN0ZXAxLmh0bWwiPjwvaWZyYW1lPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIGh0bWwgbGluayBlbGVtZW50IGFjdGl2YXRpb24gYmVoYXZpb3Igb24gRE9NIGNsaWNr
Iik7CitmdW5jdGlvbiBzdGFydCgpeworICBmcmFtZS5wb3N0TWVzc2FnZSgiZWxlbWVudDpjbGlj
ayIsICIqIik7Cit9CitmdW5jdGlvbiBsaXN0ZW5lcihldmVudCl7CisgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQuZGF0YSIsICIndGVzdDpvayciKQorICBmaW5pc2hKU1Rlc3QoKTsKK30K
K3ZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpLmNvbnRlbnRXaW5k
b3c7Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGxpc3RlbmVyKTsKK2ZyYW1l
Lm9ubG9hZCA9IHN0YXJ0Oword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhh
dmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9o
dG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ODlhZWI2ZjdiNjgzZTcyMGQ5YjQzZmZhYjRlYWZmOWZmYmZh
YWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVs
ZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJl
aGF2aW9yIG9uIG1vdXNlIGNsaWNrCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGV2ZW50LmRhdGEgaXMgJ3Rlc3Q6b2snCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
aHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhh
dmlvci1vbi1tb3VzZS1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlY2M0NzkzYzFlNDhkYmIwYTMz
MGVkODViM2NiNzZiNWU3YWUwNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNr
Lmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9Im1hc3RlciI+PC9kaXY+Cis8aWZyYW1lIGlkPSJmcmFt
ZSIgc3JjPSJyZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1v
bi1tb3VzZS1jbGljay1zdGVwMS5odG1sIj48L2lmcmFtZT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9uIG1v
dXNlIGNsaWNrIik7CitmdW5jdGlvbiBzdGFydCgpeworICBmcmFtZS5wb3N0TWVzc2FnZSgibW91
c2U6Y2xpY2siLCAiKiIpOworfQorZnVuY3Rpb24gbGlzdGVuZXIoZXZlbnQpeworICBzaG91bGRC
ZSgiZXZlbnQuZGF0YSIsICIndGVzdDpvayciKQorICBmaW5pc2hKU1Rlc3QoKTsKK30KK3ZhciBm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpLmNvbnRlbnRXaW5kb3c7Cit3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGxpc3RlbmVyKTsKK2ZyYW1lLm9ubG9h
ZCA9IHN0YXJ0Oword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci11
cmwtaXMtbnVsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmst
ZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1udWxsLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMDUyYTEwNmFjYzk2ZjkyNTg4ZTE2NGUxYjAyN2Y3NDg3OGIyM2ZlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZh
dGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJlaGF2aW9yIHdoZW4gdXJs
IGlzIG51bGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGFyZ2V0LmRp
c3BhdGNoRXZlbnQobW91c2VFdmVudCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51bGwuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVo
YXZpb3ItdXJsLWlzLW51bGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWIwOGEwZjU2ZTc5NTk0Njk2OGE1
MDMxZjA0MGQ5ZmY5NmIzMDM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC5odG1s
CkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8bGluayBpZD0idGFyZ2V0Ij4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJlaGF2aW9yIHdoZW4gdXJsIGlz
IG51bGwiKTsKK2Z1bmN0aW9uIG5vdE5hdmlnYXRlZEFueXdoZXJlKCl7CisgIGZpbmlzaEpTVGVz
dCgpOworfQordmFyIG1vdXNlRXZlbnQgPSBuZXcgTW91c2VFdmVudCgiY2xpY2siKTsKK3ZhciB0
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CitzaG91bGRCZSgidGFy
Z2V0LmRpc3BhdGNoRXZlbnQobW91c2VFdmVudCkiLCAidHJ1ZSIpOworc2V0VGltZW91dChub3RO
YXZpZ2F0ZWRBbnl3aGVyZSwgMTAwKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9odG1sLWxpbmstZWxlbWVu
dC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stc3RlcDEuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJl
aGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stc3RlcDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODQzMzE2MWZm
ZTdkN2NkMjJkZGE3ZWMzYWM2MjE4YjY3ZmQ3ZjFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVo
YXZpb3Itb24tZWxlbWVudC1jbGljay1zdGVwMS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxoZWFk
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2xpbmsgeworICBkaXNwbGF5OiBibG9jazsKKyAg
d2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBib3JkZXI6IDFweCBzb2xpZCByZWQ7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGRpdj48L2Rpdj4KKzxsaW5rIGlkPSJ0YXJnZXQiIGhy
ZWY9Imh0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwiPgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGVsZW1lbnRDbGljaygpeworICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0IikuY2xpY2soKTsKK30KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgZWxlbWVudENsaWNrKTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9odG1sLWxpbmst
ZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLXN0ZXAxLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlv
bi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1zdGVwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYjAzZmI1
YzY0NjFlN2IwOTdmYjhhMjdlOGI3NjczNmJjOTMzNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1i
ZWhhdmlvci1vbi1tb3VzZS1jbGljay1zdGVwMS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzxoZWFk
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2xpbmsgeworICBkaXNwbGF5OiBibG9jazsKKyAg
d2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBib3JkZXI6IDFweCBzb2xpZCByZWQ7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGRpdj48L2Rpdj4KKzxsaW5rIGlkPSJ0YXJnZXQiIGhy
ZWY9Imh0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwiPgor
PHNjcmlwdD4KK2Z1bmN0aW9uIG1vdXNlQ2xpY2soKSB7CisgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgMTQwKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgIH0JCit9Cit3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG1vdXNlQ2xpY2spOworPC9zY3JpcHQ+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdGFy
Z2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1l
bnQtYWN0aXZhdGlvbi1iZWhhdmlvci10YXJnZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmEwMWVmOWY2
Njk1NDAwMWY2ZDY2MGE1YWMzZTE1MTRhNGQ0OWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVo
YXZpb3ItdGFyZ2V0Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGhlYWQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gb2soKXsKKyAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSgidGVzdDpvayIsICIqIik7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib2soKSI+Cis8aDE+dGFyZ2V0
PC9oMT4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239698</attachid>
            <date>2014-10-11 21:56:57 -0700</date>
            <delta_ts>2014-10-11 22:06:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137597-20141012115659.patch</filename>
            <type>text/plain</type>
            <size>16460</size>
            <attacher name="Dhi Aurrahman">diorahman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2YTVlY2Q5OTExZDFk
OTExYWMwM2JiZjBjMjNjMjBlNzRiNmUwNC4uYTBkMGVmYWZjMGU2ZjI3NTBkMWYzYzZmOGMxMGU3
Y2FlMGNiNGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTEwLTExICBEaGkg
QXVycmFobWFuICA8ZGlvcmFobWFuQHJvY2t5YmFycy5jb20+CisKKyAgICAgICAgU3VwcG9ydCBh
Y3RpdmF0aW9uIGJlaGF2aW9yIG9mIGxpbmsgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9m
IGxpbmsgZWxlbWVudHMgYXMgZGVmaW5lZCBpbiBbMV0sCisgICAgICAgIGkuZS4gdG8gZm9sbG93
IHRoZSBoeXBlcmxpbmsgY3JlYXRlZCBieSB0aGUgbGluayBlbGVtZW50IHdoZW4gaXQgaXMgZnVs
bHkgYWN0aXZlLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtbGluay1lbGVtZW50CisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51bGwu
aHRtbAorCisgICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VFdmVudDo6dHJpZ2dlckFjdGl2YXRpb25CZWhhdmlvcik6CisgICAgICAgICogZG9tL01v
dXNlRXZlbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTGlua0NsaWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAg
ICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KwogMjAxNC0xMC0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIENhbGwgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKCkgaW5zdGVh
ZCBvZiBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoKSBpbiBTY3JvbGxWaWV3OjpzY3JvbGxUbygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggZGY5NDM4OGM0ZGM1ODQxMzEyMmJjOTgy
NDU4OTc2YTY0ZDJmMTRlMS4uMTg3NTA4OTQ2NzZjMjViNjhhNDc1YzhhYjg4ZGI5NzNhODVhNjhi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtMTkwLDYgKzE5MCwxMSBAQCBib29s
IE1vdXNlRXZlbnQ6OmlzRHJhZ0V2ZW50KCkgY29uc3QKICAgICAgICAgICAgICAgIHx8IHQgPT0g
ZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50fHwgdCA9PSBldmVudE5hbWVzKCkuZHJhZ0V2ZW50
IHx8IHQgPT0gZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudDsKIH0KIAorYm9vbCBNb3VzZUV2ZW50
OjpjYW5UcmlnZ2VyQWN0aXZhdGlvbkJlaGF2aW9yKGNvbnN0IEV2ZW50JiBldmVudCkKK3sKKyAg
ICByZXR1cm4gZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmICghaXM8
TW91c2VFdmVudD4oZXZlbnQpIHx8IGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24o
KSAhPSBSaWdodEJ1dHRvbik7Cit9CisKIGludCBNb3VzZUV2ZW50Ojp3aGljaCgpIGNvbnN0CiB7
CiAgICAgLy8gRm9yIHRoZSBET00sIHRoZSByZXR1cm4gdmFsdWVzIGZvciBsZWZ0LCBtaWRkbGUg
YW5kIHJpZ2h0IG1vdXNlIGJ1dHRvbnMgYXJlIDAsIDEsIDIsIHJlc3BlY3RpdmVseS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCmluZGV4IGFmYzdiZGYwNzhkYmVjMTIzOTkwZjJiNWNlMmRlZWY5ZmU2
ZjFhNjIuLmE1OGIzNWU1NDE4ZmY4MjcxNWFhZWQzNDk3Y2FlMzVhMmZlMGIwMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuaApAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlz
RHJhZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RhdGljIGJvb2wgY2FuVHJpZ2dlckFj
dGl2YXRpb25CZWhhdmlvcihjb25zdCBFdmVudCYpOyAKKwogICAgIHZpcnR1YWwgaW50IHdoaWNo
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RXZlbnQ+IGNsb25l
Rm9yKEhUTUxJRnJhbWVFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDQ2MmIyMjgyODViZTc5ZmIzNDM5MzM1YTUw
MWI0NThlYWFkNmVlOTEuLjlhMTUzMzBhOTlkZGExM2FhMzIzYjczNWM0M2ZkNDRiZTNmZTczNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
aXNMaW5rQ2xpY2soZXZlbnQpICYmIHRyZWF0TGlua0FzTGl2ZUZvckV2ZW50VHlwZShldmVudFR5
cGUoZXZlbnQpKSkgeworICAgICAgICBpZiAoTW91c2VFdmVudDo6Y2FuVHJpZ2dlckFjdGl2YXRp
b25CZWhhdmlvcigqZXZlbnQpICYmIHRyZWF0TGlua0FzTGl2ZUZvckV2ZW50VHlwZShldmVudFR5
cGUoZXZlbnQpKSkgewogICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01OTcsMTEgKzU5Nyw2IEBAIGJvb2wgaXNFbnRlcktl
eUtleWRvd25FdmVudChFdmVudCogZXZlbnQpCiAgICAgcmV0dXJuIGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBpczxLZXlib2FyZEV2ZW50PigqZXZlbnQpICYm
IGRvd25jYXN0PEtleWJvYXJkRXZlbnQ+KCpldmVudCkua2V5SWRlbnRpZmllcigpID09ICJFbnRl
ciI7CiB9CiAKLWJvb2wgaXNMaW5rQ2xpY2soRXZlbnQqIGV2ZW50KQotewotICAgIHJldHVybiBl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmICghaXM8TW91c2VFdmVu
dD4oKmV2ZW50KSB8fCBkb3duY2FzdDxNb3VzZUV2ZW50PigqZXZlbnQpLmJ1dHRvbigpICE9IFJp
Z2h0QnV0dG9uKTsKLX0KLQogYm9vbCBzaG91bGRQcm9oaWJpdExpbmtzKEVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgcmV0dXJuIGlzSW5TVkdJbWFnZShlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCAyMzJiMDI1NjA0M2VhNTZiODVjZDE2ODFmNmQ1
ODBiOTE1YjBmOGM5Li4xOTc0MTA3NDFiZGQwZTgzODhjMGQzODVmNDhhNDExODVhNTk2YTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC0xNTIsNyArMTUyLDYg
QEAgaW5saW5lIExpbmtIYXNoIEhUTUxBbmNob3JFbGVtZW50Ojp2aXNpdGVkTGlua0hhc2goKSBj
b25zdAogLy8gRnVuY3Rpb25zIHNoYXJlZCB3aXRoIHRoZSBvdGhlciBhbmNob3IgZWxlbWVudHMg
KGkuZS4sIFNWRykuCiAKIGJvb2wgaXNFbnRlcktleUtleWRvd25FdmVudChFdmVudCopOwotYm9v
bCBpc0xpbmtDbGljayhFdmVudCopOwogYm9vbCBzaG91bGRQcm9oaWJpdExpbmtzKEVsZW1lbnQq
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCmluZGV4IGRkNmY5ODc4NDUyZmY0MGNiYTA1MTdiOWFmZDIxZGNjYTdkMGY5NjEu
LmZhNzU4MTE1N2ZjNTM2M2U4YjQ5Y2UzMjY1NWZhN2YwODEwNjliNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTWVk
aWFRdWVyeUV2YWx1YXRvci5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgpAQCAtMzk2LDYgKzM5NywyOCBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJp
YnV0ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0gaHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJM
QXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBBU1NFUlQoZXZlbnQpOworICAgIGlm
IChNb3VzZUV2ZW50OjpjYW5UcmlnZ2VyQWN0aXZhdGlvbkJlaGF2aW9yKCpldmVudCkpIHsKKyAg
ICAgICAgaGFuZGxlQ2xpY2soKmV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBI
VE1MRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK3ZvaWQgSFRNTExp
bmtFbGVtZW50OjpoYW5kbGVDbGljayhFdmVudCYgZXZlbnQpCit7CisgICAgZXZlbnQuc2V0RGVm
YXVsdEhhbmRsZWQoKTsKKyAgICBVUkwgdXJsID0gaHJlZigpOworICAgIGlmICh1cmwuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5sb2FkZXIo
KS51cmxTZWxlY3RlZCh1cmwsIHRhcmdldCgpLCBQYXNzUmVmUHRyPEV2ZW50PigmZXZlbnQpLCBM
b2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJl
cik7Cit9CisKIFVSTCBIVE1MTGlua0VsZW1lbnQ6OmhyZWYoKSBjb25zdAogewogICAgIHJldHVy
biBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0ZShocmVmQXR0cikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggNWNhY2I3N2QyYWVhNTE1YzBkNTliYTU0
NmE0NzZiNGE4YjY0NzMwYi4uY2RkN2I0NzdkYWVmM2M1MzBlOWQ0N2UyNWZiZmZmNTliZTkzM2Fi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC05Nyw2ICs5Nyw5IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlQ2xpY2soRXZlbnQmKTsKKwog
cHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNw
cAppbmRleCA1NTEwNmNlNmE2ZTA2OTY4YmVkODk3YTRmMjYyOGYzNTEyMjljYjBiLi4xOTIzMWQw
YjRhMTAzZTdhMjg3M2U0M2IyMDIxMjM1OGJkNzZhZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxl
bWVudC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChpc0xpbmtDbGljayhldmVudCkpIHsKKyAgICAgICAgaWYgKE1vdXNlRXZl
bnQ6OmNhblRyaWdnZXJBY3RpdmF0aW9uQmVoYXZpb3IoKmV2ZW50KSkgewogICAgICAgICAgICAg
U3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhocmVmKCkpOwog
CiAgICAgICAgICAgICBpZiAodXJsWzBdID09ICcjJykgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk4NzIwMzBjOTJhZTli
NjdhNTNlYTNmZDc5Yzg4ODdiODcxZDE5NDAuLmMzMTA1NTRiZjk5ZjRkMDBhN2E5NjJkNWY0MjQx
N2M4Nzg1MTFlNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0xMC0xMSAgRGhpIEF1cnJh
aG1hbiAgPGRpb3JhaG1hbkByb2NreWJhcnMuY29tPgorCisgICAgICAgIFN1cHBvcnQgYWN0aXZh
dGlvbiBiZWhhdmlvciBvZiBsaW5rIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGNhc2VzIGZvciBsaW5rIGVsZW1lbnQgYWN0
aXZhdGlvbiBiZWhhdmlvci4KKworICAgICAgICAqIGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50
LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZp
b3Itb24tZWxlbWVudC1jbGljay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1s
LWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZh
dGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1udWxsLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQt
YWN0aXZhdGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1v
bi1lbGVtZW50LWNsaWNrLXN0ZXAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jl
c291cmNlcy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNs
aWNrLXN0ZXAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9odG1s
LWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXRhcmdldC5odG1sOiBBZGRlZC4KKwog
MjAxNC0xMC0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSb2xsLW92ZXIgQ2hhbmdlbG9ncy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGlj
ay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhNWFlMmI0ZmQyN2NhYzM5ODExYzk4MGUxM2FkMmY2ZWNkYWQ5YTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9u
LWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAK
K1RoaXMgdGVzdHMgaHRtbCBsaW5rIGVsZW1lbnQgYWN0aXZhdGlvbiBiZWhhdmlvciBvbiBET00g
Y2xpY2sKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXZlbnQuZGF0YSBp
cyAidGVzdDpvayIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVu
dC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2suaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwYTY0Y2NhNmM1Nzg1MGZmMjdmNDhkMGQyYjFlMDI3
MjI3OTgzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxp
bmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2suaHRtbApAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0ibWFzdGVyIj48L2Rpdj4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJl
c291cmNlcy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQt
Y2xpY2stc3RlcDEuaHRtbCI+PC9pZnJhbWU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgaHRtbCBsaW5rIGVsZW1lbnQgYWN0aXZhdGlvbiBiZWhhdmlvciBvbiBET00gY2xpY2si
KTsKK2Z1bmN0aW9uIHN0YXJ0KCl7CisgICAgZnJhbWUucG9zdE1lc3NhZ2UoImVsZW1lbnQ6Y2xp
Y2siLCAiKiIpOworfQorZnVuY3Rpb24gbGlzdGVuZXIoZXZlbnQpeworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQuZGF0YSIsICJ0ZXN0Om9rIikKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KK3ZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpLmNvbnRlbnRX
aW5kb3c7Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGxpc3RlbmVyKTsKK2Zy
YW1lLm9ubG9hZCA9IHN0YXJ0Oword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1i
ZWhhdmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjFjMGVhNGU2ODc0M2RmMTUxN2U1YTAxMjkwNTM1NDNk
M2JkYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5r
LWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9u
IGJlaGF2aW9yIG9uIG1vdXNlIGNsaWNrCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGV2ZW50LmRhdGEgaXMgInRlc3Q6b2siCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1i
ZWhhdmlvci1vbi1tb3VzZS1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NGI1MDQyOGE0YjFmM2Nm
Y2I0OTU3YmVmMTE4NGM2ZjJmODgxMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNs
aWNrLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9Im1hc3RlciI+PC9kaXY+Cis8aWZyYW1lIGlkPSJm
cmFtZSIgc3JjPSJyZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlv
ci1vbi1tb3VzZS1jbGljay1zdGVwMS5odG1sIj48L2lmcmFtZT4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9u
IG1vdXNlIGNsaWNrIik7CitmdW5jdGlvbiBzdGFydCgpeworICAgIGZyYW1lLnBvc3RNZXNzYWdl
KCJtb3VzZTpjbGljayIsICIqIik7Cit9CitmdW5jdGlvbiBsaXN0ZW5lcihldmVudCl7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC5kYXRhIiwgInRlc3Q6b2siKQorICAgIGZpbmlz
aEpTVGVzdCgpOworfQordmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1l
IikuY29udGVudFdpbmRvdzsKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbGlz
dGVuZXIpOworZnJhbWUub25sb2FkID0gc3RhcnQ7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1udWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51
bGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwNTJhMTA2YWNjOTZmOTI1ODhlMTY0ZTFiMDI3
Zjc0ODc4YjIzZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1s
LWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1udWxsLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIGh0bWwgbGluayBlbGVtZW50IGFjdGl2YXRp
b24gYmVoYXZpb3Igd2hlbiB1cmwgaXMgbnVsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyB0YXJnZXQuZGlzcGF0Y2hFdmVudChtb3VzZUV2ZW50KSBpcyB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhh
dmlvci11cmwtaXMtbnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVs
ZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0
ODI0OWQzZTVlOTYzY2MzZGQxZTM5N2IzYWY3NjJjZTkzNGJmN2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2
aW9yLXVybC1pcy1udWxsLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxsaW5rIGlkPSJ0YXJnZXQiPgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGh0bWwgbGluayBlbGVtZW50IGFjdGl2YXRpb24g
YmVoYXZpb3Igd2hlbiB1cmwgaXMgbnVsbCIpOworZnVuY3Rpb24gbm90TmF2aWdhdGVkQW55d2hl
cmUoKXsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KK3ZhciBtb3VzZUV2ZW50ID0gbmV3IE1vdXNl
RXZlbnQoImNsaWNrIik7Cit2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpOworc2hvdWxkQmUoInRhcmdldC5kaXNwYXRjaEV2ZW50KG1vdXNlRXZlbnQpIiwgInRy
dWUiKTsKK3NldFRpbWVvdXQobm90TmF2aWdhdGVkQW55d2hlcmUsIDEwMCk7Cit3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNv
dXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNs
aWNrLXN0ZXAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5r
LWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1lbGVtZW50LWNsaWNrLXN0ZXAxLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTkwYzk4MTE0NTJmMmIxM2FhZWIxOWY1OTc2ZWIyNWRkMzRhNmM2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9odG1sLWxpbmst
ZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stc3RlcDEuaHRtbApA
QCAtMCwwICsxLDE4IEBACis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitsaW5rIHsK
KyAgICBkaXNwbGF5OiBibG9jazsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZWQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGRp
dj48L2Rpdj4KKzxsaW5rIGlkPSJ0YXJnZXQiIGhyZWY9Imh0bWwtbGluay1lbGVtZW50LWFjdGl2
YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwiPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGVsZW1lbnRD
bGljaygpeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5jbGljaygpOwor
fQord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBlbGVtZW50Q2xpY2spOworPC9z
Y3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZp
b3Itb24tbW91c2UtY2xpY2stc3RlcDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291
cmNlcy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNr
LXN0ZXAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZhYTI5YjI2Mzk3NGJhOTE1YWUyYjZlZWViYzgwNTQy
ZWY3N2Y1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNl
cy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLXN0
ZXAxLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorbGluayB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhl
aWdodDogMTAwcHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmVkOworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxkaXY+PC9kaXY+Cis8bGluayBpZD0idGFyZ2V0IiBocmVmPSJodG1sLWxpbmstZWxl
bWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXRhcmdldC5odG1sIj4KKzxzY3JpcHQ+CitmdW5jdGlv
biBtb3VzZUNsaWNrKCkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oNTAsIDE0MCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgfQkKK30KK3dp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbW91c2VDbGljayk7Cis8L3NjcmlwdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci10YXJn
ZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9odG1sLWxpbmstZWxlbWVu
dC1hY3RpdmF0aW9uLWJlaGF2aW9yLXRhcmdldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZDEzMGU2N2Zj
M2Y5ZjU1NDkzNmQwZWU2YzJiYzJhMGY3ZTIxM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhh
dmlvci10YXJnZXQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aGVhZD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBvaygpeworICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoInRlc3Q6b2siLCAiKiIp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9rKCkiPgorPGgxPnRhcmdl
dDwvaDE+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239699</attachid>
            <date>2014-10-11 22:06:29 -0700</date>
            <delta_ts>2014-10-12 01:35:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137597-20141012120631.patch</filename>
            <type>text/plain</type>
            <size>16456</size>
            <attacher name="Dhi Aurrahman">diorahman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2YTVlY2Q5OTExZDFk
OTExYWMwM2JiZjBjMjNjMjBlNzRiNmUwNC4uYTBkMGVmYWZjMGU2ZjI3NTBkMWYzYzZmOGMxMGU3
Y2FlMGNiNGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTEwLTExICBEaGkg
QXVycmFobWFuICA8ZGlvcmFobWFuQHJvY2t5YmFycy5jb20+CisKKyAgICAgICAgU3VwcG9ydCBh
Y3RpdmF0aW9uIGJlaGF2aW9yIG9mIGxpbmsgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9m
IGxpbmsgZWxlbWVudHMgYXMgZGVmaW5lZCBpbiBbMV0sCisgICAgICAgIGkuZS4gdG8gZm9sbG93
IHRoZSBoeXBlcmxpbmsgY3JlYXRlZCBieSB0aGUgbGluayBlbGVtZW50IHdoZW4gaXQgaXMgZnVs
bHkgYWN0aXZlLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtbGluay1lbGVtZW50CisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51bGwu
aHRtbAorCisgICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VFdmVudDo6dHJpZ2dlckFjdGl2YXRpb25CZWhhdmlvcik6CisgICAgICAgICogZG9tL01v
dXNlRXZlbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTGlua0NsaWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAg
ICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KwogMjAxNC0xMC0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIENhbGwgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKCkgaW5zdGVh
ZCBvZiBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoKSBpbiBTY3JvbGxWaWV3OjpzY3JvbGxUbygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggZGY5NDM4OGM0ZGM1ODQxMzEyMmJjOTgy
NDU4OTc2YTY0ZDJmMTRlMS4uMTg3NTA4OTQ2NzZjMjViNjhhNDc1YzhhYjg4ZGI5NzNhODVhNjhi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtMTkwLDYgKzE5MCwxMSBAQCBib29s
IE1vdXNlRXZlbnQ6OmlzRHJhZ0V2ZW50KCkgY29uc3QKICAgICAgICAgICAgICAgIHx8IHQgPT0g
ZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50fHwgdCA9PSBldmVudE5hbWVzKCkuZHJhZ0V2ZW50
IHx8IHQgPT0gZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudDsKIH0KIAorYm9vbCBNb3VzZUV2ZW50
OjpjYW5UcmlnZ2VyQWN0aXZhdGlvbkJlaGF2aW9yKGNvbnN0IEV2ZW50JiBldmVudCkKK3sKKyAg
ICByZXR1cm4gZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmICghaXM8
TW91c2VFdmVudD4oZXZlbnQpIHx8IGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24o
KSAhPSBSaWdodEJ1dHRvbik7Cit9CisKIGludCBNb3VzZUV2ZW50Ojp3aGljaCgpIGNvbnN0CiB7
CiAgICAgLy8gRm9yIHRoZSBET00sIHRoZSByZXR1cm4gdmFsdWVzIGZvciBsZWZ0LCBtaWRkbGUg
YW5kIHJpZ2h0IG1vdXNlIGJ1dHRvbnMgYXJlIDAsIDEsIDIsIHJlc3BlY3RpdmVseS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCmluZGV4IGFmYzdiZGYwNzhkYmVjMTIzOTkwZjJiNWNlMmRlZWY5ZmU2
ZjFhNjIuLmE1OGIzNWU1NDE4ZmY4MjcxNWFhZWQzNDk3Y2FlMzVhMmZlMGIwMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuaApAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNNb3VzZUV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlz
RHJhZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RhdGljIGJvb2wgY2FuVHJpZ2dlckFj
dGl2YXRpb25CZWhhdmlvcihjb25zdCBFdmVudCYpOyAKKwogICAgIHZpcnR1YWwgaW50IHdoaWNo
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RXZlbnQ+IGNsb25l
Rm9yKEhUTUxJRnJhbWVFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDQ2MmIyMjgyODViZTc5ZmIzNDM5MzM1YTUw
MWI0NThlYWFkNmVlOTEuLjlhMTUzMzBhOTlkZGExM2FhMzIzYjczNWM0M2ZkNDRiZTNmZTczNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
aXNMaW5rQ2xpY2soZXZlbnQpICYmIHRyZWF0TGlua0FzTGl2ZUZvckV2ZW50VHlwZShldmVudFR5
cGUoZXZlbnQpKSkgeworICAgICAgICBpZiAoTW91c2VFdmVudDo6Y2FuVHJpZ2dlckFjdGl2YXRp
b25CZWhhdmlvcigqZXZlbnQpICYmIHRyZWF0TGlua0FzTGl2ZUZvckV2ZW50VHlwZShldmVudFR5
cGUoZXZlbnQpKSkgewogICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01OTcsMTEgKzU5Nyw2IEBAIGJvb2wgaXNFbnRlcktl
eUtleWRvd25FdmVudChFdmVudCogZXZlbnQpCiAgICAgcmV0dXJuIGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBpczxLZXlib2FyZEV2ZW50PigqZXZlbnQpICYm
IGRvd25jYXN0PEtleWJvYXJkRXZlbnQ+KCpldmVudCkua2V5SWRlbnRpZmllcigpID09ICJFbnRl
ciI7CiB9CiAKLWJvb2wgaXNMaW5rQ2xpY2soRXZlbnQqIGV2ZW50KQotewotICAgIHJldHVybiBl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmICghaXM8TW91c2VFdmVu
dD4oKmV2ZW50KSB8fCBkb3duY2FzdDxNb3VzZUV2ZW50PigqZXZlbnQpLmJ1dHRvbigpICE9IFJp
Z2h0QnV0dG9uKTsKLX0KLQogYm9vbCBzaG91bGRQcm9oaWJpdExpbmtzKEVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgcmV0dXJuIGlzSW5TVkdJbWFnZShlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCAyMzJiMDI1NjA0M2VhNTZiODVjZDE2ODFmNmQ1
ODBiOTE1YjBmOGM5Li4xOTc0MTA3NDFiZGQwZTgzODhjMGQzODVmNDhhNDExODVhNTk2YTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC0xNTIsNyArMTUyLDYg
QEAgaW5saW5lIExpbmtIYXNoIEhUTUxBbmNob3JFbGVtZW50Ojp2aXNpdGVkTGlua0hhc2goKSBj
b25zdAogLy8gRnVuY3Rpb25zIHNoYXJlZCB3aXRoIHRoZSBvdGhlciBhbmNob3IgZWxlbWVudHMg
KGkuZS4sIFNWRykuCiAKIGJvb2wgaXNFbnRlcktleUtleWRvd25FdmVudChFdmVudCopOwotYm9v
bCBpc0xpbmtDbGljayhFdmVudCopOwogYm9vbCBzaG91bGRQcm9oaWJpdExpbmtzKEVsZW1lbnQq
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCmluZGV4IGRkNmY5ODc4NDUyZmY0MGNiYTA1MTdiOWFmZDIxZGNjYTdkMGY5NjEu
LmZhNzU4MTE1N2ZjNTM2M2U4YjQ5Y2UzMjY1NWZhN2YwODEwNjliNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTWVk
aWFRdWVyeUV2YWx1YXRvci5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgpAQCAtMzk2LDYgKzM5NywyOCBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJp
YnV0ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0gaHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJM
QXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBBU1NFUlQoZXZlbnQpOworICAgIGlm
IChNb3VzZUV2ZW50OjpjYW5UcmlnZ2VyQWN0aXZhdGlvbkJlaGF2aW9yKCpldmVudCkpIHsKKyAg
ICAgICAgaGFuZGxlQ2xpY2soKmV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBI
VE1MRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK3ZvaWQgSFRNTExp
bmtFbGVtZW50OjpoYW5kbGVDbGljayhFdmVudCYgZXZlbnQpCit7CisgICAgZXZlbnQuc2V0RGVm
YXVsdEhhbmRsZWQoKTsKKyAgICBVUkwgdXJsID0gaHJlZigpOworICAgIGlmICh1cmwuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5sb2FkZXIo
KS51cmxTZWxlY3RlZCh1cmwsIHRhcmdldCgpLCBQYXNzUmVmUHRyPEV2ZW50PigmZXZlbnQpLCBM
b2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJl
cik7Cit9CisKIFVSTCBIVE1MTGlua0VsZW1lbnQ6OmhyZWYoKSBjb25zdAogewogICAgIHJldHVy
biBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0ZShocmVmQXR0cikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggNWNhY2I3N2QyYWVhNTE1YzBkNTliYTU0
NmE0NzZiNGE4YjY0NzMwYi4uY2RkN2I0NzdkYWVmM2M1MzBlOWQ0N2UyNWZiZmZmNTliZTkzM2Fi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC05Nyw2ICs5Nyw5IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlQ2xpY2soRXZlbnQmKTsKKwog
cHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNw
cAppbmRleCA1NTEwNmNlNmE2ZTA2OTY4YmVkODk3YTRmMjYyOGYzNTEyMjljYjBiLi4xOTIzMWQw
YjRhMTAzZTdhMjg3M2U0M2IyMDIxMjM1OGJkNzZhZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxl
bWVudC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChpc0xpbmtDbGljayhldmVudCkpIHsKKyAgICAgICAgaWYgKE1vdXNlRXZl
bnQ6OmNhblRyaWdnZXJBY3RpdmF0aW9uQmVoYXZpb3IoKmV2ZW50KSkgewogICAgICAgICAgICAg
U3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhocmVmKCkpOwog
CiAgICAgICAgICAgICBpZiAodXJsWzBdID09ICcjJykgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk4NzIwMzBjOTJhZTli
NjdhNTNlYTNmZDc5Yzg4ODdiODcxZDE5NDAuLmMzMTA1NTRiZjk5ZjRkMDBhN2E5NjJkNWY0MjQx
N2M4Nzg1MTFlNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0xMC0xMSAgRGhpIEF1cnJh
aG1hbiAgPGRpb3JhaG1hbkByb2NreWJhcnMuY29tPgorCisgICAgICAgIFN1cHBvcnQgYWN0aXZh
dGlvbiBiZWhhdmlvciBvZiBsaW5rIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGNhc2VzIGZvciBsaW5rIGVsZW1lbnQgYWN0
aXZhdGlvbiBiZWhhdmlvci4KKworICAgICAgICAqIGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50
LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZp
b3Itb24tZWxlbWVudC1jbGljay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1s
LWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZh
dGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1udWxsLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQt
YWN0aXZhdGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1v
bi1lbGVtZW50LWNsaWNrLXN0ZXAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jl
c291cmNlcy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNs
aWNrLXN0ZXAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9odG1s
LWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXRhcmdldC5odG1sOiBBZGRlZC4KKwog
MjAxNC0xMC0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSb2xsLW92ZXIgQ2hhbmdlbG9ncy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGlj
ay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhNWFlMmI0ZmQyN2NhYzM5ODExYzk4MGUxM2FkMmY2ZWNkYWQ5YTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9u
LWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAK
K1RoaXMgdGVzdHMgaHRtbCBsaW5rIGVsZW1lbnQgYWN0aXZhdGlvbiBiZWhhdmlvciBvbiBET00g
Y2xpY2sKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXZlbnQuZGF0YSBp
cyAidGVzdDpvayIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVu
dC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2suaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVu
dC1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwYTY0Y2NhNmM1Nzg1MGZmMjdmNDhkMGQyYjFlMDI3
MjI3OTgzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxp
bmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2suaHRtbApAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0ibWFzdGVyIj48L2Rpdj4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJl
c291cmNlcy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQt
Y2xpY2stc3RlcDEuaHRtbCI+PC9pZnJhbWU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgaHRtbCBsaW5rIGVsZW1lbnQgYWN0aXZhdGlvbiBiZWhhdmlvciBvbiBET00gY2xpY2si
KTsKK2Z1bmN0aW9uIHN0YXJ0KCl7CisgICAgZnJhbWUucG9zdE1lc3NhZ2UoImVsZW1lbnQ6Y2xp
Y2siLCAiKiIpOworfQorZnVuY3Rpb24gbGlzdGVuZXIoZXZlbnQpeworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQuZGF0YSIsICJ0ZXN0Om9rIikKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KK3ZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpLmNvbnRlbnRX
aW5kb3c7Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGxpc3RlbmVyKTsKK2Zy
YW1lLm9ubG9hZCA9IHN0YXJ0Oword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1i
ZWhhdmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNsaWNrLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjFjMGVhNGU2ODc0M2RmMTUxN2U1YTAxMjkwNTM1NDNk
M2JkYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5r
LWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9u
IGJlaGF2aW9yIG9uIG1vdXNlIGNsaWNrCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGV2ZW50LmRhdGEgaXMgInRlc3Q6b2siCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1vbi1tb3VzZS1jbGljay5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1i
ZWhhdmlvci1vbi1tb3VzZS1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NGI1MDQyOGE0YjFmM2Nm
Y2I0OTU3YmVmMTE4NGM2ZjJmODgxMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLW1vdXNlLWNs
aWNrLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9Im1hc3RlciI+PC9kaXY+Cis8aWZyYW1lIGlkPSJm
cmFtZSIgc3JjPSJyZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlv
ci1vbi1tb3VzZS1jbGljay1zdGVwMS5odG1sIj48L2lmcmFtZT4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyBodG1sIGxpbmsgZWxlbWVudCBhY3RpdmF0aW9uIGJlaGF2aW9yIG9u
IG1vdXNlIGNsaWNrIik7CitmdW5jdGlvbiBzdGFydCgpeworICAgIGZyYW1lLnBvc3RNZXNzYWdl
KCJtb3VzZTpjbGljayIsICIqIik7Cit9CitmdW5jdGlvbiBsaXN0ZW5lcihldmVudCl7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC5kYXRhIiwgInRlc3Q6b2siKQorICAgIGZpbmlz
aEpTVGVzdCgpOworfQordmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1l
IikuY29udGVudFdpbmRvdzsKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbGlz
dGVuZXIpOworZnJhbWUub25sb2FkID0gc3RhcnQ7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1h
Y3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1udWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3ItdXJsLWlzLW51
bGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwNTJhMTA2YWNjOTZmOTI1ODhlMTY0ZTFiMDI3
Zjc0ODc4YjIzZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1s
LWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXVybC1pcy1udWxsLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIGh0bWwgbGluayBlbGVtZW50IGFjdGl2YXRp
b24gYmVoYXZpb3Igd2hlbiB1cmwgaXMgbnVsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyB0YXJnZXQuZGlzcGF0Y2hFdmVudChtb3VzZUV2ZW50KSBpcyB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhh
dmlvci11cmwtaXMtbnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1saW5rLWVs
ZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci11cmwtaXMtbnVsbC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYx
ODRhMWY3NjBjNjRlYzk5MDg0OTU1M2QyOWIzYjNiOTZiNDg4YWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2
aW9yLXVybC1pcy1udWxsLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxsaW5rIGlkPSJ0YXJnZXQiPgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGh0bWwgbGluayBlbGVtZW50IGFjdGl2YXRpb24g
YmVoYXZpb3Igd2hlbiB1cmwgaXMgbnVsbCIpOworZnVuY3Rpb24gbm90TmF2aWdhdGVkQW55d2hl
cmUoKXsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KK3ZhciBtb3VzZUV2ZW50ID0gbmV3IE1vdXNl
RXZlbnQoImNsaWNrIik7Cit2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpOworc2hvdWxkQmVUcnVlKCJ0YXJnZXQuZGlzcGF0Y2hFdmVudChtb3VzZUV2ZW50KSIp
Oworc2V0VGltZW91dChub3ROYXZpZ2F0ZWRBbnl3aGVyZSwgMTAwKTsKK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNl
cy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2st
c3RlcDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9odG1sLWxpbmstZWxl
bWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLW9uLWVsZW1lbnQtY2xpY2stc3RlcDEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OTBjOTgxMTQ1MmYyYjEzYWFlYjE5ZjU5NzZlYjI1ZGQzNGE2YzYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVt
ZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tZWxlbWVudC1jbGljay1zdGVwMS5odG1sCkBAIC0w
LDAgKzEsMTggQEAKKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2xpbmsgeworICAg
IGRpc3BsYXk6IGJsb2NrOworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8ZGl2Pjwv
ZGl2PgorPGxpbmsgaWQ9InRhcmdldCIgaHJlZj0iaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlv
bi1iZWhhdmlvci10YXJnZXQuaHRtbCI+Cis8c2NyaXB0PgorZnVuY3Rpb24gZWxlbWVudENsaWNr
KCl7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmNsaWNrKCk7Cit9Cit3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGVsZW1lbnRDbGljayk7Cis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9yZXNvdXJjZXMvaHRtbC1saW5rLWVsZW1lbnQtYWN0aXZhdGlvbi1iZWhhdmlvci1v
bi1tb3VzZS1jbGljay1zdGVwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2Vz
L2h0bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2stc3Rl
cDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NmFhMjliMjYzOTc0YmE5MTVhZTJiNmVlZWJjODA1NDJlZjc3
ZjVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0
bWwtbGluay1lbGVtZW50LWFjdGl2YXRpb24tYmVoYXZpb3Itb24tbW91c2UtY2xpY2stc3RlcDEu
aHRtbApAQCAtMCwwICsxLDIyIEBACis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cits
aW5rIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZWQ7Cit9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGRpdj48L2Rpdj4KKzxsaW5rIGlkPSJ0YXJnZXQiIGhyZWY9Imh0bWwtbGluay1lbGVtZW50
LWFjdGl2YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwiPgorPHNjcmlwdD4KK2Z1bmN0aW9uIG1v
dXNlQ2xpY2soKSB7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgMTQwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VE
b3duKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB9CQorfQord2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBtb3VzZUNsaWNrKTsKKzwvc2NyaXB0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3Jlc291cmNlcy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9yLXRhcmdldC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2h0bWwtbGluay1lbGVtZW50LWFj
dGl2YXRpb24tYmVoYXZpb3ItdGFyZ2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNkMTMwZTY3ZmMzZjlm
NTU0OTM2ZDBlZTZjMmJjMmEwZjdlMjEzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3Jlc291cmNlcy9odG1sLWxpbmstZWxlbWVudC1hY3RpdmF0aW9uLWJlaGF2aW9y
LXRhcmdldC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9u
IG9rKCl7CisgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSgidGVzdDpvayIsICIqIik7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib2soKSI+Cis8aDE+dGFyZ2V0PC9o
MT4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>