<?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>100557</bug_id>
          
          <creation_ts>2012-10-26 13:51:03 -0700</creation_ts>
          <short_desc>Implement HTMLFormElement#requestAutocomplete and associated events</short_desc>
          <delta_ts>2012-11-20 18:05:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100560</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dan Beam">dbeam</reporter>
          <assigned_to name="Dan Beam">dbeam</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>esprehn</cc>
    
    <cc>estade</cc>
    
    <cc>fishd</cc>
    
    <cc>ian</cc>
    
    <cc>isherman</cc>
    
    <cc>jam</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jonlee</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan</cc>
    
    <cc>sunaeluv.kim</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>752348</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 13:51:03 -0700</bug_when>
    <thetext>Here&apos;s the proposal from esprehn@ to whatwg@whatwg.org:
http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-October/037711.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752349</commentid>
    <comment_count>1</comment_count>
      <attachid>170996</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 13:52:34 -0700</bug_when>
    <thetext>Created attachment 170996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752351</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 13:53:38 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752362</commentid>
    <comment_count>3</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 14:01:23 -0700</bug_when>
    <thetext>Also, if anybody has good testing ideas or references to point me at, it&apos;d be much appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752366</commentid>
    <comment_count>4</comment_count>
      <attachid>170996</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-10-26 14:03:42 -0700</bug_when>
    <thetext>Comment on attachment 170996
Patch

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

&gt; Source/WebCore/html/HTMLFormElement.cpp:402
&gt; +    if (!frame || m_isInRequestAutocomplete || !shouldAutocomplete())

If shouldAutocomplete() is false we don&apos;t dispatch any events. We should decide if &lt;form autocomplete=&quot;off&quot;&gt; results in fail or this API being a noop as you have it right now.

&gt; Source/WebCore/html/HTMLFormElement.cpp:413
&gt; +void HTMLFormElement::dispatchAutocompleteEvent(bool success)

It&apos;s usually nicer to use enums. Perhaps we name this ::finishAutocomplete(AutocompleteResult) and you can pass AutocompleteSuccess or AutocompleteFail.

&gt; Source/WebKit/chromium/features.gypi:99
&gt; +      &apos;ENABLE_REQUEST_AUTOCOMPLETE=1&apos;,

This turns it on for Chromium which is bad seeing as there&apos;s no implementation yet... we should wait.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752369</commentid>
    <comment_count>5</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-10-26 14:04:24 -0700</bug_when>
    <thetext>Also yo might need to send an email to webkit-dev. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752414</commentid>
    <comment_count>6</comment_count>
      <attachid>170996</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 14:33:59 -0700</bug_when>
    <thetext>Comment on attachment 170996
Patch

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

We also need LayoutTests that exercise this code.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Implement prefixed version of HTMLFormElement.prototype.requestAutocomplete() + onautocomplete/onautocompletefail events

HTMLFormElement.prototype.requestAutocomplete -&gt; HTMLFormElement#requestAutocomplete is that the cool kids would call it.  :)

&gt; Source/WebCore/ChangeLog:10
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; +
&gt; +        No new tests (OOPS!).

Please fill out these parts of the ChangeLog.

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

ditto

&gt; Source/WebCore/dom/Document.h:329
&gt; +#if ENABLE(REQUEST_AUTOCOMPLETE)
&gt; +    DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitautocomplete);
&gt; +    DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitautocompletefail);
&gt; +#endif

I thought these were going to be on HTMLFormElement...

&gt; Source/WebCore/dom/Document.idl:341
&gt; +    [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventListener onwebkitautocomplete;
&gt; +    [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventListener onwebkitautocompletefail;

ditto

&gt; Source/WebCore/dom/Element.h:118
&gt; +#if ENABLE(REQUEST_AUTOCOMPLETE)
&gt; +    DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitautocomplete);
&gt; +    DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitautocompletefail);
&gt; +#endif

These should be on HTMLFormElement, not every Element.

&gt; Source/WebCore/html/HTMLAttributeNames.in:169
&gt; +onwebkitautocomplete
&gt; +onwebkitautocompletefail

Please put these where they go alphabetically.

&gt; Source/WebCore/html/HTMLFormElement.cpp:399
&gt; +void HTMLFormElement::webkitRequestAutocomplete()

webkitRequestAutocomplete -&gt; requestAutocomplete.  You can use [ImplementedAs] in the IDL to have a prefixed IDL name.

&gt; Source/WebCore/html/HTMLFormElement.cpp:405
&gt; +    m_isInRequestAutocomplete = true;

This seems like an odd piece of state.  Why can&apos;t the web page call this function as many times as it likes?  The embedder can choose to ignore extra calls, of course, but that&apos;s more of a policy decision that should be handled outside of WebKit.

&gt; Source/WebCore/html/HTMLFormElement.cpp:416
&gt; +    dispatchEvent(Event::create(success ? eventNames().webkitautocompleteEvent : eventNames().webkitautocompletefailEvent, true, false));

I thought we talked about dispatching this event asynchronously?

&gt; Source/WebCore/page/DOMWindow.h:400
&gt; +#if ENABLE(REQUEST_AUTOCOMPLETE)
&gt; +        DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitautocomplete);
&gt; +        DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitautocompletefail);
&gt; +#endif

These should not be needed.

&gt; Source/WebCore/page/DOMWindow.idl:307
&gt; +    attribute [Conditional=REQUEST_AUTOCOMPLETE] EventListener onwebkitautocomplete;
&gt; +    attribute [Conditional=REQUEST_AUTOCOMPLETE] EventListener onwebkitautocompletefail;

We only need these for HTMLFormElement.

&gt; Source/WebKit/chromium/public/WebFrameClient.h:426
&gt; +    // Requests embedder show an interactive autocomplete.
&gt; +    virtual void requestAutocomplete(WebFrame*, const WebFormElement&amp;) { }

requestAutocomplete -&gt; didRequestAutocomplete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752418</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 14:34:59 -0700</bug_when>
    <thetext>When writing LayoutTests, you&apos;ll probably need to teach DumpRenderTree how to call requestAutocomplete to trigger the event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752422</commentid>
    <comment_count>8</comment_count>
      <attachid>170996</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 14:36:29 -0700</bug_when>
    <thetext>Comment on attachment 170996
Patch

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

&gt; Source/WebKit/chromium/public/WebViewClient.h:410
&gt; +    virtual void requestAutocomplete(WebFrame*, const WebFormElement&amp;) { }

Why do we have this on both WebViewClient and WebFrameClient?  It seems one should be sufficient.  It seems more like a WebFrame concern than a WebView concern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752500</commentid>
    <comment_count>9</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2012-10-26 15:41:14 -0700</bug_when>
    <thetext>Feer free to implement this without prefixes. If it turns to to be successful, I&apos;ll just spec what the browsers support. If it turns out to be unsuccessful in a well-defined way that can be addressed by simple changes, I&apos;ll just use other names so they won&apos;t conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752527</commentid>
    <comment_count>10</comment_count>
      <attachid>170996</attachid>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2012-10-26 16:05:22 -0700</bug_when>
    <thetext>Comment on attachment 170996
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebViewClient.h:410
&gt;&gt; +    virtual void requestAutocomplete(WebFrame*, const WebFormElement&amp;) { }
&gt; 
&gt; Why do we have this on both WebViewClient and WebFrameClient?  It seems one should be sufficient.  It seems more like a WebFrame concern than a WebView concern.

this belongs on WebAutofillClient with the rest of the autofill callbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752548</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-26 16:21:10 -0700</bug_when>
    <thetext>This is part of a new feature that doesn&apos;t appear to have been vetted on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752565</commentid>
    <comment_count>12</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 16:31:26 -0700</bug_when>
    <thetext>#11: It will be vetted shortly and definitely before progressing any further than pre-review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752598</commentid>
    <comment_count>13</comment_count>
      <attachid>171054</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 17:09:51 -0700</bug_when>
    <thetext>Created attachment 171054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752602</commentid>
    <comment_count>14</comment_count>
      <attachid>170996</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 17:13:45 -0700</bug_when>
    <thetext>Comment on attachment 170996
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Implement prefixed version of HTMLFormElement.prototype.requestAutocomplete() + onautocomplete/onautocompletefail events
&gt; 
&gt; HTMLFormElement.prototype.requestAutocomplete -&gt; HTMLFormElement#requestAutocomplete is that the cool kids would call it.  :)

Done.

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        No new tests (OOPS!).
&gt; 
&gt; Please fill out these parts of the ChangeLog.

Done.

&gt;&gt; Source/WebKit/chromium/ChangeLog:8
&gt;&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; 
&gt; ditto

Done. (delicious copy pasta)

&gt;&gt; Source/WebCore/dom/Document.h:329
&gt;&gt; +#endif
&gt; 
&gt; I thought these were going to be on HTMLFormElement...

They are now, :)

&gt;&gt; Source/WebCore/dom/Document.idl:341
&gt;&gt; +    [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventListener onwebkitautocompletefail;
&gt; 
&gt; ditto

Removed.

&gt;&gt; Source/WebCore/dom/Element.h:118
&gt;&gt; +#endif
&gt; 
&gt; These should be on HTMLFormElement, not every Element.

Removed.

&gt;&gt; Source/WebCore/html/HTMLAttributeNames.in:169
&gt;&gt; +onwebkitautocompletefail
&gt; 
&gt; Please put these where they go alphabetically.

Done. (sorry, as you can probably guess they were sorted as onautocomplete at one point)

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:399
&gt;&gt; +void HTMLFormElement::webkitRequestAutocomplete()
&gt; 
&gt; webkitRequestAutocomplete -&gt; requestAutocomplete.  You can use [ImplementedAs] in the IDL to have a prefixed IDL name.

Done.

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:402
&gt;&gt; +    if (!frame || m_isInRequestAutocomplete || !shouldAutocomplete())
&gt; 
&gt; If shouldAutocomplete() is false we don&apos;t dispatch any events. We should decide if &lt;form autocomplete=&quot;off&quot;&gt; results in fail or this API being a noop as you have it right now.

Ah, yeah, you&apos;re right - it&apos;s probably better to noop if we&apos;re already in an autocomplete request but dispatch a fail and return in the case of !shouldAutocomplete().

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:405
&gt;&gt; +    m_isInRequestAutocomplete = true;
&gt; 
&gt; This seems like an odd piece of state.  Why can&apos;t the web page call this function as many times as it likes?  The embedder can choose to ignore extra calls, of course, but that&apos;s more of a policy decision that should be handled outside of WebKit.

Removed m_isInRequestAutocomplete.

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:413
&gt;&gt; +void HTMLFormElement::dispatchAutocompleteEvent(bool success)
&gt; 
&gt; It&apos;s usually nicer to use enums. Perhaps we name this ::finishAutocomplete(AutocompleteResult) and you can pass AutocompleteSuccess or AutocompleteFail.

Done.

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:416
&gt;&gt; +    dispatchEvent(Event::create(success ? eventNames().webkitautocompleteEvent : eventNames().webkitautocompletefailEvent, true, false));
&gt; 
&gt; I thought we talked about dispatching this event asynchronously?

I will change this shortly.

&gt;&gt; Source/WebCore/page/DOMWindow.h:400
&gt;&gt; +#endif
&gt; 
&gt; These should not be needed.

Removed.

&gt;&gt; Source/WebCore/page/DOMWindow.idl:307
&gt;&gt; +    attribute [Conditional=REQUEST_AUTOCOMPLETE] EventListener onwebkitautocompletefail;
&gt; 
&gt; We only need these for HTMLFormElement.

Yup, removed.

&gt;&gt; Source/WebKit/chromium/features.gypi:99
&gt;&gt; +      &apos;ENABLE_REQUEST_AUTOCOMPLETE=1&apos;,
&gt; 
&gt; This turns it on for Chromium which is bad seeing as there&apos;s no implementation yet... we should wait.

Done. (we can wait until the chrome-side stuff lands first)

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:426
&gt;&gt; +    virtual void requestAutocomplete(WebFrame*, const WebFormElement&amp;) { }
&gt; 
&gt; requestAutocomplete -&gt; didRequestAutocomplete

Done.

&gt;&gt;&gt; Source/WebKit/chromium/public/WebViewClient.h:410
&gt;&gt;&gt; +    virtual void requestAutocomplete(WebFrame*, const WebFormElement&amp;) { }
&gt;&gt; 
&gt;&gt; Why do we have this on both WebViewClient and WebFrameClient?  It seems one should be sufficient.  It seems more like a WebFrame concern than a WebView concern.
&gt; 
&gt; this belongs on WebAutofillClient with the rest of the autofill callbacks.

Yeah, sorry, this might&apos;ve been left overs from me throwing things against the wall and seeing what sticks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752603</commentid>
    <comment_count>15</comment_count>
      <attachid>171054</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 17:15:33 -0700</bug_when>
    <thetext>Comment on attachment 171054
Patch

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

This is starting to look pretty good.  Obviously, we still need tests an a thread on webkit-dev.

&gt; Source/WebCore/html/HTMLFormElement.cpp:415
&gt; +    dispatchEvent(Event::create(result == AutocompleteSuccess ? eventNames().autocompleteEvent : eventNames().autocompleteerrorEvent, true, false));

We still need to make this async.

&gt; Source/WebCore/html/HTMLFormElement.h:103
&gt; +    enum AutocompleteResult { AutocompleteSuccess, autocompleteerror };

These enum values are named somewhat inconsistently.

&gt; Source/WebKit/chromium/features.gypi:99
&gt; +      # TODO(dbeam): re-enable after https://codereview.chromium.org/11270018.

TODO(dbeam) -&gt; FIXME

&gt; Source/WebKit/chromium/public/WebFormElement.h:71
&gt; +        WEBKIT_EXPORT void finishRequestAutocomplete(bool);

Should we have an enum in the API that matches the WebCore enum?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752605</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 17:16:42 -0700</bug_when>
    <thetext>Look like you haven&apos;t responded to jam&apos;s comment thoroughly:

&gt; this belongs on WebAutofillClient with the rest of the autofill callbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752616</commentid>
    <comment_count>17</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 17:33:47 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Look like you haven&apos;t responded to jam&apos;s comment thoroughly:
&gt; 
&gt; &gt; this belongs on WebAutofillClient with the rest of the autofill callbacks.

I will respond to this by moving it to the right place and making the event dispatch async, just uploading soon and often like you mentioned :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752666</commentid>
    <comment_count>18</comment_count>
      <attachid>171072</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 20:25:42 -0700</bug_when>
    <thetext>Created attachment 171072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752668</commentid>
    <comment_count>19</comment_count>
      <attachid>171054</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 20:31:35 -0700</bug_when>
    <thetext>Comment on attachment 171054
Patch

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

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:415
&gt;&gt; +    dispatchEvent(Event::create(result == AutocompleteSuccess ? eventNames().autocompleteEvent : eventNames().autocompleteerrorEvent, true, false));
&gt; 
&gt; We still need to make this async.

Yes, will do, soon - have to go now.

&gt;&gt; Source/WebCore/html/HTMLFormElement.h:103
&gt;&gt; +    enum AutocompleteResult { AutocompleteSuccess, autocompleteerror };
&gt; 
&gt; These enum values are named somewhat inconsistently.

sorry, results of too much :bufdo for my own darn self :P

&gt;&gt; Source/WebKit/chromium/features.gypi:99
&gt;&gt; +      # TODO(dbeam): re-enable after https://codereview.chromium.org/11270018.
&gt; 
&gt; TODO(dbeam) -&gt; FIXME

Done.

&gt;&gt; Source/WebKit/chromium/public/WebFormElement.h:71
&gt;&gt; +        WEBKIT_EXPORT void finishRequestAutocomplete(bool);
&gt; 
&gt; Should we have an enum in the API that matches the WebCore enum?

Yes, made one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752669</commentid>
    <comment_count>20</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 20:32:46 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 170996 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170996&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/public/WebViewClient.h:410
&gt; &gt;&gt; +    virtual void requestAutocomplete(WebFrame*, const WebFormElement&amp;) { }
&gt; &gt; 
&gt; &gt; Why do we have this on both WebViewClient and WebFrameClient?  It seems one should be sufficient.  It seems more like a WebFrame concern than a WebView concern.
&gt; 
&gt; this belongs on WebAutofillClient with the rest of the autofill callbacks.

OK, I think the current patch is what you wanted, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752671</commentid>
    <comment_count>21</comment_count>
      <attachid>171072</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-26 20:36:18 -0700</bug_when>
    <thetext>Comment on attachment 171072
Patch

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

&gt; Source/WebCore/html/HTMLFormElement.cpp:415
&gt; +    dispatchEvent(Event::create(result == AutocompleteSuccess ? eventNames().autocompleteEvent : eventNames().autocompleteerrorEvent, true, false));

I know, async :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753926</commentid>
    <comment_count>22</comment_count>
      <attachid>171356</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-29 18:35:56 -0700</bug_when>
    <thetext>Created attachment 171356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753929</commentid>
    <comment_count>23</comment_count>
      <attachid>171072</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-29 18:38:48 -0700</bug_when>
    <thetext>Comment on attachment 171072
Patch

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

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:415
&gt;&gt; +    dispatchEvent(Event::create(result == AutocompleteSuccess ? eventNames().autocompleteEvent : eventNames().autocompleteerrorEvent, true, false));
&gt; 
&gt; I know, async :)

This is done, now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755206</commentid>
    <comment_count>24</comment_count>
      <attachid>171356</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-31 06:12:08 -0700</bug_when>
    <thetext>Comment on attachment 171356
Patch

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

&gt; Source/WebCore/ChangeLog:41
&gt; +        * dom/EventNames.h:
&gt; +        (WebCore):
&gt; +        * html/HTMLAttributeNames.in:
&gt; +        * html/HTMLFormElement.cpp:
&gt; +        (WebCore::HTMLFormElement::HTMLFormElement):
&gt; +        (WebCore::HTMLFormElement::handleLocalEvents):
&gt; +        (WebCore):
&gt; +        (WebCore::HTMLFormElement::requestAutocomplete):
&gt; +        (WebCore::HTMLFormElement::finishRequestAutocomplete):
&gt; +        (WebCore::HTMLFormElement::requestAutocompleteTimerFired):
&gt; +        (WebCore::HTMLFormElement::parseAttribute):
&gt; +        * html/HTMLFormElement.h:
&gt; +        (HTMLFormElement):
&gt; +        * html/HTMLFormElement.idl:
&gt; +        * loader/EmptyClients.cpp:
&gt; +        (WebCore):
&gt; +        (WebCore::EmptyFrameLoaderClient::didRequestAutocomplete):
&gt; +        * loader/EmptyClients.h:
&gt; +        (EmptyFrameLoaderClient):
&gt; +        * loader/FrameLoaderClient.h:
&gt; +        (FrameLoaderClient):

Please add per-file / per-functions comments about what you changed and/or why you changed. Especially for existing functions.

&gt; Source/WebCore/html/HTMLFormElement.cpp:167
&gt; +#if ENABLE(REQUEST_AUTOCOMPLETE)
&gt; +        || event-&gt;type() == eventNames().autocompleteEvent || event-&gt;type() == eventNames().autocompleteerrorEvent
&gt; +#endif

nit: Adding #if inside an expression looks ugly.
I recommend
#if ENABLE(REQUES_AUOCOMPLETE)
  bool isAutocompleteEvent = event-&gt;type() == eventNames().autocompleteEvent || event-&gt;type() == eventNames().autocompleteerrorEvent;
#else
  bool isAutocompleteEvent = false;
#endif
  if (... || isAutocompleteEvent)) {

Also, you had better explain why we need this change in ChangeLog.

&gt; Source/WebCore/html/HTMLFormElement.cpp:430
&gt; +    for (size_t index = 0; index &lt; count; ++index)
&gt; +        dispatchEvent(Event::create(pendingResults[index] == AutocompleteSuccess ? eventNames().autocompleteEvent : eventNames().autocompleteerrorEvent, true, false));

Because an event is dispatched and any JavaScript code can run, |this| might be deleted after every dispatchEvent call.
The code should be:

RefPtr&lt;HTMLFormElement&gt; protector(this);
for (size_t index = 0; ...

&gt; Source/WebKit/chromium/features.gypi:101
&gt; +      # FIXME: re-enable after https://codereview.chromium.org/11270018.
&gt; +      # &apos;ENABLE_REQUEST_AUTOCOMPLETE=1&apos;,

nit: This change isn&apos;t helpful.  Let&apos;s remove it.

&gt; Source/WebKit/chromium/public/WebFormElement.h:72
&gt; +        enum AutocompleteResult { AutocompleteSuccess, AutocompleteError };

Enum members should be AutocompleteResultSuccess and AutocompleteResultError.
http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755803</commentid>
    <comment_count>25</comment_count>
      <attachid>171356</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-31 19:13:51 -0700</bug_when>
    <thetext>Comment on attachment 171356
Patch

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

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:167
&gt;&gt; +#endif
&gt; 
&gt; nit: Adding #if inside an expression looks ugly.
&gt; I recommend
&gt; #if ENABLE(REQUES_AUOCOMPLETE)
&gt;   bool isAutocompleteEvent = event-&gt;type() == eventNames().autocompleteEvent || event-&gt;type() == eventNames().autocompleteerrorEvent;
&gt; #else
&gt;   bool isAutocompleteEvent = false;
&gt; #endif
&gt;   if (... || isAutocompleteEvent)) {
&gt; 
&gt; Also, you had better explain why we need this change in ChangeLog.

I think I&apos;ll just remove this if it&apos;s OK to not let this event propagate either (i.e. Event::create(name, false, false))

&gt; Source/WebCore/html/HTMLFormElement.cpp:404
&gt; +

I think I need to add a reference to this here because any time after this finishRequestAutocomplete() can post a deferred event.  This solves some issues, but I&apos;m still getting segfaults on garbage collection events...

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:430
&gt;&gt; +        dispatchEvent(Event::create(pendingResults[index] == AutocompleteSuccess ? eventNames().autocompleteEvent : eventNames().autocompleteerrorEvent, true, false));
&gt; 
&gt; Because an event is dispatched and any JavaScript code can run, |this| might be deleted after every dispatchEvent call.
&gt; The code should be:
&gt; 
&gt; RefPtr&lt;HTMLFormElement&gt; protector(this);
&gt; for (size_t index = 0; ...

So it seems more is necessary when I&apos;m deferring the dispatching of the event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755804</commentid>
    <comment_count>26</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-10-31 19:14:33 -0700</bug_when>
    <thetext>I haven&apos;t re-uploaded my new patch because it&apos;s riddled with LOG messages, however any help with the main issues I&apos;ve mentioned would be very helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756704</commentid>
    <comment_count>27</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-01 16:10:19 -0700</bug_when>
    <thetext>These are the stacks I&apos;m getting, btw https://raw.github.com/gist/691b66ab57fd55dd6659/310718a959203e55aee1355c837994a3eb205e8f/gistfile1.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756721</commentid>
    <comment_count>28</comment_count>
      <attachid>171952</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-01 16:32:36 -0700</bug_when>
    <thetext>Created attachment 171952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756722</commentid>
    <comment_count>29</comment_count>
      <attachid>171356</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-01 16:34:33 -0700</bug_when>
    <thetext>Comment on attachment 171356
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:41
&gt;&gt; +        (FrameLoaderClient):
&gt; 
&gt; Please add per-file / per-functions comments about what you changed and/or why you changed. Especially for existing functions.

I&apos;d like to wait until the code is done changing before I add these as I think I&apos;m not nearly out of the review woods yet :).

&gt;&gt; Source/WebKit/chromium/features.gypi:101
&gt;&gt; +      # &apos;ENABLE_REQUEST_AUTOCOMPLETE=1&apos;,
&gt; 
&gt; nit: This change isn&apos;t helpful.  Let&apos;s remove it.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebFormElement.h:72
&gt;&gt; +        enum AutocompleteResult { AutocompleteSuccess, AutocompleteError };
&gt; 
&gt; Enum members should be AutocompleteResultSuccess and AutocompleteResultError.
&gt; http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756732</commentid>
    <comment_count>30</comment_count>
      <attachid>171952</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-01 16:59:08 -0700</bug_when>
    <thetext>Comment on attachment 171952
Patch

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

&gt; Source/WebCore/html/HTMLFormElement.h:178
&gt; +    Vector&lt;RefPtr&lt;HTMLFormElement&gt; &gt; m_protector;

btw, I understand this is a totally hacky way to add references to |this|, I just haven&apos;t found the better way to addRef(this) yet, any advice or examples would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756770</commentid>
    <comment_count>31</comment_count>
      <attachid>171952</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-01 18:03:01 -0700</bug_when>
    <thetext>Comment on attachment 171952
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        No new tests (OOPS!).

also, layout test incoming

&gt;&gt; Source/WebCore/html/HTMLFormElement.h:178
&gt;&gt; +    Vector&lt;RefPtr&lt;HTMLFormElement&gt; &gt; m_protector;
&gt; 
&gt; btw, I understand this is a totally hacky way to add references to |this|, I just haven&apos;t found the better way to addRef(this) yet, any advice or examples would be appreciated.

so I&apos;ve gotten this working locally with ref() and deref() but I imagine there&apos;s a safer way that wouldn&apos;t lead to leaks when this code flow isn&apos;t hit...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756857</commentid>
    <comment_count>32</comment_count>
      <attachid>171979</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-01 20:07:10 -0700</bug_when>
    <thetext>Created attachment 171979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756859</commentid>
    <comment_count>33</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-01 20:07:47 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 171952 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171952&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        No new tests (OOPS!).
&gt; 
&gt; also, layout test incoming

This is now added.

&gt; 
&gt; &gt;&gt; Source/WebCore/html/HTMLFormElement.h:178
&gt; &gt;&gt; +    Vector&lt;RefPtr&lt;HTMLFormElement&gt; &gt; m_protector;
&gt; &gt; 
&gt; &gt; btw, I understand this is a totally hacky way to add references to |this|, I just haven&apos;t found the better way to addRef(this) yet, any advice or examples would be appreciated.
&gt; 
&gt; so I&apos;ve gotten this working locally with ref() and deref() but I imagine there&apos;s a safer way that wouldn&apos;t lead to leaks when this code flow isn&apos;t hit...

Found a safer way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756862</commentid>
    <comment_count>34</comment_count>
      <attachid>171979</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-01 20:19:02 -0700</bug_when>
    <thetext>Comment on attachment 171979
Patch

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

&gt; LayoutTests/fast/forms/request-autocomplete.html:64
&gt; +    if (numErrors &gt; numErrorsExpected)

I had an idea to let doneTesting() wait 2s for other errors - is this a good/bad idea?  right now we&apos;ll hit notifyDone() and we wouldn&apos;t know if there&apos;s too many errors assuming the test halts immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756864</commentid>
    <comment_count>35</comment_count>
      <attachid>171979</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2012-11-01 20:28:57 -0700</bug_when>
    <thetext>Comment on attachment 171979
Patch

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

&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:64
&gt;&gt; +    if (numErrors &gt; numErrorsExpected)
&gt; 
&gt; I had an idea to let doneTesting() wait 2s for other errors - is this a good/bad idea?  right now we&apos;ll hit notifyDone() and we wouldn&apos;t know if there&apos;s too many errors assuming the test halts immediately.

If you always wait for 2s, this test will take a minimum of 2s to run, no matter what.  That&apos;s not so good.  It&apos;s almost always better to wait on some specific event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756919</commentid>
    <comment_count>36</comment_count>
      <attachid>171979</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-01 23:41:54 -0700</bug_when>
    <thetext>Comment on attachment 171979
Patch

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

C++ code looks good.

&gt; Source/WebCore/html/HTMLFormElement.cpp:417
&gt; +        m_requestAutocompleteDelayTimer.startOneShot(0);

We had better have a comment why we delay event dispatching.

&gt; Source/WebCore/html/HTMLFormElement.h:107
&gt; +    void requestAutocompleteTimerFired(Timer&lt;HTMLFormElement&gt;*);

THis should be private.

&gt; LayoutTests/ChangeLog:20
&gt; +        * fast/forms/request-autocomplete.html: Added.

Please rename it to form-request-autocomplete.html.

&gt; LayoutTests/fast/forms/request-autocomplete.html:14
&gt; +if (window.testRunner)
&gt; +   testRunner.dumpAsText();
&gt; +
&gt; +function log(message)
&gt; +{
&gt; +    var console = document.getElementById(&apos;console&apos;);
&gt; +    console.appendChild(document.createTextNode(message));
&gt; +    console.appendChild(document.createElement(&apos;br&apos;));
&gt; +}
&gt; +

Do not re-implement such utility function.  js-test-pre.js provides some.
  &lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

and add &lt;script src=&quot;../js/resources/js-test-post.js&quot;&gt;&lt;/script&gt; at the bottom.

&gt; LayoutTests/fast/forms/request-autocomplete.html:21
&gt; +        log(&apos;FAILED: no requestAutocomplete function&apos;);

Use testFailed() provided by js-test-pre.js.

&gt; LayoutTests/fast/forms/request-autocomplete.html:34
&gt; +        if (/onautocomplete/.test(field))
&gt; +             log(&apos;FAILED: enumerable form attribute found on HTMLFormElement: &apos; + field);

Wrong indentation.
testFailed().

&gt; LayoutTests/fast/forms/request-autocomplete.html:37
&gt; +    log(enumerated ? &apos;PASSED: no enumerable properties on HTMLFormElement&apos; : &apos;FAILED: to enumerate HTMLFormElement properties&apos;);

Use testPassed() and testFailed().

&gt;&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:64
&gt;&gt;&gt; +    if (numErrors &gt; numErrorsExpected)
&gt;&gt; 
&gt;&gt; I had an idea to let doneTesting() wait 2s for other errors - is this a good/bad idea?  right now we&apos;ll hit notifyDone() and we wouldn&apos;t know if there&apos;s too many errors assuming the test halts immediately.
&gt; 
&gt; If you always wait for 2s, this test will take a minimum of 2s to run, no matter what.  That&apos;s not so good.  It&apos;s almost always better to wait on some specific event.

Don&apos;t wait for 2s.

&gt; LayoutTests/fast/forms/request-autocomplete.html:74
&gt; +    log(&apos;PASSED: got expected number of error events (&apos; + numErrorsExpected + &apos;)&apos;);
&gt; +    if (window.notifyDone)
&gt; +        notifyDone();

Use testPassed and finishJSTest(), and add jsTestIsAsync = true at the top level.

&gt; LayoutTests/fast/forms/request-autocomplete.html:86
&gt; +&lt;/html&gt;

No &lt;/body&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757390</commentid>
    <comment_count>37</comment_count>
      <attachid>171979</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-02 11:32:09 -0700</bug_when>
    <thetext>Comment on attachment 171979
Patch

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

Looks like tkent already reviewed this patch, but I had two minor nit-picks to contribute.  :)

&gt; Source/WebCore/html/HTMLFormElement.cpp:78
&gt; +    , m_requestAutocompleteDelayTimer(this, &amp;HTMLFormElement::requestAutocompleteTimerFired)

nit: I would drop the word &quot;Delay&quot; from this name.  It doesn&apos;t really mean anything.

&gt; Source/WebCore/html/HTMLFormElement.cpp:425
&gt; +    for (size_t index = 0; index &lt; pendingEvents.size(); ++index)

nit: We usually use i for loop index variables.  I know that violates our rule about using complete words.  We&apos;re quirky folks.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757529</commentid>
    <comment_count>38</comment_count>
      <attachid>172124</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-02 13:34:30 -0700</bug_when>
    <thetext>Created attachment 172124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757533</commentid>
    <comment_count>39</comment_count>
      <attachid>171979</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-02 13:38:25 -0700</bug_when>
    <thetext>Comment on attachment 171979
Patch

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

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:78
&gt;&gt; +    , m_requestAutocompleteDelayTimer(this, &amp;HTMLFormElement::requestAutocompleteTimerFired)
&gt; 
&gt; nit: I would drop the word &quot;Delay&quot; from this name.  It doesn&apos;t really mean anything.

Done.

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:417
&gt;&gt; +        m_requestAutocompleteDelayTimer.startOneShot(0);
&gt; 
&gt; We had better have a comment why we delay event dispatching.

You want a comment in the source code or in the changelog?

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:425
&gt;&gt; +    for (size_t index = 0; index &lt; pendingEvents.size(); ++index)
&gt; 
&gt; nit: We usually use i for loop index variables.  I know that violates our rule about using complete words.  We&apos;re quirky folks.  :)

Ya, just copied from MediaController.cpp, changed to i.

&gt;&gt; Source/WebCore/html/HTMLFormElement.h:107
&gt;&gt; +    void requestAutocompleteTimerFired(Timer&lt;HTMLFormElement&gt;*);
&gt; 
&gt; THis should be private.

Done.

&gt;&gt; LayoutTests/ChangeLog:20
&gt;&gt; +        * fast/forms/request-autocomplete.html: Added.
&gt; 
&gt; Please rename it to form-request-autocomplete.html.

Done.

&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:14
&gt;&gt; +
&gt; 
&gt; Do not re-implement such utility function.  js-test-pre.js provides some.
&gt;   &lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; and add &lt;script src=&quot;../js/resources/js-test-post.js&quot;&gt;&lt;/script&gt; at the bottom.

Done.

&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:21
&gt;&gt; +        log(&apos;FAILED: no requestAutocomplete function&apos;);
&gt; 
&gt; Use testFailed() provided by js-test-pre.js.

Done.

&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:34
&gt;&gt; +             log(&apos;FAILED: enumerable form attribute found on HTMLFormElement: &apos; + field);
&gt; 
&gt; Wrong indentation.
&gt; testFailed().

Done.

&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:37
&gt;&gt; +    log(enumerated ? &apos;PASSED: no enumerable properties on HTMLFormElement&apos; : &apos;FAILED: to enumerate HTMLFormElement properties&apos;);
&gt; 
&gt; Use testPassed() and testFailed().

Done.

&gt;&gt;&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:64
&gt;&gt;&gt;&gt; +    if (numErrors &gt; numErrorsExpected)
&gt;&gt;&gt; 
&gt;&gt;&gt; I had an idea to let doneTesting() wait 2s for other errors - is this a good/bad idea?  right now we&apos;ll hit notifyDone() and we wouldn&apos;t know if there&apos;s too many errors assuming the test halts immediately.
&gt;&gt; 
&gt;&gt; If you always wait for 2s, this test will take a minimum of 2s to run, no matter what.  That&apos;s not so good.  It&apos;s almost always better to wait on some specific event.
&gt; 
&gt; Don&apos;t wait for 2s.

OK, won&apos;t add 2s wait time.

&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:74
&gt;&gt; +        notifyDone();
&gt; 
&gt; Use testPassed and finishJSTest(), and add jsTestIsAsync = true at the top level.

Done.

&gt;&gt; LayoutTests/fast/forms/request-autocomplete.html:86
&gt;&gt; +&lt;/html&gt;
&gt; 
&gt; No &lt;/body&gt;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757568</commentid>
    <comment_count>40</comment_count>
      <attachid>171979</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2012-11-02 14:18:09 -0700</bug_when>
    <thetext>Comment on attachment 171979
Patch

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

&gt;&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:417
&gt;&gt;&gt; +        m_requestAutocompleteDelayTimer.startOneShot(0);
&gt;&gt; 
&gt;&gt; We had better have a comment why we delay event dispatching.
&gt; 
&gt; You want a comment in the source code or in the changelog?

My guess: Definitely in the source code; preferably in both.  (Hoping to mitigate cross-timezone review latency a bit.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757592</commentid>
    <comment_count>41</comment_count>
      <attachid>172139</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-02 14:30:09 -0700</bug_when>
    <thetext>Created attachment 172139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757594</commentid>
    <comment_count>42</comment_count>
      <attachid>171979</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-02 14:30:47 -0700</bug_when>
    <thetext>Comment on attachment 171979
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:417
&gt;&gt;&gt;&gt; +        m_requestAutocompleteDelayTimer.startOneShot(0);
&gt;&gt;&gt; 
&gt;&gt;&gt; We had better have a comment why we delay event dispatching.
&gt;&gt; 
&gt;&gt; You want a comment in the source code or in the changelog?
&gt; 
&gt; My guess: Definitely in the source code; preferably in both.  (Hoping to mitigate cross-timezone review latency a bit.)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757598</commentid>
    <comment_count>43</comment_count>
      <attachid>172140</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-02 14:33:57 -0700</bug_when>
    <thetext>Created attachment 172140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757964</commentid>
    <comment_count>44</comment_count>
      <attachid>172140</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-03 08:34:32 -0700</bug_when>
    <thetext>Comment on attachment 172140
Patch

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

Looks great.  Thanks for iterating on the patch.

&gt; LayoutTests/fast/forms/form-request-autocomplete.html:73
&gt; +&lt;p&gt; Bug &lt;a href=&quot;http://bugs.webkit.org/show_bug.cgi?id=100557&quot;&gt;100557&lt;/a&gt;: Implement HTMLFormElement#requestAutocomplete and associated events &lt;/p&gt;

We usually don&apos;t link to bug numbers in tests, but it&apos;s not a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757966</commentid>
    <comment_count>45</comment_count>
      <attachid>172140</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-03 09:09:04 -0700</bug_when>
    <thetext>Comment on attachment 172140
Patch

Clearing flags on attachment: 172140

Committed r133396: &lt;http://trac.webkit.org/changeset/133396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757967</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-03 09:09:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757975</commentid>
    <comment_count>47</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-03 11:00:36 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (From update of attachment 172140 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172140&amp;action=review
&gt; 
&gt; Looks great.  Thanks for iterating on the patch.

Thanks to tkent@ and you for the review!

&gt; &gt;
&gt; &gt; LayoutTests/fast/forms/form-request-autocomplete.html:73
&gt; &gt; +&lt;p&gt; Bug &lt;a href=&quot;http://bugs.webkit.org/show_bug.cgi?id=100557&quot;&gt;100557&lt;/a&gt;: Implement HTMLFormElement#requestAutocomplete and associated events &lt;/p&gt;
&gt; 
&gt; We usually don&apos;t link to bug numbers in tests, but it&apos;s not a big deal.

I got this idea from here http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree but maybe it&apos;s more geared toward regression tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757984</commentid>
    <comment_count>48</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-03 12:25:00 -0700</bug_when>
    <thetext>&gt; I got this idea from here http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree but maybe it&apos;s more geared toward regression tests?

I think this might be a case where documentation and practice aren&apos;t 100% aligned.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772321</commentid>
    <comment_count>49</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2012-11-20 17:21:40 -0800</bug_when>
    <thetext>Please don&apos;t prefix this kind of thing — I&apos;ll either add it to the spec under the name you use, in which case I&apos;ll make sure the spec is compatible and there&apos;s no need to have it prefixed, or I&apos;ll use a different name, in which case there&apos;s no conflict and thus no need for a prefix in your version, or I won&apos;t put it in the spec, in which case there&apos;s nothing to conflict with, and thus no need for a prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772348</commentid>
    <comment_count>50</comment_count>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2012-11-20 18:05:29 -0800</bug_when>
    <thetext>Hixie: not prefixed at all so far :), but this feature hasn&apos;t hit a single user that didn&apos;t have to flip some flag either at run time (in Chrome, ala about:flags) or compile time (i.e. changing a file and [re-]compiling WebKit for your platform).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170996</attachid>
            <date>2012-10-26 13:52:34 -0700</date>
            <delta_ts>2012-10-26 17:13:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121026135105.patch</filename>
            <type>text/plain</type>
            <size>20434</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RjNTk3YjNmNzNhM2Rl
OWFjYjkwZDc0NTIwYTQ2YWJjY2QxNGYwOS4uZjdlZWM5MGMxNjg4MTMyYzM4ZDAzMTU4ZDM4MGMz
MjZiMjMxZTAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEwLTI2ICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgcHJlZml4ZWQg
dmVyc2lvbiBvZiBIVE1MRm9ybUVsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RBdXRvY29tcGxldGUo
KSArIG9uYXV0b2NvbXBsZXRlL29uYXV0b2NvbXBsZXRlZmFpbCBldmVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDU1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRp
b24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQg
cGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChE
b2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgor
ICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmhhbmRsZUxvY2FsRXZl
bnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVt
ZW50Ojp3ZWJraXRSZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6ZGlzcGF0Y2hBdXRvY29tcGxldGVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1FbGVtZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtRWxlbWVudC5pZGw6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OnJlcXVlc3RBdXRvY29tcGxldGUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKEVtcHR5RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnQpOgorICAg
ICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgIChET01XaW5kb3cpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmlkbDoKKwogMjAxMi0xMC0yMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgRmFjdG9yIHN0eWxlc2hlZXQgaW52YWxpZGF0aW9uIGFu
YWx5c2lzIGNvZGUgaW50byBhIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGNm
YTRmMzIxMzg0MTVlMWFiZmJhYjQxYjQ1NjYxYjZiZTJkOGNkZTAuLmQ4Y2MyZmIyOGM3NTQ1YmU2
ZmFkZDlmNTUxMWI2N2QyOTg0YzIyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTItMTAtMjYgIERhbiBCZWFtICA8ZGJlYW1AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEltcGxlbWVudCBwcmVmaXhlZCB2ZXJzaW9uIG9mIEhUTUxGb3JtRWxlbWVudC5w
cm90b3R5cGUucmVxdWVzdEF1dG9jb21wbGV0ZSgpICsgb25hdXRvY29tcGxldGUvb25hdXRvY29t
cGxldGVmYWlsIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwNTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBw
cm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJl
bG93IChPT1BTISkuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJGb3JtRWxlbWVudC5oOgorICAgICAgICAoV2ViRm9ybUVsZW1lbnQpOgorICAgICAgICAq
IHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6cmVxdWVzdEF1dG9jb21wbGV0ZSk6CisgICAg
ICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJWaWV3Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6cmVxdWVz
dEF1dG9jb21wbGV0ZSk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudElt
cGw6OnJlcXVlc3RBdXRvY29tcGxldGUpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3Jj
L1dlYkZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUVsZW1lbnQ6OmRp
c3BhdGNoQXV0b2NvbXBsZXRlRXZlbnQpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0xMC0x
OSAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gRG91YmxlLXRhcCBkZWZhdWx0cyB0byB6b29tIChzaG91bGQgb25seSBkbyB0aGlzIG9uIEFu
ZHJvaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNlZWEwZjBkZGE4MThkMzYxZDBhZTFiZjgw
ZjE4ODVmMzBlYTUyNzQuLjQzMzI5MDBiNDFkNzUzNmJhOTQyYzk3Y2ZkMDU1NTJjYWJhNjk3NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMjMsNiArMzIzLDEwIEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHdlYmtpdHZpc2liaWxpdHljaGFuZ2UpOwogI2VuZGlmCisjaWYgRU5BQkxFKFJFUVVF
U1RfQVVUT0NPTVBMRVRFKQorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Vi
a2l0YXV0b2NvbXBsZXRlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdl
YmtpdGF1dG9jb21wbGV0ZWZhaWwpOworI2VuZGlmCiAKICAgICBWaWV3cG9ydEFyZ3VtZW50cyB2
aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0K
ICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBiODI3ZWQ3YzQ1NGNl
Y2ZjZDkzNTc4MWY5ZDZhN2RiNDM0OGMwNzc1Li5lOWQ0MmVkYTBmNTFiOWU1ZjhkYjdiZjAwNTY0
MjhlOTZkZmRjYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTMzNyw2ICszMzcsOCBA
QAogICAgIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRB
dFJ1bnRpbWVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udG91Y2htb3ZlOwogICAgIFtOb3RF
bnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRBdFJ1bnRpbWVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CiAgICAgW05vdEVudW1lcmFibGUsQ29u
ZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLFY4RW5hYmxlZEF0UnVudGltZV0gYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb250b3VjaGNhbmNlbDsKKyAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9
UkVRVUVTVF9BVVRPQ09NUExFVEVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0YXV0
b2NvbXBsZXRlOworICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1SRVFVRVNUX0FVVE9D
T01QTEVURV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRhdXRvY29tcGxldGVmYWls
OwogICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSV0gYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlOwogICAgIFtOb3RFbnVt
ZXJhYmxlLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSV0gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb253ZWJraXRmdWxsc2NyZWVuZXJyb3I7CiAgICAgW05vdEVudW1lcmFibGUsIENvbmRpdGlv
bmFsPVBPSU5URVJfTE9DSywgVjhFbmFibGVkQXRSdW50aW1lPXBvaW50ZXJMb2NrXSBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKaW5kZXggNTE5YzUwZDc3ODkzMTUxNmZhZjg4MzBjNDYzYjI1MDIwMTViNmRmZC4uNWYzM2Nm
ZjI3ZmJjMTJmY2Q4YzQ4ODdlM2MxYmUyMWUwODQ0MDRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBA
IC0xMTIsNiArMTEyLDEwIEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmVycm9yKTsKICNlbmRpZgorI2lmIEVOQUJMRShS
RVFVRVNUX0FVVE9DT01QTEVURSkKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHdlYmtpdGF1dG9jb21wbGV0ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRhdXRvY29tcGxldGVmYWlsKTsKKyNlbmRpZgogCiAgICAgYm9vbCBoYXNBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAppbmRleCA3YTkyNDFkYzFmMWQ2YjE2NDk4ZDgzNTY0MjQwOTBmY2M0MjFlNTFjLi41MTFh
NTdlNDg0NTNhMjNiZTVlMDE4NzhhYjU4M2Q1MzllYmFmY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCkBAIC0yMTgsNiArMjE4LDggQEAKICAgICBbTm90RW51bWVyYWJsZSxDb25kaXRpb25hbD1U
T1VDSF9FVkVOVFMsVjhFbmFibGVkQXRSdW50aW1lXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bnRvdWNobW92ZTsKICAgICBbTm90RW51bWVyYWJsZSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMs
VjhFbmFibGVkQXRSdW50aW1lXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5kOwog
ICAgIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRBdFJ1
bnRpbWVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udG91Y2hjYW5jZWw7CisgICAgW05vdEVu
dW1lcmFibGUsIENvbmRpdGlvbmFsPVJFUVVFU1RfQVVUT0NPTVBMRVRFXSBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbndlYmtpdGF1dG9jb21wbGV0ZTsKKyAgICBbTm90RW51bWVyYWJsZSwgQ29u
ZGl0aW9uYWw9UkVRVUVTVF9BVVRPQ09NUExFVEVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
d2Via2l0YXV0b2NvbXBsZXRlZmFpbDsKICAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9
RlVMTFNDUkVFTl9BUEldIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVl
bmNoYW5nZTsKICAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEld
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmVycm9yOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA3YTA1NTJhNGE3MGRhOTNkNDIwMTE3ZmQyMDJl
OTIwOWMzYjQ3MjFhLi43YjkwODY0ZThlN2I0NTZhNjE5MjZjNjU0NjRmN2FiYTQ5ZmMzYzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTI0Myw2ICsyNDMsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgXAogICAgIG1hY3JvKHdlYmtpdGRldmljZXByb3hpbWl0eSkgXAogICAgIFwK
KyAgICBtYWNybyh3ZWJraXRhdXRvY29tcGxldGUpIFwKKyAgICBtYWNybyh3ZWJraXRhdXRvY29t
cGxldGVmYWlsKSBcCisgICAgXAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggNDU5MDc4
ZjY0YzA4YmUyYmU0MzFiMDA4ODhkY2YzOWJkYjMwYjg2OS4uOTM5MjVmNDljYWM1OTc0MWIxZDc2
YmZhZTViMjY2ZmZhNGJkZGUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KQEAgLTE2NSw2ICsxNjUsOCBAQCBub3ZhbGlkYXRlCiBub3dyYXAKIG9iamVjdAog
b25hYm9ydAorb253ZWJraXRhdXRvY29tcGxldGUKK29ud2Via2l0YXV0b2NvbXBsZXRlZmFpbAog
b25iZWZvcmVjb3B5CiBvbmJlZm9yZWN1dAogb25iZWZvcmVsb2FkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMGEyNTE0MTVmYmQ3MGI0ZDI4YmVjZTA2ZjMwZGI1
OWJkMjNiMGZlNS4uOTEzMzVhMWE0OTMzNmU3ZmM0ZmQyMmE5NGNhZDE2MzA1Y2ZiZjhmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNzQsNiArNzQsOSBAQCBI
VE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbgogICAgICwgbV9pc1N1Ym1pdHRpbmdPclByZXBhcmluZ0Zv
clN1Ym1pc3Npb24oZmFsc2UpCiAgICAgLCBtX3Nob3VsZFN1Ym1pdChmYWxzZSkKICAgICAsIG1f
aXNJblJlc2V0RnVuY3Rpb24oZmFsc2UpCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRF
KQorICAgICwgbV9pc0luUmVxdWVzdEF1dG9jb21wbGV0ZShmYWxzZSkKKyNlbmRpZgogICAgICwg
bV93YXNEZW1vdGVkKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvcm1UYWcpKTsK
QEAgLTE1OCw3ICsxNjEsMTEgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmhhbmRs
ZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKIHsKICAgICBOb2RlKiB0YXJnZXROb2RlID0gZXZl
bnQtPnRhcmdldCgpLT50b05vZGUoKTsKLSAgICBpZiAoZXZlbnQtPmV2ZW50UGhhc2UoKSAhPSBF
dmVudDo6Q0FQVFVSSU5HX1BIQVNFICYmIHRhcmdldE5vZGUgJiYgdGFyZ2V0Tm9kZSAhPSB0aGlz
ICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCB8fCBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50KSkgeworICAgIGlmIChldmVudC0+ZXZl
bnRQaGFzZSgpICE9IEV2ZW50OjpDQVBUVVJJTkdfUEhBU0UgJiYgdGFyZ2V0Tm9kZSAmJiB0YXJn
ZXROb2RlICE9IHRoaXMgJiYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Ym1pdEV2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnJlc2V0RXZlbnQKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLndlYmtpdGF1dG9jb21wbGV0ZUV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLndlYmtpdGF1dG9jb21wbGV0ZWZhaWxFdmVudAorI2VuZGlmCisgICAgKSkgewog
ICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0zODgsNiArMzk1LDI4IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZXNldCgpCiAgICAg
bV9pc0luUmVzZXRGdW5jdGlvbiA9IGZhbHNlOwogfQogCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVU
T0NPTVBMRVRFKQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OndlYmtpdFJlcXVlc3RBdXRvY29tcGxl
dGUoKQoreworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYg
KCFmcmFtZSB8fCBtX2lzSW5SZXF1ZXN0QXV0b2NvbXBsZXRlIHx8ICFzaG91bGRBdXRvY29tcGxl
dGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0luUmVxdWVzdEF1dG9jb21wbGV0ZSA9
IHRydWU7CisKKyAgICBTdHJpbmdQYWlyVmVjdG9yIGNvbnRyb2xOYW1lc0FuZFZhbHVlczsKKyAg
ICBnZXRUZXh0RmllbGRWYWx1ZXMoY29udHJvbE5hbWVzQW5kVmFsdWVzKTsKKyAgICBSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZSh0aGlzLCBjb250cm9sTmFt
ZXNBbmRWYWx1ZXMsIGRvY3VtZW50KCksIFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CisgICAgZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+cmVxdWVzdEF1dG9jb21wbGV0ZShmb3JtU3RhdGUucmVs
ZWFzZSgpKTsKK30KKwordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpc3BhdGNoQXV0b2NvbXBsZXRl
RXZlbnQoYm9vbCBzdWNjZXNzKQoreworICAgIG1faXNJblJlcXVlc3RBdXRvY29tcGxldGUgPSBm
YWxzZTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoc3VjY2VzcyA/IGV2ZW50TmFt
ZXMoKS53ZWJraXRhdXRvY29tcGxldGVFdmVudCA6IGV2ZW50TmFtZXMoKS53ZWJraXRhdXRvY29t
cGxldGVmYWlsRXZlbnQsIHRydWUsIGZhbHNlKSk7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogewog
ICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGFjdGlvbkF0dHIpCkBAIC00MDksNiArNDM4LDEw
IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuc3VibWl0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmli
dXRlKSk7CiAgICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnJlc2V0QXR0cikKICAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmVzZXRFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ud2Via2l0YXV0b2NvbXBsZXRlQXR0cikKKyAgICAg
ICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0YXV0b2NvbXBs
ZXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7
CisgICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbndlYmtpdGF1dG9jb21wbGV0ZWZh
aWxBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53
ZWJraXRhdXRvY29tcGxldGVmYWlsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgYXR0cmlidXRlKSk7CiAgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5o
CmluZGV4IGJmMjhjY2EzZmIyYzZhZjU4NTc5NTFiNjJjYmYwMjMyMGU0YTk2ZGEuLjUyOWMwZmE2
YWM3YzVhYmFkYjI3ZWEzOThjZjg5ODM5MGJkM2JmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuaApAQCAtOTksNiArOTksMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBjaGVj
a1ZhbGlkaXR5KCk7CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgdm9p
ZCBkaXNwYXRjaEF1dG9jb21wbGV0ZUV2ZW50KGJvb2wgc3VjY2Vzcyk7CisgICAgdm9pZCB3ZWJr
aXRSZXF1ZXN0QXV0b2NvbXBsZXRlKCk7CisjZW5kaWYKKwogICAgIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQqIGVsZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGFk
ZEVsZW1lbnRBbGlhcyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
JiBhbGlhcyk7CiAKQEAgLTE2MSw2ICsxNjYsMTAgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9p
c0luUmVzZXRGdW5jdGlvbjsKIAorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyAg
ICBib29sIG1faXNJblJlcXVlc3RBdXRvY29tcGxldGU7CisjZW5kaWYKKwogICAgIGJvb2wgbV93
YXNEZW1vdGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCmlu
ZGV4IDg2YTZmNzRjNjNmZGZkMmRhZTBkZmMwMmZkN2NkNzJmOGZlYjUxODguLjM3MTAzNjdhNDZk
MmEwODkwZTRjNmUyMDI4ZDE2YTlhNTY4MTU0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5pZGwKQEAgLTQyLDQgKzQyLDcgQEAKICNlbmRpZgogICAgIHZvaWQgcmVzZXQo
KTsKICAgICBib29sZWFuIGNoZWNrVmFsaWRpdHkoKTsKKyNpZiBkZWZpbmVkKEVOQUJMRV9SRVFV
RVNUX0FVVE9DT01QTEVURSkgJiYgRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFCisgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0QXV0b2NvbXBsZXRlKCk7CisjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGM5YjNmM2E2ZTEwNTFmMGU5NzM1ZjY1ZDRkZWI2
MGY3OTI5N2YwOTIuLjc1Y2U0MTk5NWNjMGI2OWZlZWEzZDcxMDBiNDc3YjBiYjY4ZjY3NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xOTQsNCArMTk0LDEwIEBA
IFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IEVtcHR5Q29udGV4dE1lbnVDbGllbnQ6OmN1c3RvbWl6
ZU1lbnUoUGFzc093blB0cjxDb250ZXh0CiAjZW5kaWYKICNlbmRpZgogCisjaWYgRU5BQkxFKFJF
UVVFU1RfQVVUT0NPTVBMRVRFKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZXF1ZXN0
QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3sKK30KKyNlbmRpZgorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggOWMyYzIzZDNlMDhhOGZkMTc4ZTE4
NWI1OGFlMWNhOTUxYTJjNDA0NS4uNmZjNGM5MTA1ZTBiMWQzNzY3MjkyOWFkYmZiYzNjMzI3NzEx
N2IyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzgyLDYgKzM4Miwx
MCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+KSBPVkVSUklERTsKICNlbmRp
ZgorCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisjZW5k
aWYKIH07CiAKIGNsYXNzIEVtcHR5VGV4dENoZWNrZXJDbGllbnQgOiBwdWJsaWMgVGV4dENoZWNr
ZXJDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCA0ZjIzODhhZjVmYmI0YzVkNjVjMzBiZmY4ODg0NTU0YzdjOGI5YzBkLi5mMmEyN2M1MWQ0ZTc1
ZGYyYWQwNDIxNTEzNGRlNGJmNjhiZjEwODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtMzQ5LDYgKzM0OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFN0YXJ0VXNpbmdQZWVyQ29ubmVjdGlvbkhhbmRsZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyKikgeyB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+KSA9IDA7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAppbmRleCA5NWY2ZWYxZWVkZWNlOTNiY2ZkMWQwYzY2M2FiNjY2YWM1
ZmVmYTY1Li5lYjE2YzRjMGY3NmYzMGNjZmE2NmZmYzJjMjVkYTJkM2VkYjc0OTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKQEAgLTM5NCw2ICszOTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBQZXJmb3JtYW5jZSogcGVyZm9ybWFuY2UoKSBjb25zdDsKICNlbmRpZgogCisj
aWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHdlYmtpdGF1dG9jb21wbGV0ZSk7CisgICAgICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0YXV0b2NvbXBsZXRlZmFpbCk7CisjZW5kaWYKKwog
ICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGlzIERPTVdpbmRvdyBpcyBubyBsb25nZXIgdGhlIGFj
dGl2ZSBET01XaW5kb3cgKGkuZS4sCiAgICAgICAgIC8vIHdoZW4gaXRzIGRvY3VtZW50IGlzIG5v
IGxvbmdlciB0aGUgZG9jdW1lbnQgdGhhdCBpcyBkaXNwbGF5ZWQgaW4gaXRzCiAgICAgICAgIC8v
IGZyYW1lKSwgd2Ugd291bGQgbGlrZSB0byB6ZXJvIG91dCBtX2ZyYW1lIHRvIGF2b2lkIGJlaW5n
IGNvbmZ1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNWIzYWIyYWY0MWI5MDQw
MDk4MjkzZjFjNTMzMWM0YTZhMzU3NzJjNy4uODQ0NTJmYWE2OWFkNmUwMjRiZDA0ZTk2YjE5NTYx
YWQ5NDljZmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtMzAzLDYgKzMwMyw4
IEBACiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRhbmltYXRpb25lbmQ7CiAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRhbmltYXRpb25pdGVyYXRpb247CiAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRhbmltYXRpb25zdGFydDsKKyAgICBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVJFUVVFU1RfQVVUT0NPTVBMRVRFXSBFdmVudExpc3RlbmVy
IG9ud2Via2l0YXV0b2NvbXBsZXRlOworICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9UkVRVUVT
VF9BVVRPQ09NUExFVEVdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRhdXRvY29tcGxldGVmYWlsOwog
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0dHJhbnNpdGlvbmVuZDsKICNpZiBk
ZWZpbmVkKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMpICYmIEVOQUJMRV9PUklFTlRBVElPTl9F
VkVOVFMKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm9yaWVudGF0aW9uY2hhbmdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IDJkMThjNzczZDRjOWFhZTdiN2E4
MzI3NmFkMjg4MDk4Y2M5YTk4MDEuLjEyNjU3ODgzNWE4ZmJkMjQ3MTg4ZTM1NmU1ZGQ1MmM5YTc1
YjBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTk2LDYgKzk2LDcg
QEAKICAgICAgICdFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVD0xJywKICAgICAgICdFTkFCTEVfUVVP
VEE9MScsCiAgICAgICAnRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FPTEnLAorICAgICAg
J0VOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVURT0xJywKICAgICAgICdFTkFCTEVfUlVCWT0xJywK
ICAgICAgICdFTkFCTEVfU0FOREJPWD0xJywKICAgICAgICdFTkFCTEVfU0NSSVBURURfU1BFRUNI
PTEnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgK
aW5kZXggMWVmNDMxZmEzNjU2ZjVjMjc4ZGMyZTRkMzU2MTI0ZDExYjc2N2Q1MS4uYWI5MjM4ZDM3
NmE4ZjIwMmJjZDI0NmQ5NWNmZmU0MDg0ZTgxZWIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogICAgICAgICAvLyBGSVhNRTogRGVwcmVjYXRlIGFuZCByZXBsYWNlIHdpdGgg
V2ViVmVjdG9yPFdlYkVsZW1lbnQ+LgogICAgICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZ2V0TmFt
ZWRFbGVtZW50cyhjb25zdCBXZWJTdHJpbmcmLCBXZWJWZWN0b3I8V2ViTm9kZT4mKTsKICAgICAg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldEZvcm1Db250cm9sRWxlbWVudHMoV2ViVmVjdG9yPFdl
YkZvcm1Db250cm9sRWxlbWVudD4mKSBjb25zdDsKKyAgICAgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGRpc3BhdGNoQXV0b2NvbXBsZXRlRXZlbnQoYm9vbCk7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KICAgICAgICAgV2ViRm9ybUVsZW1lbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudD4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IDczOTgwYmY3ZjFkZDA4NTU4MGJjNTVkOGQ5YzU2NmYx
OTlkZWY2ZTQuLjBjYzM1ZDhhN2U3MDE4NDhjMjZjMjdkNmQ5MWE5YmM1ODU0NmMwNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtNDIw
LDYgKzQyMCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gUGxhdGZvcm06OmN1cnJlbnQoKS0+dXNlckFn
ZW50KCkgd2lsbCBiZSBjYWxsZWQgdG8gcHJvdmlkZSBvbmUuCiAgICAgdmlydHVhbCBXZWJTdHJp
bmcgdXNlckFnZW50T3ZlcnJpZGUoV2ViRnJhbWUqLCBjb25zdCBXZWJVUkwmIHVybCkgeyByZXR1
cm4gV2ViU3RyaW5nKCk7IH0KIAorICAgIC8vIEF1dG9jb21wbGV0ZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gUmVxdWVzdHMg
ZW1iZWRkZXIgc2hvdyBhbiBpbnRlcmFjdGl2ZSBhdXRvY29tcGxldGUuCisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RBdXRvY29tcGxldGUoV2ViRnJhbWUqLCBjb25zdCBXZWJGb3JtRWxlbWVudCYp
IHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYkZyYW1lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IGRhNjQ5OGQz
MDAzYzUzZjYwZGFhMTNhMGFhMGRlNmU2NjkwN2VlOWIuLmVkOGQ3NGMwOWFkMGY4YzBlMjI5MWVj
OWJiN2I4YjNmNjkxNjAwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3Q2xpZW50LmgKQEAgLTYwLDYgKzYwLDcgQEAgY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1l
bnU7CiBjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFdlYkZpbGVDaG9v
c2VyQ29tcGxldGlvbjsKIGNsYXNzIFdlYkZyYW1lOworY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBj
bGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZTsK
IGNsYXNzIFdlYkdlc3R1cmVFdmVudDsKQEAgLTQwMyw2ICs0MDQsMTEgQEAgcHVibGljOgogICAg
IC8vIEluZm9ybXMgdGhlIGJyb3dzZXIgdGhhdCB0aGUgZHJhZ2dhYmxlIHJlZ2lvbnMgaGF2ZSBi
ZWVuIHVwZGF0ZWQuCiAgICAgdmlydHVhbCB2b2lkIGRyYWdnYWJsZVJlZ2lvbnNDaGFuZ2VkKCkg
eyB9CiAKKyAgICAvLyBBdXRvY29tcGxldGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBJbmZvcm1zIHRoZSBicm93c2Vy
IHRoYXQgYW4gaW50ZXJhY3RpdmUgYXV0b2NvbXBsZXRlIGhhcyBiZWVuIHJlcXVlc3RlZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9jb21wbGV0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkZv
cm1FbGVtZW50JikgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVudCgpIHsgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwCmluZGV4IDQ5ZTc4MGJhZmE1NjkwOTk3YzMzNmU2MjczNGU3OWE4NTIzNWY1MmUu
LjQyNWVkMThjYTAxZDlkNDI4MzZhZDU3NGZiNDA1MTc3YTBkNmFiNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAt
MTY0OCw1ICsxNjQ4LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaFdp
bGxTdGFydFVzaW5nUGVlckNvbm5lY3Rpb25IYW5kbGVyKFJUQ1BlZXJDCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpyZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUp
Cit7CisgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPnJlcXVlc3RBdXRvY29tcGxldGUobV93ZWJG
cmFtZSwgV2ViRm9ybUVsZW1lbnQoZm9ybVN0YXRlLT5mb3JtKCkpKTsKK30KKyNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggMTJhNzZmZWVlMzUyNjA1YjkwNTc1MGE4NGU2
YzVmYjNiZGIxYTNiYy4uOTBkYzAyZWZmNDc1ZDQ2YmE3YTc2OWRhMDFhZGU4NGYyNzZhOTE2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmgKQEAgLTIyNSw2ICsyMjUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxTdGFydFVzaW5nUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciopIE9WRVJSSURFOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVT
VF9BVVRPQ09NUExFVEUpCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdXRvY29tcGxldGUoUGFz
c1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIHZvaWQgbWFrZURvY3VtZW50VmlldygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAKaW5kZXggY2RhZTY2MjBlOGIzNWU1OTZlNTM0MzUz
MWE3NTUzODFlNWZlN2U0ZS4uMTY0MDc2YTkxNDlkZWQ1MzZhZTMwMmE1MjU2Y2M5NWY4ODgxZDM0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcApA
QCAtMTAyLDYgKzEwMiwxMSBAQCB2b2lkIFdlYkZvcm1FbGVtZW50OjpnZXRGb3JtQ29udHJvbEVs
ZW1lbnRzKFdlYlZlY3RvcjxXZWJGb3JtQ29udHJvbEVsZW1lbnQ+JiByZQogICAgIHJlc3VsdC5h
c3NpZ24odGVtcFZlY3Rvcik7CiB9CiAKK3ZvaWQgV2ViRm9ybUVsZW1lbnQ6OmRpc3BhdGNoQXV0
b2NvbXBsZXRlRXZlbnQoYm9vbCBzdWNjZXNzKQoreworICAgIHVud3JhcDxIVE1MRm9ybUVsZW1l
bnQ+KCktPmRpc3BhdGNoQXV0b2NvbXBsZXRlRXZlbnQoc3VjY2Vzcyk7Cit9CisKIFdlYkZvcm1F
bGVtZW50OjpXZWJGb3JtRWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4m
IGUpCiAgICAgOiBXZWJFbGVtZW50KGUpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171054</attachid>
            <date>2012-10-26 17:09:51 -0700</date>
            <delta_ts>2012-10-26 20:31:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121026170822.patch</filename>
            <type>text/plain</type>
            <size>15845</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RjNTk3YjNmNzNhM2Rl
OWFjYjkwZDc0NTIwYTQ2YWJjY2QxNGYwOS4uYzUzZjk4NzJiYzgwNTVhMTc0OWY5NmQ4NDc2N2U1
MDQ3MDVhYzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEwLTI2ICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1F
bGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbXBsZW1l
bnRpbmcgYW4gaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBwcm9wb3NhbCBmb3IgaW50ZXJhY3RpdmUg
YXV0b2NvbXBsZXRlIG91dGxpbmVkIGluIHRoaXMgZW1haWw6CisgICAgICAgIGh0dHA6Ly9saXN0
cy53aGF0d2cub3JnL2h0ZGlnLmNnaS93aGF0d2ctd2hhdHdnLm9yZy8yMDEyLU9jdG9iZXIvMDM3
NzExLmh0bWwKKworICAgICAgICBUaGUgZ29hbCBvZiB0aGlzIHBhdGNoIGlzIGFsbG93IHdlYiBh
dXRob3JzIHRvIGNhbGwgZm9ybUVsZW1lbnQucmVxdWVzdEF1dG9jb21wbGV0ZSgpOyBhZnRlciBz
dWJzY3JpYmluZyBmb3IKKyAgICAgICAgYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZWVycm9yIGV2
ZW50cyBvbiBmb3JtRWxlbWVudC4gIElmIHRoZSBmb3JtJ3MgW2F1dG9jb21wbGV0ZV0gYXR0cmli
dXRlIGlzICJvZmYiIGFuCisgICAgICAgIGltbWVkaWF0ZSBlcnJvciBzaG91bGQgYmUgc2VudC4g
IE90aGVyd2lzZSwgYSByZXF1ZXN0IHdpbGwgYmUgaXNzdWVkIHRvIHRoZSBGcmFtZUxvYWRlckNs
aWVudCBhbmQgYW55b25lIHRoYXQKKyAgICAgICAgaW1wbGVtZW50cyByZXF1ZXN0QXV0b2NvbXBs
ZXRlIGNhbiBoYW5kbGUgdGhpcyBhcyB0aGV5IHNlZSBmaXQuICBBdCB0aGUgbW9tZW50LCB0aGUg
aW1wbGVtZW50YXRpb24gaW4gQ2hyb21lCisgICAgICAgIChodHRwczovL2NvZGVyZXZpZXcuY2hy
b21pdW0ub3JnLzExMjcwMDE4Lykgd2lsbCBzaW1wbHkgZGlzcGF0Y2ggYW4gZXJyb3IgdW50aWwg
dGhlIFVJIGlzIHJlYWR5LgorCisgICAgICAgIEN1cnJlbnRseSB0aGlzIGlzIGJlaGluZCB0aGUg
ZmVhdHVyZSBmbGFnIFJFUVVFU1RfQVVUT0NPTVBMRVRFLCB3aGljaCBpcyBkaXNhYmxlZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FdmVudE5hbWVz
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUVsZW1lbnQ6OmhhbmRsZUxvY2FsRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojp3ZWJraXRSZXF1ZXN0QXV0b2Nv
bXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZGlzcGF0Y2hBdXRv
Y29tcGxldGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAo
SFRNTEZvcm1FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5pZGw6Cisg
ICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlcXVlc3RBdXRvY29tcGxl
dGUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnQpOgorCiAyMDEyLTEwLTIxICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGYWN0b3Igc3R5bGVzaGVldCBpbnZhbGlk
YXRpb24gYW5hbHlzaXMgY29kZSBpbnRvIGEgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggY2ZhNGYzMjEzODQxNWUxYWJmYmFiNDFiNDU2NjFiNmJlMmQ4Y2RlMC4uZWMxMDkwOGI5
NjY2NmQwNTkzYmNiZjUzMjBkOWNlMDE4OGFiODUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0xMC0yNiAgRGFuIEJlYW0gIDxkYmVhbUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0b2Nv
bXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgaW1wbGVtZW50aW5nIGFuIGluaXRpYWwgdmVy
c2lvbiBvZiB0aGUgcHJvcG9zYWwgZm9yIGludGVyYWN0aXZlIGF1dG9jb21wbGV0ZSBvdXRsaW5l
ZCBpbiB0aGlzIGVtYWlsOgorICAgICAgICBodHRwOi8vbGlzdHMud2hhdHdnLm9yZy9odGRpZy5j
Z2kvd2hhdHdnLXdoYXR3Zy5vcmcvMjAxMi1PY3RvYmVyLzAzNzcxMS5odG1sCisKKyAgICAgICAg
VGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyBhbGxvdyB3ZWIgYXV0aG9ycyB0byBjYWxsIGZvcm1F
bGVtZW50LnJlcXVlc3RBdXRvY29tcGxldGUoKTsgYWZ0ZXIgc3Vic2NyaWJpbmcgZm9yCisgICAg
ICAgIGF1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVlcnJvciBldmVudHMgb24gZm9ybUVsZW1lbnQu
ICBJZiB0aGUgZm9ybSdzIFthdXRvY29tcGxldGVdIGF0dHJpYnV0ZSBpcyAib2ZmIiBhbgorICAg
ICAgICBpbW1lZGlhdGUgZXJyb3Igc2hvdWxkIGJlIHNlbnQuICBPdGhlcndpc2UsIGEgcmVxdWVz
dCB3aWxsIGJlIGlzc3VlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQgYW5kIGFueW9uZSB0aGF0
CisgICAgICAgIGltcGxlbWVudHMgcmVxdWVzdEF1dG9jb21wbGV0ZSBjYW4gaGFuZGxlIHRoaXMg
YXMgdGhleSBzZWUgZml0LiAgQXQgdGhlIG1vbWVudCwgdGhlIGltcGxlbWVudGF0aW9uIGluIENo
cm9tZQorICAgICAgICAoaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMTI3MDAxOC8p
IHdpbGwgc2ltcGx5IGRpc3BhdGNoIGFuIGVycm9yIHVudGlsIHRoZSBVSSBpcyByZWFkeS4KKwor
ICAgICAgICBDdXJyZW50bHkgdGhpcyBpcyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBSRVFVRVNU
X0FVVE9DT01QTEVURSwgd2hpY2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAq
IGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGljL1dlYkZvcm1FbGVtZW50Lmg6CisgICAg
ICAgIChXZWJGb3JtRWxlbWVudCk6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJGcmFtZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xp
ZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVu
dC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlZpZXdDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAg
KiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6cmVxdWVzdEF1dG9jb21wbGV0ZSk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAoRnJhbWVM
b2FkZXJDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGb3JtRWxlbWVudDo6ZGlzcGF0Y2hBdXRvY29tcGxldGVFdmVudCk6
CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTEwLTE5ICBZdXN1ZiBPenV5c2FsICA8eXVzdWZv
QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBEb3VibGUtdGFwIGRlZmF1bHRzIHRv
IHpvb20gKHNob3VsZCBvbmx5IGRvIHRoaXMgb24gQW5kcm9pZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCmluZGV4IDdhMDU1MmE0YTcwZGE5M2Q0MjAxMTdmZDIwMmU5MjA5YzNiNDcyMWEuLjA5Yjlh
ZTc2NmZiNWRiNDJmNzAyYzA1OTExOWQ5NjA3MWM0MjZlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaApAQCAtMjQzLDYgKzI0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAg
bWFjcm8od2Via2l0ZGV2aWNlcHJveGltaXR5KSBcCiAgICAgXAorICAgIG1hY3JvKGF1dG9jb21w
bGV0ZSkgXAorICAgIG1hY3JvKGF1dG9jb21wbGV0ZWVycm9yKSBcCisgICAgXAogCiAvLyBlbmQg
b2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KaW5kZXggNDU5MDc4ZjY0YzA4YmUyYmU0MzFiMDA4ODhkY2YzOWJkYjMw
Yjg2OS4uZWRlYTE1OTU3NzdjYmRkYjFlMzI5ZTlmZGEzYzJhNTg4ZmY3OTVkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE2NSw2ICsxNjUsOCBAQCBu
b3ZhbGlkYXRlCiBub3dyYXAKIG9iamVjdAogb25hYm9ydAorb25hdXRvY29tcGxldGUKK29uYXV0
b2NvbXBsZXRlZXJyb3IKIG9uYmVmb3JlY29weQogb25iZWZvcmVjdXQKIG9uYmVmb3JlbG9hZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDBhMjUxNDE1ZmJkNzBi
NGQyOGJlY2UwNmYzMGRiNTliZDIzYjBmZTUuLjQ3OWJjYjBkMzJmNjU4NDk0OWJiOWI4YjA0MWMw
MjExY2YxMTgxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAg
LTE1OCw3ICsxNTgsMTEgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUqIGluc2VydGlvblBvaW50KQogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmhhbmRsZUxv
Y2FsRXZlbnRzKEV2ZW50KiBldmVudCkKIHsKICAgICBOb2RlKiB0YXJnZXROb2RlID0gZXZlbnQt
PnRhcmdldCgpLT50b05vZGUoKTsKLSAgICBpZiAoZXZlbnQtPmV2ZW50UGhhc2UoKSAhPSBFdmVu
dDo6Q0FQVFVSSU5HX1BIQVNFICYmIHRhcmdldE5vZGUgJiYgdGFyZ2V0Tm9kZSAhPSB0aGlzICYm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCB8fCBldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50KSkgeworICAgIGlmIChldmVudC0+ZXZlbnRQ
aGFzZSgpICE9IEV2ZW50OjpDQVBUVVJJTkdfUEhBU0UgJiYgdGFyZ2V0Tm9kZSAmJiB0YXJnZXRO
b2RlICE9IHRoaXMgJiYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Ym1pdEV2ZW50
IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnJlc2V0RXZlbnQKKyNpZiBFTkFCTEUo
UkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmF1dG9jb21wbGV0ZUV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmF1dG9jb21wbGV0ZWVycm9yRXZlbnQKKyNlbmRpZgorICAgICkpIHsKICAgICAgICAgZXZlbnQt
PnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzg4LDYgKzM5
MiwzMCBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVzZXQoKQogICAgIG1faXNJblJlc2V0RnVu
Y3Rpb24gPSBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKK3Zv
aWQgSFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRlKCkKK3sKKyAgICBGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghc2hvdWxkQXV0b2NvbXBsZXRlKCkpIHsKKyAgICAgICAgZmluaXNo
UmVxdWVzdEF1dG9jb21wbGV0ZShhdXRvY29tcGxldGVlcnJvcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBTdHJpbmdQYWlyVmVjdG9yIGNvbnRyb2xOYW1lc0FuZFZhbHVlczsKKyAg
ICBnZXRUZXh0RmllbGRWYWx1ZXMoY29udHJvbE5hbWVzQW5kVmFsdWVzKTsKKyAgICBSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZSh0aGlzLCBjb250cm9sTmFt
ZXNBbmRWYWx1ZXMsIGRvY3VtZW50KCksIFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CisgICAgZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShmb3JtU3RhdGUu
cmVsZWFzZSgpKTsKK30KKwordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRv
Y29tcGxldGUoQXV0b2NvbXBsZXRlUmVzdWx0IHJlc3VsdCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUocmVzdWx0ID09IEF1dG9jb21wbGV0ZVN1Y2Nlc3MgPyBldmVudE5hbWVz
KCkuYXV0b2NvbXBsZXRlRXZlbnQgOiBldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlZXJyb3JFdmVu
dCwgdHJ1ZSwgZmFsc2UpKTsKK30KKyNlbmRpZgorCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCiB7CiAgICAgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gYWN0aW9uQXR0cikKQEAgLTQwOSw2ICs0MzcsMTAgQEAgdm9pZCBIVE1M
Rm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQog
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKICAgICBl
bHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucmVzZXRBdHRyKQogICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOworICAgIGVsc2UgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gb25hdXRvY29tcGxldGVBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVFdmVudCwgY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBlbHNlIGlmIChhdHRyaWJ1dGUu
bmFtZSgpID09IG9uYXV0b2NvbXBsZXRlZXJyb3JBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwogICAgIGVsc2UKICAgICAg
ICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCBiZjI4Y2NhM2ZiMmM2YWY1ODU3OTUxYjYyY2Jm
MDIzMjBlNGE5NmRhLi4xOWZjNmUwZDNhNmU2MjZmNmUwYjM3NzVhZWY5ZDljNzAyYWM4ODdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTk5LDYgKzk5LDEyIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpOwogCisjaWYgRU5BQkxFKFJFUVVFU1Rf
QVVUT0NPTVBMRVRFKQorICAgIGVudW0gQXV0b2NvbXBsZXRlUmVzdWx0IHsgQXV0b2NvbXBsZXRl
U3VjY2VzcywgYXV0b2NvbXBsZXRlZXJyb3IgfTsKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29tcGxl
dGUoKTsKKyAgICB2b2lkIGZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoQXV0b2NvbXBsZXRlUmVz
dWx0KTsKKyNlbmRpZgorCiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudEZvckFs
aWFzKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZvaWQgYWRkRWxlbWVudEFsaWFzKEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIGFsaWFzKTsKIApAQCAtMTA5
LDYgKzExNSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldFRleHRGaWVsZFZhbHVlcyhTdHJp
bmdQYWlyVmVjdG9yJiBmaWVsZE5hbWVzQW5kVmFsdWVzKSBjb25zdDsKIAorI2lmIEVOQUJMRShS
RVFVRVNUX0FVVE9DT01QTEVURSkKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGF1dG9jb21wbGV0ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhdXRv
Y29tcGxldGVlcnJvcik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBIVE1MRm9ybUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmlkbAppbmRleCA4NmE2Zjc0YzYzZmRmZDJkYWUwZGZjMDJmZDdjZDcyZjhm
ZWI1MTg4Li5kMzBkZTQ3OTI5NTY1NGFjN2E1N2Y0MGFjYmE1ZmUzZGQ2Zjg3ODI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCkBAIC00Miw0ICs0Miw4IEBACiAjZW5k
aWYKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgYm9vbGVhbiBjaGVja1ZhbGlkaXR5KCk7CisKKyAg
ICBbQ29uZGl0aW9uYWw9UkVRVUVTVF9BVVRPQ09NUExFVEVdIHZvaWQgcmVxdWVzdEF1dG9jb21w
bGV0ZSgpOworICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1SRVFVRVNUX0FVVE9DT01Q
TEVURV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hdXRvY29tcGxldGU7CisgICAgW05vdEVu
dW1lcmFibGUsIENvbmRpdGlvbmFsPVJFUVVFU1RfQVVUT0NPTVBMRVRFXSBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmF1dG9jb21wbGV0ZWVycm9yOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggYzliM2YzYTZlMTA1MWYwZTk3MzVmNjVkNGRlYjYwZjc5Mjk3
ZjA5Mi4uOWYwZGExN2Q2NDQ0YTI1MTU5NWY0NDkyNmMxYzMzM2FjNjRmMGYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTE5NCw0ICsxOTQsMTAgQEAgUGFzc093
blB0cjxDb250ZXh0TWVudT4gRW1wdHlDb250ZXh0TWVudUNsaWVudDo6Y3VzdG9taXplTWVudShQ
YXNzT3duUHRyPENvbnRleHQKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9B
VVRPQ09NUExFVEUpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RBdXRv
Y29tcGxldGUoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQoreworfQorI2VuZGlmCisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5YzJjMjNkM2UwOGE4ZmQxNzhlMTg1YjU4
YWUxY2E5NTFhMmM0MDQ1Li5hY2JiNDVmNzQ2MDE2YWM1MmFhN2UxYzEyZmViOTFkMjQyYzIzNjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0zODIsNiArMzgyLDEwIEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoSW50ZW50KFBhc3NSZWZQdHI8SW50ZW50UmVxdWVzdD4pIE9WRVJSSURFOwogI2VuZGlmCisK
KyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgdmlydHVhbCB2b2lkIGRpZFJl
cXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSBPVkVSUklERTsKKyNlbmRp
ZgogfTsKIAogY2xhc3MgRW1wdHlUZXh0Q2hlY2tlckNsaWVudCA6IHB1YmxpYyBUZXh0Q2hlY2tl
ckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDRmMjM4OGFmNWZiYjRjNWQ2NWMzMGJmZjg4ODQ1NTRjN2M4YjljMGQuLmI0YWJmODhmMzU5OTYx
Yjg5YWVmODc2MDU1YTQ5Nzg1NmNmMTNjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC0zNDksNiArMzQ5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0aW9uSGFuZGxlcihSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIqKSB7IH0KICNlbmRpZgorCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4pID0gMDsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCAyZDE4Yzc3M2Q0YzlhYWU3YjdhODMy
NzZhZDI4ODA5OGNjOWE5ODAxLi41ZWY4OGRlODAzMTllYTI4MjA2MTRkYzk0MzkxMDM2MjgxNmE2
ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC05Niw2ICs5Niw4IEBA
CiAgICAgICAnRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQ9MScsCiAgICAgICAnRU5BQkxFX1FVT1RB
PTEnLAogICAgICAgJ0VOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRT0xJywKKyAgICAgICMg
VE9ETyhkYmVhbSk6IHJlLWVuYWJsZSBhZnRlciBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0u
b3JnLzExMjcwMDE4LgorICAgICAgIyAnRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFPTEnLAog
ICAgICAgJ0VOQUJMRV9SVUJZPTEnLAogICAgICAgJ0VOQUJMRV9TQU5EQk9YPTEnLAogICAgICAg
J0VOQUJMRV9TQ1JJUFRFRF9TUEVFQ0g9MScsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRm9ybUVsZW1lbnQuaAppbmRleCAxZWY0MzFmYTM2NTZmNWMyNzhkYzJlNGQzNTYx
MjRkMTFiNzY3ZDUxLi40MjBkNGQ2YTM4OGE0MmJmN2ExOWMxOWRmZjc5OTA1ODc3NjhkOTY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKQEAg
LTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIC8vIEZJWE1FOiBEZXBy
ZWNhdGUgYW5kIHJlcGxhY2Ugd2l0aCBXZWJWZWN0b3I8V2ViRWxlbWVudD4uCiAgICAgICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBnZXROYW1lZEVsZW1lbnRzKGNvbnN0IFdlYlN0cmluZyYsIFdlYlZl
Y3RvcjxXZWJOb2RlPiYpOwogICAgICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZ2V0Rm9ybUNvbnRy
b2xFbGVtZW50cyhXZWJWZWN0b3I8V2ViRm9ybUNvbnRyb2xFbGVtZW50PiYpIGNvbnN0OworICAg
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShib29sKTsK
IAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgICAgICBXZWJGb3JtRWxlbWVudChjb25z
dCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5kZXggNzM5ODBiZjdm
MWRkMDg1NTgwYmM1NWQ4ZDljNTY2ZjE5OWRlZjZlNC4uZDdmOTNkZmU3ODgxMGE2MjM3OTJjNmZh
MzFhMDAxYWYzOWY3OGY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCkBAIC00MjAsNiArNDIwLDExIEBAIHB1YmxpYzoKICAgICAvLyBQbGF0
Zm9ybTo6Y3VycmVudCgpLT51c2VyQWdlbnQoKSB3aWxsIGJlIGNhbGxlZCB0byBwcm92aWRlIG9u
ZS4KICAgICB2aXJ0dWFsIFdlYlN0cmluZyB1c2VyQWdlbnRPdmVycmlkZShXZWJGcmFtZSosIGNv
bnN0IFdlYlVSTCYgdXJsKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQogCisgICAgLy8gQXV0b2Nv
bXBsZXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyAgICAvLyBSZXF1ZXN0cyBlbWJlZGRlciBzaG93IGFuIGludGVyYWN0aXZlIGF1dG9j
b21wbGV0ZS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShXZWJGcmFt
ZSosIGNvbnN0IFdlYkZvcm1FbGVtZW50JikgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViRnJh
bWVDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA0OWU3ODBiYWZhNTY5MDk5N2MzMzZlNjI3
MzRlNzlhODUyMzVmNTJlLi4xMjExODI4MDlmOWJkNDEwZjA3ZDEyMzViOTgwMWM0ODlhNTk2YjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKQEAgLTE2NDgsNSArMTY0OCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6ZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0aW9uSGFuZGxlcihSVENQZWVy
QwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4gZm9ybVN0YXRlKQoreworICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZXF1
ZXN0QXV0b2NvbXBsZXRlKG1fd2ViRnJhbWUsIFdlYkZvcm1FbGVtZW50KGZvcm1TdGF0ZS0+Zm9y
bSgpKSk7Cit9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4IDEyYTc2
ZmVlZTM1MjYwNWI5MDU3NTBhODRlNmM1ZmIzYmRiMWEzYmMuLjY1ODljMzdiYjc5ZTU2NDFkZjAz
YTJhZWRjNGJmYmQwZmFhOGFlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCkBAIC0yMjUsNiArMjI1LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcihXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqKSBPVkVSUklERTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZF
UlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCmluZGV4
IGNkYWU2NjIwZThiMzVlNTk2ZTUzNDM1MzFhNzU1MzgxZTVmZTdlNGUuLjU4ODYxZTBmZDQ2YzNm
YmFmNmYyNjAxZmRlMGQ0MzAwMGI4NzVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGb3JtRWxlbWVudC5jcHAKQEAgLTEwMiw2ICsxMDIsMTMgQEAgdm9pZCBXZWJGb3Jt
RWxlbWVudDo6Z2V0Rm9ybUNvbnRyb2xFbGVtZW50cyhXZWJWZWN0b3I8V2ViRm9ybUNvbnRyb2xF
bGVtZW50PiYgcmUKICAgICByZXN1bHQuYXNzaWduKHRlbXBWZWN0b3IpOwogfQogCit2b2lkIFdl
YkZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKGJvb2wgc3VjY2VzcykKK3sK
KyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgdW53cmFwPEhUTUxGb3JtRWxl
bWVudD4oKS0+ZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShzdWNjZXNzID8gSFRNTEZvcm1FbGVt
ZW50OjpBdXRvY29tcGxldGVTdWNjZXNzIDogSFRNTEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVG
YWlsKTsKKyNlbmRpZgorfQorCiBXZWJGb3JtRWxlbWVudDo6V2ViRm9ybUVsZW1lbnQoY29uc3Qg
UGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiBlKQogICAgIDogV2ViRWxlbWVudChlKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171072</attachid>
            <date>2012-10-26 20:25:42 -0700</date>
            <delta_ts>2012-10-29 18:38:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121026202413.patch</filename>
            <type>text/plain</type>
            <size>17757</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RjNTk3YjNmNzNhM2Rl
OWFjYjkwZDc0NTIwYTQ2YWJjY2QxNGYwOS4uZDRhZjRjODZiNjcwZTFjYTQ0OWU2ZWVkZjMwNmM4
YTRiZmQ5YTdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEwLTI2ICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1F
bGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGltcGxlbWVu
dGluZyBhbiBpbml0aWFsIHZlcnNpb24gb2YgdGhlIHByb3Bvc2FsIGZvciBpbnRlcmFjdGl2ZSBh
dXRvY29tcGxldGUgb3V0bGluZWQgaW4gdGhpcyBlbWFpbDoKKyAgICAgICAgaHR0cDovL2xpc3Rz
LndoYXR3Zy5vcmcvaHRkaWcuY2dpL3doYXR3Zy13aGF0d2cub3JnLzIwMTItT2N0b2Jlci8wMzc3
MTEuaHRtbAorCisgICAgICAgIFRoZSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgYWxsb3cgd2ViIGF1
dGhvcnMgdG8gY2FsbCBmb3JtRWxlbWVudC5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7IGFmdGVyIHN1
YnNjcmliaW5nIGZvcgorICAgICAgICBhdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlZXJyb3IgZXZl
bnRzIG9uIGZvcm1FbGVtZW50LiAgSWYgdGhlIGZvcm0ncyBbYXV0b2NvbXBsZXRlXSBhdHRyaWJ1
dGUgaXMgIm9mZiIgYW4KKyAgICAgICAgaW1tZWRpYXRlIGVycm9yIHNob3VsZCBiZSBzZW50LiAg
T3RoZXJ3aXNlLCBhIHJlcXVlc3Qgd2lsbCBiZSBpc3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xp
ZW50IGFuZCBhbnlvbmUgdGhhdAorICAgICAgICBpbXBsZW1lbnRzIHJlcXVlc3RBdXRvY29tcGxl
dGUgY2FuIGhhbmRsZSB0aGlzIGFzIHRoZXkgc2VlIGZpdC4gIEF0IHRoZSBtb21lbnQsIHRoZSBp
bXBsZW1lbnRhdGlvbiBpbiBDaHJvbWUKKyAgICAgICAgKGh0dHBzOi8vY29kZXJldmlldy5jaHJv
bWl1bS5vcmcvMTEyNzAwMTgvKSB3aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1bnRpbCB0
aGUgVUkgaXMgcmVhZHkuCisKKyAgICAgICAgQ3VycmVudGx5IHRoaXMgaXMgYmVoaW5kIHRoZSBm
ZWF0dXJlIGZsYWcgUkVRVUVTVF9BVVRPQ09NUExFVEUsIHdoaWNoIGlzIGRpc2FibGVkLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudDo6aGFuZGxlTG9jYWxFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlcXVlc3RBdXRvY29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0
b2NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgIChIVE1M
Rm9ybUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVxdWVzdEF1dG9jb21wbGV0
ZSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoRW1wdHlGcmFt
ZUxvYWRlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgIChGcmFtZUxvYWRlckNsaWVudCk6CisKIDIwMTItMTAtMjEgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZhY3RvciBzdHlsZXNoZWV0IGludmFsaWRh
dGlvbiBhbmFseXNpcyBjb2RlIGludG8gYSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBjZmE0ZjMyMTM4NDE1ZTFhYmZiYWI0MWI0NTY2MWI2YmUyZDhjZGUwLi5jZjE5OWY3NDI0
MzJmNzYzNDY2YzlmYzVkMTE2MGY4OTM5ODQxMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTEwLTI2ICBEYW4gQmVhbSAgPGRiZWFtQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1FbGVtZW50I3JlcXVlc3RBdXRvY29t
cGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGltcGxlbWVudGluZyBhbiBpbml0aWFsIHZlcnNp
b24gb2YgdGhlIHByb3Bvc2FsIGZvciBpbnRlcmFjdGl2ZSBhdXRvY29tcGxldGUgb3V0bGluZWQg
aW4gdGhpcyBlbWFpbDoKKyAgICAgICAgaHR0cDovL2xpc3RzLndoYXR3Zy5vcmcvaHRkaWcuY2dp
L3doYXR3Zy13aGF0d2cub3JnLzIwMTItT2N0b2Jlci8wMzc3MTEuaHRtbAorCisgICAgICAgIFRo
ZSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgYWxsb3cgd2ViIGF1dGhvcnMgdG8gY2FsbCBmb3JtRWxl
bWVudC5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7IGFmdGVyIHN1YnNjcmliaW5nIGZvcgorICAgICAg
ICBhdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlZXJyb3IgZXZlbnRzIG9uIGZvcm1FbGVtZW50LiAg
SWYgdGhlIGZvcm0ncyBbYXV0b2NvbXBsZXRlXSBhdHRyaWJ1dGUgaXMgIm9mZiIgYW4KKyAgICAg
ICAgaW1tZWRpYXRlIGVycm9yIHNob3VsZCBiZSBzZW50LiAgT3RoZXJ3aXNlLCBhIHJlcXVlc3Qg
d2lsbCBiZSBpc3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50IGFuZCBhbnlvbmUgdGhhdAor
ICAgICAgICBpbXBsZW1lbnRzIHJlcXVlc3RBdXRvY29tcGxldGUgY2FuIGhhbmRsZSB0aGlzIGFz
IHRoZXkgc2VlIGZpdC4gIEF0IHRoZSBtb21lbnQsIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBDaHJv
bWUKKyAgICAgICAgKGh0dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTEyNzAwMTgvKSB3
aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1bnRpbCB0aGUgVUkgaXMgcmVhZHkuCisKKyAg
ICAgICAgQ3VycmVudGx5IHRoaXMgaXMgYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgUkVRVUVTVF9B
VVRPQ09NUExFVEUsIHdoaWNoIGlzIGRpc2FibGVkLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lw
aToKKyAgICAgICAgKiBwdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJBdXRvZmlsbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9maWxsQ2xpZW50OjpkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAgKiBwdWJsaWMv
V2ViRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJlcXVlc3RB
dXRvY29tcGxldGUpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAg
ICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYkZvcm1FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RB
dXRvY29tcGxldGUpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0xMC0xOSAgWXVzdWYgT3p1
eXNhbCAgPHl1c3Vmb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG91YmxlLXRh
cCBkZWZhdWx0cyB0byB6b29tIChzaG91bGQgb25seSBkbyB0aGlzIG9uIEFuZHJvaWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAppbmRleCA3YTA1NTJhNGE3MGRhOTNkNDIwMTE3ZmQyMDJlOTIwOWMz
YjQ3MjFhLi4wOWI5YWU3NjZmYjVkYjQyZjcwMmMwNTkxMTlkOTYwNzFjNDI2ZWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKQEAgLTI0Myw2ICsyNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgXAogICAgIG1hY3JvKHdlYmtpdGRldmljZXByb3hpbWl0eSkgXAogICAgIFwKKyAgICBt
YWNybyhhdXRvY29tcGxldGUpIFwKKyAgICBtYWNybyhhdXRvY29tcGxldGVlcnJvcikgXAorICAg
IFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDQ1OTA3OGY2NGMwOGJlMmJlNDMxYjAw
ODg4ZGNmMzliZGIzMGI4NjkuLmVkZWExNTk1Nzc3Y2JkZGIxZTMyOWU5ZmRhM2MyYTU4OGZmNzk1
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xNjUs
NiArMTY1LDggQEAgbm92YWxpZGF0ZQogbm93cmFwCiBvYmplY3QKIG9uYWJvcnQKK29uYXV0b2Nv
bXBsZXRlCitvbmF1dG9jb21wbGV0ZWVycm9yCiBvbmJlZm9yZWNvcHkKIG9uYmVmb3JlY3V0CiBv
bmJlZm9yZWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAw
YTI1MTQxNWZiZDcwYjRkMjhiZWNlMDZmMzBkYjU5YmQyM2IwZmU1Li4wMTVhMzk4ZmQ3ZjA5Y2Jm
OGIyODg0ZDllYTJkZDYxMWM0Yzk5Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCkBAIC0xNTgsNyArMTU4LDExIEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1v
dmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHZvaWQgSFRNTEZvcm1FbGVt
ZW50OjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpCiB7CiAgICAgTm9kZSogdGFyZ2V0
Tm9kZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCk7Ci0gICAgaWYgKGV2ZW50LT5ldmVudFBo
YXNlKCkgIT0gRXZlbnQ6OkNBUFRVUklOR19QSEFTRSAmJiB0YXJnZXROb2RlICYmIHRhcmdldE5v
ZGUgIT0gdGhpcyAmJiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VibWl0RXZlbnQg
fHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkucmVzZXRFdmVudCkpIHsKKyAgICBpZiAo
ZXZlbnQtPmV2ZW50UGhhc2UoKSAhPSBFdmVudDo6Q0FQVFVSSU5HX1BIQVNFICYmIHRhcmdldE5v
ZGUgJiYgdGFyZ2V0Tm9kZSAhPSB0aGlzICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5zdWJtaXRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50
CisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgICAgICB8fCBldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVFdmVudCB8fCBldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50CisjZW5kaWYKKyAgICApKSB7CiAg
ICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTM4OCw2ICszOTIsMzAgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0KCkKICAgICBt
X2lzSW5SZXNldEZ1bmN0aW9uID0gZmFsc2U7CiB9CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRP
Q09NUExFVEUpCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVxdWVzdEF1dG9jb21wbGV0ZSgpCit7
CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKSB7Cisg
ICAgICAgIGZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoQXV0b2NvbXBsZXRlRXJyb3IpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nUGFpclZlY3RvciBjb250cm9sTmFtZXNB
bmRWYWx1ZXM7CisgICAgZ2V0VGV4dEZpZWxkVmFsdWVzKGNvbnRyb2xOYW1lc0FuZFZhbHVlcyk7
CisgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0gRm9ybVN0YXRlOjpjcmVhdGUodGhp
cywgY29udHJvbE5hbWVzQW5kVmFsdWVzLCBkb2N1bWVudCgpLCBTdWJtaXR0ZWRCeUphdmFTY3Jp
cHQpOworICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZFJlcXVlc3RBdXRvY29tcGxl
dGUoZm9ybVN0YXRlLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgSFRNTEZvcm1FbGVtZW50OjpmaW5p
c2hSZXF1ZXN0QXV0b2NvbXBsZXRlKEF1dG9jb21wbGV0ZVJlc3VsdCByZXN1bHQpCit7CisgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKHJlc3VsdCA9PSBBdXRvY29tcGxldGVTdWNjZXNz
ID8gZXZlbnROYW1lcygpLmF1dG9jb21wbGV0ZUV2ZW50IDogZXZlbnROYW1lcygpLmF1dG9jb21w
bGV0ZWVycm9yRXZlbnQsIHRydWUsIGZhbHNlKSk7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogewog
ICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGFjdGlvbkF0dHIpCkBAIC00MDksNiArNDM3LDEw
IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuc3VibWl0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmli
dXRlKSk7CiAgICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnJlc2V0QXR0cikKICAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmVzZXRFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYXV0b2NvbXBsZXRlQXR0cikKKyAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7CisgICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmF1dG9jb21wbGV0ZWVycm9yQXR0cikKKyAgICAgICAg
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlZXJyb3JF
dmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKICAg
ICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggYmYyOGNjYTNmYjJjNmFm
NTg1Nzk1MWI2MmNiZjAyMzIwZTRhOTZkYS4uYjVlOWY2ZDQ2ZjcxNDI2OTMyNDUyMGM3MzViMDAz
YzBiYjgwYzllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC05OSw2
ICs5OSwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGNoZWNrVmFsaWRpdHkoKTsKIAorI2lmIEVO
QUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyAgICBlbnVtIEF1dG9jb21wbGV0ZVJlc3VsdCB7
IEF1dG9jb21wbGV0ZVN1Y2Nlc3MsIEF1dG9jb21wbGV0ZUVycm9yIH07CisgICAgdm9pZCByZXF1
ZXN0QXV0b2NvbXBsZXRlKCk7CisgICAgdm9pZCBmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKEF1
dG9jb21wbGV0ZVJlc3VsdCk7CisjZW5kaWYKKwogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQq
IGVsZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGFkZEVsZW1l
bnRBbGlhcyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBhbGlh
cyk7CiAKQEAgLTEwOSw2ICsxMTUsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRUZXh0Rmll
bGRWYWx1ZXMoU3RyaW5nUGFpclZlY3RvciYgZmllbGROYW1lc0FuZFZhbHVlcykgY29uc3Q7CiAK
KyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihhdXRvY29tcGxldGUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoYXV0b2NvbXBsZXRlZXJyb3IpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSFRN
TEZvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKaW5kZXggODZhNmY3NGM2M2ZkZmQyZGFlMGRm
YzAyZmQ3Y2Q3MmY4ZmViNTE4OC4uZDMwZGU0NzkyOTU2NTRhYzdhNTdmNDBhY2JhNWZlM2RkNmY4
NzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbApAQCAtNDIsNCAr
NDIsOCBAQAogI2VuZGlmCiAgICAgdm9pZCByZXNldCgpOwogICAgIGJvb2xlYW4gY2hlY2tWYWxp
ZGl0eSgpOworCisgICAgW0NvbmRpdGlvbmFsPVJFUVVFU1RfQVVUT0NPTVBMRVRFXSB2b2lkIHJl
cXVlc3RBdXRvY29tcGxldGUoKTsKKyAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9UkVR
VUVTVF9BVVRPQ09NUExFVEVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYXV0b2NvbXBsZXRl
OworICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1SRVFVRVNUX0FVVE9DT01QTEVURV0g
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hdXRvY29tcGxldGVlcnJvcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGM5YjNmM2E2ZTEwNTFmMGU5NzM1ZjY1
ZDRkZWI2MGY3OTI5N2YwOTIuLjlmMGRhMTdkNjQ0NGEyNTE1OTVmNDQ5MjZjMWMzMzNhYzY0ZjBm
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xOTQsNCArMTk0
LDEwIEBAIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IEVtcHR5Q29udGV4dE1lbnVDbGllbnQ6OmN1
c3RvbWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0CiAjZW5kaWYKICNlbmRpZgogCisjaWYgRU5B
QkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3sKK30KKyNlbmRp
ZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggOWMyYzIzZDNlMDhh
OGZkMTc4ZTE4NWI1OGFlMWNhOTUxYTJjNDA0NS4uYWNiYjQ1Zjc0NjAxNmFjNTJhYTdlMWMxMmZl
YjkxZDI0MmMyMzY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzgy
LDYgKzM4MiwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+KSBPVkVSUklE
RTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIHZpcnR1
YWwgdm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgT1ZF
UlJJREU7CisjZW5kaWYKIH07CiAKIGNsYXNzIEVtcHR5VGV4dENoZWNrZXJDbGllbnQgOiBwdWJs
aWMgVGV4dENoZWNrZXJDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCA0ZjIzODhhZjVmYmI0YzVkNjVjMzBiZmY4ODg0NTU0YzdjOGI5YzBkLi5i
NGFiZjg4ZjM1OTk2MWI4OWFlZjg3NjA1NWE0OTc4NTZjZjEzYzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzQ5LDYgKzM0OSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFN0YXJ0VXNpbmdQZWVyQ29ubmVjdGlvbkhhbmRsZXIoUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyKikgeyB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9D
T01QTEVURSkKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFz
c1JlZlB0cjxGb3JtU3RhdGU+KSA9IDA7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggMmQxOGM3NzNk
NGM5YWFlN2I3YTgzMjc2YWQyODgwOThjYzlhOTgwMS4uN2E3NWUzYTEwYmNlZDhjNTEwNWNmNmRh
YjRkOWMwMzBhYTdlNWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0
dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAt
OTYsNiArOTYsOCBAQAogICAgICAgJ0VOQUJMRV9QUk9HUkVTU19FTEVNRU5UPTEnLAogICAgICAg
J0VOQUJMRV9RVU9UQT0xJywKICAgICAgICdFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUU9
MScsCisgICAgICAjIEZJWE1FOiByZS1lbmFibGUgYWZ0ZXIgaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xMTI3MDAxOC4KKyAgICAgICMgJ0VOQUJMRV9SRVFVRVNUX0FVVE9DT01QTEVU
RT0xJywKICAgICAgICdFTkFCTEVfUlVCWT0xJywKICAgICAgICdFTkFCTEVfU0FOREJPWD0xJywK
ICAgICAgICdFTkFCTEVfU0NSSVBURURfU1BFRUNIPTEnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmgKaW5kZXggN2I0OGY1N2RiZTQ2ZWEz
N2VmNmY0OTk0YzUxM2NiMmY5M2Q2ODdmYy4uNzQyNGMzZmVjZGJhOWZmYTcyODZlMWI3ZWVmM2Rm
OGM5NjBiZmQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QXV0b2ZpbGxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJB
dXRvZmlsbENsaWVudC5oCkBAIC0zMyw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBXZWJGb3JtRWxlbWVudDsKK2NsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViSW5wdXRF
bGVtZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk5vZGU7CkBAIC03NSw2
ICs3Nyw5IEBAIHB1YmxpYzoKICAgICAvLyBrZXlzIHRvIG5hdmlnYXRlIG91dHNpZGUgdGhlIHJh
bmdlIG9mIHBvc3NpYmxlIHNlbGVjdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyQXV0
b2ZpbGxTZWxlY3Rpb24oY29uc3QgV2ViTm9kZSYpIHsgfQogCisgICAgLy8gSW5mb3JtcyB0aGUg
YnJvd3NlciBhbiBpbnRlcmFjdGl2ZSBhdXRvY29tcGxldGUgaGFzIGJlZW4gcmVxdWVzdGVkLgor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFdlYkZyYW1lKiwgY29uc3Qg
V2ViRm9ybUVsZW1lbnQmKSB7IH0KKwogICAgIC8vIEluc3RydWN0cyB0aGUgYnJvd3NlciB0byBy
ZW1vdmUgdGhlIEF1dG9jb21wbGV0ZSBlbnRyeSBzcGVjaWZpZWQgZnJvbQogICAgIC8vIGl0cyBE
Qi4KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbihjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9y
bUVsZW1lbnQuaAppbmRleCAxZWY0MzFmYTM2NTZmNWMyNzhkYzJlNGQzNTYxMjRkMTFiNzY3ZDUx
Li4xYjMyYmRmMDAzMWNkOGRhNDk2YTVmMGYwZmU5M2EyZTcyYTMzOTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKQEAgLTY5LDYgKzY5LDkg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJVF9FWFBPUlQgdm9pZCBnZXROYW1l
ZEVsZW1lbnRzKGNvbnN0IFdlYlN0cmluZyYsIFdlYlZlY3RvcjxXZWJOb2RlPiYpOwogICAgICAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgZ2V0Rm9ybUNvbnRyb2xFbGVtZW50cyhXZWJWZWN0b3I8V2Vi
Rm9ybUNvbnRyb2xFbGVtZW50PiYpIGNvbnN0OwogCisgICAgICAgIGVudW0gQXV0b2NvbXBsZXRl
UmVzdWx0IHsgQXV0b2NvbXBsZXRlU3VjY2VzcywgQXV0b2NvbXBsZXRlRXJyb3IgfTsKKyAgICAg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoV2ViRm9ybUVs
ZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdCk7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
ICAgICAgICAgV2ViRm9ybUVsZW1lbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudD4mKTsKICAgICAgICAgV2ViRm9ybUVsZW1lbnQmIG9wZXJhdG9yPShjb25z
dCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA5
NWU4YjYwN2QyMjhmOGJlODVjZGNlOWEzMWIxODkzNzExM2Q1MmJmLi43MzZjNmE1ZGZlY2MxMjdi
NDE5ZWFhOTBiNGVmNDY5NWUwZGE4M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIkZvbnRTbW9vdGhpbmdNb2RlLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29y
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKQEAgLTg2LDYgKzg3LDcgQEAK
ICNpbmNsdWRlICJXZWJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJGaWxlSW5mby5oIgogI2lu
Y2x1ZGUgIldlYkZvbnREZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJXZWJJREJDdXJzb3IuaCIKQEAgLTYyOCwzICs2MzAs
OCBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlVSTFJlc3BvbnNlOjpIVFRQXzFf
MSwgUmVzb3VyY2VSZXNwb25zZTo6SFRUUF8xXwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJNZWRpYVBsYXllcjo6Q09SU01vZGVVbnNwZWNpZmllZCwgTWVkaWFQbGF5ZXJDbGllbnQ6
OlVuc3BlY2lmaWVkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5
ZXI6OkNPUlNNb2RlQW5vbnltb3VzLCBNZWRpYVBsYXllckNsaWVudDo6QW5vbnltb3VzKTsKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlVXNlQ3Jl
ZGVudGlhbHMsIE1lZGlhUGxheWVyQ2xpZW50OjpVc2VDcmVkZW50aWFscyk7CisKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YkZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVTdWNjZXNzLCBIVE1MRm9ybUVsZW1lbnQ6OkF1dG9j
b21wbGV0ZVN1Y2Nlc3MpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb3JtRWxl
bWVudDo6QXV0b2NvbXBsZXRlRXJyb3IsIEhUTUxGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlRXJy
b3IpOworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA0OWU3ODBiYWZhNTY5MDk5N2MzMzZlNjI3MzRlNzlh
ODUyMzVmNTJlLi45YTcxYjM3MTk1OTQ0NzVmNmQ0MTk0NWM2NTA4Mzc5N2I5MWMwZGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJXZWJBdXRv
ZmlsbENsaWVudC5oIgogI2luY2x1ZGUgIldlYkRPTUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGF0
YVNvdXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgpAQCAt
MTY0OCw1ICsxNjQ5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaFdp
bGxTdGFydFVzaW5nUGVlckNvbm5lY3Rpb25IYW5kbGVyKFJUQ1BlZXJDCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3Rh
dGUpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPnZpZXdJbXBsKCkgJiYgbV93ZWJGcmFtZS0+dmll
d0ltcGwoKS0+YXV0b2ZpbGxDbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+dmlld0ltcGwo
KS0+YXV0b2ZpbGxDbGllbnQoKS0+ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShtX3dlYkZyYW1lLCBX
ZWJGb3JtRWxlbWVudChmb3JtU3RhdGUtPmZvcm0oKSkpOworfQorI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuaAppbmRleCAxMmE3NmZlZWUzNTI2MDViOTA1NzUwYTg0ZTZjNWZiM2Jk
YjFhM2JjLi42NTg5YzM3YmI3OWU1NjQxZGYwM2EyYWVkYzRiZmJkMGZhYThhZTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApA
QCAtMjI1LDYgKzIyNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bFN0YXJ0VXNpbmdQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyKikgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9D
T01QTEVURSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZvcm1FbGVtZW50LmNwcAppbmRleCBjZGFlNjYyMGU4YjM1ZTU5NmU1MzQzNTMxYTc1
NTM4MWU1ZmU3ZTRlLi5mNmE5YTY3ZjA2YjMzYWRmNzMwN2Q0NDBjZmY4ODUzZDMyZWUyNGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCkBAIC0x
MDIsNiArMTAyLDEzIEBAIHZvaWQgV2ViRm9ybUVsZW1lbnQ6OmdldEZvcm1Db250cm9sRWxlbWVu
dHMoV2ViVmVjdG9yPFdlYkZvcm1Db250cm9sRWxlbWVudD4mIHJlCiAgICAgcmVzdWx0LmFzc2ln
bih0ZW1wVmVjdG9yKTsKIH0KIAordm9pZCBXZWJGb3JtRWxlbWVudDo6ZmluaXNoUmVxdWVzdEF1
dG9jb21wbGV0ZShXZWJGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0IHJlc3VsdCkKK3sK
KyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgdW53cmFwPEhUTUxGb3JtRWxl
bWVudD4oKS0+ZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShzdGF0aWNfY2FzdDxIVE1MRm9ybUVs
ZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdD4ocmVzdWx0KSk7CisjZW5kaWYKK30KKwogV2ViRm9y
bUVsZW1lbnQ6OldlYkZvcm1FbGVtZW50KGNvbnN0IFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50
PiYgZSkKICAgICA6IFdlYkVsZW1lbnQoZSkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171356</attachid>
            <date>2012-10-29 18:35:56 -0700</date>
            <delta_ts>2012-11-01 16:34:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121029183422.patch</filename>
            <type>text/plain</type>
            <size>18973</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkZWRlOTdkNjg4Yjc1
YTM0MDdlMDIwYWZiOGNlZDYxNGI4YmMzMS4uNzZjZjdlZWYwNmQ2ZGY2YjlmZmQ1MDA3ZjU4M2Yz
MTA0YTVhY2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTI5ICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1F
bGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFuIGlu
aXRpYWwgdmVyc2lvbiBvZiB0aGUgcHJvcG9zYWwgZm9yIGludGVyYWN0aXZlIGF1dG9jb21wbGV0
ZSBvdXRsaW5lZCBpbiB0aGlzIGVtYWlsOgorICAgICAgICBodHRwOi8vbGlzdHMud2hhdHdnLm9y
Zy9odGRpZy5jZ2kvd2hhdHdnLXdoYXR3Zy5vcmcvMjAxMi1PY3RvYmVyLzAzNzcxMS5odG1sCisK
KyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyBhbGxvdyB3ZWIgYXV0aG9ycyB0byBj
YWxsIGZvcm1FbGVtZW50LnJlcXVlc3RBdXRvY29tcGxldGUoKTsgYWZ0ZXIgc3Vic2NyaWJpbmcg
Zm9yCisgICAgICAgIGF1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVlcnJvciBldmVudHMgb24gZm9y
bUVsZW1lbnQuICBJZiB0aGUgZm9ybSdzIFthdXRvY29tcGxldGVdIGF0dHJpYnV0ZSBpcyAib2Zm
IiBhbgorICAgICAgICBlcnJvciB3aWxsIGJlIHNlbnQuICBPdGhlcndpc2UsIGEgcmVxdWVzdCB3
aWxsIGJlIGlzc3VlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQuIEF0IHRoZSBtb21lbnQsIHRo
ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBDaHJvbWUgKGh0dHBzOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMTEyNzAwMTgvKSB3aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1bnRp
bCB0aGUKKyAgICAgICAgVUkgb24gQ2hyb21lJ3Mgc2lkZSBpcyBidWlsdC4KKworICAgICAgICBD
dXJyZW50bHkgdGhpcyBpcyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBSRVFVRVNUX0FVVE9DT01Q
TEVURSwgd2hpY2ggaXMgZGlzYWJsZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISku
CisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpIVE1MRm9y
bUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpoYW5kbGVMb2Nh
bEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6cmVxdWVzdEF1dG9jb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRlVGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1FbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5pZGw6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKEVtcHR5RnJhbWVMb2FkZXJDbGllbnQpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJD
bGllbnQpOgorCiAyMDEyLTEwLTI5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1F0XSBUZXh0IHdpdGggemVybyBmb250IHNpemUgcmVuZGVycyBhcyBY
IHB4IHNvbWV0aW1lcywgY2F1c2luZyBmYXN0L3RleHQvemVyby1mb250LXNpemUtMi5odG1sIHRv
IGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjJkNDUxZGMwNTlhOGQyYjM0ZjRm
MDU3N2U5Y2FhZTBjOWUzMjgzYi4uMDU4NzFiNmNmODk3MDZlNzI0OTkxNzMxODZmZjFkZWVlMzY3
OWNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0x
MC0yOSAgRGFuIEJlYW0gIDxkYmVhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50cyBhbiBpbml0aWFsIHZlcnNpb24gb2YgdGhlIHByb3Bvc2FsIGZvciBpbnRlcmFjdGl2ZSBh
dXRvY29tcGxldGUgb3V0bGluZWQgaW4gdGhpcyBlbWFpbDoKKyAgICAgICAgaHR0cDovL2xpc3Rz
LndoYXR3Zy5vcmcvaHRkaWcuY2dpL3doYXR3Zy13aGF0d2cub3JnLzIwMTItT2N0b2Jlci8wMzc3
MTEuaHRtbAorCisgICAgICAgIFRoZSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgYWxsb3cgd2ViIGF1
dGhvcnMgdG8gY2FsbCBmb3JtRWxlbWVudC5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7IGFmdGVyIHN1
YnNjcmliaW5nIGZvcgorICAgICAgICBhdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlZXJyb3IgZXZl
bnRzIG9uIGZvcm1FbGVtZW50LiAgSWYgdGhlIGZvcm0ncyBbYXV0b2NvbXBsZXRlXSBhdHRyaWJ1
dGUgaXMgIm9mZiIgYW4KKyAgICAgICAgZXJyb3Igd2lsbCBiZSBzZW50LiAgT3RoZXJ3aXNlLCBh
IHJlcXVlc3Qgd2lsbCBiZSBpc3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50LiBBdCB0aGUg
bW9tZW50LCB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaW4gQ2hyb21lIChodHRwczovL2Nv
ZGVyZXZpZXcuY2hyb21pdW0ub3JnLzExMjcwMDE4Lykgd2lsbCBzaW1wbHkgZGlzcGF0Y2ggYW4g
ZXJyb3IgdW50aWwgdGhlCisgICAgICAgIFVJIG9uIENocm9tZSdzIHNpZGUgaXMgYnVpbHQuCisK
KyAgICAgICAgQ3VycmVudGx5IHRoaXMgaXMgYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgUkVRVUVT
VF9BVVRPQ09NUExFVEUsIHdoaWNoIGlzIGRpc2FibGVkLgorCisgICAgICAgICogZmVhdHVyZXMu
Z3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJBdXRvZmlsbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9maWxsQ2xpZW50OjpkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJlcXVl
c3RBdXRvY29tcGxldGUpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoK
KyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYkZvcm1F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVl
c3RBdXRvY29tcGxldGUpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0xMC0yOSAgRXVnZW5l
IEtseXVjaG5pa292ICA8ZXVzdGFzLmJ1Z0BnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogVGltZWxpbmU6IG1ha2UgY3B1LW1vbml0b3JpbmcgZmVhdHVyZSBhdmFpbGFibGUgb25s
eSBvbiBjYXBhYmxlIGJyb3dzZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA3YTA1NTJh
NGE3MGRhOTNkNDIwMTE3ZmQyMDJlOTIwOWMzYjQ3MjFhLi4wOWI5YWU3NjZmYjVkYjQyZjcwMmMw
NTkxMTlkOTYwNzFjNDI2ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTI0Myw2ICsy
NDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3JvKHdlYmtpdGRldmlj
ZXByb3hpbWl0eSkgXAogICAgIFwKKyAgICBtYWNybyhhdXRvY29tcGxldGUpIFwKKyAgICBtYWNy
byhhdXRvY29tcGxldGVlcnJvcikgXAorICAgIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1F
U19GT1JfRUFDSAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1
dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmlu
ZGV4IDQ1OTA3OGY2NGMwOGJlMmJlNDMxYjAwODg4ZGNmMzliZGIzMGI4NjkuLmVkZWExNTk1Nzc3
Y2JkZGIxZTMyOWU5ZmRhM2MyYTU4OGZmNzk1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xNjUsNiArMTY1LDggQEAgbm92YWxpZGF0ZQogbm93cmFw
CiBvYmplY3QKIG9uYWJvcnQKK29uYXV0b2NvbXBsZXRlCitvbmF1dG9jb21wbGV0ZWVycm9yCiBv
bmJlZm9yZWNvcHkKIG9uYmVmb3JlY3V0CiBvbmJlZm9yZWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAwYTI1MTQxNWZiZDcwYjRkMjhiZWNlMDZmMzBkYjU5
YmQyM2IwZmU1Li4yZDliMTkyNDc3ODU0MjQ5NWExMGJjMmVmZDExYzYwYjdmMjJmNzVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03NSw2ICs3NSw5IEBAIEhU
TUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVuCiAgICAgLCBtX3Nob3VsZFN1Ym1pdChmYWxzZSkKICAgICAs
IG1faXNJblJlc2V0RnVuY3Rpb24oZmFsc2UpCiAgICAgLCBtX3dhc0RlbW90ZWQoZmFsc2UpCisj
aWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgICwgbV9yZXF1ZXN0QXV0b2NvbXBs
ZXRlRGVsYXlUaW1lcih0aGlzLCAmSFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRl
VGltZXJGaXJlZCkKKyNlbmRpZgogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvcm1UYWcpKTsK
IH0KQEAgLTE1OCw3ICsxNjEsMTEgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6Omhh
bmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKIHsKICAgICBOb2RlKiB0YXJnZXROb2RlID0g
ZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKLSAgICBpZiAoZXZlbnQtPmV2ZW50UGhhc2UoKSAh
PSBFdmVudDo6Q0FQVFVSSU5HX1BIQVNFICYmIHRhcmdldE5vZGUgJiYgdGFyZ2V0Tm9kZSAhPSB0
aGlzICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCB8fCBldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50KSkgeworICAgIGlmIChldmVudC0+
ZXZlbnRQaGFzZSgpICE9IEV2ZW50OjpDQVBUVVJJTkdfUEhBU0UgJiYgdGFyZ2V0Tm9kZSAmJiB0
YXJnZXROb2RlICE9IHRoaXMgJiYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Ym1p
dEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnJlc2V0RXZlbnQKKyNpZiBF
TkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmF1dG9jb21wbGV0ZUV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmF1dG9jb21wbGV0ZWVycm9yRXZlbnQKKyNlbmRpZgorICAgICkpIHsKICAgICAgICAg
ZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzg4
LDYgKzM5NSw0MiBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVzZXQoKQogICAgIG1faXNJblJl
c2V0RnVuY3Rpb24gPSBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVU
RSkKK3ZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRlKCkKK3sKKyAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghc2hvdWxkQXV0b2NvbXBsZXRlKCkpIHsKKyAgICAgICAg
ZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShBdXRvY29tcGxldGVFcnJvcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBTdHJpbmdQYWlyVmVjdG9yIGNvbnRyb2xOYW1lc0FuZFZhbHVl
czsKKyAgICBnZXRUZXh0RmllbGRWYWx1ZXMoY29udHJvbE5hbWVzQW5kVmFsdWVzKTsKKyAgICBS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZSh0aGlzLCBjb250
cm9sTmFtZXNBbmRWYWx1ZXMsIGRvY3VtZW50KCksIFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7Cisg
ICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShmb3Jt
U3RhdGUucmVsZWFzZSgpKTsKK30KKwordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVl
c3RBdXRvY29tcGxldGUoQXV0b2NvbXBsZXRlUmVzdWx0IHJlc3VsdCkKK3sKKyAgICBtX3BlbmRp
bmdBdXRvY29tcGxldGVSZXN1bHRzLmFwcGVuZChyZXN1bHQpOworICAgIGlmICghbV9yZXF1ZXN0
QXV0b2NvbXBsZXRlRGVsYXlUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3JlcXVlc3RBdXRv
Y29tcGxldGVEZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnJlcXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkKFRpbWVyPEhUTUxGb3JtRWxlbWVu
dD4qKQoreworICAgIFZlY3RvcjxBdXRvY29tcGxldGVSZXN1bHQ+IHBlbmRpbmdSZXN1bHRzOwor
ICAgIG1fcGVuZGluZ0F1dG9jb21wbGV0ZVJlc3VsdHMuc3dhcChwZW5kaW5nUmVzdWx0cyk7CisK
KyAgICBzaXplX3QgY291bnQgPSBwZW5kaW5nUmVzdWx0cy5zaXplKCk7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUocGVuZGluZ1Jlc3VsdHNbaW5kZXhdID09IEF1dG9jb21wbGV0ZVN1
Y2Nlc3MgPyBldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlRXZlbnQgOiBldmVudE5hbWVzKCkuYXV0
b2NvbXBsZXRlZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKK30KKyNlbmRpZgorCiB2b2lkIEhU
TUxGb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUp
CiB7CiAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gYWN0aW9uQXR0cikKQEAgLTQwOSw2ICs0
NTIsMTAgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5zdWJtaXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBh
dHRyaWJ1dGUpKTsKICAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucmVzZXRBdHRy
KQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNldEV2
ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOworICAg
IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25hdXRvY29tcGxldGVBdHRyKQorICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBl
bHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYXV0b2NvbXBsZXRlZXJyb3JBdHRyKQorICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVl
cnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkp
OwogICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCBiZjI4Y2NhM2Zi
MmM2YWY1ODU3OTUxYjYyY2JmMDIzMjBlNGE5NmRhLi5kODllNzkyNDM5YzI5NDI3N2VlOWNhZjU0
NTViODEwZDViMjViNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAg
LTk5LDYgKzk5LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpOwogCisj
aWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIGVudW0gQXV0b2NvbXBsZXRlUmVz
dWx0IHsgQXV0b2NvbXBsZXRlU3VjY2VzcywgQXV0b2NvbXBsZXRlRXJyb3IgfTsKKyAgICB2b2lk
IHJlcXVlc3RBdXRvY29tcGxldGUoKTsKKyAgICB2b2lkIGZpbmlzaFJlcXVlc3RBdXRvY29tcGxl
dGUoQXV0b2NvbXBsZXRlUmVzdWx0KTsKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29tcGxldGVUaW1l
ckZpcmVkKFRpbWVyPEhUTUxGb3JtRWxlbWVudD4qKTsKKyNlbmRpZgorCiAgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudCogZWxlbWVudEZvckFsaWFzKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAg
IHZvaWQgYWRkRWxlbWVudEFsaWFzKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGFsaWFzKTsKIApAQCAtMTA5LDYgKzExNiwxMSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGdldFRleHRGaWVsZFZhbHVlcyhTdHJpbmdQYWlyVmVjdG9yJiBmaWVsZE5hbWVzQW5kVmFs
dWVzKSBjb25zdDsKIAorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGF1dG9jb21wbGV0ZSk7CisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihhdXRvY29tcGxldGVlcnJvcik7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAKQEAgLTE2Miw2ICsxNzQsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblJlc2V0
RnVuY3Rpb247CiAKICAgICBib29sIG1fd2FzRGVtb3RlZDsKKworI2lmIEVOQUJMRShSRVFVRVNU
X0FVVE9DT01QTEVURSkKKyAgICBWZWN0b3I8QXV0b2NvbXBsZXRlUmVzdWx0PiBtX3BlbmRpbmdB
dXRvY29tcGxldGVSZXN1bHRzOworICAgIFRpbWVyPEhUTUxGb3JtRWxlbWVudD4gbV9yZXF1ZXN0
QXV0b2NvbXBsZXRlRGVsYXlUaW1lcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCmluZGV4IDg2YTZmNzRj
NjNmZGZkMmRhZTBkZmMwMmZkN2NkNzJmOGZlYjUxODguLmQzMGRlNDc5Mjk1NjU0YWM3YTU3ZjQw
YWNiYTVmZTNkZDZmODc4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGwKQEAgLTQyLDQgKzQyLDggQEAKICNlbmRpZgogICAgIHZvaWQgcmVzZXQoKTsKICAgICBib29s
ZWFuIGNoZWNrVmFsaWRpdHkoKTsKKworICAgIFtDb25kaXRpb25hbD1SRVFVRVNUX0FVVE9DT01Q
TEVURV0gdm9pZCByZXF1ZXN0QXV0b2NvbXBsZXRlKCk7CisgICAgW05vdEVudW1lcmFibGUsIENv
bmRpdGlvbmFsPVJFUVVFU1RfQVVUT0NPTVBMRVRFXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmF1dG9jb21wbGV0ZTsKKyAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9UkVRVUVTVF9B
VVRPQ09NUExFVEVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYXV0b2NvbXBsZXRlZXJyb3I7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBjOWIzZjNhNmUx
MDUxZjBlOTczNWY2NWQ0ZGViNjBmNzkyOTdmMDkyLi45ZjBkYTE3ZDY0NDRhMjUxNTk1ZjQ0OTI2
YzFjMzMzYWM2NGYwZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApA
QCAtMTk0LDQgKzE5NCwxMCBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBFbXB0eUNvbnRleHRN
ZW51Q2xpZW50OjpjdXN0b21pemVNZW51KFBhc3NPd25QdHI8Q29udGV4dAogI2VuZGlmCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKK3ZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4p
Cit7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4
IDljMmMyM2QzZTA4YThmZDE3OGUxODViNThhZTFjYTk1MWEyYzQwNDUuLmFjYmI0NWY3NDYwMTZh
YzUyYWE3ZTFjMTJmZWI5MWQyNDJjMjM2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKQEAgLTM4Miw2ICszODIsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxJbnRlbnRSZXF1
ZXN0PikgT1ZFUlJJREU7CiAjZW5kaWYKKworI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVU
RSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pIE9WRVJSSURFOworI2VuZGlmCiB9OwogCiBjbGFzcyBFbXB0eVRleHRDaGVja2Vy
Q2xpZW50IDogcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGYyMzg4YWY1ZmJiNGM1ZDY1YzMwYmZmODg4NDU1
NGM3YzhiOWMwZC4uYjRhYmY4OGYzNTk5NjFiODlhZWY4NzYwNTVhNDk3ODU2Y2YxM2M1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM0OSw2ICszNDks
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdGFydFVzaW5nUGVlckNvbm5lY3Rpb25IYW5k
bGVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciopIHsgfQogI2VuZGlmCisKKyNpZiBFTkFCTEUo
UkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0QXV0
b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgPSAwOworI2VuZGlmCiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmlu
ZGV4IGYzZTEwYjI3OWEwZTk5ZjI4YzljZTBmZGJmY2ZhNDRlOWRkZjVjZGMuLjc3Y2JlMWZjNzRi
NjY1YThmMTYxZTMyZjc1NzgzZjUxMjk4ZGMxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1
cmVzLmd5cGkKQEAgLTk3LDYgKzk3LDggQEAKICAgICAgICdFTkFCTEVfUVVPVEE9MScsCiAgICAg
ICAnRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlk9MCcsCiAgICAgICAnRU5BQkxFX1JFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FPTEnLAorICAgICAgIyBGSVhNRTogcmUtZW5hYmxlIGFmdGVyIGh0
dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTEyNzAwMTguCisgICAgICAjICdFTkFCTEVf
UkVRVUVTVF9BVVRPQ09NUExFVEU9MScsCiAgICAgICAnRU5BQkxFX1JVQlk9MScsCiAgICAgICAn
RU5BQkxFX1NBTkRCT1g9MScsCiAgICAgICAnRU5BQkxFX1NDUklQVEVEX1NQRUVDSD0xJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oCmlu
ZGV4IDdiNDhmNTdkYmU0NmVhMzdlZjZmNDk5NGM1MTNjYjJmOTNkNjg3ZmMuLjc0MjRjM2ZlY2Ri
YTlmZmE3Mjg2ZTFiN2VlZjNkZjhjOTYwYmZkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaApAQCAtMzMsNiArMzMsOCBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CitjbGFzcyBXZWJGcmFt
ZTsKIGNsYXNzIFdlYklucHV0RWxlbWVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFz
cyBXZWJOb2RlOwpAQCAtNzUsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgLy8ga2V5cyB0byBuYXZp
Z2F0ZSBvdXRzaWRlIHRoZSByYW5nZSBvZiBwb3NzaWJsZSBzZWxlY3Rpb25zLgogICAgIHZpcnR1
YWwgdm9pZCBkaWRDbGVhckF1dG9maWxsU2VsZWN0aW9uKGNvbnN0IFdlYk5vZGUmKSB7IH0KIAor
ICAgIC8vIEluZm9ybXMgdGhlIGJyb3dzZXIgYW4gaW50ZXJhY3RpdmUgYXV0b2NvbXBsZXRlIGhh
cyBiZWVuIHJlcXVlc3RlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0
ZShXZWJGcmFtZSosIGNvbnN0IFdlYkZvcm1FbGVtZW50JikgeyB9CisKICAgICAvLyBJbnN0cnVj
dHMgdGhlIGJyb3dzZXIgdG8gcmVtb3ZlIHRoZSBBdXRvY29tcGxldGUgZW50cnkgc3BlY2lmaWVk
IGZyb20KICAgICAvLyBpdHMgREIuCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUF1dG9jb21wbGV0
ZVN1Z2dlc3Rpb24oY29uc3QgV2ViU3RyaW5nJiBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKaW5kZXggMWVmNDMxZmEzNjU2ZjVjMjc4ZGMy
ZTRkMzU2MTI0ZDExYjc2N2Q1MS4uMWIzMmJkZjAwMzFjZDhkYTQ5NmE1ZjBmMGZlOTNhMmU3MmEz
Mzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVu
dC5oCkBAIC02OSw2ICs2OSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgZ2V0TmFtZWRFbGVtZW50cyhjb25zdCBXZWJTdHJpbmcmLCBXZWJWZWN0b3I8
V2ViTm9kZT4mKTsKICAgICAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldEZvcm1Db250cm9sRWxl
bWVudHMoV2ViVmVjdG9yPFdlYkZvcm1Db250cm9sRWxlbWVudD4mKSBjb25zdDsKIAorICAgICAg
ICBlbnVtIEF1dG9jb21wbGV0ZVJlc3VsdCB7IEF1dG9jb21wbGV0ZVN1Y2Nlc3MsIEF1dG9jb21w
bGV0ZUVycm9yIH07CisgICAgICAgIFdFQktJVF9FWFBPUlQgdm9pZCBmaW5pc2hSZXF1ZXN0QXV0
b2NvbXBsZXRlKFdlYkZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHQpOworCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIFdlYkZvcm1FbGVtZW50KGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ+Jik7CiAgICAgICAgIFdlYkZvcm1FbGVt
ZW50JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudD4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAKaW5kZXggMDI1NzI3OWJhZDcxMDI5NTA1OWVlNGExNzZiNTQ0NTQ5ODcwYzhk
OC4uNGE4NTZjMjczNTliOTUzMWUyY2E4Y2E3MDkxYTUzMmZkMDJhZWEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJGb250U21vb3RoaW5nTW9kZS5oIgogI2luY2x1ZGUgIkdl
b2xvY2F0aW9uRXJyb3IuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW5j
bHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgi
CkBAIC04Niw2ICs4Nyw3IEBACiAjaW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAi
V2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJXZWJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRl
ICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uRXJyb3IuaCIKICNp
bmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29y
LmgiCkBAIC02MzAsMyArNjMyLDggQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJV
UkxSZXNwb25zZTo6SFRUUF8xXzEsIFJlc291cmNlUmVzcG9uc2U6OkhUVFBfMV8KIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlVW5zcGVjaWZpZWQs
IE1lZGlhUGxheWVyQ2xpZW50OjpVbnNwZWNpZmllZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYk1lZGlhUGxheWVyOjpDT1JTTW9kZUFub255bW91cywgTWVkaWFQbGF5ZXJDbGll
bnQ6OkFub255bW91cyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxh
eWVyOjpDT1JTTW9kZVVzZUNyZWRlbnRpYWxzLCBNZWRpYVBsYXllckNsaWVudDo6VXNlQ3JlZGVu
dGlhbHMpOworCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlU3VjY2VzcywgSFRN
TEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVTdWNjZXNzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZUVycm9yLCBIVE1MRm9ybUVsZW1l
bnQ6OkF1dG9jb21wbGV0ZUVycm9yKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggMTFjNzI2YTMyOGE5
YTFjNjA3OGVjMTk0OGZiMjZlNDVmMzEwNDE3Ni4uOWRmYmM1MWVjZDExYmNlNThlNjA5OWYyMGU4
MWEyMzc1NzIwM2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjZW5kaWYKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsLmgi
CisjaW5jbHVkZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIKICNpbmNsdWRlICJXZWJET01FdmVudC5o
IgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNB
Z2VudFByaXZhdGUuaCIKQEAgLTE2NTEsNSArMTY1MiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0aW9uSGFuZGxlcihSVENQ
ZWVyQwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQoreworICAgIGlmIChtX3dlYkZyYW1lLT52aWV3SW1wbCgp
ICYmIG1fd2ViRnJhbWUtPnZpZXdJbXBsKCktPmF1dG9maWxsQ2xpZW50KCkpCisgICAgICAgIG1f
d2ViRnJhbWUtPnZpZXdJbXBsKCktPmF1dG9maWxsQ2xpZW50KCktPmRpZFJlcXVlc3RBdXRvY29t
cGxldGUobV93ZWJGcmFtZSwgV2ViRm9ybUVsZW1lbnQoZm9ybVN0YXRlLT5mb3JtKCkpKTsKK30K
KyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggMTJhNzZmZWVlMzUyNjA1
YjkwNTc1MGE4NGU2YzVmYjNiZGIxYTNiYy4uNjU4OWMzN2JiNzllNTY0MWRmMDNhMmFlZGM0YmZi
ZDBmYWE4YWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgKQEAgLTIyNSw2ICsyMjUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxTdGFydFVzaW5nUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciopIE9WRVJSSURFOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RB
dXRvY29tcGxldGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSBPVkVSUklERTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgbWFrZURvY3VtZW50VmlldygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAKaW5kZXggY2RhZTY2MjBl
OGIzNWU1OTZlNTM0MzUzMWE3NTUzODFlNWZlN2U0ZS4uZjZhOWE2N2YwNmIzM2FkZjczMDdkNDQw
Y2ZmODg1M2QzMmVlMjRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZv
cm1FbGVtZW50LmNwcApAQCAtMTAyLDYgKzEwMiwxMyBAQCB2b2lkIFdlYkZvcm1FbGVtZW50Ojpn
ZXRGb3JtQ29udHJvbEVsZW1lbnRzKFdlYlZlY3RvcjxXZWJGb3JtQ29udHJvbEVsZW1lbnQ+JiBy
ZQogICAgIHJlc3VsdC5hc3NpZ24odGVtcFZlY3Rvcik7CiB9CiAKK3ZvaWQgV2ViRm9ybUVsZW1l
bnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoV2ViRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0
ZVJlc3VsdCByZXN1bHQpCit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAg
IHVud3JhcDxIVE1MRm9ybUVsZW1lbnQ+KCktPmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoc3Rh
dGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHQ+KHJlc3VsdCkpOwor
I2VuZGlmCit9CisKIFdlYkZvcm1FbGVtZW50OjpXZWJGb3JtRWxlbWVudChjb25zdCBQYXNzUmVm
UHRyPEhUTUxGb3JtRWxlbWVudD4mIGUpCiAgICAgOiBXZWJFbGVtZW50KGUpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171952</attachid>
            <date>2012-11-01 16:32:36 -0700</date>
            <delta_ts>2012-11-01 20:07:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121101163057.patch</filename>
            <type>text/plain</type>
            <size>17922</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkZWRlOTdkNjg4Yjc1
YTM0MDdlMDIwYWZiOGNlZDYxNGI4YmMzMS4uNzZjZjdlZWYwNmQ2ZGY2YjlmZmQ1MDA3ZjU4M2Yz
MTA0YTVhY2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTI5ICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1F
bGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFuIGlu
aXRpYWwgdmVyc2lvbiBvZiB0aGUgcHJvcG9zYWwgZm9yIGludGVyYWN0aXZlIGF1dG9jb21wbGV0
ZSBvdXRsaW5lZCBpbiB0aGlzIGVtYWlsOgorICAgICAgICBodHRwOi8vbGlzdHMud2hhdHdnLm9y
Zy9odGRpZy5jZ2kvd2hhdHdnLXdoYXR3Zy5vcmcvMjAxMi1PY3RvYmVyLzAzNzcxMS5odG1sCisK
KyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyBhbGxvdyB3ZWIgYXV0aG9ycyB0byBj
YWxsIGZvcm1FbGVtZW50LnJlcXVlc3RBdXRvY29tcGxldGUoKTsgYWZ0ZXIgc3Vic2NyaWJpbmcg
Zm9yCisgICAgICAgIGF1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVlcnJvciBldmVudHMgb24gZm9y
bUVsZW1lbnQuICBJZiB0aGUgZm9ybSdzIFthdXRvY29tcGxldGVdIGF0dHJpYnV0ZSBpcyAib2Zm
IiBhbgorICAgICAgICBlcnJvciB3aWxsIGJlIHNlbnQuICBPdGhlcndpc2UsIGEgcmVxdWVzdCB3
aWxsIGJlIGlzc3VlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQuIEF0IHRoZSBtb21lbnQsIHRo
ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBDaHJvbWUgKGh0dHBzOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMTEyNzAwMTgvKSB3aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1bnRp
bCB0aGUKKyAgICAgICAgVUkgb24gQ2hyb21lJ3Mgc2lkZSBpcyBidWlsdC4KKworICAgICAgICBD
dXJyZW50bHkgdGhpcyBpcyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBSRVFVRVNUX0FVVE9DT01Q
TEVURSwgd2hpY2ggaXMgZGlzYWJsZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISku
CisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpIVE1MRm9y
bUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpoYW5kbGVMb2Nh
bEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6cmVxdWVzdEF1dG9jb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRlVGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1FbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5pZGw6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKEVtcHR5RnJhbWVMb2FkZXJDbGllbnQpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJD
bGllbnQpOgorCiAyMDEyLTEwLTI5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1F0XSBUZXh0IHdpdGggemVybyBmb250IHNpemUgcmVuZGVycyBhcyBY
IHB4IHNvbWV0aW1lcywgY2F1c2luZyBmYXN0L3RleHQvemVyby1mb250LXNpemUtMi5odG1sIHRv
IGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjJkNDUxZGMwNTlhOGQyYjM0ZjRm
MDU3N2U5Y2FhZTBjOWUzMjgzYi4uMDU4NzFiNmNmODk3MDZlNzI0OTkxNzMxODZmZjFkZWVlMzY3
OWNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0x
MC0yOSAgRGFuIEJlYW0gIDxkYmVhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50cyBhbiBpbml0aWFsIHZlcnNpb24gb2YgdGhlIHByb3Bvc2FsIGZvciBpbnRlcmFjdGl2ZSBh
dXRvY29tcGxldGUgb3V0bGluZWQgaW4gdGhpcyBlbWFpbDoKKyAgICAgICAgaHR0cDovL2xpc3Rz
LndoYXR3Zy5vcmcvaHRkaWcuY2dpL3doYXR3Zy13aGF0d2cub3JnLzIwMTItT2N0b2Jlci8wMzc3
MTEuaHRtbAorCisgICAgICAgIFRoZSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgYWxsb3cgd2ViIGF1
dGhvcnMgdG8gY2FsbCBmb3JtRWxlbWVudC5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7IGFmdGVyIHN1
YnNjcmliaW5nIGZvcgorICAgICAgICBhdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlZXJyb3IgZXZl
bnRzIG9uIGZvcm1FbGVtZW50LiAgSWYgdGhlIGZvcm0ncyBbYXV0b2NvbXBsZXRlXSBhdHRyaWJ1
dGUgaXMgIm9mZiIgYW4KKyAgICAgICAgZXJyb3Igd2lsbCBiZSBzZW50LiAgT3RoZXJ3aXNlLCBh
IHJlcXVlc3Qgd2lsbCBiZSBpc3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50LiBBdCB0aGUg
bW9tZW50LCB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaW4gQ2hyb21lIChodHRwczovL2Nv
ZGVyZXZpZXcuY2hyb21pdW0ub3JnLzExMjcwMDE4Lykgd2lsbCBzaW1wbHkgZGlzcGF0Y2ggYW4g
ZXJyb3IgdW50aWwgdGhlCisgICAgICAgIFVJIG9uIENocm9tZSdzIHNpZGUgaXMgYnVpbHQuCisK
KyAgICAgICAgQ3VycmVudGx5IHRoaXMgaXMgYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgUkVRVUVT
VF9BVVRPQ09NUExFVEUsIHdoaWNoIGlzIGRpc2FibGVkLgorCisgICAgICAgICogZmVhdHVyZXMu
Z3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJBdXRvZmlsbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9maWxsQ2xpZW50OjpkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJlcXVl
c3RBdXRvY29tcGxldGUpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoK
KyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYkZvcm1F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVl
c3RBdXRvY29tcGxldGUpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0xMC0yOSAgRXVnZW5l
IEtseXVjaG5pa292ICA8ZXVzdGFzLmJ1Z0BnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogVGltZWxpbmU6IG1ha2UgY3B1LW1vbml0b3JpbmcgZmVhdHVyZSBhdmFpbGFibGUgb25s
eSBvbiBjYXBhYmxlIGJyb3dzZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA3YTA1NTJh
NGE3MGRhOTNkNDIwMTE3ZmQyMDJlOTIwOWMzYjQ3MjFhLi4wOWI5YWU3NjZmYjVkYjQyZjcwMmMw
NTkxMTlkOTYwNzFjNDI2ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTI0Myw2ICsy
NDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3JvKHdlYmtpdGRldmlj
ZXByb3hpbWl0eSkgXAogICAgIFwKKyAgICBtYWNybyhhdXRvY29tcGxldGUpIFwKKyAgICBtYWNy
byhhdXRvY29tcGxldGVlcnJvcikgXAorICAgIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1F
U19GT1JfRUFDSAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1
dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmlu
ZGV4IDQ1OTA3OGY2NGMwOGJlMmJlNDMxYjAwODg4ZGNmMzliZGIzMGI4NjkuLmVkZWExNTk1Nzc3
Y2JkZGIxZTMyOWU5ZmRhM2MyYTU4OGZmNzk1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xNjUsNiArMTY1LDggQEAgbm92YWxpZGF0ZQogbm93cmFw
CiBvYmplY3QKIG9uYWJvcnQKK29uYXV0b2NvbXBsZXRlCitvbmF1dG9jb21wbGV0ZWVycm9yCiBv
bmJlZm9yZWNvcHkKIG9uYmVmb3JlY3V0CiBvbmJlZm9yZWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAwYTI1MTQxNWZiZDcwYjRkMjhiZWNlMDZmMzBkYjU5
YmQyM2IwZmU1Li42NTJhNmM2NGJlNmFmNDIwZGYwNTBlNDY0MjE5YzVkZDA5NDZiOWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03NSw2ICs3NSw5IEBAIEhU
TUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVuCiAgICAgLCBtX3Nob3VsZFN1Ym1pdChmYWxzZSkKICAgICAs
IG1faXNJblJlc2V0RnVuY3Rpb24oZmFsc2UpCiAgICAgLCBtX3dhc0RlbW90ZWQoZmFsc2UpCisj
aWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgICwgbV9yZXF1ZXN0QXV0b2NvbXBs
ZXRlRGVsYXlUaW1lcih0aGlzLCAmSFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRl
VGltZXJGaXJlZCkKKyNlbmRpZgogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvcm1UYWcpKTsK
IH0KQEAgLTM4OCw2ICszOTEsNTMgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0KCkKICAg
ICBtX2lzSW5SZXNldEZ1bmN0aW9uID0gZmFsc2U7CiB9CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9B
VVRPQ09NUExFVEUpCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVxdWVzdEF1dG9jb21wbGV0ZSgp
Cit7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb3RlY3Rvci5hcHBlbmQoYWRvcHRSZWYo
dGhpcykpOworCisgICAgaWYgKCFzaG91bGRBdXRvY29tcGxldGUoKSkgeworICAgICAgICBmaW5p
c2hSZXF1ZXN0QXV0b2NvbXBsZXRlKEF1dG9jb21wbGV0ZVJlc3VsdEVycm9yKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFN0cmluZ1BhaXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFs
dWVzOworICAgIGdldFRleHRGaWVsZFZhbHVlcyhjb250cm9sTmFtZXNBbmRWYWx1ZXMpOworICAg
IFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNv
bnRyb2xOYW1lc0FuZFZhbHVlcywgZG9jdW1lbnQoKSwgU3VibWl0dGVkQnlKYXZhU2NyaXB0KTsK
KyAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKGZv
cm1TdGF0ZS5yZWxlYXNlKCkpOworfQorCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6ZmluaXNoUmVx
dWVzdEF1dG9jb21wbGV0ZShBdXRvY29tcGxldGVSZXN1bHQgcmVzdWx0KQoreworICAgIG1fcGVu
ZGluZ0F1dG9jb21wbGV0ZUV2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShyZXN1bHQgPT0gQXV0
b2NvbXBsZXRlUmVzdWx0U3VjY2VzcyA/IGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVFdmVudCA6
IGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKwor
ICAgIGlmICghbV9yZXF1ZXN0QXV0b2NvbXBsZXRlRGVsYXlUaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICBtX3JlcXVlc3RBdXRvY29tcGxldGVEZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30K
Kwordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlcXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkKFRp
bWVyPEhUTUxGb3JtRWxlbWVudD4qKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdBdXRvY29tcGxl
dGVFdmVudHMuc2l6ZSgpID09IG1fcHJvdGVjdG9yLnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVm
UHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgbV9wZW5kaW5nQXV0b2NvbXBsZXRlRXZl
bnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisKKyAgICB3aGlsZSAoIXBlbmRpbmdFdmVudHMuaXNF
bXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxFdmVudD4gcGVuZGluZ0V2ZW50ID0gcGVuZGluZ0V2
ZW50c1swXTsKKyAgICAgICAgcGVuZGluZ0V2ZW50cy5yZW1vdmUoMCk7CisgICAgICAgIGRpc3Bh
dGNoRXZlbnQocGVuZGluZ0V2ZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgUmVmUHRyPEhUTUxG
b3JtRWxlbWVudD4gcHJvdGVjdG9yID0gbV9wcm90ZWN0b3JbMF07CisgICAgICAgIG1fcHJvdGVj
dG9yLnJlbW92ZSgwKTsKKyAgICAgICAgcHJvdGVjdG9yLnJlbGVhc2UoKTsKKyAgICB9Cit9Cisj
ZW5kaWYKKwogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlKQogewogICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGFjdGlvbkF0
dHIpCkBAIC00MDksNiArNDU5LDEyIEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKICAgICAgICAgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VibWl0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7CiAgICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBvbnJlc2V0QXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkucmVzZXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBh
dHRyaWJ1dGUpKTsKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmF1dG9jb21wbGV0ZUF0dHIpCisgICAgICAgIHNldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF1dG9jb21wbGV0ZUV2ZW50LCBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOworICAgIGVsc2UgaWYg
KGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25hdXRvY29tcGxldGVlcnJvckF0dHIpCisgICAgICAgIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF1dG9jb21wbGV0ZWVycm9yRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7CisjZW5k
aWYKICAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1
dGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggYmYyOGNjYTNm
YjJjNmFmNTg1Nzk1MWI2MmNiZjAyMzIwZTRhOTZkYS4uZGFmZTI0ZjZmYjUwODg1NWVmODQyOGFj
M2ViMTZkYWMyMTZlY2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBA
IC05OSw2ICs5OSwxNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNoZWNrVmFsaWRpdHkoKTsKIAor
I2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyAgICBlbnVtIEF1dG9jb21wbGV0ZVJl
c3VsdCB7IEF1dG9jb21wbGV0ZVJlc3VsdFN1Y2Nlc3MsIEF1dG9jb21wbGV0ZVJlc3VsdEVycm9y
IH07CisKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29tcGxldGUoKTsKKyAgICB2b2lkIGZpbmlzaFJl
cXVlc3RBdXRvY29tcGxldGUoQXV0b2NvbXBsZXRlUmVzdWx0KTsKKyAgICB2b2lkIHJlcXVlc3RB
dXRvY29tcGxldGVUaW1lckZpcmVkKFRpbWVyPEhUTUxGb3JtRWxlbWVudD4qKTsKKworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYXV0b2NvbXBsZXRlKTsKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGF1dG9jb21wbGV0ZWVycm9yKTsKKyNlbmRpZgorCiAg
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudEZvckFsaWFzKGNvbnN0IEF0b21pY1N0
cmluZyYpOwogICAgIHZvaWQgYWRkRWxlbWVudEFsaWFzKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmIGFsaWFzKTsKIApAQCAtMTYyLDYgKzE3MywxMiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9pc0luUmVzZXRGdW5jdGlvbjsKIAogICAgIGJvb2wgbV93YXNEZW1v
dGVkOworCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIFZlY3RvcjxSZWZQ
dHI8SFRNTEZvcm1FbGVtZW50PiA+IG1fcHJvdGVjdG9yOworICAgIFZlY3RvcjxSZWZQdHI8RXZl
bnQ+ID4gbV9wZW5kaW5nQXV0b2NvbXBsZXRlRXZlbnRzOworICAgIFRpbWVyPEhUTUxGb3JtRWxl
bWVudD4gbV9yZXF1ZXN0QXV0b2NvbXBsZXRlRGVsYXlUaW1lcjsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
CmluZGV4IDg2YTZmNzRjNjNmZGZkMmRhZTBkZmMwMmZkN2NkNzJmOGZlYjUxODguLmQzMGRlNDc5
Mjk1NjU0YWM3YTU3ZjQwYWNiYTVmZTNkZDZmODc4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5pZGwKQEAgLTQyLDQgKzQyLDggQEAKICNlbmRpZgogICAgIHZvaWQgcmVz
ZXQoKTsKICAgICBib29sZWFuIGNoZWNrVmFsaWRpdHkoKTsKKworICAgIFtDb25kaXRpb25hbD1S
RVFVRVNUX0FVVE9DT01QTEVURV0gdm9pZCByZXF1ZXN0QXV0b2NvbXBsZXRlKCk7CisgICAgW05v
dEVudW1lcmFibGUsIENvbmRpdGlvbmFsPVJFUVVFU1RfQVVUT0NPTVBMRVRFXSBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmF1dG9jb21wbGV0ZTsKKyAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0
aW9uYWw9UkVRVUVTVF9BVVRPQ09NUExFVEVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYXV0
b2NvbXBsZXRlZXJyb3I7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCBjOWIzZjNhNmUxMDUxZjBlOTczNWY2NWQ0ZGViNjBmNzkyOTdmMDkyLi45ZjBkYTE3ZDY0
NDRhMjUxNTk1ZjQ0OTI2YzFjMzMzYWM2NGYwZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcApAQCAtMTk0LDQgKzE5NCwxMCBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51
PiBFbXB0eUNvbnRleHRNZW51Q2xpZW50OjpjdXN0b21pemVNZW51KFBhc3NPd25QdHI8Q29udGV4
dAogI2VuZGlmCiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKK3Zv
aWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVm
UHRyPEZvcm1TdGF0ZT4pCit7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCmluZGV4IDljMmMyM2QzZTA4YThmZDE3OGUxODViNThhZTFjYTk1MWEyYzQwNDUu
LmFjYmI0NWY3NDYwMTZhYzUyYWE3ZTFjMTJmZWI5MWQyNDJjMjM2OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTM4Miw2ICszODIsMTAgQEAgcHVibGljOgogI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1Jl
ZlB0cjxJbnRlbnRSZXF1ZXN0PikgT1ZFUlJJREU7CiAjZW5kaWYKKworI2lmIEVOQUJMRShSRVFV
RVNUX0FVVE9DT01QTEVURSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0
ZShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pIE9WRVJSSURFOworI2VuZGlmCiB9OwogCiBjbGFzcyBF
bXB0eVRleHRDaGVja2VyQ2xpZW50IDogcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGYyMzg4YWY1ZmJiNGM1
ZDY1YzMwYmZmODg4NDU1NGM3YzhiOWMwZC4uYjRhYmY4OGYzNTk5NjFiODlhZWY4NzYwNTVhNDk3
ODU2Y2YxM2M1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTM0OSw2ICszNDksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdGFydFVzaW5nUGVl
ckNvbm5lY3Rpb25IYW5kbGVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciopIHsgfQogI2VuZGlm
CisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgPSAwOworI2Vu
ZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmgKaW5kZXggN2I0OGY1N2RiZTQ2
ZWEzN2VmNmY0OTk0YzUxM2NiMmY5M2Q2ODdmYy4uNzQyNGMzZmVjZGJhOWZmYTcyODZlMWI3ZWVm
M2RmOGM5NjBiZmQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQXV0b2ZpbGxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBdXRvZmlsbENsaWVudC5oCkBAIC0zMyw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBXZWJGb3JtRWxlbWVudDsKK2NsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViSW5w
dXRFbGVtZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk5vZGU7CkBAIC03
NSw2ICs3Nyw5IEBAIHB1YmxpYzoKICAgICAvLyBrZXlzIHRvIG5hdmlnYXRlIG91dHNpZGUgdGhl
IHJhbmdlIG9mIHBvc3NpYmxlIHNlbGVjdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFy
QXV0b2ZpbGxTZWxlY3Rpb24oY29uc3QgV2ViTm9kZSYpIHsgfQogCisgICAgLy8gSW5mb3JtcyB0
aGUgYnJvd3NlciBhbiBpbnRlcmFjdGl2ZSBhdXRvY29tcGxldGUgaGFzIGJlZW4gcmVxdWVzdGVk
LgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFdlYkZyYW1lKiwgY29u
c3QgV2ViRm9ybUVsZW1lbnQmKSB7IH0KKwogICAgIC8vIEluc3RydWN0cyB0aGUgYnJvd3NlciB0
byByZW1vdmUgdGhlIEF1dG9jb21wbGV0ZSBlbnRyeSBzcGVjaWZpZWQgZnJvbQogICAgIC8vIGl0
cyBEQi4KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbihjb25z
dCBXZWJTdHJpbmcmIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Rm9ybUVsZW1lbnQuaAppbmRleCAxZWY0MzFmYTM2NTZmNWMyNzhkYzJlNGQzNTYxMjRkMTFiNzY3
ZDUxLi4yN2M5OWQzYTE3MTkyZjdkMDgwOGM4N2U3MmNhNWRhOGE2M2I2YzE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKQEAgLTY5LDYgKzY5
LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJVF9FWFBPUlQgdm9pZCBnZXRO
YW1lZEVsZW1lbnRzKGNvbnN0IFdlYlN0cmluZyYsIFdlYlZlY3RvcjxXZWJOb2RlPiYpOwogICAg
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZ2V0Rm9ybUNvbnRyb2xFbGVtZW50cyhXZWJWZWN0b3I8
V2ViRm9ybUNvbnRyb2xFbGVtZW50PiYpIGNvbnN0OwogCisgICAgICAgIGVudW0gQXV0b2NvbXBs
ZXRlUmVzdWx0IHsgQXV0b2NvbXBsZXRlUmVzdWx0U3VjY2VzcywgQXV0b2NvbXBsZXRlUmVzdWx0
RXJyb3IgfTsKKyAgICAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGZpbmlzaFJlcXVlc3RBdXRvY29t
cGxldGUoV2ViRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdCk7CisKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KICAgICAgICAgV2ViRm9ybUVsZW1lbnQoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4mKTsKICAgICAgICAgV2ViRm9ybUVsZW1lbnQm
IG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0Vu
dW1zLmNwcAppbmRleCAwMjU3Mjc5YmFkNzEwMjk1MDU5ZWU0YTE3NmI1NDQ1NDk4NzBjOGQ4Li43
YWFjOTM2ZDMxMzYzMjIyYzI5NjZiMTQyZjk1ZTI0ZDMyZjg4NmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNDgsNiAr
NDgsOSBAQAogI2luY2x1ZGUgIkZvbnRTbW9vdGhpbmdNb2RlLmgiCiAjaW5jbHVkZSAiR2VvbG9j
YXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisj
ZW5kaWYKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29y
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKQEAgLTg2LDYgKzg5LDkgQEAK
ICNpbmNsdWRlICJXZWJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJGaWxlSW5mby5oIgogI2lu
Y2x1ZGUgIldlYkZvbnREZXNjcmlwdGlvbi5oIgorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01Q
TEVURSkKKyNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
ICNpbmNsdWRlICJXZWJJREJDdXJzb3IuaCIKQEAgLTYzMCwzICs2MzYsOCBAQCBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYlVSTFJlc3BvbnNlOjpIVFRQXzFfMSwgUmVzb3VyY2VSZXNw
b25zZTo6SFRUUF8xXwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXll
cjo6Q09SU01vZGVVbnNwZWNpZmllZCwgTWVkaWFQbGF5ZXJDbGllbnQ6OlVuc3BlY2lmaWVkKTsK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlQW5v
bnltb3VzLCBNZWRpYVBsYXllckNsaWVudDo6QW5vbnltb3VzKTsKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlVXNlQ3JlZGVudGlhbHMsIE1lZGlh
UGxheWVyQ2xpZW50OjpVc2VDcmVkZW50aWFscyk7CisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRP
Q09NUExFVEUpCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvcm1FbGVtZW50OjpB
dXRvY29tcGxldGVSZXN1bHRTdWNjZXNzLCBIVE1MRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJl
c3VsdFN1Y2Nlc3MpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb3JtRWxlbWVu
dDo6QXV0b2NvbXBsZXRlUmVzdWx0RXJyb3IsIEhUTUxGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRl
UmVzdWx0RXJyb3IpOworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCAxMWM3MjZhMzI4YTlhMWM2MDc4ZWMx
OTQ4ZmIyNmU0NWYzMTA0MTc2Li43ZmZlOTQzMzllYzFjNDgyMjk3YTI3MjY1OWU4NjY2MmEzZWQ3
N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAKQEAgLTYyLDYgKzYyLDkgQEAKICNlbmRpZgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwuaCIKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisjaW5jbHVkZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIK
KyNlbmRpZgogI2luY2x1ZGUgIldlYkRPTUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJj
ZUltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgpAQCAtMTY1MSw1
ICsxNjU0LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaFdpbGxTdGFy
dFVzaW5nUGVlckNvbm5lY3Rpb25IYW5kbGVyKFJUQ1BlZXJDCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit7
CisgICAgaWYgKG1fd2ViRnJhbWUtPnZpZXdJbXBsKCkgJiYgbV93ZWJGcmFtZS0+dmlld0ltcGwo
KS0+YXV0b2ZpbGxDbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+dmlld0ltcGwoKS0+YXV0
b2ZpbGxDbGllbnQoKS0+ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShtX3dlYkZyYW1lLCBXZWJGb3Jt
RWxlbWVudChmb3JtU3RhdGUtPmZvcm0oKSkpOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAppbmRleCAxMmE3NmZlZWUzNTI2MDViOTA1NzUwYTg0ZTZjNWZiM2JkYjFhM2Jj
Li42NTg5YzM3YmI3OWU1NjQxZGYwM2EyYWVkYzRiZmJkMGZhYThhZTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMjI1
LDYgKzIyNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN0YXJ0
VXNpbmdQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyKikgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVU
RSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVmUHRyPFdl
YkNvcmU6OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9p
ZCBtYWtlRG9jdW1lbnRWaWV3KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZvcm1FbGVtZW50LmNwcAppbmRleCBjZGFlNjYyMGU4YjM1ZTU5NmU1MzQzNTMxYTc1NTM4MWU1
ZmU3ZTRlLi5mNmE5YTY3ZjA2YjMzYWRmNzMwN2Q0NDBjZmY4ODUzZDMyZWUyNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCkBAIC0xMDIsNiAr
MTAyLDEzIEBAIHZvaWQgV2ViRm9ybUVsZW1lbnQ6OmdldEZvcm1Db250cm9sRWxlbWVudHMoV2Vi
VmVjdG9yPFdlYkZvcm1Db250cm9sRWxlbWVudD4mIHJlCiAgICAgcmVzdWx0LmFzc2lnbih0ZW1w
VmVjdG9yKTsKIH0KIAordm9pZCBXZWJGb3JtRWxlbWVudDo6ZmluaXNoUmVxdWVzdEF1dG9jb21w
bGV0ZShXZWJGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0IHJlc3VsdCkKK3sKKyNpZiBF
TkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgdW53cmFwPEhUTUxGb3JtRWxlbWVudD4o
KS0+ZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQ6
OkF1dG9jb21wbGV0ZVJlc3VsdD4ocmVzdWx0KSk7CisjZW5kaWYKK30KKwogV2ViRm9ybUVsZW1l
bnQ6OldlYkZvcm1FbGVtZW50KGNvbnN0IFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYgZSkK
ICAgICA6IFdlYkVsZW1lbnQoZSkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171979</attachid>
            <date>2012-11-01 20:07:10 -0700</date>
            <delta_ts>2012-11-02 14:30:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121101200531.patch</filename>
            <type>text/plain</type>
            <size>21353</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVmYjEwYmYyN2JhYmUw
ZmZhM2Y0OGFmZjVkMmFkYTMyNjhjOTkzNi4uNmY3NTlmOTY4NDljYzdmOWRlZTkwNTc3NGVkM2Mw
ZWY3MjFjMDgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTExLTAxICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1F
bGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFuIGlu
aXRpYWwgdmVyc2lvbiBvZiB0aGUgcHJvcG9zYWwgZm9yIGludGVyYWN0aXZlIGF1dG9jb21wbGV0
ZSBvdXRsaW5lZCBpbiB0aGlzIGVtYWlsOgorICAgICAgICBodHRwOi8vbGlzdHMud2hhdHdnLm9y
Zy9odGRpZy5jZ2kvd2hhdHdnLXdoYXR3Zy5vcmcvMjAxMi1PY3RvYmVyLzAzNzcxMS5odG1sCisK
KyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyBhbGxvdyB3ZWIgYXV0aG9ycyB0byBj
YWxsIGZvcm1FbGVtZW50LnJlcXVlc3RBdXRvY29tcGxldGUoKTsgYWZ0ZXIgc3Vic2NyaWJpbmcg
Zm9yCisgICAgICAgIGF1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVlcnJvciBldmVudHMgb24gZm9y
bUVsZW1lbnQuICBJZiB0aGUgZm9ybSdzIFthdXRvY29tcGxldGVdIGF0dHJpYnV0ZSBpcyAib2Zm
IiBhbgorICAgICAgICBlcnJvciB3aWxsIGJlIHNlbnQuICBPdGhlcndpc2UsIGEgcmVxdWVzdCB3
aWxsIGJlIGlzc3VlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQuIEF0IHRoZSBtb21lbnQsIHRo
ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBDaHJvbWUgKGh0dHBzOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMTEyNzAwMTgvKSB3aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1bnRp
bCB0aGUKKyAgICAgICAgVUkgb24gQ2hyb21lJ3Mgc2lkZSBpcyBidWlsdC4KKworICAgICAgICBD
dXJyZW50bHkgdGhpcyBpcyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBSRVFVRVNUX0FVVE9DT01Q
TEVURSwgd2hpY2ggaXMgZGlzYWJsZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9yZXF1
ZXN0LWF1dG9jb21wbGV0ZS5odG1sCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlcXVlc3RBdXRvY29tcGxldGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVxdWVzdEF1dG9jb21wbGV0
ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKEhU
TUxGb3JtRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0QXV0b2NvbXBs
ZXRlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50KToKKwogMjAxMi0xMS0wMSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGZhN2UxMWFjMTQ5NmJlNGRlNDhlYjU4ODRjOTVl
ZWRiMzc4MTA0OC4uYmMwYzk4NWJlNGRjN2RkNWQzNjk0ZjAxNjdmYzUyZGYzNTk5MTI3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMS0wMSAgRGFu
IEJlYW0gIDxkYmVhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUxGb3Jt
RWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNl
IGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAg
KiBwdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJBdXRvZmlsbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9maWxsQ2xpZW50
OjpkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRm9ybUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICog
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUp
OgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAgICAgKEZyYW1l
TG9hZGVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYkZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUp
OgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0xMS0wMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQXZvaWQgYXR0ZW1wdGluZyB0
byBkZWZlciBjb21taXRzIHdoZW4gdGhleSBhcmUgYWxyZWFkeSBkZWZlcnJlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgKaW5kZXggN2EwNTUyYTRhNzBkYTkzZDQyMDExN2ZkMjAyZTkyMDljM2I0NzIx
YS4uMDliOWFlNzY2ZmI1ZGI0MmY3MDJjMDU5MTE5ZDk2MDcxYzQyNmVmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCkBAIC0yNDMsNiArMjQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IFwKICAgICBtYWNybyh3ZWJraXRkZXZpY2Vwcm94aW1pdHkpIFwKICAgICBcCisgICAgbWFjcm8o
YXV0b2NvbXBsZXRlKSBcCisgICAgbWFjcm8oYXV0b2NvbXBsZXRlZXJyb3IpIFwKKyAgICBcCiAK
IC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCA0NTkwNzhmNjRjMDhiZTJiZTQzMWIwMDg4OGRj
ZjM5YmRiMzBiODY5Li5lZGVhMTU5NTc3N2NiZGRiMWUzMjllOWZkYTNjMmE1ODhmZjc5NWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTY1LDYgKzE2
NSw4IEBAIG5vdmFsaWRhdGUKIG5vd3JhcAogb2JqZWN0CiBvbmFib3J0CitvbmF1dG9jb21wbGV0
ZQorb25hdXRvY29tcGxldGVlcnJvcgogb25iZWZvcmVjb3B5CiBvbmJlZm9yZWN1dAogb25iZWZv
cmVsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggZGRlNWZm
YTMxNjNiZDBjZWRlMmNkODg0NTc2MzFmODBiMDkzNWI1ZS4uOGMyYTA0NThkYTJiY2QwYWNjNWJk
NjZhMWQwNGZhOWVkMWQ5M2I2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcApAQCAtNzQsNiArNzQsOSBAQCBIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbgogICAgICwgbV9z
aG91bGRTdWJtaXQoZmFsc2UpCiAgICAgLCBtX2lzSW5SZXNldEZ1bmN0aW9uKGZhbHNlKQogICAg
ICwgbV93YXNEZW1vdGVkKGZhbHNlKQorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkK
KyAgICAsIG1fcmVxdWVzdEF1dG9jb21wbGV0ZURlbGF5VGltZXIodGhpcywgJkhUTUxGb3JtRWxl
bWVudDo6cmVxdWVzdEF1dG9jb21wbGV0ZVRpbWVyRmlyZWQpCisjZW5kaWYKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShmb3JtVGFnKSk7CiB9CkBAIC0zODcsNiArMzkwLDQzIEBAIHZvaWQgSFRN
TEZvcm1FbGVtZW50OjpyZXNldCgpCiAgICAgbV9pc0luUmVzZXRGdW5jdGlvbiA9IGZhbHNlOwog
fQogCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQordm9pZCBIVE1MRm9ybUVsZW1l
bnQ6OnJlcXVlc3RBdXRvY29tcGxldGUoKQoreworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFzaG91bGRBdXRvY29tcGxldGUoKSkgeworICAgICAgICBmaW5pc2hSZXF1ZXN0QXV0b2NvbXBs
ZXRlKEF1dG9jb21wbGV0ZVJlc3VsdEVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFN0cmluZ1BhaXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFsdWVzOworICAgIGdldFRleHRG
aWVsZFZhbHVlcyhjb250cm9sTmFtZXNBbmRWYWx1ZXMpOworICAgIFJlZlB0cjxGb3JtU3RhdGU+
IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVl
cywgZG9jdW1lbnQoKSwgU3VibWl0dGVkQnlKYXZhU2NyaXB0KTsKKyAgICBmcmFtZS0+bG9hZGVy
KCktPmNsaWVudCgpLT5kaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKGZvcm1TdGF0ZS5yZWxlYXNlKCkp
OworfQorCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6ZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShB
dXRvY29tcGxldGVSZXN1bHQgcmVzdWx0KQoreworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQoRXZl
bnQ6OmNyZWF0ZShyZXN1bHQgPT0gQXV0b2NvbXBsZXRlUmVzdWx0U3VjY2VzcyA/IGV2ZW50TmFt
ZXMoKS5hdXRvY29tcGxldGVFdmVudCA6IGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgIG1f
cGVuZGluZ0F1dG9jb21wbGV0ZUV2ZW50cy5hcHBlbmQoZXZlbnQucmVsZWFzZSgpKTsKKyAgICBp
ZiAoIW1fcmVxdWVzdEF1dG9jb21wbGV0ZURlbGF5VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
bV9yZXF1ZXN0QXV0b2NvbXBsZXRlRGVsYXlUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3Zv
aWQgSFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRlVGltZXJGaXJlZChUaW1lcjxI
VE1MRm9ybUVsZW1lbnQ+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdF
dmVudHM7CisgICAgbV9wZW5kaW5nQXV0b2NvbXBsZXRlRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50
cyk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcGVuZGluZ0V2ZW50cy5z
aXplKCk7ICsraW5kZXgpCisgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRl
eF0ucmVsZWFzZSgpKTsKK30KKyNlbmRpZgorCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCiB7CiAgICAgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gYWN0aW9uQXR0cikKQEAgLTQwOCw2ICs0NDgsMTIgQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKICAgICBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucmVzZXRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOworI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9D
T01QTEVURSkKKyAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYXV0b2NvbXBsZXRl
QXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXV0
b2NvbXBsZXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmli
dXRlKSk7CisgICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmF1dG9jb21wbGV0ZWVy
cm9yQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
YXV0b2NvbXBsZXRlZXJyb3JFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyaWJ1dGUpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuaAppbmRleCBiZjI4Y2NhM2ZiMmM2YWY1ODU3OTUxYjYyY2JmMDIzMjBlNGE5NmRhLi44ZmMx
OTg2NWIyMGU4N2UxOWEyOGQ3ODVmNjBjMjBlMmYwOWU2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmgKQEAgLTk5LDYgKzk5LDE3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
Y2hlY2tWYWxpZGl0eSgpOwogCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAg
IGVudW0gQXV0b2NvbXBsZXRlUmVzdWx0IHsgQXV0b2NvbXBsZXRlUmVzdWx0U3VjY2VzcywgQXV0
b2NvbXBsZXRlUmVzdWx0RXJyb3IgfTsKKworICAgIHZvaWQgcmVxdWVzdEF1dG9jb21wbGV0ZSgp
OworICAgIHZvaWQgZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShBdXRvY29tcGxldGVSZXN1bHQp
OworICAgIHZvaWQgcmVxdWVzdEF1dG9jb21wbGV0ZVRpbWVyRmlyZWQoVGltZXI8SFRNTEZvcm1F
bGVtZW50PiopOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhdXRvY29t
cGxldGUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYXV0b2NvbXBsZXRl
ZXJyb3IpOworI2VuZGlmCisKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50Rm9y
QWxpYXMoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgdm9pZCBhZGRFbGVtZW50QWxpYXMoSFRN
TEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgYWxpYXMpOwogCkBAIC0x
NjIsNiArMTczLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5SZXNldEZ1bmN0aW9uOwog
CiAgICAgYm9vbCBtX3dhc0RlbW90ZWQ7CisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExF
VEUpCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3BlbmRpbmdBdXRvY29tcGxldGVFdmVu
dHM7CisgICAgVGltZXI8SFRNTEZvcm1FbGVtZW50PiBtX3JlcXVlc3RBdXRvY29tcGxldGVEZWxh
eVRpbWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKaW5kZXggODZhNmY3NGM2M2ZkZmQyZGFlMGRmYzAy
ZmQ3Y2Q3MmY4ZmViNTE4OC4uZDMwZGU0NzkyOTU2NTRhYzdhNTdmNDBhY2JhNWZlM2RkNmY4Nzgy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbApAQCAtNDIsNCArNDIs
OCBAQAogI2VuZGlmCiAgICAgdm9pZCByZXNldCgpOwogICAgIGJvb2xlYW4gY2hlY2tWYWxpZGl0
eSgpOworCisgICAgW0NvbmRpdGlvbmFsPVJFUVVFU1RfQVVUT0NPTVBMRVRFXSB2b2lkIHJlcXVl
c3RBdXRvY29tcGxldGUoKTsKKyAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9UkVRVUVT
VF9BVVRPQ09NUExFVEVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYXV0b2NvbXBsZXRlOwor
ICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1SRVFVRVNUX0FVVE9DT01QTEVURV0gYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hdXRvY29tcGxldGVlcnJvcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGQ2MGJkMzAxY2U1ZjdhNzExZmVmNTMxMDE5
MjVkM2IyMjFhMjJiNDguLjM1MDJiZWJiOTUyZTdkM2U3OTFhNWIyOTQ0MjA4MjQ1ODU4NGQ5YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xOTQsNCArMTk0LDEw
IEBAIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IEVtcHR5Q29udGV4dE1lbnVDbGllbnQ6OmN1c3Rv
bWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0CiAjZW5kaWYKICNlbmRpZgogCisjaWYgRU5BQkxF
KFJFUVVFU1RfQVVUT0NPTVBMRVRFKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
ZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3sKK30KKyNlbmRpZgor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNzNjOTgxOTM0MTU3Njcw
MjRmYjQ2MDAyNTlhZTVlZTkzYTlhZWM0MC4uYTA3ZWMxNTJiM2Y3OTkyNGI3MzU3NDY2NTNmNTMy
OWYwMzM1YjU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzg0LDYg
KzM4NCwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+KSBPVkVSUklERTsK
ICNlbmRpZgorCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIHZpcnR1YWwg
dm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgT1ZFUlJJ
REU7CisjZW5kaWYKIH07CiAKIGNsYXNzIEVtcHR5VGV4dENoZWNrZXJDbGllbnQgOiBwdWJsaWMg
VGV4dENoZWNrZXJDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCA0ZjIzODhhZjVmYmI0YzVkNjVjMzBiZmY4ODg0NTU0YzdjOGI5YzBkLi5iNGFi
Zjg4ZjM1OTk2MWI4OWFlZjg3NjA1NWE0OTc4NTZjZjEzYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzQ5LDYgKzM0OSwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbFN0YXJ0VXNpbmdQZWVyQ29ubmVjdGlvbkhhbmRsZXIoUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKikgeyB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01Q
TEVURSkKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+KSA9IDA7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRv
ZmlsbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxD
bGllbnQuaAppbmRleCA3YjQ4ZjU3ZGJlNDZlYTM3ZWY2ZjQ5OTRjNTEzY2IyZjkzZDY4N2ZjLi43
NDI0YzNmZWNkYmE5ZmZhNzI4NmUxYjdlZWYzZGY4Yzk2MGJmZDVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmgKQEAgLTMzLDYgKzMz
LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkZvcm1FbGVtZW50OworY2xh
c3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnB1dEVsZW1lbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2
ZW50OwogY2xhc3MgV2ViTm9kZTsKQEAgLTc1LDYgKzc3LDkgQEAgcHVibGljOgogICAgIC8vIGtl
eXMgdG8gbmF2aWdhdGUgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgcG9zc2libGUgc2VsZWN0aW9ucy4K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJBdXRvZmlsbFNlbGVjdGlvbihjb25zdCBXZWJOb2Rl
JikgeyB9CiAKKyAgICAvLyBJbmZvcm1zIHRoZSBicm93c2VyIGFuIGludGVyYWN0aXZlIGF1dG9j
b21wbGV0ZSBoYXMgYmVlbiByZXF1ZXN0ZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RB
dXRvY29tcGxldGUoV2ViRnJhbWUqLCBjb25zdCBXZWJGb3JtRWxlbWVudCYpIHsgfQorCiAgICAg
Ly8gSW5zdHJ1Y3RzIHRoZSBicm93c2VyIHRvIHJlbW92ZSB0aGUgQXV0b2NvbXBsZXRlIGVudHJ5
IHNwZWNpZmllZCBmcm9tCiAgICAgLy8gaXRzIERCLgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVB
dXRvY29tcGxldGVTdWdnZXN0aW9uKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCmluZGV4IDFlZjQzMWZhMzY1
NmY1YzI3OGRjMmU0ZDM1NjEyNGQxMWI3NjdkNTEuLjI3Yzk5ZDNhMTcxOTJmN2QwODA4Yzg3ZTcy
Y2E1ZGE4YTYzYjZjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Rm9ybUVsZW1lbnQuaApAQCAtNjksNiArNjksOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldE5hbWVkRWxlbWVudHMoY29uc3QgV2ViU3RyaW5nJiwg
V2ViVmVjdG9yPFdlYk5vZGU+Jik7CiAgICAgICAgIFdFQktJVF9FWFBPUlQgdm9pZCBnZXRGb3Jt
Q29udHJvbEVsZW1lbnRzKFdlYlZlY3RvcjxXZWJGb3JtQ29udHJvbEVsZW1lbnQ+JikgY29uc3Q7
CiAKKyAgICAgICAgZW51bSBBdXRvY29tcGxldGVSZXN1bHQgeyBBdXRvY29tcGxldGVSZXN1bHRT
dWNjZXNzLCBBdXRvY29tcGxldGVSZXN1bHRFcnJvciB9OworICAgICAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShXZWJGb3JtRWxlbWVudDo6QXV0b2NvbXBs
ZXRlUmVzdWx0KTsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgICAgICBXZWJGb3Jt
RWxlbWVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PiYp
OwogICAgICAgICBXZWJGb3JtRWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IDUzOGQ5ZjE5ODUyNWRmYTc0
MjEwYWQxMmM2Y2QyMmZiNzY2NDVhN2IuLmYzZTc4NTllZWI5ODUwNjUxZGJjZmU0MTg0NzQ1MjMw
ZWNjNDc1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwCkBAIC00OCw2ICs0OCw5IEBACiAjaW5jbHVkZSAiRm9udFNtb290aGlu
Z01vZGUuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCiAjaW5jbHVkZSAiR2VvbG9j
YXRpb25Qb3NpdGlvbi5oIgorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyNpbmNs
dWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5oIgpAQCAtODYsNiArODksOSBAQAogI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgogI2lu
Y2x1ZGUgIldlYkZpbGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRm9udERlc2NyaXB0aW9uLmgiCisj
aWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50
LmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkVycm9yLmgiCiAjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYklEQkN1cnNvci5oIgpAQCAt
NjMzLDMgKzYzOSw4IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVVJMUmVzcG9u
c2U6OkhUVFBfMV8xLCBSZXNvdXJjZVJlc3BvbnNlOjpIVFRQXzFfCiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpDT1JTTW9kZVVuc3BlY2lmaWVkLCBNZWRpYVBs
YXllckNsaWVudDo6VW5zcGVjaWZpZWQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJNZWRpYVBsYXllcjo6Q09SU01vZGVBbm9ueW1vdXMsIE1lZGlhUGxheWVyQ2xpZW50OjpBbm9u
eW1vdXMpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6Q09S
U01vZGVVc2VDcmVkZW50aWFscywgTWVkaWFQbGF5ZXJDbGllbnQ6OlVzZUNyZWRlbnRpYWxzKTsK
KworI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdFN1Y2Nlc3MsIEhUTUxG
b3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0U3VjY2Vzcyk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYkZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHRFcnJvciwgSFRN
TEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHRFcnJvcik7CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmlu
ZGV4IDExYzcyNmEzMjhhOWExYzYwNzhlYzE5NDhmYjI2ZTQ1ZjMxMDQxNzYuLjdmZmU5NDMzOWVj
MWM0ODIyOTdhMjcyNjU5ZTg2NjYyYTNlZDc3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtNjIsNiArNjIsOSBA
QAogI2VuZGlmCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1I
YW5kbGVJbnRlcm5hbC5oIgorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyNpbmNs
dWRlICJXZWJBdXRvZmlsbENsaWVudC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2ViRE9NRXZlbnQu
aCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xz
QWdlbnRQcml2YXRlLmgiCkBAIC0xNjUxLDUgKzE2NTQsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoV2lsbFN0YXJ0VXNpbmdQZWVyQ29ubmVjdGlvbkhhbmRsZXIoUlRD
UGVlckMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0
cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3sKKyAgICBpZiAobV93ZWJGcmFtZS0+dmlld0ltcGwo
KSAmJiBtX3dlYkZyYW1lLT52aWV3SW1wbCgpLT5hdXRvZmlsbENsaWVudCgpKQorICAgICAgICBt
X3dlYkZyYW1lLT52aWV3SW1wbCgpLT5hdXRvZmlsbENsaWVudCgpLT5kaWRSZXF1ZXN0QXV0b2Nv
bXBsZXRlKG1fd2ViRnJhbWUsIFdlYkZvcm1FbGVtZW50KGZvcm1TdGF0ZS0+Zm9ybSgpKSk7Cit9
CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4IDEyYTc2ZmVlZTM1MjYw
NWI5MDU3NTBhODRlNmM1ZmIzYmRiMWEzYmMuLjY1ODljMzdiYjc5ZTU2NDFkZjAzYTJhZWRjNGJm
YmQwZmFhOGFlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCkBAIC0yMjUsNiArMjI1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJD
b3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqKSBPVkVSUklERTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0
QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZFUlJJREU7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCmluZGV4IGNkYWU2NjIw
ZThiMzVlNTk2ZTUzNDM1MzFhNzU1MzgxZTVmZTdlNGUuLmY2YTlhNjdmMDZiMzNhZGY3MzA3ZDQ0
MGNmZjg4NTNkMzJlZTI0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
b3JtRWxlbWVudC5jcHAKQEAgLTEwMiw2ICsxMDIsMTMgQEAgdm9pZCBXZWJGb3JtRWxlbWVudDo6
Z2V0Rm9ybUNvbnRyb2xFbGVtZW50cyhXZWJWZWN0b3I8V2ViRm9ybUNvbnRyb2xFbGVtZW50PiYg
cmUKICAgICByZXN1bHQuYXNzaWduKHRlbXBWZWN0b3IpOwogfQogCit2b2lkIFdlYkZvcm1FbGVt
ZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKFdlYkZvcm1FbGVtZW50OjpBdXRvY29tcGxl
dGVSZXN1bHQgcmVzdWx0KQoreworI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyAg
ICB1bndyYXA8SFRNTEZvcm1FbGVtZW50PigpLT5maW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKHN0
YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0PihyZXN1bHQpKTsK
KyNlbmRpZgorfQorCiBXZWJGb3JtRWxlbWVudDo6V2ViRm9ybUVsZW1lbnQoY29uc3QgUGFzc1Jl
ZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiBlKQogICAgIDogV2ViRWxlbWVudChlKQogewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDkzNzhjMzJmNzgzNWQ4N2ZjMDk5ZmU3ZmQ3NGZmMzExN2QyY2IzMTcuLjI2YzczZWU1ZTQ5NjAz
NTNmYWU0MzI2ZmVlM2IwNWI4ZDdiY2M2MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0x
MS0wMSAgRGFuIEJlYW0gIDxkYmVhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50cyBhbiBpbml0aWFsIHZlcnNpb24gb2YgdGhlIHByb3Bvc2FsIGZvciBpbnRlcmFjdGl2ZSBh
dXRvY29tcGxldGUgb3V0bGluZWQgaW4gdGhpcyBlbWFpbDoKKyAgICAgICAgaHR0cDovL2xpc3Rz
LndoYXR3Zy5vcmcvaHRkaWcuY2dpL3doYXR3Zy13aGF0d2cub3JnLzIwMTItT2N0b2Jlci8wMzc3
MTEuaHRtbAorCisgICAgICAgIFRoZSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgYWxsb3cgd2ViIGF1
dGhvcnMgdG8gY2FsbCBmb3JtRWxlbWVudC5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7IGFmdGVyIHN1
YnNjcmliaW5nIGZvcgorICAgICAgICBhdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlZXJyb3IgZXZl
bnRzIG9uIGZvcm1FbGVtZW50LiAgSWYgdGhlIGZvcm0ncyBbYXV0b2NvbXBsZXRlXSBhdHRyaWJ1
dGUgaXMgIm9mZiIgYW4KKyAgICAgICAgZXJyb3Igd2lsbCBiZSBzZW50LiAgT3RoZXJ3aXNlLCBh
IHJlcXVlc3Qgd2lsbCBiZSBpc3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50LiBBdCB0aGUg
bW9tZW50LCB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaW4gQ2hyb21lIChodHRwczovL2Nv
ZGVyZXZpZXcuY2hyb21pdW0ub3JnLzExMjcwMDE4Lykgd2lsbCBzaW1wbHkgZGlzcGF0Y2ggYW4g
ZXJyb3IgdW50aWwgdGhlCisgICAgICAgIFVJIG9uIENocm9tZSdzIHNpZGUgaXMgYnVpbHQuCisK
KyAgICAgICAgQ3VycmVudGx5IHRoaXMgaXMgYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgUkVRVUVT
VF9BVVRPQ09NUExFVEUsIHdoaWNoIGlzIGRpc2FibGVkLgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9yZXF1ZXN0LWF1dG9jb21wbGV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvcmVxdWVzdC1hdXRvY29tcGxldGUuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMDEg
IEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
Y2hyb21pdW0gd2luZG93cyByZWJhc2VsaW5lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9yZXF1ZXN0LWF1dG9jb21wbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3JlcXVlc3QtYXV0b2NvbXBsZXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MzdhY2MwNzg1NDAzM2I1YjRjMjRiNzNlYTkzYWFkY2YwZGFiNTg3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1ZXN0LWF1dG9jb21wbGV0ZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3IEBACitCdWcgMTAwNTU3OiBJbXBsZW1lbnQgSFRNTEZvcm1FbGVtZW50
I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisKK0ZvciB0aGlzIHRl
c3QgdG8gcGFzcywgeW91IHNob3VsZCBzZWUgYWxsIFBBU1NFRCBiZWxvdy4KKworRkFJTEVEOiBu
byByZXF1ZXN0QXV0b2NvbXBsZXRlIGZ1bmN0aW9uCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1ZTliODU2ZWQx
MzU5OWZmOWVjN2ZhMDdlM2Y4NWU0ZmZiMGJjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3JlcXVlc3QtYXV0b2NvbXBsZXRlLmh0bWwKQEAgLTAsMCArMSw4NiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBsb2co
bWVzc2FnZSkKK3sKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJyk7CisgICAgY29uc29sZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtZXNzYWdlKSk7CisgICAgY29uc29sZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdicicpKTsKK30KKwordmFyIG51bUVycm9ycyA9IDA7Cit2YXIgbnVtRXJyb3JzRXhwZWN0
ZWQgPSAwOworCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgaWYgKHR5cGVvZiBIVE1MRm9y
bUVsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RBdXRvY29tcGxldGUgIT0gJ2Z1bmN0aW9uJykgewor
ICAgICAgICBsb2coJ0ZBSUxFRDogbm8gcmVxdWVzdEF1dG9jb21wbGV0ZSBmdW5jdGlvbicpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hlY2tEeW5hbWljQXR0cmlidXRlcygpOwor
ICAgIGNoZWNrUGFyc2VkQXR0cmlidXRlcygpOworfQorCitmdW5jdGlvbiBjaGVja0ZvckVudW1l
cmFibGVQcm9wZXJ0aWVzKGZvcm0pCit7CisgICAgdmFyIGVudW1lcmF0ZWQgPSBmYWxzZTsKKyAg
ICBmb3IgKHZhciBmaWVsZCBpbiBmb3JtKSB7CisgICAgICAgIGlmICgvb25hdXRvY29tcGxldGUv
LnRlc3QoZmllbGQpKQorICAgICAgICAgICAgIGxvZygnRkFJTEVEOiBlbnVtZXJhYmxlIGZvcm0g
YXR0cmlidXRlIGZvdW5kIG9uIEhUTUxGb3JtRWxlbWVudDogJyArIGZpZWxkKTsKKyAgICAgICAg
ZW51bWVyYXRlZCA9IHRydWU7CisgICAgfQorICAgIGxvZyhlbnVtZXJhdGVkID8gJ1BBU1NFRDog
bm8gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9uIEhUTUxGb3JtRWxlbWVudCcgOiAnRkFJTEVEOiB0
byBlbnVtZXJhdGUgSFRNTEZvcm1FbGVtZW50IHByb3BlcnRpZXMnKTsKK30KKworZnVuY3Rpb24g
Y2hlY2tQYXJzZWRBdHRyaWJ1dGVzKCkKK3sKKyAgICBudW1FcnJvcnNFeHBlY3RlZCArPSAxOwor
CisgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5mb3Jtc1swXTsKKyAgICBjaGVja0ZvckVudW1lcmFi
bGVQcm9wZXJ0aWVzKGZvcm0pOworICAgIGZvcm0ucmVxdWVzdEF1dG9jb21wbGV0ZSgpOworfQor
CitmdW5jdGlvbiBjaGVja0R5bmFtaWNBdHRyaWJ1dGVzKCkKK3sKKyAgICBudW1FcnJvcnNFeHBl
Y3RlZCArPSAxOworCisgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3Jt
Jyk7CisgICAgY2hlY2tGb3JFbnVtZXJhYmxlUHJvcGVydGllcyhmb3JtKTsKKworICAgIGZvcm0u
YXV0b2NvbXBsZXRlID0gJ29mZic7CisgICAgZm9ybS5vbmF1dG9jb21wbGV0ZWVycm9yID0gb25F
cnJvcjsKKyAgICBmb3JtLnJlcXVlc3RBdXRvY29tcGxldGUoKTsKK30KKworZnVuY3Rpb24gb25F
cnJvcigpCit7CisgICAgbnVtRXJyb3JzICs9IDE7CisgICAgaWYgKG51bUVycm9ycyA+IG51bUVy
cm9yc0V4cGVjdGVkKQorICAgICAgICBsb2coJ0ZBSUxFRDogdG9vIG1hbnkgZXJyb3IgZXZlbnRz
Jyk7CisgICAgZWxzZSBpZiAobnVtRXJyb3JzID09IG51bUVycm9yc0V4cGVjdGVkKQorICAgICAg
ICBkb25lVGVzdGluZygpOworfQorCitmdW5jdGlvbiBkb25lVGVzdGluZygpCit7CisgICAgbG9n
KCdQQVNTRUQ6IGdvdCBleHBlY3RlZCBudW1iZXIgb2YgZXJyb3IgZXZlbnRzICgnICsgbnVtRXJy
b3JzRXhwZWN0ZWQgKyAnKScpOworICAgIGlmICh3aW5kb3cubm90aWZ5RG9uZSkKKyAgICAgICAg
bm90aWZ5RG9uZSgpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRl
c3RzLCB0cnVlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD4gQnVnIDxhIGhyZWY9
Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDU1NyI+MTAwNTU3PC9h
PjogSW1wbGVtZW50IEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3Nv
Y2lhdGVkIGV2ZW50cyA8L3A+Cis8cD4gRm9yIHRoaXMgdGVzdCB0byBwYXNzLCB5b3Ugc2hvdWxk
IHNlZSBhbGwgUEFTU0VEIGJlbG93LiA8L3A+Cis8Zm9ybSBhdXRvY29tcGxldGU9Im9mZiIgb25h
dXRvY29tcGxldGVlcnJvcj0ib25FcnJvcigpOyI+PC9mb3JtPgorPHAgaWQ9ImNvbnNvbGUiPjwv
cD4KKzxwIGNsYXNzPSJibG9jayI+PC9wPgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172124</attachid>
            <date>2012-11-02 13:34:30 -0700</date>
            <delta_ts>2012-11-02 14:30:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121102133250.patch</filename>
            <type>text/plain</type>
            <size>25329</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVmYjEwYmYyN2JhYmUw
ZmZhM2Y0OGFmZjVkMmFkYTMyNjhjOTkzNi4uMjliYjE2YmE0ZDQ3NTAyOWU4N2Q1YmQ1NGVmM2Vl
MjdmOTI2YTE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTExLTAyICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1F
bGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFuIGlu
aXRpYWwgdmVyc2lvbiBvZiB0aGUgcHJvcG9zYWwgZm9yIGludGVyYWN0aXZlIGF1dG9jb21wbGV0
ZSBvdXRsaW5lZCBpbiB0aGlzIGVtYWlsOgorICAgICAgICBodHRwOi8vbGlzdHMud2hhdHdnLm9y
Zy9odGRpZy5jZ2kvd2hhdHdnLXdoYXR3Zy5vcmcvMjAxMi1PY3RvYmVyLzAzNzcxMS5odG1sCisK
KyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB3ZWIgYXV0aG9ycyB0
byBjYWxsIGZvcm1FbGVtZW50LnJlcXVlc3RBdXRvY29tcGxldGUoKTsgYWZ0ZXIgc3Vic2NyaWJp
bmcgZm9yCisgICAgICAgIGF1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVlcnJvciBldmVudHMgb24g
Zm9ybUVsZW1lbnQuIElmIHRoZSBmb3JtJ3MgW2F1dG9jb21wbGV0ZV0gYXR0cmlidXRlIGlzICJv
ZmYiIGFuCisgICAgICAgIGVycm9yIHdpbGwgYmUgZGlzcGF0Y2hlZC4gT3RoZXJ3aXNlLCBhIHJl
cXVlc3Qgd2lsbCBiZSBpc3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50LiAgQXQgdGhlIG1v
bWVudCwgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIGluIENocm9tZSAoaHR0cHM6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8xMTI3MDAxOC8pIHdpbGwgc2ltcGx5IGRpc3BhdGNoIGFuIGVy
cm9yIHVudGlsIHRoZQorICAgICAgICBVSSBvbiBDaHJvbWUncyBzaWRlIGlzIGJ1aWx0LgorCisg
ICAgICAgIEN1cnJlbnRseSB0aGlzIGlzIGJlaGluZCB0aGUgZmVhdHVyZSBmbGFnIFJFUVVFU1Rf
QVVUT0NPTVBMRVRFLCB3aGljaCBpcyBkaXNhYmxlZC4KKworICAgICAgICBUZXN0OiBmYXN0L2Zv
cm1zL2Zvcm0tcmVxdWVzdC1hdXRvY29tcGxldGUuaHRtbAorCisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCisgICAgICAgIEFkZGVkIGF1dG9jb21wbGV0
ZSBhbmQgYXV0b2NvbXBsZXRlZXJyb3IgZXZlbnRzLiBUaGUgYXV0b2NvbXBsZXRlIGV2ZW50IGlz
IGRpc3BhdGNoZWQgYWZ0ZXIgYSB1c2VyIGFkZHMgbW9yZQorICAgICAgICBpbmZvcm1hdGlvbiB0
byBhIGZvcm0gdXNpbmcgdGhlIGZ1dHVyZSBVSS4gVGhpcyBpcyBub3QgY3VycmVudGx5IGRpc3Bh
dGNoZWQgaW4gYW55IGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgQ2hyb21lKQorICAgICAgICBi
dXQgd2lsbCBiZSBpbiB0aGUgZnV0dXJlLiBUaGUgYXV0b2NvbXBsZXRlZXJyb3IgZXZlbnQgaXMg
ZGlzcGF0Y2hlZCB3aGVuIHRoZSBmb3JtIGhhcyBbYXV0b2NvbXBsZXRlPSJvZmYiXSBvbiB0aGUK
KyAgICAgICAgbm9kZSBiZWluZyBhc2tlZCBmb3IgYW4gaW50ZXJhY3RpdmUgYXV0b2NvbXBsZXRl
LiBUaGUgdXNlciBhZ2VudCBtYXkgYWxzbyBkaXNwYXRjaCB0aGlzIGV2ZW50IGlmIGl0IGRvZXNu
J3QgaW1wbGVtZW50CisgICAgICAgIHRoaXMgQVBJIGJ1dCBoYXMgdHVybmVkIG9uIHRoZSBmZWF0
dXJlIGZsYWcsIGNhbid0IGN1cnJlbnRseSBzaG93IGFuIGF1dG9jb21wbGV0ZSBVSSAoZS5nLiBy
dW5uaW5nIGhlYWRsZXNzbHkgb3IgaW4KKyAgICAgICAgYW4gSFRNTCBub3RpZmljYXRpb24sIHNl
Y3VyaXR5IGNvbmNlcm5zLCBvciBhbnkgb3RoZXIgcmVhc29uIGl0IGRlc2lyZXMpLgorCisgICAg
ICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKKyAgICAgICAgQWRkZWQgb25hdXRv
Y29tcGxldGUgYW5kIG9uYXV0b2NvbXBsZXRlZXJyb3IgYXR0cmlidXRlcyBzbyB0aGV5IGNhbiBi
ZSBwYXJzZWQgd2hlbiBjcmVhdGluZyBmb3JtIGVsZW1lbnRzIGFuZCB1c2VkCisgICAgICAgIGFz
IGV2ZW50IGxpc3RlbmVycy4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgICA8Zm9ybSBvbmF1dG9j
b21wbGV0ZT0iLyogd2hlbiBhdXRvY29tcGxldGUgc3VjY2VlZHMgKi8iIGF1dG9jb21wbGV0ZWVy
cm9yPSIvKiB3aGVuIGF1dG9jb21wbGV0ZSBmYWlscyAqLyI+CisKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OkhU
TUxGb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKworICAgICAgICBBZGRlZCBtX3Jl
cXVlc3RBdXRvY29tcGxldGVUaW1lciAoYSB0aW1lciB0aGF0J3MgdXNlZCB0byBkaXNwYXRjaCBl
dmVudHMgYXN5bmNocm9ub3VzbHkpIHRvIHRoZSBpbml0aWFsaXplciBsaXN0IHRoYXQKKyAgICAg
ICAgdHJpZ2dlcnMgcmVxdWVzdEF1dG9jb21wbGV0ZVRpbWVyRmlyZWQgd2hlbiBpdCB0aW1lcyBv
dXQuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVxdWVzdEF1dG9jb21w
bGV0ZSk6CisKKyAgICAgICAgQ2FsbGVkIHdoZW4gSFRNTEZvcm1FbGVtZW50I3JlcXVlc3RBdXRv
Y29tcGxldGUgaXMgY2FsbGVkIGZyb20gSlMgKGFsc28gc2VlIEhUTUxGb3JtRWxlbWVudC5pZGwp
IGFuZCBkZWNpZGVzIHdoZXRoZXIKKyAgICAgICAgdG8gZGlzcGF0Y2ggYW4gZXJyb3IgYW5kIGV4
aXQgZWFybHkgKGluIHRoZSBjYXNlIHdoZXJlIGF1dG9jb21wbGV0ZT0ib2ZmIikgb3IgcGFzcyB0
aGUgcmVxdWVzdCBvbiB0byB0aGUKKyAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZSk6
CisKKyAgICAgICAgQ2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgZm9yIGFuIGludGVyYWN0aXZlIGF1
dG9jb21wbGV0ZSBpcyBmaW5pc2hlZCB3aXRoIGVpdGhlciBhIHN1Y2Nlc3Mgb3IgZXJyb3IgcmVz
dWx0LiBUaGlzCisgICAgICAgIGNhdXNlcyBhbiBldmVudCB0byBxdWV1ZSBhbmQgZmlyZWQgYWZ0
ZXIgYSAwIHNlY29uZCBkZWxheS4gRXZlbnRzIGFyZSBvd25lZCBieSBIVE1MRm9ybUVsZW1lbnQg
YW5kIHJlZmVyZW5jZSB0aGUKKyAgICAgICAgdGFyZ2V0IGVsZW1lbnQgKHRoaXMpIHVudGlsIGZp
cmVkLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlcXVlc3RBdXRvY29t
cGxldGVUaW1lckZpcmVkKToKKworICAgICAgICBDYWxsZWQgd2hlbiB0aGUgZXZlbnQgdGltZXIg
cnVucyBvdXQgdG8gcHVtcCB0aGUgcXVldWUgb2YgY3VycmVudCBldmVudHMuIEV2ZW50cyBhcmUg
cmVsZWFzZWQgb24gZGlzcGF0Y2guCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorCisgICAgICAgIEVuY291bnRlcmluZyBvbmF1dG9jb21wbGV0
ZSBvciBvbmF1dG9jb21wbGV0ZWVycm9yIGF0dHJpYnV0ZXMgd2hpbGUgcGFyc2luZyBIVE1MRm9y
bUVsZW1lbnRzIG5vdyBhZGRzIGV2ZW50IGxpc3RlbmVycworICAgICAgICBmb3IgYXV0b2NvbXBs
ZXRlIGFuIGF1dG9jb21wbGV0ZWVycm9yIGV2ZW50cyAocmVzcGVjdGl2ZWx5KSB0byBkaXNwYXRj
aCB0aGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBhcyBhIHNjcmlwdC4KKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgIChIVE1MRm9ybUVsZW1lbnQpOgorCisgICAg
ICAgIEFkZGVkIHZhcmlvdXMgbWV0aG9kcyBhbmQgZGF0YSBtZW1iZXJzIGFzIHJlcXVpcmVkIGJ5
IHRoZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmlk
bDoKKworICAgICAgICBBZGRlZCB0aGUgbWV0aG9kIHJlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFz
c29jaWF0ZWQgRE9NIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcyAob25hdXRvY29tcGxldGUvb25h
dXRvY29tcGxldGVlcnJvcikKKyAgICAgICAgdG8gSFRNTEZvcm1FbGVtZW50J3MgcHVibGljIERP
TSBBUEkgKHVucHJlZml4ZWQsIGFzIHBlciBJYW4gSGlja3NvbidzIGFkdmljZSkuIEFsbCBhcmUg
cmVxdWlyZSB0aGUgQ29uZGl0aW9uYWwKKyAgICAgICAgUkVRVUVTVF9BVVRPQ09NUExFVEUgdG8g
YmUgZW5hYmxlZCB0byBiZSBhY3RpdmF0ZWQuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZSk6CisKKyAgICAgICAgQWRkZWQg
bm9vcCBpbXBsZW1lbnRhdGlvbiBmb3IgRnJhbWVMb2FkZXI6OmRpZFJlcXVlc3RBdXRvY29tcGxl
dGUuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50KToKKworICAgICAgICBBZGRlZCBGcmFtZUxvYWRlcjo6ZGlkUmVxdWVz
dEF1dG9jb21wbGV0ZSB0byBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJD
bGllbnQpOgorCisgICAgICAgIEFkZGVkIG5vb3AgaW1wbGVtZW50YXRpb24gdG8gRnJhbWVMb2Fk
ZXJDbGllbnQgaW50ZXJmYWNlICh3aGljaCBpcyBpbXBsZW1lbnRlZCBjaHJvbWl1bSdzIEZyYW1l
TG9hZGVyTG9hZGVySW1wbC5jcHApLgorCiAyMDEyLTExLTAxICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCAwZmE3ZTExYWMxNDk2YmU0ZGU0OGViNTg4NGM5NWVlZGIzNzgx
MDQ4Li5iZWZmNDhlMzNlNzY3NGE4N2NjMmE5ZTkzOWExZWZiODVmNDA1NGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTExLTAyICBEYW4gQmVhbSAg
PGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1FbGVtZW50
I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9u
IG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBl
ci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJBdXRvZmlsbENsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkF1
dG9maWxsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b2ZpbGxDbGllbnQ6OmRpZFJl
cXVlc3RBdXRvY29tcGxldGUpOgorCisgICAgICAgIEFkZGVkIFdlYkF1dG9maWxsQ2xpZW50Ojpk
aWRSZXF1ZXN0QXV0b2NvbXBsZXRlIHRvIGNocm9tZSdzIHB1YmxpYyBXZWJLaXQgaW50ZXJmYWNl
LgorCisgICAgICAgICogcHVibGljL1dlYkZvcm1FbGVtZW50Lmg6CisKKyAgICAgICAgQWRkZWQg
YW4gZW51bSB0aGF0IG1hdGNoZXMgSFRNTEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHQg
KGFuZCBhZGRlZCBjb21waWxlIHRpbWUgYXNzZXJ0KSBhbmQgYSBwdWJsaWMgbWV0aG9kCisgICAg
ICAgIChXZWJGb3JtRWxlbWVudDo6ZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZSkgdG8gV2ViRm9y
bUVsZW1lbnQncyBwdWJsaWMgaW50ZXJmYWNlLgorCisgICAgICAgICogc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwOgorCisgICAgICAgIEFkZGVkIGEgY29tcGlsZSB0aW1lIGFzc2VydCB0byBn
dWFyYW50ZWUgdGhlIEhUTUxGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0IGVudW0gbWF0
Y2hlcyB0aGUKKyAgICAgICAgV2ViRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdCBlbnVt
LgorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJlcXVl
c3RBdXRvY29tcGxldGUpOgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBhZGRlZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZSwgd2hpY2ggc2ltcGx5IHBhc3NlcyB0
aHJvdWdoIHRvIHRoZQorICAgICAgICBXZWJBdXRvZmlsbENsaWVudC4KKworICAgICAgICAqIHNy
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50SW1w
bCk6CisKKyAgICAgICAgSW1wbGVtZW50aW5nIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0
QXV0b2NvbXBsZXRlLgorCisgICAgICAgICogc3JjL1dlYkZvcm1FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUpOgor
ICAgICAgICAoV2ViS2l0KToKKworICAgICAgICBBZGRlZCBXZWJGb3JtRWxlbWVudDo6ZmluaXNo
UmVxdWVzdEF1dG9jb21wbGV0ZSB0byBhbGxvdyBjaHJvbWl1bSdzIHJlbmRlcmVyIGEgcHVibGlj
IEFQSSB0byBjYWxsIHRvIGZpbmlzaCB0aGUKKyAgICAgICAgYXV0b2NvbXBsZXRlIHJlcXVlc3Qg
b24gYSBXZWJGb3JtRWxlbWVudC4KKwogMjAxMi0xMS0wMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQXZvaWQgYXR0ZW1wdGluZyB0
byBkZWZlciBjb21taXRzIHdoZW4gdGhleSBhcmUgYWxyZWFkeSBkZWZlcnJlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgKaW5kZXggN2EwNTUyYTRhNzBkYTkzZDQyMDExN2ZkMjAyZTkyMDljM2I0NzIx
YS4uMDliOWFlNzY2ZmI1ZGI0MmY3MDJjMDU5MTE5ZDk2MDcxYzQyNmVmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCkBAIC0yNDMsNiArMjQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IFwKICAgICBtYWNybyh3ZWJraXRkZXZpY2Vwcm94aW1pdHkpIFwKICAgICBcCisgICAgbWFjcm8o
YXV0b2NvbXBsZXRlKSBcCisgICAgbWFjcm8oYXV0b2NvbXBsZXRlZXJyb3IpIFwKKyAgICBcCiAK
IC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCA0NTkwNzhmNjRjMDhiZTJiZTQzMWIwMDg4OGRj
ZjM5YmRiMzBiODY5Li5lZGVhMTU5NTc3N2NiZGRiMWUzMjllOWZkYTNjMmE1ODhmZjc5NWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTY1LDYgKzE2
NSw4IEBAIG5vdmFsaWRhdGUKIG5vd3JhcAogb2JqZWN0CiBvbmFib3J0CitvbmF1dG9jb21wbGV0
ZQorb25hdXRvY29tcGxldGVlcnJvcgogb25iZWZvcmVjb3B5CiBvbmJlZm9yZWN1dAogb25iZWZv
cmVsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggZGRlNWZm
YTMxNjNiZDBjZWRlMmNkODg0NTc2MzFmODBiMDkzNWI1ZS4uYjgzZGVjY2JhM2I3MjQ2MzVkMTg2
ZDAxODI4OWQ5NTg1MjBkMTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcApAQCAtNzQsNiArNzQsOSBAQCBIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbgogICAgICwgbV9z
aG91bGRTdWJtaXQoZmFsc2UpCiAgICAgLCBtX2lzSW5SZXNldEZ1bmN0aW9uKGZhbHNlKQogICAg
ICwgbV93YXNEZW1vdGVkKGZhbHNlKQorI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkK
KyAgICAsIG1fcmVxdWVzdEF1dG9jb21wbGV0ZVRpbWVyKHRoaXMsICZIVE1MRm9ybUVsZW1lbnQ6
OnJlcXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoZm9ybVRhZykpOwogfQpAQCAtMzg3LDYgKzM5MCw0MiBAQCB2b2lkIEhUTUxGb3Jt
RWxlbWVudDo6cmVzZXQoKQogICAgIG1faXNJblJlc2V0RnVuY3Rpb24gPSBmYWxzZTsKIH0KIAor
I2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKK3ZvaWQgSFRNTEZvcm1FbGVtZW50Ojpy
ZXF1ZXN0QXV0b2NvbXBsZXRlKCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc2hv
dWxkQXV0b2NvbXBsZXRlKCkpIHsKKyAgICAgICAgZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShB
dXRvY29tcGxldGVSZXN1bHRFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBT
dHJpbmdQYWlyVmVjdG9yIGNvbnRyb2xOYW1lc0FuZFZhbHVlczsKKyAgICBnZXRUZXh0RmllbGRW
YWx1ZXMoY29udHJvbE5hbWVzQW5kVmFsdWVzKTsKKyAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3Jt
U3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZSh0aGlzLCBjb250cm9sTmFtZXNBbmRWYWx1ZXMsIGRv
Y3VtZW50KCksIFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CisgICAgZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+ZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShmb3JtU3RhdGUucmVsZWFzZSgpKTsKK30K
Kwordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoQXV0b2Nv
bXBsZXRlUmVzdWx0IHJlc3VsdCkKK3sKKyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50KEV2ZW50Ojpj
cmVhdGUocmVzdWx0ID09IEF1dG9jb21wbGV0ZVJlc3VsdFN1Y2Nlc3MgPyBldmVudE5hbWVzKCku
YXV0b2NvbXBsZXRlRXZlbnQgOiBldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlZXJyb3JFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBtX3BlbmRp
bmdBdXRvY29tcGxldGVFdmVudHMuYXBwZW5kKGV2ZW50LnJlbGVhc2UoKSk7CisgICAgaWYgKCFt
X3JlcXVlc3RBdXRvY29tcGxldGVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3JlcXVlc3RB
dXRvY29tcGxldGVUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgSFRNTEZvcm1FbGVt
ZW50OjpyZXF1ZXN0QXV0b2NvbXBsZXRlVGltZXJGaXJlZChUaW1lcjxIVE1MRm9ybUVsZW1lbnQ+
KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgbV9w
ZW5kaW5nQXV0b2NvbXBsZXRlRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwZW5kaW5nRXZlbnRzLnNpemUoKTsgKytpKQorICAgICAgICBkaXNw
YXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaV0ucmVsZWFzZSgpKTsKK30KKyNlbmRpZgorCiB2b2lk
IEhUTUxGb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1
dGUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gYWN0aW9uQXR0cikKQEAgLTQwOCw2
ICs0NDcsMTIgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5zdWJtaXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyaWJ1dGUpKTsKICAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucmVzZXRB
dHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNl
dEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwor
I2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyAgICBlbHNlIGlmIChhdHRyaWJ1dGUu
bmFtZSgpID09IG9uYXV0b2NvbXBsZXRlQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7CisgICAgZWxzZSBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBvbmF1dG9jb21wbGV0ZWVycm9yQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlZXJyb3JFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyNlbmRpZgogICAgIGVsc2UK
ICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCBiZjI4Y2NhM2ZiMmM2YWY1ODU3OTUx
YjYyY2JmMDIzMjBlNGE5NmRhLi5hOGMyYmVlNDU0ZTgyNjAxMTg4Njg5NGU2NmZmOGI3NDU5MGYw
Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTk5LDYgKzk5LDE2
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpOwogCisjaWYgRU5BQkxFKFJF
UVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIGVudW0gQXV0b2NvbXBsZXRlUmVzdWx0IHsgQXV0b2Nv
bXBsZXRlUmVzdWx0U3VjY2VzcywgQXV0b2NvbXBsZXRlUmVzdWx0RXJyb3IgfTsKKworICAgIHZv
aWQgcmVxdWVzdEF1dG9jb21wbGV0ZSgpOworICAgIHZvaWQgZmluaXNoUmVxdWVzdEF1dG9jb21w
bGV0ZShBdXRvY29tcGxldGVSZXN1bHQpOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihhdXRvY29tcGxldGUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoYXV0b2NvbXBsZXRlZXJyb3IpOworI2VuZGlmCisKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KiBlbGVtZW50Rm9yQWxpYXMoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgdm9pZCBhZGRF
bGVtZW50QWxpYXMoSFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYg
YWxpYXMpOwogCkBAIC0xNjIsNiArMTcyLDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5S
ZXNldEZ1bmN0aW9uOwogCiAgICAgYm9vbCBtX3dhc0RlbW90ZWQ7CisKKyNpZiBFTkFCTEUoUkVR
VUVTVF9BVVRPQ09NUExFVEUpCisgICAgdm9pZCByZXF1ZXN0QXV0b2NvbXBsZXRlVGltZXJGaXJl
ZChUaW1lcjxIVE1MRm9ybUVsZW1lbnQ+Kik7CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+
IG1fcGVuZGluZ0F1dG9jb21wbGV0ZUV2ZW50czsKKyAgICBUaW1lcjxIVE1MRm9ybUVsZW1lbnQ+
IG1fcmVxdWVzdEF1dG9jb21wbGV0ZVRpbWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKaW5kZXggODZh
NmY3NGM2M2ZkZmQyZGFlMGRmYzAyZmQ3Y2Q3MmY4ZmViNTE4OC4uZDMwZGU0NzkyOTU2NTRhYzdh
NTdmNDBhY2JhNWZlM2RkNmY4NzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmlkbApAQCAtNDIsNCArNDIsOCBAQAogI2VuZGlmCiAgICAgdm9pZCByZXNldCgpOwogICAg
IGJvb2xlYW4gY2hlY2tWYWxpZGl0eSgpOworCisgICAgW0NvbmRpdGlvbmFsPVJFUVVFU1RfQVVU
T0NPTVBMRVRFXSB2b2lkIHJlcXVlc3RBdXRvY29tcGxldGUoKTsKKyAgICBbTm90RW51bWVyYWJs
ZSwgQ29uZGl0aW9uYWw9UkVRVUVTVF9BVVRPQ09NUExFVEVdIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9uYXV0b2NvbXBsZXRlOworICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1SRVFV
RVNUX0FVVE9DT01QTEVURV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hdXRvY29tcGxldGVl
cnJvcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGQ2MGJk
MzAxY2U1ZjdhNzExZmVmNTMxMDE5MjVkM2IyMjFhMjJiNDguLjM1MDJiZWJiOTUyZTdkM2U3OTFh
NWIyOTQ0MjA4MjQ1ODU4NGQ5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCkBAIC0xOTQsNCArMTk0LDEwIEBAIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IEVtcHR5Q29u
dGV4dE1lbnVDbGllbnQ6OmN1c3RvbWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0CiAjZW5kaWYK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQordm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPikKK3sKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
aW5kZXggNzNjOTgxOTM0MTU3NjcwMjRmYjQ2MDAyNTlhZTVlZTkzYTlhZWM0MC4uYTA3ZWMxNTJi
M2Y3OTkyNGI3MzU3NDY2NTNmNTMyOWYwMzM1YjU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaApAQCAtMzg0LDYgKzM4NCwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVu
dFJlcXVlc3Q+KSBPVkVSUklERTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NP
TVBMRVRFKQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisjZW5kaWYKIH07CiAKIGNsYXNzIEVtcHR5VGV4dENo
ZWNrZXJDbGllbnQgOiBwdWJsaWMgVGV4dENoZWNrZXJDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZjIzODhhZjVmYmI0YzVkNjVjMzBiZmY4
ODg0NTU0YzdjOGI5YzBkLi5iNGFiZjg4ZjM1OTk2MWI4OWFlZjg3NjA1NWE0OTc4NTZjZjEzYzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzQ5LDYg
KzM0OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN0YXJ0VXNpbmdQZWVyQ29ubmVjdGlv
bkhhbmRsZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKikgeyB9CiAjZW5kaWYKKworI2lmIEVO
QUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVl
c3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSA9IDA7CisjZW5kaWYKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaAppbmRleCA3YjQ4ZjU3ZGJlNDZlYTM3ZWY2ZjQ5
OTRjNTEzY2IyZjkzZDY4N2ZjLi43NDI0YzNmZWNkYmE5ZmZhNzI4NmUxYjdlZWYzZGY4Yzk2MGJm
ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRvZmls
bENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxs
Q2xpZW50LmgKQEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNz
IFdlYkZvcm1FbGVtZW50OworY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnB1dEVsZW1lbnQ7
CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTm9kZTsKQEAgLTc1LDYgKzc3LDkg
QEAgcHVibGljOgogICAgIC8vIGtleXMgdG8gbmF2aWdhdGUgb3V0c2lkZSB0aGUgcmFuZ2Ugb2Yg
cG9zc2libGUgc2VsZWN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJBdXRvZmlsbFNl
bGVjdGlvbihjb25zdCBXZWJOb2RlJikgeyB9CiAKKyAgICAvLyBJbmZvcm1zIHRoZSBicm93c2Vy
IGFuIGludGVyYWN0aXZlIGF1dG9jb21wbGV0ZSBoYXMgYmVlbiByZXF1ZXN0ZWQuCisgICAgdmly
dHVhbCB2b2lkIGRpZFJlcXVlc3RBdXRvY29tcGxldGUoV2ViRnJhbWUqLCBjb25zdCBXZWJGb3Jt
RWxlbWVudCYpIHsgfQorCiAgICAgLy8gSW5zdHJ1Y3RzIHRoZSBicm93c2VyIHRvIHJlbW92ZSB0
aGUgQXV0b2NvbXBsZXRlIGVudHJ5IHNwZWNpZmllZCBmcm9tCiAgICAgLy8gaXRzIERCLgogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVBdXRvY29tcGxldGVTdWdnZXN0aW9uKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZv
cm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVu
dC5oCmluZGV4IDFlZjQzMWZhMzY1NmY1YzI3OGRjMmU0ZDM1NjEyNGQxMWI3NjdkNTEuLjI3Yzk5
ZDNhMTcxOTJmN2QwODA4Yzg3ZTcyY2E1ZGE4YTYzYjZjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaApAQCAtNjksNiArNjksOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldE5hbWVkRWxlbWVu
dHMoY29uc3QgV2ViU3RyaW5nJiwgV2ViVmVjdG9yPFdlYk5vZGU+Jik7CiAgICAgICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBnZXRGb3JtQ29udHJvbEVsZW1lbnRzKFdlYlZlY3RvcjxXZWJGb3JtQ29u
dHJvbEVsZW1lbnQ+JikgY29uc3Q7CiAKKyAgICAgICAgZW51bSBBdXRvY29tcGxldGVSZXN1bHQg
eyBBdXRvY29tcGxldGVSZXN1bHRTdWNjZXNzLCBBdXRvY29tcGxldGVSZXN1bHRFcnJvciB9Owor
ICAgICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShXZWJG
b3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0KTsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgogICAgICAgICBXZWJGb3JtRWxlbWVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50PiYpOwogICAgICAgICBXZWJGb3JtRWxlbWVudCYgb3BlcmF0b3I9
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ+Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmlu
ZGV4IDUzOGQ5ZjE5ODUyNWRmYTc0MjEwYWQxMmM2Y2QyMmZiNzY2NDVhN2IuLmYzZTc4NTllZWI5
ODUwNjUxZGJjZmU0MTg0NzQ1MjMwZWNjNDc1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC00OCw2ICs0OCw5IEBACiAj
aW5jbHVkZSAiRm9udFNtb290aGluZ01vZGUuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVycm9y
LmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2lmIEVOQUJMRShSRVFVRVNU
X0FVVE9DT01QTEVURSkKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNlbmRpZgogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNs
dWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgpAQCAtODYsNiArODksOSBAQAogI2luY2x1ZGUg
IldlYkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIldlYkZpbGVJbmZvLmgiCiAjaW5jbHVkZSAiV2Vi
Rm9udERlc2NyaXB0aW9uLmgiCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorI2lu
Y2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
bkVycm9yLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUg
IldlYklEQkN1cnNvci5oIgpAQCAtNjMzLDMgKzYzOSw4IEBAIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViVVJMUmVzcG9uc2U6OkhUVFBfMV8xLCBSZXNvdXJjZVJlc3BvbnNlOjpIVFRQ
XzFfCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpDT1JTTW9k
ZVVuc3BlY2lmaWVkLCBNZWRpYVBsYXllckNsaWVudDo6VW5zcGVjaWZpZWQpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6Q09SU01vZGVBbm9ueW1vdXMsIE1l
ZGlhUGxheWVyQ2xpZW50OjpBbm9ueW1vdXMpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJNZWRpYVBsYXllcjo6Q09SU01vZGVVc2VDcmVkZW50aWFscywgTWVkaWFQbGF5ZXJDbGll
bnQ6OlVzZUNyZWRlbnRpYWxzKTsKKworI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0
ZVJlc3VsdFN1Y2Nlc3MsIEhUTUxGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0U3VjY2Vz
cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvcm1FbGVtZW50OjpBdXRvY29t
cGxldGVSZXN1bHRFcnJvciwgSFRNTEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHRFcnJv
cik7CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwCmluZGV4IDExYzcyNmEzMjhhOWExYzYwNzhlYzE5NDhmYjI2ZTQ1
ZjMxMDQxNzYuLjdmZmU5NDMzOWVjMWM0ODIyOTdhMjcyNjU5ZTg2NjYyYTNlZDc3YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcApAQCAtNjIsNiArNjIsOSBAQAogI2VuZGlmCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbC5oIgorI2lmIEVOQUJMRShSRVFVRVNU
X0FVVE9DT01QTEVURSkKKyNpbmNsdWRlICJXZWJBdXRvZmlsbENsaWVudC5oIgorI2VuZGlmCiAj
aW5jbHVkZSAiV2ViRE9NRXZlbnQuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgog
I2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQcml2YXRlLmgiCkBAIC0xNjUxLDUgKzE2NTQsMTIg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoV2lsbFN0YXJ0VXNpbmdQZWVy
Q29ubmVjdGlvbkhhbmRsZXIoUlRDUGVlckMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFJFUVVF
U1RfQVVUT0NPTVBMRVRFKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJlcXVlc3RB
dXRvY29tcGxldGUoUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3sKKyAgICBpZiAo
bV93ZWJGcmFtZS0+dmlld0ltcGwoKSAmJiBtX3dlYkZyYW1lLT52aWV3SW1wbCgpLT5hdXRvZmls
bENsaWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT52aWV3SW1wbCgpLT5hdXRvZmlsbENsaWVu
dCgpLT5kaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKG1fd2ViRnJhbWUsIFdlYkZvcm1FbGVtZW50KGZv
cm1TdGF0ZS0+Zm9ybSgpKSk7Cit9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
CmluZGV4IDEyYTc2ZmVlZTM1MjYwNWI5MDU3NTBhODRlNmM1ZmIzYmRiMWEzYmMuLjY1ODljMzdi
Yjc5ZTU2NDFkZjAzYTJhZWRjNGJmYmQwZmFhOGFlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCkBAIC0yMjUsNiArMjI1LDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJD
b25uZWN0aW9uSGFuZGxlcihXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqKSBPVkVS
UklERTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9y
bVN0YXRlPikgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VEb2N1
bWVudFZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Rm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1l
bnQuY3BwCmluZGV4IGNkYWU2NjIwZThiMzVlNTk2ZTUzNDM1MzFhNzU1MzgxZTVmZTdlNGUuLmY2
YTlhNjdmMDZiMzNhZGY3MzA3ZDQ0MGNmZjg4NTNkMzJlZTI0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAKQEAgLTEwMiw2ICsxMDIsMTMgQEAg
dm9pZCBXZWJGb3JtRWxlbWVudDo6Z2V0Rm9ybUNvbnRyb2xFbGVtZW50cyhXZWJWZWN0b3I8V2Vi
Rm9ybUNvbnRyb2xFbGVtZW50PiYgcmUKICAgICByZXN1bHQuYXNzaWduKHRlbXBWZWN0b3IpOwog
fQogCit2b2lkIFdlYkZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKFdlYkZv
cm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHQgcmVzdWx0KQoreworI2lmIEVOQUJMRShSRVFV
RVNUX0FVVE9DT01QTEVURSkKKyAgICB1bndyYXA8SFRNTEZvcm1FbGVtZW50PigpLT5maW5pc2hS
ZXF1ZXN0QXV0b2NvbXBsZXRlKHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudDo6QXV0b2NvbXBs
ZXRlUmVzdWx0PihyZXN1bHQpKTsKKyNlbmRpZgorfQorCiBXZWJGb3JtRWxlbWVudDo6V2ViRm9y
bUVsZW1lbnQoY29uc3QgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiBlKQogICAgIDogV2Vi
RWxlbWVudChlKQogewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkzNzhjMzJmNzgzNWQ4N2ZjMDk5ZmU3ZmQ3NGZmMzExN2Qy
Y2IzMTcuLmFhY2U1MDA2Yzc4MjY5NjY4YmFjYzY0MWQxZDQwNjNlYzUzYTM1YjggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAxMi0xMS0wMiAgRGFuIEJlYW0gIDxkYmVhbUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRl
IGFuZCBhc3NvY2lhdGVkIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAwNTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkcyB0ZXN0cyBmb3IgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgcHJvcG9zYWwgZm9yIGludGVyYWN0aXZlIGF1dG9jb21wbGV0ZSBvdXRsaW5lZCBpbiB0
aGlzIGVtYWlsOgorICAgICAgICBodHRwOi8vbGlzdHMud2hhdHdnLm9yZy9odGRpZy5jZ2kvd2hh
dHdnLXdoYXR3Zy5vcmcvMjAxMi1PY3RvYmVyLzAzNzcxMS5odG1sCisKKyAgICAgICAgVGhlIGdv
YWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB3ZWIgYXV0aG9ycyB0byBjYWxsIGZvcm1FbGVt
ZW50LnJlcXVlc3RBdXRvY29tcGxldGUoKTsgYWZ0ZXIgc3Vic2NyaWJpbmcKKyAgICAgICAgZm9y
IGF1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVlcnJvciBldmVudHMgb24gZm9ybUVsZW1lbnQuIElm
IHRoZSBmb3JtJ3MgW2F1dG9jb21wbGV0ZV0gYXR0cmlidXRlIGlzICJvZmYiIGFuCisgICAgICAg
IGVycm9yIHdpbGwgYmUgZGlzcGF0Y2hlZC4gT3RoZXJ3aXNlLCBhIHJlcXVlc3Qgd2lsbCBiZSBp
c3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50LiAgQXQgdGhlIG1vbWVudCwgdGhlCisgICAg
ICAgIGltcGxlbWVudGF0aW9uIGluIENocm9tZSAoaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVt
Lm9yZy8xMTI3MDAxOC8pIHdpbGwgc2ltcGx5IGRpc3BhdGNoIGFuIGVycm9yIHVudGlsIHRoZQor
ICAgICAgICBVSSBvbiBDaHJvbWUncyBzaWRlIGlzIGJ1aWx0LgorCisgICAgICAgIEN1cnJlbnRs
eSB0aGUgaW1wbGVtZW50YXRpb24gaXMgYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgUkVRVUVTVF9B
VVRPQ09NUExFVEUsIHdoaWNoIGlzIGRpc2FibGVkLCBzbyB0aGUgdGVzdAorICAgICAgICBpcyBl
eHBlY3RlZCB0byBmYWlsLiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBjdXJyZW50bHkgbm8gY2xp
ZW50IGltcGxlbWVudHMgdGhpcyBtZXRob2Qgb24gSFRNTEZvcm1FbGVtZW50CisgICAgICAgICpI
VE1MRm9ybUVsZW1lbnQjcmVxdWVzdEF1dG9jb21wbGV0ZSkgYW5kIHJldHVybnMuIFdoZW4gdGhl
IGNocm9tZS1zaWRlIGxhbmRzIEknbGwgYWRkIGEgc3VjY2VzcyBjYXNlIGluCisgICAgICAgIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvIHdpdGggdGhlIGV4cGVjdGVk
IHN1Y2Nlc3NmdWwgcmVzdWx0cy4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZm9ybS1yZXF1ZXN0
LWF1dG9jb21wbGV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
Zm9ybS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0wMSAgRW1p
bCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJv
bWl1bSB3aW5kb3dzIHJlYmFzZWxpbmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tcmVxdWVzdC1hdXRvY29tcGxldGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9mb3JtLXJlcXVlc3QtYXV0b2NvbXBsZXRlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZTZmZjEzYjAxOTA1YWNkZmFlZjI2MDM5OTY5NGVlZmQzZmU3N2JjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLXJlcXVlc3QtYXV0b2NvbXBsZXRl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK0J1ZyAxMDA1NTc6IEltcGxlbWVudCBIVE1M
Rm9ybUVsZW1lbnQjcmVxdWVzdEF1dG9jb21wbGV0ZSBhbmQgYXNzb2NpYXRlZCBldmVudHMKKwor
Rm9yIHRoaXMgdGVzdCB0byBwYXNzLCB5b3Ugc2hvdWxkIHNlZSBhbGwgUEFTU0VEIGJlbG93Lgor
CitGQUlMIG5vIHJlcXVlc3RBdXRvY29tcGxldGUgZnVuY3Rpb24KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2Zvcm0tcmVxdWVzdC1hdXRvY29tcGxldGUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVh
ODZlNTM5YmM0N2IzOGQ0ODA3M2M2ZTdhYzE3Y2Q3ZjUxZWNhM2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tcmVxdWVzdC1hdXRvY29tcGxldGUuaHRtbApA
QCAtMCwwICsxLDc5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIG51bUVycm9ycyA9IDA7Cit2YXIgbnVtRXJy
b3JzRXhwZWN0ZWQgPSAwOworCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgaWYgKHR5cGVv
ZiBIVE1MRm9ybUVsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RBdXRvY29tcGxldGUgIT0gJ2Z1bmN0
aW9uJykgeworICAgICAgICB0ZXN0RmFpbGVkKCdubyByZXF1ZXN0QXV0b2NvbXBsZXRlIGZ1bmN0
aW9uJyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY2hlY2tEeW5hbWljQXR0cmlidXRlcygpOworICAgIGNoZWNrUGFyc2VkQXR0cmlidXRl
cygpOworfQorCitmdW5jdGlvbiBjaGVja0ZvckVudW1lcmFibGVQcm9wZXJ0aWVzKGZvcm0pCit7
CisgICAgdmFyIGVudW1lcmF0ZWQgPSBmYWxzZTsKKyAgICBmb3IgKHZhciBmaWVsZCBpbiBmb3Jt
KSB7CisgICAgICAgIGlmICgvb25hdXRvY29tcGxldGUvLnRlc3QoZmllbGQpKQorICAgICAgICAg
ICAgdGVzdEZhaWxlZCgnZW51bWVyYWJsZSBmb3JtIGF0dHJpYnV0ZSBmb3VuZCBvbiBIVE1MRm9y
bUVsZW1lbnQ6ICcgKyBmaWVsZCk7CisgICAgICAgIGVudW1lcmF0ZWQgPSB0cnVlOworICAgIH0K
KyAgICBpZiAoZW51bWVyYXRlZCkKKyAgICAgICAgdGVzdFBhc3NlZCgnbm8gZW51bWVyYWJsZSBw
cm9wZXJ0aWVzIG9uIEhUTUxGb3JtRWxlbWVudCcpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZh
aWxlZCgnZmFpbGVkIHRvIGVudW1lcmF0ZSBIVE1MRm9ybUVsZW1lbnQgcHJvcGVydGllcycpOwor
fQorCitmdW5jdGlvbiBjaGVja1BhcnNlZEF0dHJpYnV0ZXMoKQoreworICAgIG51bUVycm9yc0V4
cGVjdGVkICs9IDE7CisKKyAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWzBdOworICAgIGNo
ZWNrRm9yRW51bWVyYWJsZVByb3BlcnRpZXMoZm9ybSk7CisgICAgZm9ybS5yZXF1ZXN0QXV0b2Nv
bXBsZXRlKCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRHluYW1pY0F0dHJpYnV0ZXMoKQoreworICAg
IG51bUVycm9yc0V4cGVjdGVkICs9IDE7CisKKyAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2Zvcm0nKTsKKyAgICBjaGVja0ZvckVudW1lcmFibGVQcm9wZXJ0aWVzKGZvcm0p
OworCisgICAgZm9ybS5hdXRvY29tcGxldGUgPSAnb2ZmJzsKKyAgICBmb3JtLm9uYXV0b2NvbXBs
ZXRlZXJyb3IgPSBvbkVycm9yOworICAgIGZvcm0ucmVxdWVzdEF1dG9jb21wbGV0ZSgpOworfQor
CitmdW5jdGlvbiBvbkVycm9yKCkKK3sKKyAgICBudW1FcnJvcnMgKz0gMTsKKyAgICBpZiAobnVt
RXJyb3JzID4gbnVtRXJyb3JzRXhwZWN0ZWQpCisgICAgICAgIHRlc3RGYWlsZWQoJ3RvbyBtYW55
IGVycm9yIGV2ZW50cycpOworICAgIGVsc2UgaWYgKG51bUVycm9ycyA9PSBudW1FcnJvcnNFeHBl
Y3RlZCkgeworICAgICAgICB0ZXN0UGFzc2VkKCdnb3QgZXhwZWN0ZWQgbnVtYmVyIG9mIGVycm9y
IGV2ZW50cyAoJyArIG51bUVycm9yc0V4cGVjdGVkICsgJyknKTsKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgfQorfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRl
c3RzLCB0cnVlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD4gQnVnIDxhIGhyZWY9
Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDU1NyI+MTAwNTU3PC9h
PjogSW1wbGVtZW50IEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3Nv
Y2lhdGVkIGV2ZW50cyA8L3A+Cis8cD4gRm9yIHRoaXMgdGVzdCB0byBwYXNzLCB5b3Ugc2hvdWxk
IHNlZSBhbGwgUEFTU0VEIGJlbG93LiA8L3A+Cis8Zm9ybSBhdXRvY29tcGxldGU9Im9mZiIgb25h
dXRvY29tcGxldGVlcnJvcj0ib25FcnJvcigpOyI+PC9mb3JtPgorPHAgaWQ9ImNvbnNvbGUiPjwv
cD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172139</attachid>
            <date>2012-11-02 14:30:09 -0700</date>
            <delta_ts>2012-11-02 14:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121102142828.patch</filename>
            <type>text/plain</type>
            <size>26690</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVmYjEwYmYyN2JhYmUw
ZmZhM2Y0OGFmZjVkMmFkYTMyNjhjOTkzNi4uYjRjZGM4ZTRmM2RkYzgwMzNjNDU5NzhlODVlMjcw
NTU1MGE0Mzg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTExLTAyICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1F
bGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFuIGlu
aXRpYWwgdmVyc2lvbiBvZiB0aGUgcHJvcG9zYWwgZm9yIGludGVyYWN0aXZlIGF1dG9jb21wbGV0
ZSBvdXRsaW5lZCBpbiB0aGlzIGVtYWlsOgorICAgICAgICBodHRwOi8vbGlzdHMud2hhdHdnLm9y
Zy9odGRpZy5jZ2kvd2hhdHdnLXdoYXR3Zy5vcmcvMjAxMi1PY3RvYmVyLzAzNzcxMS5odG1sCisK
KyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB3ZWIgYXV0aG9ycyB0
byBjYWxsIGZvcm1FbGVtZW50LnJlcXVlc3RBdXRvY29tcGxldGUoKTsgYWZ0ZXIgc3Vic2NyaWJp
bmcgZm9yCisgICAgICAgIGF1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVlcnJvciBldmVudHMgb24g
Zm9ybUVsZW1lbnQuIElmIHRoZSBmb3JtJ3MgW2F1dG9jb21wbGV0ZV0gYXR0cmlidXRlIGlzICJv
ZmYiIGFuCisgICAgICAgIGVycm9yIHdpbGwgYmUgZGlzcGF0Y2hlZC4gT3RoZXJ3aXNlLCBhIHJl
cXVlc3Qgd2lsbCBiZSBpc3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50LiAgQXQgdGhlIG1v
bWVudCwgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIGluIENocm9tZSAoaHR0cHM6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8xMTI3MDAxOC8pIHdpbGwgc2ltcGx5IGRpc3BhdGNoIGFuIGVy
cm9yIHVudGlsIHRoZQorICAgICAgICBVSSBvbiBDaHJvbWUncyBzaWRlIGlzIGJ1aWx0LiBCb3Ro
IGF1dG9jb21wbGV0ZSBhbmQgYXV0b2NvbXBsZXRlZXJyb3IgZXZlbnRzIHdpbGwgYmUgZGlzcGF0
Y2hlZCBhc3luY2hyb25vdXNseQorICAgICAgICBhZnRlciBhIHNtYWxsIGRlbGF5IHRvIGJlaGF2
ZSBjb25zaXN0ZW50bHkgaW4gYWxsIHNpdHVhdGlvbnMgYW5kIGltcGxlbWVudGF0aW9ucy4KKwor
ICAgICAgICBDdXJyZW50bHkgdGhpcyBpcyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBSRVFVRVNU
X0FVVE9DT01QTEVURSwgd2hpY2ggaXMgZGlzYWJsZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9m
b3Jtcy9mb3JtLXJlcXVlc3QtYXV0b2NvbXBsZXRlLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKworICAgICAgICBBZGRlZCBhdXRvY29tcGxl
dGUgYW5kIGF1dG9jb21wbGV0ZWVycm9yIGV2ZW50cy4gVGhlIGF1dG9jb21wbGV0ZSBldmVudCBp
cyBkaXNwYXRjaGVkIGFmdGVyIGEgdXNlciBhZGRzIG1vcmUKKyAgICAgICAgaW5mb3JtYXRpb24g
dG8gYSBmb3JtIHVzaW5nIHRoZSBmdXR1cmUgVUkuIFRoaXMgaXMgbm90IGN1cnJlbnRseSBkaXNw
YXRjaGVkIGluIGFueSBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIENocm9tZSkKKyAgICAgICAg
YnV0IHdpbGwgYmUgaW4gdGhlIGZ1dHVyZS4gVGhlIGF1dG9jb21wbGV0ZWVycm9yIGV2ZW50IGlz
IGRpc3BhdGNoZWQgd2hlbiB0aGUgZm9ybSBoYXMgW2F1dG9jb21wbGV0ZT0ib2ZmIl0gb24gdGhl
CisgICAgICAgIG5vZGUgYmVpbmcgYXNrZWQgZm9yIGFuIGludGVyYWN0aXZlIGF1dG9jb21wbGV0
ZS4gVGhlIHVzZXIgYWdlbnQgbWF5IGFsc28gZGlzcGF0Y2ggdGhpcyBldmVudCBpZiBpdCBkb2Vz
bid0IGltcGxlbWVudAorICAgICAgICB0aGlzIEFQSSBidXQgaGFzIHR1cm5lZCBvbiB0aGUgZmVh
dHVyZSBmbGFnLCBjYW4ndCBjdXJyZW50bHkgc2hvdyBhbiBhdXRvY29tcGxldGUgVUkgKGUuZy4g
cnVubmluZyBoZWFkbGVzc2x5IG9yIGluCisgICAgICAgIGFuIEhUTUwgbm90aWZpY2F0aW9uLCBz
ZWN1cml0eSBjb25jZXJucywgb3IgYW55IG90aGVyIHJlYXNvbiBpdCBkZXNpcmVzKS4KKworICAg
ICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorCisgICAgICAgIEFkZGVkIG9uYXV0
b2NvbXBsZXRlIGFuZCBvbmF1dG9jb21wbGV0ZWVycm9yIGF0dHJpYnV0ZXMgc28gdGhleSBjYW4g
YmUgcGFyc2VkIHdoZW4gY3JlYXRpbmcgZm9ybSBlbGVtZW50cyBhbmQgdXNlZAorICAgICAgICBh
cyBldmVudCBsaXN0ZW5lcnMuIEZvciBleGFtcGxlOgorCisgICAgICAgICAgPGZvcm0gb25hdXRv
Y29tcGxldGU9Ii8qIHdoZW4gYXV0b2NvbXBsZXRlIHN1Y2NlZWRzICovIiBhdXRvY29tcGxldGVl
cnJvcj0iLyogd2hlbiBhdXRvY29tcGxldGUgZmFpbHMgKi8iPgorCisgICAgICAgICogaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpI
VE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisKKyAgICAgICAgQWRkZWQgbV9y
ZXF1ZXN0QXV0b2NvbXBsZXRlVGltZXIgKGEgdGltZXIgdGhhdCdzIHVzZWQgdG8gZGlzcGF0Y2gg
ZXZlbnRzIGFzeW5jaHJvbm91c2x5KSB0byB0aGUgaW5pdGlhbGl6ZXIgbGlzdCB0aGF0CisgICAg
ICAgIHRyaWdnZXJzIHJlcXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkIHdoZW4gaXQgdGltZXMg
b3V0LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlcXVlc3RBdXRvY29t
cGxldGUpOgorCisgICAgICAgIENhbGxlZCB3aGVuIEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0
b2NvbXBsZXRlIGlzIGNhbGxlZCBmcm9tIEpTIChhbHNvIHNlZSBIVE1MRm9ybUVsZW1lbnQuaWRs
KSBhbmQgZGVjaWRlcyB3aGV0aGVyCisgICAgICAgIHRvIGRpc3BhdGNoIGFuIGVycm9yIGFuZCBl
eGl0IGVhcmx5IChpbiB0aGUgY2FzZSB3aGVyZSBhdXRvY29tcGxldGU9Im9mZiIpIG9yIHBhc3Mg
dGhlIHJlcXVlc3Qgb24gdG8gdGhlCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUp
OgorCisgICAgICAgIENhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGZvciBhbiBpbnRlcmFjdGl2ZSBh
dXRvY29tcGxldGUgaXMgZmluaXNoZWQgd2l0aCBlaXRoZXIgYSBzdWNjZXNzIG9yIGVycm9yIHJl
c3VsdC4gVGhpcworICAgICAgICBjYXVzZXMgYW4gZXZlbnQgdG8gcXVldWUgYW5kIGZpcmVkIGFm
dGVyIGEgMCBzZWNvbmQgZGVsYXkuIEV2ZW50cyBhcmUgb3duZWQgYnkgSFRNTEZvcm1FbGVtZW50
IGFuZCByZWZlcmVuY2UgdGhlCisgICAgICAgIHRhcmdldCBlbGVtZW50ICh0aGlzKSB1bnRpbCBm
aXJlZC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2Nv
bXBsZXRlVGltZXJGaXJlZCk6CisKKyAgICAgICAgQ2FsbGVkIHdoZW4gdGhlIGV2ZW50IHRpbWVy
IHJ1bnMgb3V0IHRvIHB1bXAgdGhlIHF1ZXVlIG9mIGN1cnJlbnQgZXZlbnRzLiBFdmVudHMgYXJl
IHJlbGVhc2VkIG9uIGRpc3BhdGNoLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKworICAgICAgICBFbmNvdW50ZXJpbmcgb25hdXRvY29tcGxl
dGUgb3Igb25hdXRvY29tcGxldGVlcnJvciBhdHRyaWJ1dGVzIHdoaWxlIHBhcnNpbmcgSFRNTEZv
cm1FbGVtZW50cyBub3cgYWRkcyBldmVudCBsaXN0ZW5lcnMKKyAgICAgICAgZm9yIGF1dG9jb21w
bGV0ZSBhbiBhdXRvY29tcGxldGVlcnJvciBldmVudHMgKHJlc3BlY3RpdmVseSkgdG8gZGlzcGF0
Y2ggdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgYXMgYSBzY3JpcHQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1FbGVtZW50KToKKworICAg
ICAgICBBZGRlZCB2YXJpb3VzIG1ldGhvZHMgYW5kIGRhdGEgbWVtYmVycyBhcyByZXF1aXJlZCBi
eSB0aGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGw6CisKKyAgICAgICAgQWRkZWQgdGhlIG1ldGhvZCByZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBh
c3NvY2lhdGVkIERPTSBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZXMgKG9uYXV0b2NvbXBsZXRlL29u
YXV0b2NvbXBsZXRlZXJyb3IpCisgICAgICAgIHRvIEhUTUxGb3JtRWxlbWVudCdzIHB1YmxpYyBE
T00gQVBJICh1bnByZWZpeGVkLCBhcyBwZXIgSWFuIEhpY2tzb24ncyBhZHZpY2UpLiBBbGwgYXJl
IHJlcXVpcmUgdGhlIENvbmRpdGlvbmFsCisgICAgICAgIFJFUVVFU1RfQVVUT0NPTVBMRVRFIHRv
IGJlIGVuYWJsZWQgdG8gYmUgYWN0aXZhdGVkLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUpOgorCisgICAgICAgIEFkZGVk
IG5vb3AgaW1wbGVtZW50YXRpb24gZm9yIEZyYW1lTG9hZGVyOjpkaWRSZXF1ZXN0QXV0b2NvbXBs
ZXRlLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoRW1wdHlG
cmFtZUxvYWRlckNsaWVudCk6CisKKyAgICAgICAgQWRkZWQgRnJhbWVMb2FkZXI6OmRpZFJlcXVl
c3RBdXRvY29tcGxldGUgdG8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVy
Q2xpZW50KToKKworICAgICAgICBBZGRlZCBub29wIGltcGxlbWVudGF0aW9uIHRvIEZyYW1lTG9h
ZGVyQ2xpZW50IGludGVyZmFjZSAod2hpY2ggaXMgaW1wbGVtZW50ZWQgY2hyb21pdW0ncyBGcmFt
ZUxvYWRlckxvYWRlckltcGwuY3BwKS4KKwogMjAxMi0xMS0wMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMGZhN2UxMWFjMTQ5NmJlNGRlNDhlYjU4ODRjOTVlZWRiMzc4
MTA0OC4uYzc0YWY0Y2NjZDVmNjUxMmVmMzA0YmM1NjEyN2M5YjFhNGUwZGJhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMi0xMS0wMiAgRGFuIEJlYW0g
IDxkYmVhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUxGb3JtRWxlbWVu
dCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhbiBpbml0aWFs
IHZlcnNpb24gb2YgdGhlIHByb3Bvc2FsIGZvciBpbnRlcmFjdGl2ZSBhdXRvY29tcGxldGUgb3V0
bGluZWQgaW4gdGhpcyBlbWFpbDoKKyAgICAgICAgaHR0cDovL2xpc3RzLndoYXR3Zy5vcmcvaHRk
aWcuY2dpL3doYXR3Zy13aGF0d2cub3JnLzIwMTItT2N0b2Jlci8wMzc3MTEuaHRtbAorCisgICAg
ICAgIFRoZSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgdG8gYWxsb3cgd2ViIGF1dGhvcnMgdG8gY2Fs
bCBmb3JtRWxlbWVudC5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7IGFmdGVyIHN1YnNjcmliaW5nIGZv
cgorICAgICAgICBhdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlZXJyb3IgZXZlbnRzIG9uIGZvcm1F
bGVtZW50LiBJZiB0aGUgZm9ybSdzIFthdXRvY29tcGxldGVdIGF0dHJpYnV0ZSBpcyAib2ZmIiBh
bgorICAgICAgICBlcnJvciB3aWxsIGJlIGRpc3BhdGNoZWQuIE90aGVyd2lzZSwgYSByZXF1ZXN0
IHdpbGwgYmUgaXNzdWVkIHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudC4gIEF0IHRoZSBtb21lbnQs
IHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBDaHJvbWUgKGh0dHBzOi8vY29kZXJldmll
dy5jaHJvbWl1bS5vcmcvMTEyNzAwMTgvKSB3aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1
bnRpbCB0aGUKKyAgICAgICAgVUkgb24gQ2hyb21lJ3Mgc2lkZSBpcyBidWlsdC4gQm90aCBhdXRv
Y29tcGxldGUgYW5kIGF1dG9jb21wbGV0ZWVycm9yIGV2ZW50cyB3aWxsIGJlIGRpc3BhdGNoZWQg
YXN5bmNocm9ub3VzbHkKKyAgICAgICAgYWZ0ZXIgYSBzbWFsbCBkZWxheSB0byBiZWhhdmUgY29u
c2lzdGVudGx5IGluIGFsbCBzaXR1YXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgQ3VycmVudGx5IHRoaXMgaXMgYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgUkVRVUVTVF9BVVRP
Q09NUExFVEUsIHdoaWNoIGlzIGRpc2FibGVkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMv
Zm9ybS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQXV0
b2ZpbGxDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJBdXRvZmlsbENs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9maWxsQ2xpZW50OjpkaWRSZXF1ZXN0QXV0
b2NvbXBsZXRlKToKKworICAgICAgICBBZGRlZCBXZWJBdXRvZmlsbENsaWVudDo6ZGlkUmVxdWVz
dEF1dG9jb21wbGV0ZSB0byBjaHJvbWUncyBwdWJsaWMgV2ViS2l0IGludGVyZmFjZS4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJGb3JtRWxlbWVudC5oOgorCisgICAgICAgIEFkZGVkIGFuIGVudW0g
dGhhdCBtYXRjaGVzIEhUTUxGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0IChhbmQgYWRk
ZWQgY29tcGlsZSB0aW1lIGFzc2VydCkgYW5kIGEgcHVibGljIG1ldGhvZAorICAgICAgICAoV2Vi
Rm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUpIHRvIFdlYkZvcm1FbGVtZW50
J3MgcHVibGljIGludGVyZmFjZS4KKworICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcDoKKworICAgICAgICBBZGRlZCBhIGNvbXBpbGUgdGltZSBhc3NlcnQgdG8gZ3VhcmFudGVl
IHRoZSBIVE1MRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdCBlbnVtIG1hdGNoZXMgdGhl
CisgICAgICAgIFdlYkZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHQgZW51bS4KKworICAg
ICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWRSZXF1ZXN0QXV0b2Nv
bXBsZXRlKToKKworICAgICAgICBJbXBsZW1lbnRlZCB0aGUgYWRkZWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUsIHdoaWNoIHNpbXBseSBwYXNzZXMgdGhyb3VnaCB0
byB0aGUKKyAgICAgICAgV2ViQXV0b2ZpbGxDbGllbnQuCisKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEltcGwpOgorCisg
ICAgICAgIEltcGxlbWVudGluZyBGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVxdWVzdEF1dG9jb21w
bGV0ZS4KKworICAgICAgICAqIHNyYy9XZWJGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAg
KFdlYktpdCk6CisKKyAgICAgICAgQWRkZWQgV2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RB
dXRvY29tcGxldGUgdG8gYWxsb3cgY2hyb21pdW0ncyByZW5kZXJlciBhIHB1YmxpYyBBUEkgdG8g
Y2FsbCB0byBmaW5pc2ggdGhlCisgICAgICAgIGF1dG9jb21wbGV0ZSByZXF1ZXN0IG9uIGEgV2Vi
Rm9ybUVsZW1lbnQuCisKIDIwMTItMTEtMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEF2b2lkIGF0dGVtcHRpbmcgdG8gZGVmZXIg
Y29tbWl0cyB3aGVuIHRoZXkgYXJlIGFscmVhZHkgZGVmZXJyZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCmluZGV4IDdhMDU1MmE0YTcwZGE5M2Q0MjAxMTdmZDIwMmU5MjA5YzNiNDcyMWEuLjA5Yjlh
ZTc2NmZiNWRiNDJmNzAyYzA1OTExOWQ5NjA3MWM0MjZlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaApAQCAtMjQzLDYgKzI0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAg
bWFjcm8od2Via2l0ZGV2aWNlcHJveGltaXR5KSBcCiAgICAgXAorICAgIG1hY3JvKGF1dG9jb21w
bGV0ZSkgXAorICAgIG1hY3JvKGF1dG9jb21wbGV0ZWVycm9yKSBcCisgICAgXAogCiAvLyBlbmQg
b2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KaW5kZXggNDU5MDc4ZjY0YzA4YmUyYmU0MzFiMDA4ODhkY2YzOWJkYjMw
Yjg2OS4uZWRlYTE1OTU3NzdjYmRkYjFlMzI5ZTlmZGEzYzJhNTg4ZmY3OTVkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE2NSw2ICsxNjUsOCBAQCBu
b3ZhbGlkYXRlCiBub3dyYXAKIG9iamVjdAogb25hYm9ydAorb25hdXRvY29tcGxldGUKK29uYXV0
b2NvbXBsZXRlZXJyb3IKIG9uYmVmb3JlY29weQogb25iZWZvcmVjdXQKIG9uYmVmb3JlbG9hZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGRkZTVmZmEzMTYzYmQw
Y2VkZTJjZDg4NDU3NjMxZjgwYjA5MzViNWUuLjE4YWM3MDkyYzFjN2I0ZTQ3NjQwMDQ1YjAzNzMz
ZTQ5YmM3YjJkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAg
LTc0LDYgKzc0LDkgQEAgSFRNTEZvcm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW4KICAgICAsIG1fc2hvdWxkU3Vi
bWl0KGZhbHNlKQogICAgICwgbV9pc0luUmVzZXRGdW5jdGlvbihmYWxzZSkKICAgICAsIG1fd2Fz
RGVtb3RlZChmYWxzZSkKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgLCBt
X3JlcXVlc3RBdXRvY29tcGxldGVUaW1lcih0aGlzLCAmSFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0
QXV0b2NvbXBsZXRlVGltZXJGaXJlZCkKKyNlbmRpZgogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGZvcm1UYWcpKTsKIH0KQEAgLTM4Nyw2ICszOTAsNDQgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6
OnJlc2V0KCkKICAgICBtX2lzSW5SZXNldEZ1bmN0aW9uID0gZmFsc2U7CiB9CiAKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVxdWVzdEF1
dG9jb21wbGV0ZSgpCit7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZEF1dG9j
b21wbGV0ZSgpKSB7CisgICAgICAgIGZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoQXV0b2NvbXBs
ZXRlUmVzdWx0RXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nUGFp
clZlY3RvciBjb250cm9sTmFtZXNBbmRWYWx1ZXM7CisgICAgZ2V0VGV4dEZpZWxkVmFsdWVzKGNv
bnRyb2xOYW1lc0FuZFZhbHVlcyk7CisgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0g
Rm9ybVN0YXRlOjpjcmVhdGUodGhpcywgY29udHJvbE5hbWVzQW5kVmFsdWVzLCBkb2N1bWVudCgp
LCBTdWJtaXR0ZWRCeUphdmFTY3JpcHQpOworICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkt
PmRpZFJlcXVlc3RBdXRvY29tcGxldGUoZm9ybVN0YXRlLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQg
SFRNTEZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKEF1dG9jb21wbGV0ZVJl
c3VsdCByZXN1bHQpCit7CisgICAgUmVmUHRyPEV2ZW50PiBldmVudChFdmVudDo6Y3JlYXRlKHJl
c3VsdCA9PSBBdXRvY29tcGxldGVSZXN1bHRTdWNjZXNzID8gZXZlbnROYW1lcygpLmF1dG9jb21w
bGV0ZUV2ZW50IDogZXZlbnROYW1lcygpLmF1dG9jb21wbGV0ZWVycm9yRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgbV9wZW5kaW5nQXV0b2Nv
bXBsZXRlRXZlbnRzLmFwcGVuZChldmVudC5yZWxlYXNlKCkpOworCisgICAgLy8gRGlzcGF0Y2gg
ZXZlbnRzIGxhdGVyIGFzIHRoaXMgQVBJIGlzIG1lYW50IHRvIHdvcmsgYXN5bmNocm9ub3VzbHkg
aW4gYWxsIHNpdHVhdGlvbnMgYW5kIGltcGxlbWVudGF0aW9ucy4KKyAgICBpZiAoIW1fcmVxdWVz
dEF1dG9jb21wbGV0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcmVxdWVzdEF1dG9jb21w
bGV0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJl
cXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkKFRpbWVyPEhUTUxGb3JtRWxlbWVudD4qKQorewor
ICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGluZ0V2ZW50czsKKyAgICBtX3BlbmRpbmdB
dXRvY29tcGxldGVFdmVudHMuc3dhcChwZW5kaW5nRXZlbnRzKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHBlbmRpbmdFdmVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRpc3BhdGNoRXZl
bnQocGVuZGluZ0V2ZW50c1tpXS5yZWxlYXNlKCkpOworfQorI2VuZGlmCisKIHZvaWQgSFRNTEZv
cm1FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKIHsK
ICAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBhY3Rpb25BdHRyKQpAQCAtNDA4LDYgKzQ0OSwx
MiBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiBhdHRyaWJ1dGUpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLnN1Ym1pdEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJp
YnV0ZSkpOwogICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25yZXNldEF0dHIpCiAg
ICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2V0RXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7CisjaWYgRU5B
QkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkg
PT0gb25hdXRvY29tcGxldGVBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IG9uYXV0b2NvbXBsZXRlZXJyb3JBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAg
ICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IGJmMjhjY2EzZmIyYzZhZjU4NTc5NTFiNjJjYmYw
MjMyMGU0YTk2ZGEuLmE4YzJiZWU0NTRlODI2MDExODg2ODk0ZTY2ZmY4Yjc0NTkwZjBjYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtOTksNiArOTksMTYgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KCk7CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9B
VVRPQ09NUExFVEUpCisgICAgZW51bSBBdXRvY29tcGxldGVSZXN1bHQgeyBBdXRvY29tcGxldGVS
ZXN1bHRTdWNjZXNzLCBBdXRvY29tcGxldGVSZXN1bHRFcnJvciB9OworCisgICAgdm9pZCByZXF1
ZXN0QXV0b2NvbXBsZXRlKCk7CisgICAgdm9pZCBmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKEF1
dG9jb21wbGV0ZVJlc3VsdCk7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGF1dG9jb21wbGV0ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhdXRv
Y29tcGxldGVlcnJvcik7CisjZW5kaWYKKwogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVs
ZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGFkZEVsZW1lbnRB
bGlhcyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBhbGlhcyk7
CiAKQEAgLTE2Miw2ICsxNzIsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblJlc2V0RnVu
Y3Rpb247CiAKICAgICBib29sIG1fd2FzRGVtb3RlZDsKKworI2lmIEVOQUJMRShSRVFVRVNUX0FV
VE9DT01QTEVURSkKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkKFRpbWVy
PEhUTUxGb3JtRWxlbWVudD4qKTsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5k
aW5nQXV0b2NvbXBsZXRlRXZlbnRzOworICAgIFRpbWVyPEhUTUxGb3JtRWxlbWVudD4gbV9yZXF1
ZXN0QXV0b2NvbXBsZXRlVGltZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAppbmRleCA4NmE2Zjc0YzYz
ZmRmZDJkYWUwZGZjMDJmZDdjZDcyZjhmZWI1MTg4Li5kMzBkZTQ3OTI5NTY1NGFjN2E1N2Y0MGFj
YmE1ZmUzZGQ2Zjg3ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
CkBAIC00Miw0ICs0Miw4IEBACiAjZW5kaWYKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgYm9vbGVh
biBjaGVja1ZhbGlkaXR5KCk7CisKKyAgICBbQ29uZGl0aW9uYWw9UkVRVUVTVF9BVVRPQ09NUExF
VEVdIHZvaWQgcmVxdWVzdEF1dG9jb21wbGV0ZSgpOworICAgIFtOb3RFbnVtZXJhYmxlLCBDb25k
aXRpb25hbD1SRVFVRVNUX0FVVE9DT01QTEVURV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25h
dXRvY29tcGxldGU7CisgICAgW05vdEVudW1lcmFibGUsIENvbmRpdGlvbmFsPVJFUVVFU1RfQVVU
T0NPTVBMRVRFXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmF1dG9jb21wbGV0ZWVycm9yOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZDYwYmQzMDFjZTVm
N2E3MTFmZWY1MzEwMTkyNWQzYjIyMWEyMmI0OC4uMzUwMmJlYmI5NTJlN2QzZTc5MWE1YjI5NDQy
MDgyNDU4NTg0ZDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAg
LTE5NCw0ICsxOTQsMTAgQEAgUGFzc093blB0cjxDb250ZXh0TWVudT4gRW1wdHlDb250ZXh0TWVu
dUNsaWVudDo6Y3VzdG9taXplTWVudShQYXNzT3duUHRyPENvbnRleHQKICNlbmRpZgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCit2b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQor
eworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA3
M2M5ODE5MzQxNTc2NzAyNGZiNDYwMDI1OWFlNWVlOTNhOWFlYzQwLi5hMDdlYzE1MmIzZjc5OTI0
YjczNTc0NjY1M2Y1MzI5ZjAzMzViNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCkBAIC0zODQsNiArMzg0LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8SW50ZW50UmVxdWVz
dD4pIE9WRVJSSURFOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUp
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+KSBPVkVSUklERTsKKyNlbmRpZgogfTsKIAogY2xhc3MgRW1wdHlUZXh0Q2hlY2tlckNs
aWVudCA6IHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmMjM4OGFmNWZiYjRjNWQ2NWMzMGJmZjg4ODQ1NTRj
N2M4YjljMGQuLmI0YWJmODhmMzU5OTYxYjg5YWVmODc2MDU1YTQ5Nzg1NmNmMTNjNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNDksNiArMzQ5LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0aW9uSGFuZGxl
cihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqKSB7IH0KICNlbmRpZgorCisjaWYgRU5BQkxFKFJF
UVVFU1RfQVVUT0NPTVBMRVRFKQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9j
b21wbGV0ZShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pID0gMDsKKyNlbmRpZgogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJBdXRvZmlsbENsaWVudC5oCmluZGV4IDdiNDhmNTdkYmU0NmVhMzdlZjZmNDk5NGM1MTNj
YjJmOTNkNjg3ZmMuLjc0MjRjM2ZlY2RiYTlmZmE3Mjg2ZTFiN2VlZjNkZjhjOTYwYmZkNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQu
aApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRm9y
bUVsZW1lbnQ7CitjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklucHV0RWxlbWVudDsKIGNsYXNz
IFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJOb2RlOwpAQCAtNzUsNiArNzcsOSBAQCBwdWJs
aWM6CiAgICAgLy8ga2V5cyB0byBuYXZpZ2F0ZSBvdXRzaWRlIHRoZSByYW5nZSBvZiBwb3NzaWJs
ZSBzZWxlY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhckF1dG9maWxsU2VsZWN0aW9u
KGNvbnN0IFdlYk5vZGUmKSB7IH0KIAorICAgIC8vIEluZm9ybXMgdGhlIGJyb3dzZXIgYW4gaW50
ZXJhY3RpdmUgYXV0b2NvbXBsZXRlIGhhcyBiZWVuIHJlcXVlc3RlZC4KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkZvcm1FbGVtZW50
JikgeyB9CisKICAgICAvLyBJbnN0cnVjdHMgdGhlIGJyb3dzZXIgdG8gcmVtb3ZlIHRoZSBBdXRv
Y29tcGxldGUgZW50cnkgc3BlY2lmaWVkIGZyb20KICAgICAvLyBpdHMgREIuCiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKaW5k
ZXggMWVmNDMxZmEzNjU2ZjVjMjc4ZGMyZTRkMzU2MTI0ZDExYjc2N2Q1MS4uMjdjOTlkM2ExNzE5
MmY3ZDA4MDhjODdlNzJjYTVkYThhNjNiNmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCkBAIC02OSw2ICs2OSw5IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZ2V0TmFtZWRFbGVtZW50cyhjb25z
dCBXZWJTdHJpbmcmLCBXZWJWZWN0b3I8V2ViTm9kZT4mKTsKICAgICAgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGdldEZvcm1Db250cm9sRWxlbWVudHMoV2ViVmVjdG9yPFdlYkZvcm1Db250cm9sRWxl
bWVudD4mKSBjb25zdDsKIAorICAgICAgICBlbnVtIEF1dG9jb21wbGV0ZVJlc3VsdCB7IEF1dG9j
b21wbGV0ZVJlc3VsdFN1Y2Nlc3MsIEF1dG9jb21wbGV0ZVJlc3VsdEVycm9yIH07CisgICAgICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKFdlYkZvcm1FbGVt
ZW50OjpBdXRvY29tcGxldGVSZXN1bHQpOworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAg
ICAgICAgIFdlYkZvcm1FbGVtZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQ+Jik7CiAgICAgICAgIFdlYkZvcm1FbGVtZW50JiBvcGVyYXRvcj0oY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggNTM4
ZDlmMTk4NTI1ZGZhNzQyMTBhZDEyYzZjZDIyZmI3NjY0NWE3Yi4uZjNlNzg1OWVlYjk4NTA2NTFk
YmNmZTQxODQ3NDUyMzBlY2M0NzU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTQ4LDYgKzQ4LDkgQEAKICNpbmNsdWRl
ICJGb250U21vb3RoaW5nTW9kZS5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uRXJyb3IuaCIKICNp
bmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NP
TVBMRVRFKQorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2VuZGlmCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLmgiCkBAIC04Niw2ICs4OSw5IEBACiAjaW5jbHVkZSAiV2ViRmls
ZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJXZWJGb250RGVz
Y3JpcHRpb24uaCIKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisjaW5jbHVkZSAi
V2ViRm9ybUVsZW1lbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uRXJyb3Iu
aCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURC
Q3Vyc29yLmgiCkBAIC02MzMsMyArNjM5LDggQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJVUkxSZXNwb25zZTo6SFRUUF8xXzEsIFJlc291cmNlUmVzcG9uc2U6OkhUVFBfMV8KIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlVW5zcGVj
aWZpZWQsIE1lZGlhUGxheWVyQ2xpZW50OjpVbnNwZWNpZmllZCk7CiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpDT1JTTW9kZUFub255bW91cywgTWVkaWFQbGF5
ZXJDbGllbnQ6OkFub255bW91cyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1l
ZGlhUGxheWVyOjpDT1JTTW9kZVVzZUNyZWRlbnRpYWxzLCBNZWRpYVBsYXllckNsaWVudDo6VXNl
Q3JlZGVudGlhbHMpOworCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0
U3VjY2VzcywgSFRNTEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHRTdWNjZXNzKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJl
c3VsdEVycm9yLCBIVE1MRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdEVycm9yKTsKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKaW5kZXggMTFjNzI2YTMyOGE5YTFjNjA3OGVjMTk0OGZiMjZlNDVmMzEwNDE3
Ni4uN2ZmZTk0MzM5ZWMxYzQ4MjI5N2EyNzI2NTllODY2NjJhM2VkNzdhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBA
IC02Miw2ICs2Miw5IEBACiAjZW5kaWYKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsLmgiCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NP
TVBMRVRFKQorI2luY2x1ZGUgIldlYkF1dG9maWxsQ2xpZW50LmgiCisjZW5kaWYKICNpbmNsdWRl
ICJXZWJET01FdmVudC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKQEAgLTE2NTEsNSArMTY1NCwxMiBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0
aW9uSGFuZGxlcihSVENQZWVyQwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRP
Q09NUExFVEUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkUmVxdWVzdEF1dG9jb21w
bGV0ZShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQoreworICAgIGlmIChtX3dlYkZy
YW1lLT52aWV3SW1wbCgpICYmIG1fd2ViRnJhbWUtPnZpZXdJbXBsKCktPmF1dG9maWxsQ2xpZW50
KCkpCisgICAgICAgIG1fd2ViRnJhbWUtPnZpZXdJbXBsKCktPmF1dG9maWxsQ2xpZW50KCktPmRp
ZFJlcXVlc3RBdXRvY29tcGxldGUobV93ZWJGcmFtZSwgV2ViRm9ybUVsZW1lbnQoZm9ybVN0YXRl
LT5mb3JtKCkpKTsKK30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXgg
MTJhNzZmZWVlMzUyNjA1YjkwNTc1MGE4NGU2YzVmYjNiZGIxYTNiYy4uNjU4OWMzN2JiNzllNTY0
MWRmMDNhMmFlZGM0YmZiZDBmYWE4YWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIyNSw2ICsyMjUsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdGFydFVzaW5nUGVlckNvbm5lY3Rp
b25IYW5kbGVyKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciopIE9WRVJSSURFOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgdmlydHVhbCB2
b2lkIGRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+
KSBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgbWFrZURvY3VtZW50Vmll
dygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAK
aW5kZXggY2RhZTY2MjBlOGIzNWU1OTZlNTM0MzUzMWE3NTUzODFlNWZlN2U0ZS4uZjZhOWE2N2Yw
NmIzM2FkZjczMDdkNDQwY2ZmODg1M2QzMmVlMjRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcApAQCAtMTAyLDYgKzEwMiwxMyBAQCB2b2lkIFdl
YkZvcm1FbGVtZW50OjpnZXRGb3JtQ29udHJvbEVsZW1lbnRzKFdlYlZlY3RvcjxXZWJGb3JtQ29u
dHJvbEVsZW1lbnQ+JiByZQogICAgIHJlc3VsdC5hc3NpZ24odGVtcFZlY3Rvcik7CiB9CiAKK3Zv
aWQgV2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoV2ViRm9ybUVsZW1l
bnQ6OkF1dG9jb21wbGV0ZVJlc3VsdCByZXN1bHQpCit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQVVU
T0NPTVBMRVRFKQorICAgIHVud3JhcDxIVE1MRm9ybUVsZW1lbnQ+KCktPmZpbmlzaFJlcXVlc3RB
dXRvY29tcGxldGUoc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1
bHQ+KHJlc3VsdCkpOworI2VuZGlmCit9CisKIFdlYkZvcm1FbGVtZW50OjpXZWJGb3JtRWxlbWVu
dChjb25zdCBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4mIGUpCiAgICAgOiBXZWJFbGVtZW50
KGUpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOTM3OGMzMmY3ODM1ZDg3ZmMwOTlmZTdmZDc0ZmYzMTE3ZDJjYjMxNy4u
OGJhYmFhODAzMzFlMzg0NGQzNjA3ZGQwYzE3MzZkMjM5ZDQ5ZWQ4NyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDEyLTExLTAyICBEYW4gQmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbXBsZW1lbnQgSFRNTEZvcm1FbGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFz
c29jaWF0ZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA1NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRzIHRlc3RzIGZvciBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBw
cm9wb3NhbCBmb3IgaW50ZXJhY3RpdmUgYXV0b2NvbXBsZXRlIG91dGxpbmVkIGluIHRoaXMgZW1h
aWw6CisgICAgICAgIGh0dHA6Ly9saXN0cy53aGF0d2cub3JnL2h0ZGlnLmNnaS93aGF0d2ctd2hh
dHdnLm9yZy8yMDEyLU9jdG9iZXIvMDM3NzExLmh0bWwKKworICAgICAgICBUaGUgZ29hbCBvZiB0
aGlzIHBhdGNoIGlzIHRvIGFsbG93IHdlYiBhdXRob3JzIHRvIGNhbGwgZm9ybUVsZW1lbnQucmVx
dWVzdEF1dG9jb21wbGV0ZSgpOyBhZnRlciBzdWJzY3JpYmluZworICAgICAgICBmb3IgYXV0b2Nv
bXBsZXRlL2F1dG9jb21wbGV0ZWVycm9yIGV2ZW50cyBvbiBmb3JtRWxlbWVudC4gSWYgdGhlIGZv
cm0ncyBbYXV0b2NvbXBsZXRlXSBhdHRyaWJ1dGUgaXMgIm9mZiIgYW4KKyAgICAgICAgZXJyb3Ig
d2lsbCBiZSBkaXNwYXRjaGVkLiBPdGhlcndpc2UsIGEgcmVxdWVzdCB3aWxsIGJlIGlzc3VlZCB0
byB0aGUgRnJhbWVMb2FkZXJDbGllbnQuIEF0IHRoZSBtb21lbnQsIHRoZQorICAgICAgICBpbXBs
ZW1lbnRhdGlvbiBpbiBDaHJvbWUgKGh0dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTEy
NzAwMTgvKSB3aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1bnRpbCB0aGUKKyAgICAgICAg
VUkgb24gQ2hyb21lJ3Mgc2lkZSBpcyBidWlsdC4gQm90aCBhdXRvY29tcGxldGUgYW5kIGF1dG9j
b21wbGV0ZWVycm9yIGV2ZW50cyB3aWxsIGJlIGRpc3BhdGNoZWQgYXN5bmNocm9ub3VzbHkKKyAg
ICAgICAgYWZ0ZXIgYSBzbWFsbCBkZWxheSB0byBiZWhhdmUgY29uc2lzdGVudGx5IGluIGFsbCBz
aXR1YXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBp
bXBsZW1lbnRhdGlvbiBpcyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBSRVFVRVNUX0FVVE9DT01Q
TEVURSwgd2hpY2ggaXMgZGlzYWJsZWQsIHNvIHRoZSB0ZXN0CisgICAgICAgIGlzIGV4cGVjdGVk
IHRvIGZhaWwuIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGN1cnJlbnRseSBubyBjbGllbnQgaW1w
bGVtZW50cyB0aGlzIG1ldGhvZCBvbiBIVE1MRm9ybUVsZW1lbnQKKyAgICAgICAgKkhUTUxGb3Jt
RWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlKSBhbmQgcmV0dXJucy4gV2hlbiB0aGUgY2hyb21l
LXNpZGUgbGFuZHMgSSdsbCBhZGQgYSBzdWNjZXNzIGNhc2UgaW4KKyAgICAgICAgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy8gd2l0aCB0aGUgZXhwZWN0ZWQgc3VjY2Vz
c2Z1bCByZXN1bHRzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLXJlcXVlc3QtYXV0b2Nv
bXBsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLXJl
cXVlc3QtYXV0b2NvbXBsZXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTAxICBFbWlsIEEgRWts
dW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNocm9taXVtIHdp
bmRvd3MgcmViYXNlbGluZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9y
bS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tcmVxdWVzdC1hdXRvY29tcGxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRl
NmZmMTNiMDE5MDVhY2RmYWVmMjYwMzk5Njk0ZWVmZDNmZTc3YmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tcmVxdWVzdC1hdXRvY29tcGxldGUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQnVnIDEwMDU1NzogSW1wbGVtZW50IEhUTUxGb3JtRWxl
bWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50cworCitGb3IgdGhp
cyB0ZXN0IHRvIHBhc3MsIHlvdSBzaG91bGQgc2VlIGFsbCBQQVNTRUQgYmVsb3cuCisKK0ZBSUwg
bm8gcmVxdWVzdEF1dG9jb21wbGV0ZSBmdW5jdGlvbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZm9ybS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9mb3JtLXJlcXVlc3QtYXV0b2NvbXBsZXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE4NmU1Mzli
YzQ3YjM4ZDQ4MDczYzZlN2FjMTdjZDdmNTFlY2EzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sCkBAIC0wLDAg
KzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2pzVGVz
dElzQXN5bmMgPSB0cnVlOworCit2YXIgbnVtRXJyb3JzID0gMDsKK3ZhciBudW1FcnJvcnNFeHBl
Y3RlZCA9IDA7CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkKK3sKKyAgICBpZiAodHlwZW9mIEhUTUxG
b3JtRWxlbWVudC5wcm90b3R5cGUucmVxdWVzdEF1dG9jb21wbGV0ZSAhPSAnZnVuY3Rpb24nKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoJ25vIHJlcXVlc3RBdXRvY29tcGxldGUgZnVuY3Rpb24nKTsK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
aGVja0R5bmFtaWNBdHRyaWJ1dGVzKCk7CisgICAgY2hlY2tQYXJzZWRBdHRyaWJ1dGVzKCk7Cit9
CisKK2Z1bmN0aW9uIGNoZWNrRm9yRW51bWVyYWJsZVByb3BlcnRpZXMoZm9ybSkKK3sKKyAgICB2
YXIgZW51bWVyYXRlZCA9IGZhbHNlOworICAgIGZvciAodmFyIGZpZWxkIGluIGZvcm0pIHsKKyAg
ICAgICAgaWYgKC9vbmF1dG9jb21wbGV0ZS8udGVzdChmaWVsZCkpCisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCdlbnVtZXJhYmxlIGZvcm0gYXR0cmlidXRlIGZvdW5kIG9uIEhUTUxGb3JtRWxlbWVu
dDogJyArIGZpZWxkKTsKKyAgICAgICAgZW51bWVyYXRlZCA9IHRydWU7CisgICAgfQorICAgIGlm
IChlbnVtZXJhdGVkKQorICAgICAgICB0ZXN0UGFzc2VkKCdubyBlbnVtZXJhYmxlIHByb3BlcnRp
ZXMgb24gSFRNTEZvcm1FbGVtZW50Jyk7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCdm
YWlsZWQgdG8gZW51bWVyYXRlIEhUTUxGb3JtRWxlbWVudCBwcm9wZXJ0aWVzJyk7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrUGFyc2VkQXR0cmlidXRlcygpCit7CisgICAgbnVtRXJyb3JzRXhwZWN0ZWQg
Kz0gMTsKKworICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbMF07CisgICAgY2hlY2tGb3JF
bnVtZXJhYmxlUHJvcGVydGllcyhmb3JtKTsKKyAgICBmb3JtLnJlcXVlc3RBdXRvY29tcGxldGUo
KTsKK30KKworZnVuY3Rpb24gY2hlY2tEeW5hbWljQXR0cmlidXRlcygpCit7CisgICAgbnVtRXJy
b3JzRXhwZWN0ZWQgKz0gMTsKKworICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZm9ybScpOworICAgIGNoZWNrRm9yRW51bWVyYWJsZVByb3BlcnRpZXMoZm9ybSk7CisKKyAg
ICBmb3JtLmF1dG9jb21wbGV0ZSA9ICdvZmYnOworICAgIGZvcm0ub25hdXRvY29tcGxldGVlcnJv
ciA9IG9uRXJyb3I7CisgICAgZm9ybS5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7Cit9CisKK2Z1bmN0
aW9uIG9uRXJyb3IoKQoreworICAgIG51bUVycm9ycyArPSAxOworICAgIGlmIChudW1FcnJvcnMg
PiBudW1FcnJvcnNFeHBlY3RlZCkKKyAgICAgICAgdGVzdEZhaWxlZCgndG9vIG1hbnkgZXJyb3Ig
ZXZlbnRzJyk7CisgICAgZWxzZSBpZiAobnVtRXJyb3JzID09IG51bUVycm9yc0V4cGVjdGVkKSB7
CisgICAgICAgIHRlc3RQYXNzZWQoJ2dvdCBleHBlY3RlZCBudW1iZXIgb2YgZXJyb3IgZXZlbnRz
ICgnICsgbnVtRXJyb3JzRXhwZWN0ZWQgKyAnKScpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICB9Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuVGVzdHMsIHRy
dWUpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBCdWcgPGEgaHJlZj0iaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3Ij4xMDA1NTc8L2E+OiBJbXBs
ZW1lbnQgSFRNTEZvcm1FbGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQg
ZXZlbnRzIDwvcD4KKzxwPiBGb3IgdGhpcyB0ZXN0IHRvIHBhc3MsIHlvdSBzaG91bGQgc2VlIGFs
bCBQQVNTRUQgYmVsb3cuIDwvcD4KKzxmb3JtIGF1dG9jb21wbGV0ZT0ib2ZmIiBvbmF1dG9jb21w
bGV0ZWVycm9yPSJvbkVycm9yKCk7Ij48L2Zvcm0+Cis8cCBpZD0iY29uc29sZSI+PC9wPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172140</attachid>
            <date>2012-11-02 14:33:57 -0700</date>
            <delta_ts>2012-11-03 09:09:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100557-20121102143216.patch</filename>
            <type>text/plain</type>
            <size>26690</size>
            <attacher name="Dan Beam">dbeam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVmYjEwYmYyN2JhYmUw
ZmZhM2Y0OGFmZjVkMmFkYTMyNjhjOTkzNi4uYjRjZGM4ZTRmM2RkYzgwMzNjNDU5NzhlODVlMjcw
NTU1MGE0Mzg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTExLTAyICBEYW4g
QmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTEZvcm1F
bGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQgZXZlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFuIGlu
aXRpYWwgdmVyc2lvbiBvZiB0aGUgcHJvcG9zYWwgZm9yIGludGVyYWN0aXZlIGF1dG9jb21wbGV0
ZSBvdXRsaW5lZCBpbiB0aGlzIGVtYWlsOgorICAgICAgICBodHRwOi8vbGlzdHMud2hhdHdnLm9y
Zy9odGRpZy5jZ2kvd2hhdHdnLXdoYXR3Zy5vcmcvMjAxMi1PY3RvYmVyLzAzNzcxMS5odG1sCisK
KyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB3ZWIgYXV0aG9ycyB0
byBjYWxsIGZvcm1FbGVtZW50LnJlcXVlc3RBdXRvY29tcGxldGUoKTsgYWZ0ZXIgc3Vic2NyaWJp
bmcgZm9yCisgICAgICAgIGF1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVlcnJvciBldmVudHMgb24g
Zm9ybUVsZW1lbnQuIElmIHRoZSBmb3JtJ3MgW2F1dG9jb21wbGV0ZV0gYXR0cmlidXRlIGlzICJv
ZmYiIGFuCisgICAgICAgIGVycm9yIHdpbGwgYmUgZGlzcGF0Y2hlZC4gT3RoZXJ3aXNlLCBhIHJl
cXVlc3Qgd2lsbCBiZSBpc3N1ZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50LiAgQXQgdGhlIG1v
bWVudCwgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIGluIENocm9tZSAoaHR0cHM6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8xMTI3MDAxOC8pIHdpbGwgc2ltcGx5IGRpc3BhdGNoIGFuIGVy
cm9yIHVudGlsIHRoZQorICAgICAgICBVSSBvbiBDaHJvbWUncyBzaWRlIGlzIGJ1aWx0LiBCb3Ro
IGF1dG9jb21wbGV0ZSBhbmQgYXV0b2NvbXBsZXRlZXJyb3IgZXZlbnRzIHdpbGwgYmUgZGlzcGF0
Y2hlZCBhc3luY2hyb25vdXNseQorICAgICAgICBhZnRlciBhIHNtYWxsIGRlbGF5IHRvIGJlaGF2
ZSBjb25zaXN0ZW50bHkgaW4gYWxsIHNpdHVhdGlvbnMgYW5kIGltcGxlbWVudGF0aW9ucy4KKwor
ICAgICAgICBDdXJyZW50bHkgdGhpcyBpcyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBSRVFVRVNU
X0FVVE9DT01QTEVURSwgd2hpY2ggaXMgZGlzYWJsZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9m
b3Jtcy9mb3JtLXJlcXVlc3QtYXV0b2NvbXBsZXRlLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKworICAgICAgICBBZGRlZCBhdXRvY29tcGxl
dGUgYW5kIGF1dG9jb21wbGV0ZWVycm9yIGV2ZW50cy4gVGhlIGF1dG9jb21wbGV0ZSBldmVudCBp
cyBkaXNwYXRjaGVkIGFmdGVyIGEgdXNlciBhZGRzIG1vcmUKKyAgICAgICAgaW5mb3JtYXRpb24g
dG8gYSBmb3JtIHVzaW5nIHRoZSBmdXR1cmUgVUkuIFRoaXMgaXMgbm90IGN1cnJlbnRseSBkaXNw
YXRjaGVkIGluIGFueSBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIENocm9tZSkKKyAgICAgICAg
YnV0IHdpbGwgYmUgaW4gdGhlIGZ1dHVyZS4gVGhlIGF1dG9jb21wbGV0ZWVycm9yIGV2ZW50IGlz
IGRpc3BhdGNoZWQgd2hlbiB0aGUgZm9ybSBoYXMgW2F1dG9jb21wbGV0ZT0ib2ZmIl0gb24gdGhl
CisgICAgICAgIG5vZGUgYmVpbmcgYXNrZWQgZm9yIGFuIGludGVyYWN0aXZlIGF1dG9jb21wbGV0
ZS4gVGhlIHVzZXIgYWdlbnQgbWF5IGFsc28gZGlzcGF0Y2ggdGhpcyBldmVudCBpZiBpdCBkb2Vz
bid0IGltcGxlbWVudAorICAgICAgICB0aGlzIEFQSSBidXQgaGFzIHR1cm5lZCBvbiB0aGUgZmVh
dHVyZSBmbGFnLCBjYW4ndCBjdXJyZW50bHkgc2hvdyBhbiBhdXRvY29tcGxldGUgVUkgKGUuZy4g
cnVubmluZyBoZWFkbGVzc2x5IG9yIGluCisgICAgICAgIGFuIEhUTUwgbm90aWZpY2F0aW9uLCBz
ZWN1cml0eSBjb25jZXJucywgb3IgYW55IG90aGVyIHJlYXNvbiBpdCBkZXNpcmVzKS4KKworICAg
ICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorCisgICAgICAgIEFkZGVkIG9uYXV0
b2NvbXBsZXRlIGFuZCBvbmF1dG9jb21wbGV0ZWVycm9yIGF0dHJpYnV0ZXMgc28gdGhleSBjYW4g
YmUgcGFyc2VkIHdoZW4gY3JlYXRpbmcgZm9ybSBlbGVtZW50cyBhbmQgdXNlZAorICAgICAgICBh
cyBldmVudCBsaXN0ZW5lcnMuIEZvciBleGFtcGxlOgorCisgICAgICAgICAgPGZvcm0gb25hdXRv
Y29tcGxldGU9Ii8qIHdoZW4gYXV0b2NvbXBsZXRlIHN1Y2NlZWRzICovIiBhdXRvY29tcGxldGVl
cnJvcj0iLyogd2hlbiBhdXRvY29tcGxldGUgZmFpbHMgKi8iPgorCisgICAgICAgICogaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpI
VE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisKKyAgICAgICAgQWRkZWQgbV9y
ZXF1ZXN0QXV0b2NvbXBsZXRlVGltZXIgKGEgdGltZXIgdGhhdCdzIHVzZWQgdG8gZGlzcGF0Y2gg
ZXZlbnRzIGFzeW5jaHJvbm91c2x5KSB0byB0aGUgaW5pdGlhbGl6ZXIgbGlzdCB0aGF0CisgICAg
ICAgIHRyaWdnZXJzIHJlcXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkIHdoZW4gaXQgdGltZXMg
b3V0LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlcXVlc3RBdXRvY29t
cGxldGUpOgorCisgICAgICAgIENhbGxlZCB3aGVuIEhUTUxGb3JtRWxlbWVudCNyZXF1ZXN0QXV0
b2NvbXBsZXRlIGlzIGNhbGxlZCBmcm9tIEpTIChhbHNvIHNlZSBIVE1MRm9ybUVsZW1lbnQuaWRs
KSBhbmQgZGVjaWRlcyB3aGV0aGVyCisgICAgICAgIHRvIGRpc3BhdGNoIGFuIGVycm9yIGFuZCBl
eGl0IGVhcmx5IChpbiB0aGUgY2FzZSB3aGVyZSBhdXRvY29tcGxldGU9Im9mZiIpIG9yIHBhc3Mg
dGhlIHJlcXVlc3Qgb24gdG8gdGhlCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUp
OgorCisgICAgICAgIENhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGZvciBhbiBpbnRlcmFjdGl2ZSBh
dXRvY29tcGxldGUgaXMgZmluaXNoZWQgd2l0aCBlaXRoZXIgYSBzdWNjZXNzIG9yIGVycm9yIHJl
c3VsdC4gVGhpcworICAgICAgICBjYXVzZXMgYW4gZXZlbnQgdG8gcXVldWUgYW5kIGZpcmVkIGFm
dGVyIGEgMCBzZWNvbmQgZGVsYXkuIEV2ZW50cyBhcmUgb3duZWQgYnkgSFRNTEZvcm1FbGVtZW50
IGFuZCByZWZlcmVuY2UgdGhlCisgICAgICAgIHRhcmdldCBlbGVtZW50ICh0aGlzKSB1bnRpbCBm
aXJlZC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0QXV0b2Nv
bXBsZXRlVGltZXJGaXJlZCk6CisKKyAgICAgICAgQ2FsbGVkIHdoZW4gdGhlIGV2ZW50IHRpbWVy
IHJ1bnMgb3V0IHRvIHB1bXAgdGhlIHF1ZXVlIG9mIGN1cnJlbnQgZXZlbnRzLiBFdmVudHMgYXJl
IHJlbGVhc2VkIG9uIGRpc3BhdGNoLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKworICAgICAgICBFbmNvdW50ZXJpbmcgb25hdXRvY29tcGxl
dGUgb3Igb25hdXRvY29tcGxldGVlcnJvciBhdHRyaWJ1dGVzIHdoaWxlIHBhcnNpbmcgSFRNTEZv
cm1FbGVtZW50cyBub3cgYWRkcyBldmVudCBsaXN0ZW5lcnMKKyAgICAgICAgZm9yIGF1dG9jb21w
bGV0ZSBhbiBhdXRvY29tcGxldGVlcnJvciBldmVudHMgKHJlc3BlY3RpdmVseSkgdG8gZGlzcGF0
Y2ggdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgYXMgYSBzY3JpcHQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1FbGVtZW50KToKKworICAg
ICAgICBBZGRlZCB2YXJpb3VzIG1ldGhvZHMgYW5kIGRhdGEgbWVtYmVycyBhcyByZXF1aXJlZCBi
eSB0aGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGw6CisKKyAgICAgICAgQWRkZWQgdGhlIG1ldGhvZCByZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBh
c3NvY2lhdGVkIERPTSBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZXMgKG9uYXV0b2NvbXBsZXRlL29u
YXV0b2NvbXBsZXRlZXJyb3IpCisgICAgICAgIHRvIEhUTUxGb3JtRWxlbWVudCdzIHB1YmxpYyBE
T00gQVBJICh1bnByZWZpeGVkLCBhcyBwZXIgSWFuIEhpY2tzb24ncyBhZHZpY2UpLiBBbGwgYXJl
IHJlcXVpcmUgdGhlIENvbmRpdGlvbmFsCisgICAgICAgIFJFUVVFU1RfQVVUT0NPTVBMRVRFIHRv
IGJlIGVuYWJsZWQgdG8gYmUgYWN0aXZhdGVkLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUpOgorCisgICAgICAgIEFkZGVk
IG5vb3AgaW1wbGVtZW50YXRpb24gZm9yIEZyYW1lTG9hZGVyOjpkaWRSZXF1ZXN0QXV0b2NvbXBs
ZXRlLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoRW1wdHlG
cmFtZUxvYWRlckNsaWVudCk6CisKKyAgICAgICAgQWRkZWQgRnJhbWVMb2FkZXI6OmRpZFJlcXVl
c3RBdXRvY29tcGxldGUgdG8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVy
Q2xpZW50KToKKworICAgICAgICBBZGRlZCBub29wIGltcGxlbWVudGF0aW9uIHRvIEZyYW1lTG9h
ZGVyQ2xpZW50IGludGVyZmFjZSAod2hpY2ggaXMgaW1wbGVtZW50ZWQgY2hyb21pdW0ncyBGcmFt
ZUxvYWRlckxvYWRlckltcGwuY3BwKS4KKwogMjAxMi0xMS0wMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMGZhN2UxMWFjMTQ5NmJlNGRlNDhlYjU4ODRjOTVlZWRiMzc4
MTA0OC4uYzc0YWY0Y2NjZDVmNjUxMmVmMzA0YmM1NjEyN2M5YjFhNGUwZGJhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMi0xMS0wMiAgRGFuIEJlYW0g
IDxkYmVhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUxGb3JtRWxlbWVu
dCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhbiBpbml0aWFs
IHZlcnNpb24gb2YgdGhlIHByb3Bvc2FsIGZvciBpbnRlcmFjdGl2ZSBhdXRvY29tcGxldGUgb3V0
bGluZWQgaW4gdGhpcyBlbWFpbDoKKyAgICAgICAgaHR0cDovL2xpc3RzLndoYXR3Zy5vcmcvaHRk
aWcuY2dpL3doYXR3Zy13aGF0d2cub3JnLzIwMTItT2N0b2Jlci8wMzc3MTEuaHRtbAorCisgICAg
ICAgIFRoZSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgdG8gYWxsb3cgd2ViIGF1dGhvcnMgdG8gY2Fs
bCBmb3JtRWxlbWVudC5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7IGFmdGVyIHN1YnNjcmliaW5nIGZv
cgorICAgICAgICBhdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlZXJyb3IgZXZlbnRzIG9uIGZvcm1F
bGVtZW50LiBJZiB0aGUgZm9ybSdzIFthdXRvY29tcGxldGVdIGF0dHJpYnV0ZSBpcyAib2ZmIiBh
bgorICAgICAgICBlcnJvciB3aWxsIGJlIGRpc3BhdGNoZWQuIE90aGVyd2lzZSwgYSByZXF1ZXN0
IHdpbGwgYmUgaXNzdWVkIHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudC4gIEF0IHRoZSBtb21lbnQs
IHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBDaHJvbWUgKGh0dHBzOi8vY29kZXJldmll
dy5jaHJvbWl1bS5vcmcvMTEyNzAwMTgvKSB3aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1
bnRpbCB0aGUKKyAgICAgICAgVUkgb24gQ2hyb21lJ3Mgc2lkZSBpcyBidWlsdC4gQm90aCBhdXRv
Y29tcGxldGUgYW5kIGF1dG9jb21wbGV0ZWVycm9yIGV2ZW50cyB3aWxsIGJlIGRpc3BhdGNoZWQg
YXN5bmNocm9ub3VzbHkKKyAgICAgICAgYWZ0ZXIgYSBzbWFsbCBkZWxheSB0byBiZWhhdmUgY29u
c2lzdGVudGx5IGluIGFsbCBzaXR1YXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgQ3VycmVudGx5IHRoaXMgaXMgYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgUkVRVUVTVF9BVVRP
Q09NUExFVEUsIHdoaWNoIGlzIGRpc2FibGVkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMv
Zm9ybS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQXV0
b2ZpbGxDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJBdXRvZmlsbENs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9maWxsQ2xpZW50OjpkaWRSZXF1ZXN0QXV0
b2NvbXBsZXRlKToKKworICAgICAgICBBZGRlZCBXZWJBdXRvZmlsbENsaWVudDo6ZGlkUmVxdWVz
dEF1dG9jb21wbGV0ZSB0byBjaHJvbWUncyBwdWJsaWMgV2ViS2l0IGludGVyZmFjZS4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJGb3JtRWxlbWVudC5oOgorCisgICAgICAgIEFkZGVkIGFuIGVudW0g
dGhhdCBtYXRjaGVzIEhUTUxGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0IChhbmQgYWRk
ZWQgY29tcGlsZSB0aW1lIGFzc2VydCkgYW5kIGEgcHVibGljIG1ldGhvZAorICAgICAgICAoV2Vi
Rm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUpIHRvIFdlYkZvcm1FbGVtZW50
J3MgcHVibGljIGludGVyZmFjZS4KKworICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcDoKKworICAgICAgICBBZGRlZCBhIGNvbXBpbGUgdGltZSBhc3NlcnQgdG8gZ3VhcmFudGVl
IHRoZSBIVE1MRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdCBlbnVtIG1hdGNoZXMgdGhl
CisgICAgICAgIFdlYkZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHQgZW51bS4KKworICAg
ICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWRSZXF1ZXN0QXV0b2Nv
bXBsZXRlKToKKworICAgICAgICBJbXBsZW1lbnRlZCB0aGUgYWRkZWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUsIHdoaWNoIHNpbXBseSBwYXNzZXMgdGhyb3VnaCB0
byB0aGUKKyAgICAgICAgV2ViQXV0b2ZpbGxDbGllbnQuCisKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEltcGwpOgorCisg
ICAgICAgIEltcGxlbWVudGluZyBGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVxdWVzdEF1dG9jb21w
bGV0ZS4KKworICAgICAgICAqIHNyYy9XZWJGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKToKKyAgICAgICAg
KFdlYktpdCk6CisKKyAgICAgICAgQWRkZWQgV2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RB
dXRvY29tcGxldGUgdG8gYWxsb3cgY2hyb21pdW0ncyByZW5kZXJlciBhIHB1YmxpYyBBUEkgdG8g
Y2FsbCB0byBmaW5pc2ggdGhlCisgICAgICAgIGF1dG9jb21wbGV0ZSByZXF1ZXN0IG9uIGEgV2Vi
Rm9ybUVsZW1lbnQuCisKIDIwMTItMTEtMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEF2b2lkIGF0dGVtcHRpbmcgdG8gZGVmZXIg
Y29tbWl0cyB3aGVuIHRoZXkgYXJlIGFscmVhZHkgZGVmZXJyZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCmluZGV4IDdhMDU1MmE0YTcwZGE5M2Q0MjAxMTdmZDIwMmU5MjA5YzNiNDcyMWEuLjA5Yjlh
ZTc2NmZiNWRiNDJmNzAyYzA1OTExOWQ5NjA3MWM0MjZlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaApAQCAtMjQzLDYgKzI0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAg
bWFjcm8od2Via2l0ZGV2aWNlcHJveGltaXR5KSBcCiAgICAgXAorICAgIG1hY3JvKGF1dG9jb21w
bGV0ZSkgXAorICAgIG1hY3JvKGF1dG9jb21wbGV0ZWVycm9yKSBcCisgICAgXAogCiAvLyBlbmQg
b2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KaW5kZXggNDU5MDc4ZjY0YzA4YmUyYmU0MzFiMDA4ODhkY2YzOWJkYjMw
Yjg2OS4uZWRlYTE1OTU3NzdjYmRkYjFlMzI5ZTlmZGEzYzJhNTg4ZmY3OTVkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE2NSw2ICsxNjUsOCBAQCBu
b3ZhbGlkYXRlCiBub3dyYXAKIG9iamVjdAogb25hYm9ydAorb25hdXRvY29tcGxldGUKK29uYXV0
b2NvbXBsZXRlZXJyb3IKIG9uYmVmb3JlY29weQogb25iZWZvcmVjdXQKIG9uYmVmb3JlbG9hZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGRkZTVmZmEzMTYzYmQw
Y2VkZTJjZDg4NDU3NjMxZjgwYjA5MzViNWUuLjE4YWM3MDkyYzFjN2I0ZTQ3NjQwMDQ1YjAzNzMz
ZTQ5YmM3YjJkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAg
LTc0LDYgKzc0LDkgQEAgSFRNTEZvcm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW4KICAgICAsIG1fc2hvdWxkU3Vi
bWl0KGZhbHNlKQogICAgICwgbV9pc0luUmVzZXRGdW5jdGlvbihmYWxzZSkKICAgICAsIG1fd2Fz
RGVtb3RlZChmYWxzZSkKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgLCBt
X3JlcXVlc3RBdXRvY29tcGxldGVUaW1lcih0aGlzLCAmSFRNTEZvcm1FbGVtZW50OjpyZXF1ZXN0
QXV0b2NvbXBsZXRlVGltZXJGaXJlZCkKKyNlbmRpZgogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGZvcm1UYWcpKTsKIH0KQEAgLTM4Nyw2ICszOTAsNDQgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6
OnJlc2V0KCkKICAgICBtX2lzSW5SZXNldEZ1bmN0aW9uID0gZmFsc2U7CiB9CiAKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVxdWVzdEF1
dG9jb21wbGV0ZSgpCit7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZEF1dG9j
b21wbGV0ZSgpKSB7CisgICAgICAgIGZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoQXV0b2NvbXBs
ZXRlUmVzdWx0RXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nUGFp
clZlY3RvciBjb250cm9sTmFtZXNBbmRWYWx1ZXM7CisgICAgZ2V0VGV4dEZpZWxkVmFsdWVzKGNv
bnRyb2xOYW1lc0FuZFZhbHVlcyk7CisgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0g
Rm9ybVN0YXRlOjpjcmVhdGUodGhpcywgY29udHJvbE5hbWVzQW5kVmFsdWVzLCBkb2N1bWVudCgp
LCBTdWJtaXR0ZWRCeUphdmFTY3JpcHQpOworICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkt
PmRpZFJlcXVlc3RBdXRvY29tcGxldGUoZm9ybVN0YXRlLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQg
SFRNTEZvcm1FbGVtZW50OjpmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKEF1dG9jb21wbGV0ZVJl
c3VsdCByZXN1bHQpCit7CisgICAgUmVmUHRyPEV2ZW50PiBldmVudChFdmVudDo6Y3JlYXRlKHJl
c3VsdCA9PSBBdXRvY29tcGxldGVSZXN1bHRTdWNjZXNzID8gZXZlbnROYW1lcygpLmF1dG9jb21w
bGV0ZUV2ZW50IDogZXZlbnROYW1lcygpLmF1dG9jb21wbGV0ZWVycm9yRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgbV9wZW5kaW5nQXV0b2Nv
bXBsZXRlRXZlbnRzLmFwcGVuZChldmVudC5yZWxlYXNlKCkpOworCisgICAgLy8gRGlzcGF0Y2gg
ZXZlbnRzIGxhdGVyIGFzIHRoaXMgQVBJIGlzIG1lYW50IHRvIHdvcmsgYXN5bmNocm9ub3VzbHkg
aW4gYWxsIHNpdHVhdGlvbnMgYW5kIGltcGxlbWVudGF0aW9ucy4KKyAgICBpZiAoIW1fcmVxdWVz
dEF1dG9jb21wbGV0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcmVxdWVzdEF1dG9jb21w
bGV0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJl
cXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkKFRpbWVyPEhUTUxGb3JtRWxlbWVudD4qKQorewor
ICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGluZ0V2ZW50czsKKyAgICBtX3BlbmRpbmdB
dXRvY29tcGxldGVFdmVudHMuc3dhcChwZW5kaW5nRXZlbnRzKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHBlbmRpbmdFdmVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRpc3BhdGNoRXZl
bnQocGVuZGluZ0V2ZW50c1tpXS5yZWxlYXNlKCkpOworfQorI2VuZGlmCisKIHZvaWQgSFRNTEZv
cm1FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKIHsK
ICAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBhY3Rpb25BdHRyKQpAQCAtNDA4LDYgKzQ0OSwx
MiBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiBhdHRyaWJ1dGUpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLnN1Ym1pdEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJp
YnV0ZSkpOwogICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25yZXNldEF0dHIpCiAg
ICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2V0RXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7CisjaWYgRU5B
QkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkg
PT0gb25hdXRvY29tcGxldGVBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IG9uYXV0b2NvbXBsZXRlZXJyb3JBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAg
ICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IGJmMjhjY2EzZmIyYzZhZjU4NTc5NTFiNjJjYmYw
MjMyMGU0YTk2ZGEuLmE4YzJiZWU0NTRlODI2MDExODg2ODk0ZTY2ZmY4Yjc0NTkwZjBjYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtOTksNiArOTksMTYgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KCk7CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9B
VVRPQ09NUExFVEUpCisgICAgZW51bSBBdXRvY29tcGxldGVSZXN1bHQgeyBBdXRvY29tcGxldGVS
ZXN1bHRTdWNjZXNzLCBBdXRvY29tcGxldGVSZXN1bHRFcnJvciB9OworCisgICAgdm9pZCByZXF1
ZXN0QXV0b2NvbXBsZXRlKCk7CisgICAgdm9pZCBmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKEF1
dG9jb21wbGV0ZVJlc3VsdCk7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGF1dG9jb21wbGV0ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhdXRv
Y29tcGxldGVlcnJvcik7CisjZW5kaWYKKwogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVs
ZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGFkZEVsZW1lbnRB
bGlhcyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBhbGlhcyk7
CiAKQEAgLTE2Miw2ICsxNzIsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblJlc2V0RnVu
Y3Rpb247CiAKICAgICBib29sIG1fd2FzRGVtb3RlZDsKKworI2lmIEVOQUJMRShSRVFVRVNUX0FV
VE9DT01QTEVURSkKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkKFRpbWVy
PEhUTUxGb3JtRWxlbWVudD4qKTsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5k
aW5nQXV0b2NvbXBsZXRlRXZlbnRzOworICAgIFRpbWVyPEhUTUxGb3JtRWxlbWVudD4gbV9yZXF1
ZXN0QXV0b2NvbXBsZXRlVGltZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAppbmRleCA4NmE2Zjc0YzYz
ZmRmZDJkYWUwZGZjMDJmZDdjZDcyZjhmZWI1MTg4Li5kMzBkZTQ3OTI5NTY1NGFjN2E1N2Y0MGFj
YmE1ZmUzZGQ2Zjg3ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
CkBAIC00Miw0ICs0Miw4IEBACiAjZW5kaWYKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgYm9vbGVh
biBjaGVja1ZhbGlkaXR5KCk7CisKKyAgICBbQ29uZGl0aW9uYWw9UkVRVUVTVF9BVVRPQ09NUExF
VEVdIHZvaWQgcmVxdWVzdEF1dG9jb21wbGV0ZSgpOworICAgIFtOb3RFbnVtZXJhYmxlLCBDb25k
aXRpb25hbD1SRVFVRVNUX0FVVE9DT01QTEVURV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25h
dXRvY29tcGxldGU7CisgICAgW05vdEVudW1lcmFibGUsIENvbmRpdGlvbmFsPVJFUVVFU1RfQVVU
T0NPTVBMRVRFXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmF1dG9jb21wbGV0ZWVycm9yOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZDYwYmQzMDFjZTVm
N2E3MTFmZWY1MzEwMTkyNWQzYjIyMWEyMmI0OC4uMzUwMmJlYmI5NTJlN2QzZTc5MWE1YjI5NDQy
MDgyNDU4NTg0ZDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAg
LTE5NCw0ICsxOTQsMTAgQEAgUGFzc093blB0cjxDb250ZXh0TWVudT4gRW1wdHlDb250ZXh0TWVu
dUNsaWVudDo6Y3VzdG9taXplTWVudShQYXNzT3duUHRyPENvbnRleHQKICNlbmRpZgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCit2b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQor
eworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA3
M2M5ODE5MzQxNTc2NzAyNGZiNDYwMDI1OWFlNWVlOTNhOWFlYzQwLi5hMDdlYzE1MmIzZjc5OTI0
YjczNTc0NjY1M2Y1MzI5ZjAzMzViNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCkBAIC0zODQsNiArMzg0LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8SW50ZW50UmVxdWVz
dD4pIE9WRVJSSURFOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUp
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+KSBPVkVSUklERTsKKyNlbmRpZgogfTsKIAogY2xhc3MgRW1wdHlUZXh0Q2hlY2tlckNs
aWVudCA6IHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmMjM4OGFmNWZiYjRjNWQ2NWMzMGJmZjg4ODQ1NTRj
N2M4YjljMGQuLmI0YWJmODhmMzU5OTYxYjg5YWVmODc2MDU1YTQ5Nzg1NmNmMTNjNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNDksNiArMzQ5LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0aW9uSGFuZGxl
cihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqKSB7IH0KICNlbmRpZgorCisjaWYgRU5BQkxFKFJF
UVVFU1RfQVVUT0NPTVBMRVRFKQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9j
b21wbGV0ZShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pID0gMDsKKyNlbmRpZgogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJBdXRvZmlsbENsaWVudC5oCmluZGV4IDdiNDhmNTdkYmU0NmVhMzdlZjZmNDk5NGM1MTNj
YjJmOTNkNjg3ZmMuLjc0MjRjM2ZlY2RiYTlmZmE3Mjg2ZTFiN2VlZjNkZjhjOTYwYmZkNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQu
aApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRm9y
bUVsZW1lbnQ7CitjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklucHV0RWxlbWVudDsKIGNsYXNz
IFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJOb2RlOwpAQCAtNzUsNiArNzcsOSBAQCBwdWJs
aWM6CiAgICAgLy8ga2V5cyB0byBuYXZpZ2F0ZSBvdXRzaWRlIHRoZSByYW5nZSBvZiBwb3NzaWJs
ZSBzZWxlY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhckF1dG9maWxsU2VsZWN0aW9u
KGNvbnN0IFdlYk5vZGUmKSB7IH0KIAorICAgIC8vIEluZm9ybXMgdGhlIGJyb3dzZXIgYW4gaW50
ZXJhY3RpdmUgYXV0b2NvbXBsZXRlIGhhcyBiZWVuIHJlcXVlc3RlZC4KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkZvcm1FbGVtZW50
JikgeyB9CisKICAgICAvLyBJbnN0cnVjdHMgdGhlIGJyb3dzZXIgdG8gcmVtb3ZlIHRoZSBBdXRv
Y29tcGxldGUgZW50cnkgc3BlY2lmaWVkIGZyb20KICAgICAvLyBpdHMgREIuCiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKaW5k
ZXggMWVmNDMxZmEzNjU2ZjVjMjc4ZGMyZTRkMzU2MTI0ZDExYjc2N2Q1MS4uMjdjOTlkM2ExNzE5
MmY3ZDA4MDhjODdlNzJjYTVkYThhNjNiNmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCkBAIC02OSw2ICs2OSw5IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZ2V0TmFtZWRFbGVtZW50cyhjb25z
dCBXZWJTdHJpbmcmLCBXZWJWZWN0b3I8V2ViTm9kZT4mKTsKICAgICAgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGdldEZvcm1Db250cm9sRWxlbWVudHMoV2ViVmVjdG9yPFdlYkZvcm1Db250cm9sRWxl
bWVudD4mKSBjb25zdDsKIAorICAgICAgICBlbnVtIEF1dG9jb21wbGV0ZVJlc3VsdCB7IEF1dG9j
b21wbGV0ZVJlc3VsdFN1Y2Nlc3MsIEF1dG9jb21wbGV0ZVJlc3VsdEVycm9yIH07CisgICAgICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBmaW5pc2hSZXF1ZXN0QXV0b2NvbXBsZXRlKFdlYkZvcm1FbGVt
ZW50OjpBdXRvY29tcGxldGVSZXN1bHQpOworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAg
ICAgICAgIFdlYkZvcm1FbGVtZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQ+Jik7CiAgICAgICAgIFdlYkZvcm1FbGVtZW50JiBvcGVyYXRvcj0oY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggNTM4
ZDlmMTk4NTI1ZGZhNzQyMTBhZDEyYzZjZDIyZmI3NjY0NWE3Yi4uZjNlNzg1OWVlYjk4NTA2NTFk
YmNmZTQxODQ3NDUyMzBlY2M0NzU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTQ4LDYgKzQ4LDkgQEAKICNpbmNsdWRl
ICJGb250U21vb3RoaW5nTW9kZS5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uRXJyb3IuaCIKICNp
bmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NP
TVBMRVRFKQorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2VuZGlmCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLmgiCkBAIC04Niw2ICs4OSw5IEBACiAjaW5jbHVkZSAiV2ViRmls
ZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJXZWJGb250RGVz
Y3JpcHRpb24uaCIKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisjaW5jbHVkZSAi
V2ViRm9ybUVsZW1lbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uRXJyb3Iu
aCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURC
Q3Vyc29yLmgiCkBAIC02MzMsMyArNjM5LDggQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJVUkxSZXNwb25zZTo6SFRUUF8xXzEsIFJlc291cmNlUmVzcG9uc2U6OkhUVFBfMV8KIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlVW5zcGVj
aWZpZWQsIE1lZGlhUGxheWVyQ2xpZW50OjpVbnNwZWNpZmllZCk7CiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpDT1JTTW9kZUFub255bW91cywgTWVkaWFQbGF5
ZXJDbGllbnQ6OkFub255bW91cyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1l
ZGlhUGxheWVyOjpDT1JTTW9kZVVzZUNyZWRlbnRpYWxzLCBNZWRpYVBsYXllckNsaWVudDo6VXNl
Q3JlZGVudGlhbHMpOworCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQorQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb3JtRWxlbWVudDo6QXV0b2NvbXBsZXRlUmVzdWx0
U3VjY2VzcywgSFRNTEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1bHRTdWNjZXNzKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJl
c3VsdEVycm9yLCBIVE1MRm9ybUVsZW1lbnQ6OkF1dG9jb21wbGV0ZVJlc3VsdEVycm9yKTsKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKaW5kZXggMTFjNzI2YTMyOGE5YTFjNjA3OGVjMTk0OGZiMjZlNDVmMzEwNDE3
Ni4uN2ZmZTk0MzM5ZWMxYzQ4MjI5N2EyNzI2NTllODY2NjJhM2VkNzdhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBA
IC02Miw2ICs2Miw5IEBACiAjZW5kaWYKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsLmgiCisjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NP
TVBMRVRFKQorI2luY2x1ZGUgIldlYkF1dG9maWxsQ2xpZW50LmgiCisjZW5kaWYKICNpbmNsdWRl
ICJXZWJET01FdmVudC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKQEAgLTE2NTEsNSArMTY1NCwxMiBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hXaWxsU3RhcnRVc2luZ1BlZXJDb25uZWN0
aW9uSGFuZGxlcihSVENQZWVyQwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRP
Q09NUExFVEUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkUmVxdWVzdEF1dG9jb21w
bGV0ZShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQoreworICAgIGlmIChtX3dlYkZy
YW1lLT52aWV3SW1wbCgpICYmIG1fd2ViRnJhbWUtPnZpZXdJbXBsKCktPmF1dG9maWxsQ2xpZW50
KCkpCisgICAgICAgIG1fd2ViRnJhbWUtPnZpZXdJbXBsKCktPmF1dG9maWxsQ2xpZW50KCktPmRp
ZFJlcXVlc3RBdXRvY29tcGxldGUobV93ZWJGcmFtZSwgV2ViRm9ybUVsZW1lbnQoZm9ybVN0YXRl
LT5mb3JtKCkpKTsKK30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXgg
MTJhNzZmZWVlMzUyNjA1YjkwNTc1MGE4NGU2YzVmYjNiZGIxYTNiYy4uNjU4OWMzN2JiNzllNTY0
MWRmMDNhMmFlZGM0YmZiZDBmYWE4YWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIyNSw2ICsyMjUsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdGFydFVzaW5nUGVlckNvbm5lY3Rp
b25IYW5kbGVyKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciopIE9WRVJSSURFOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCisgICAgdmlydHVhbCB2
b2lkIGRpZFJlcXVlc3RBdXRvY29tcGxldGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+
KSBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgbWFrZURvY3VtZW50Vmll
dygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtRWxlbWVudC5jcHAK
aW5kZXggY2RhZTY2MjBlOGIzNWU1OTZlNTM0MzUzMWE3NTUzODFlNWZlN2U0ZS4uZjZhOWE2N2Yw
NmIzM2FkZjczMDdkNDQwY2ZmODg1M2QzMmVlMjRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcApAQCAtMTAyLDYgKzEwMiwxMyBAQCB2b2lkIFdl
YkZvcm1FbGVtZW50OjpnZXRGb3JtQ29udHJvbEVsZW1lbnRzKFdlYlZlY3RvcjxXZWJGb3JtQ29u
dHJvbEVsZW1lbnQ+JiByZQogICAgIHJlc3VsdC5hc3NpZ24odGVtcFZlY3Rvcik7CiB9CiAKK3Zv
aWQgV2ViRm9ybUVsZW1lbnQ6OmZpbmlzaFJlcXVlc3RBdXRvY29tcGxldGUoV2ViRm9ybUVsZW1l
bnQ6OkF1dG9jb21wbGV0ZVJlc3VsdCByZXN1bHQpCit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQVVU
T0NPTVBMRVRFKQorICAgIHVud3JhcDxIVE1MRm9ybUVsZW1lbnQ+KCktPmZpbmlzaFJlcXVlc3RB
dXRvY29tcGxldGUoc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50OjpBdXRvY29tcGxldGVSZXN1
bHQ+KHJlc3VsdCkpOworI2VuZGlmCit9CisKIFdlYkZvcm1FbGVtZW50OjpXZWJGb3JtRWxlbWVu
dChjb25zdCBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4mIGUpCiAgICAgOiBXZWJFbGVtZW50
KGUpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOTM3OGMzMmY3ODM1ZDg3ZmMwOTlmZTdmZDc0ZmYzMTE3ZDJjYjMxNy4u
Y2Q3ODhmY2RmNjI0ZmU4ZTMyNTYwZGRiYjJhNzVlMGFiZDFhZjAyYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDEyLTExLTAyICBEYW4gQmVhbSAgPGRiZWFtQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbXBsZW1lbnQgSFRNTEZvcm1FbGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFz
c29jaWF0ZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA1NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRzIHRlc3RzIGZvciBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBw
cm9wb3NhbCBmb3IgaW50ZXJhY3RpdmUgYXV0b2NvbXBsZXRlIG91dGxpbmVkIGluIHRoaXMgZW1h
aWw6CisgICAgICAgIGh0dHA6Ly9saXN0cy53aGF0d2cub3JnL2h0ZGlnLmNnaS93aGF0d2ctd2hh
dHdnLm9yZy8yMDEyLU9jdG9iZXIvMDM3NzExLmh0bWwKKworICAgICAgICBUaGUgZ29hbCBvZiB0
aGlzIHBhdGNoIGlzIHRvIGFsbG93IHdlYiBhdXRob3JzIHRvIGNhbGwgZm9ybUVsZW1lbnQucmVx
dWVzdEF1dG9jb21wbGV0ZSgpOyBhZnRlciBzdWJzY3JpYmluZworICAgICAgICBmb3IgYXV0b2Nv
bXBsZXRlL2F1dG9jb21wbGV0ZWVycm9yIGV2ZW50cyBvbiBmb3JtRWxlbWVudC4gSWYgdGhlIGZv
cm0ncyBbYXV0b2NvbXBsZXRlXSBhdHRyaWJ1dGUgaXMgIm9mZiIgYW4KKyAgICAgICAgZXJyb3Ig
d2lsbCBiZSBkaXNwYXRjaGVkLiBPdGhlcndpc2UsIGEgcmVxdWVzdCB3aWxsIGJlIGlzc3VlZCB0
byB0aGUgRnJhbWVMb2FkZXJDbGllbnQuIEF0IHRoZSBtb21lbnQsIHRoZQorICAgICAgICBpbXBs
ZW1lbnRhdGlvbiBpbiBDaHJvbWUgKGh0dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTEy
NzAwMTgvKSB3aWxsIHNpbXBseSBkaXNwYXRjaCBhbiBlcnJvciB1bnRpbCB0aGUKKyAgICAgICAg
VUkgb24gQ2hyb21lJ3Mgc2lkZSBpcyBidWlsdC4gQm90aCBhdXRvY29tcGxldGUgYW5kIGF1dG9j
b21wbGV0ZWVycm9yIGV2ZW50cyB3aWxsIGJlIGRpc3BhdGNoZWQgYXN5bmNocm9ub3VzbHkKKyAg
ICAgICAgYWZ0ZXIgYSBzbWFsbCBkZWxheSB0byBiZWhhdmUgY29uc2lzdGVudGx5IGluIGFsbCBz
aXR1YXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBp
bXBsZW1lbnRhdGlvbiBpcyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBSRVFVRVNUX0FVVE9DT01Q
TEVURSwgd2hpY2ggaXMgZGlzYWJsZWQsIHNvIHRoZSB0ZXN0CisgICAgICAgIGlzIGV4cGVjdGVk
IHRvIGZhaWwuIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGN1cnJlbnRseSBubyBjbGllbnQgaW1w
bGVtZW50cyB0aGlzIG1ldGhvZCBvbiBIVE1MRm9ybUVsZW1lbnQKKyAgICAgICAgKEhUTUxGb3Jt
RWxlbWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlKSBhbmQgcmV0dXJucy4gV2hlbiB0aGUgY2hyb21l
LXNpZGUgbGFuZHMgSSdsbCBhZGQgYSBzdWNjZXNzIGNhc2UgaW4KKyAgICAgICAgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy8gd2l0aCB0aGUgZXhwZWN0ZWQgc3VjY2Vz
c2Z1bCByZXN1bHRzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLXJlcXVlc3QtYXV0b2Nv
bXBsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLXJl
cXVlc3QtYXV0b2NvbXBsZXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTAxICBFbWlsIEEgRWts
dW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNocm9taXVtIHdp
bmRvd3MgcmViYXNlbGluZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9y
bS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tcmVxdWVzdC1hdXRvY29tcGxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRl
NmZmMTNiMDE5MDVhY2RmYWVmMjYwMzk5Njk0ZWVmZDNmZTc3YmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tcmVxdWVzdC1hdXRvY29tcGxldGUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQnVnIDEwMDU1NzogSW1wbGVtZW50IEhUTUxGb3JtRWxl
bWVudCNyZXF1ZXN0QXV0b2NvbXBsZXRlIGFuZCBhc3NvY2lhdGVkIGV2ZW50cworCitGb3IgdGhp
cyB0ZXN0IHRvIHBhc3MsIHlvdSBzaG91bGQgc2VlIGFsbCBQQVNTRUQgYmVsb3cuCisKK0ZBSUwg
bm8gcmVxdWVzdEF1dG9jb21wbGV0ZSBmdW5jdGlvbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZm9ybS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9mb3JtLXJlcXVlc3QtYXV0b2NvbXBsZXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE4NmU1Mzli
YzQ3YjM4ZDQ4MDczYzZlN2FjMTdjZDdmNTFlY2EzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1yZXF1ZXN0LWF1dG9jb21wbGV0ZS5odG1sCkBAIC0wLDAg
KzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2pzVGVz
dElzQXN5bmMgPSB0cnVlOworCit2YXIgbnVtRXJyb3JzID0gMDsKK3ZhciBudW1FcnJvcnNFeHBl
Y3RlZCA9IDA7CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkKK3sKKyAgICBpZiAodHlwZW9mIEhUTUxG
b3JtRWxlbWVudC5wcm90b3R5cGUucmVxdWVzdEF1dG9jb21wbGV0ZSAhPSAnZnVuY3Rpb24nKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoJ25vIHJlcXVlc3RBdXRvY29tcGxldGUgZnVuY3Rpb24nKTsK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
aGVja0R5bmFtaWNBdHRyaWJ1dGVzKCk7CisgICAgY2hlY2tQYXJzZWRBdHRyaWJ1dGVzKCk7Cit9
CisKK2Z1bmN0aW9uIGNoZWNrRm9yRW51bWVyYWJsZVByb3BlcnRpZXMoZm9ybSkKK3sKKyAgICB2
YXIgZW51bWVyYXRlZCA9IGZhbHNlOworICAgIGZvciAodmFyIGZpZWxkIGluIGZvcm0pIHsKKyAg
ICAgICAgaWYgKC9vbmF1dG9jb21wbGV0ZS8udGVzdChmaWVsZCkpCisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCdlbnVtZXJhYmxlIGZvcm0gYXR0cmlidXRlIGZvdW5kIG9uIEhUTUxGb3JtRWxlbWVu
dDogJyArIGZpZWxkKTsKKyAgICAgICAgZW51bWVyYXRlZCA9IHRydWU7CisgICAgfQorICAgIGlm
IChlbnVtZXJhdGVkKQorICAgICAgICB0ZXN0UGFzc2VkKCdubyBlbnVtZXJhYmxlIHByb3BlcnRp
ZXMgb24gSFRNTEZvcm1FbGVtZW50Jyk7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCdm
YWlsZWQgdG8gZW51bWVyYXRlIEhUTUxGb3JtRWxlbWVudCBwcm9wZXJ0aWVzJyk7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrUGFyc2VkQXR0cmlidXRlcygpCit7CisgICAgbnVtRXJyb3JzRXhwZWN0ZWQg
Kz0gMTsKKworICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbMF07CisgICAgY2hlY2tGb3JF
bnVtZXJhYmxlUHJvcGVydGllcyhmb3JtKTsKKyAgICBmb3JtLnJlcXVlc3RBdXRvY29tcGxldGUo
KTsKK30KKworZnVuY3Rpb24gY2hlY2tEeW5hbWljQXR0cmlidXRlcygpCit7CisgICAgbnVtRXJy
b3JzRXhwZWN0ZWQgKz0gMTsKKworICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZm9ybScpOworICAgIGNoZWNrRm9yRW51bWVyYWJsZVByb3BlcnRpZXMoZm9ybSk7CisKKyAg
ICBmb3JtLmF1dG9jb21wbGV0ZSA9ICdvZmYnOworICAgIGZvcm0ub25hdXRvY29tcGxldGVlcnJv
ciA9IG9uRXJyb3I7CisgICAgZm9ybS5yZXF1ZXN0QXV0b2NvbXBsZXRlKCk7Cit9CisKK2Z1bmN0
aW9uIG9uRXJyb3IoKQoreworICAgIG51bUVycm9ycyArPSAxOworICAgIGlmIChudW1FcnJvcnMg
PiBudW1FcnJvcnNFeHBlY3RlZCkKKyAgICAgICAgdGVzdEZhaWxlZCgndG9vIG1hbnkgZXJyb3Ig
ZXZlbnRzJyk7CisgICAgZWxzZSBpZiAobnVtRXJyb3JzID09IG51bUVycm9yc0V4cGVjdGVkKSB7
CisgICAgICAgIHRlc3RQYXNzZWQoJ2dvdCBleHBlY3RlZCBudW1iZXIgb2YgZXJyb3IgZXZlbnRz
ICgnICsgbnVtRXJyb3JzRXhwZWN0ZWQgKyAnKScpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICB9Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuVGVzdHMsIHRy
dWUpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBCdWcgPGEgaHJlZj0iaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTU3Ij4xMDA1NTc8L2E+OiBJbXBs
ZW1lbnQgSFRNTEZvcm1FbGVtZW50I3JlcXVlc3RBdXRvY29tcGxldGUgYW5kIGFzc29jaWF0ZWQg
ZXZlbnRzIDwvcD4KKzxwPiBGb3IgdGhpcyB0ZXN0IHRvIHBhc3MsIHlvdSBzaG91bGQgc2VlIGFs
bCBQQVNTRUQgYmVsb3cuIDwvcD4KKzxmb3JtIGF1dG9jb21wbGV0ZT0ib2ZmIiBvbmF1dG9jb21w
bGV0ZWVycm9yPSJvbkVycm9yKCk7Ij48L2Zvcm0+Cis8cCBpZD0iY29uc29sZSI+PC9wPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>