<?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>61717</bug_id>
          
          <creation_ts>2011-05-29 20:08:50 -0700</creation_ts>
          <short_desc>REGRESSION (r87622): Scrubbing a Vimeo movie when in fullscreen stops playback; no way to make it start again</short_desc>
          <delta_ts>2011-06-03 14:01:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ademar</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>412098</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-29 20:08:50 -0700</bug_when>
    <thetext>REGRESSION (r87622): Scrubbing a Vimeo movie when in fullscreen stops playback; no way to make it start again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412101</commentid>
    <comment_count>1</comment_count>
      <attachid>95318</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-29 20:11:23 -0700</bug_when>
    <thetext>Created attachment 95318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412104</commentid>
    <comment_count>2</comment_count>
      <attachid>95319</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-29 20:24:38 -0700</bug_when>
    <thetext>Created attachment 95319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412117</commentid>
    <comment_count>3</comment_count>
      <attachid>95324</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-29 21:53:55 -0700</bug_when>
    <thetext>Created attachment 95324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412118</commentid>
    <comment_count>4</comment_count>
      <attachid>95324</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-29 21:55:41 -0700</bug_when>
    <thetext>Comment on attachment 95324
Patch

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

&gt; Source/WebCore/ChangeLog:102
&gt; +2011-05-29  Brian Weinstein  &lt;bweinstein@apple.com&gt;
&gt; +
&gt; +        Reviewed by Darin Adler.
&gt; +
&gt; +        Controls never hide in full screen after user stops moving mouse
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=61715
&gt; +        &lt;rdar://problem/9522182&gt;
&gt; +        
&gt; +        When we get a mouse move event in HTMLMediaElement::defaultEventHandler, and we are in full screen,
&gt; +        show the media controls, and then start a timer.
&gt; +        
&gt; +        The timer fires 3 seconds after the user&apos;s last mouse movement (timer is restarted on every mouse
&gt; +        move), and hides the controls.
&gt; +
&gt; +        * html/HTMLMediaElement.cpp:
&gt; +        (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize our new timer.
&gt; +        (WebCore::HTMLMediaElement::play): If we are in full screen mode, start our timer to hide the full screen
&gt; +            controls. We don&apos;t want the user to have to move the mouse to hide them when they use the spacebar
&gt; +            to play.
&gt; +        (WebCore::HTMLMediaElement::startHideFullscreenControlsTimer): Starts a oneshot timer 3 seconds in the future
&gt; +            if we are in full screen.
&gt; +        (WebCore::HTMLMediaElement::hideFullscreenControlsTimerFired): Make sure that we are currently playing, and
&gt; +            we are in full screen, and hide the controls. We don&apos;t want to hide the controls if we are paused.
&gt; +        (WebCore::HTMLMediaElement::stopHideFullscreenControlsTimer): Stops the timer.
&gt; +        (WebCore::HTMLMediaElement::defaultEventHandler): If we get a mouse move event and are in full screen, show the
&gt; +            controls and start a timer to hide them.
&gt; +        (WebCore::HTMLMediaElement::enterFullscreen): Start a timer to hide the full screen controls. The user shouldn&apos;t
&gt; +            have the move the mouse once they enter full screen to hide the controls.
&gt; +        (WebCore::HTMLMediaElement::exitFullscreen): Stop the timer to hide the full screen controls.
&gt; +        * html/HTMLMediaElement.h:
&gt; +        * html/shadow/MediaControls.h: Added pure virtual shouldHideControls() method.
&gt; +        * html/shadow/MediaControlRootElement.cpp:
&gt; +        (WebCore::MediaControlRootElement::playbackStopped): Stop the timer to hide the full screen controls.
&gt; +        (WebCore::MediaControlRootElement::shouldHideControls): Added, only report that
&gt; +            the caller should hide the controls if the panel is not hovered.
&gt; +        * html/shadow/MediaControlRootElement.h:
&gt; +

Extra change log entry here. Don&apos;t land that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412122</commentid>
    <comment_count>5</comment_count>
      <attachid>95324</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-29 22:39:52 -0700</bug_when>
    <thetext>Comment on attachment 95324
Patch

Is this really fixing just bug 61717, or are there changes related to bug 61715 here too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412129</commentid>
    <comment_count>6</comment_count>
      <attachid>95326</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-29 23:10:55 -0700</bug_when>
    <thetext>Created attachment 95326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412130</commentid>
    <comment_count>7</comment_count>
      <attachid>95326</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-29 23:21:35 -0700</bug_when>
    <thetext>Comment on attachment 95326
Patch

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

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:653
&gt;  
&gt; +    if (event-&gt;type() == eventNames().mouseupEvent)

This could be an else</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412256</commentid>
    <comment_count>8</comment_count>
      <attachid>95326</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-30 09:30:01 -0700</bug_when>
    <thetext>Comment on attachment 95326
Patch

We know this is a step in the right direction, but we’re having a lot of problems with the patch and so we can’t land this one. Jer will post a new one once he’s made more progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412264</commentid>
    <comment_count>9</comment_count>
      <attachid>95326</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-30 09:43:35 -0700</bug_when>
    <thetext>Comment on attachment 95326
Patch

My mistake. This is a new version of the patch. Adding back the review+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412272</commentid>
    <comment_count>10</comment_count>
      <attachid>95326</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-30 10:05:26 -0700</bug_when>
    <thetext>Comment on attachment 95326
Patch

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

&gt; Source/WebCore/dom/EventDispatcher.cpp:377
&gt; +        if (element-&gt;isMediaElement() &amp;&amp; shadowRoot &amp;&amp; shadowRoot-&gt;shadowHost() == element)

There is no need to null check shadowRoot here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412275</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-30 10:09:54 -0700</bug_when>
    <thetext>Committed r87692: &lt;http://trac.webkit.org/changeset/87692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412285</commentid>
    <comment_count>12</comment_count>
      <attachid>95326</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-30 10:30:08 -0700</bug_when>
    <thetext>Comment on attachment 95326
Patch

I&apos;m away from my computer for a few hours. If this patch looks committable as-is, or if another developer wants to land it with changes, that&apos;s fine with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412287</commentid>
    <comment_count>13</comment_count>
      <attachid>95326</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-30 10:31:31 -0700</bug_when>
    <thetext>Comment on attachment 95326
Patch

Whoops, missed that commit message. Clearing cq.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412677</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-31 09:09:00 -0700</bug_when>
    <thetext>This seems like something that should be fixed with the full-screen API spec? Shouldn&apos;t it be the case that any element that&apos;s full-screen acts in the same way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412875</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-31 14:40:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; This seems like something that should be fixed with the full-screen API spec? Shouldn&apos;t it be the case that any element that&apos;s full-screen acts in the same way?

Currently, making a media element full-screen is used to implement the existing full-screen feature for &lt;video&gt;. We need to distinguish this from using the full-screen API on a &lt;video&gt; element; the current behavior is a bug.

Once we can distinguish these cases, the full-screen API version won’t want this quirk -- it&apos;s specific to the medial-element-specific full-screen. But for now we don&apos;t yet distinguish the cases.

Not sure that&apos;s clear enough. You&apos;re right to say there is a bug. But this should not change in the full-screen API spec because this is used to implement something separate from that spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415162</commentid>
    <comment_count>16</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-06-03 14:01:47 -0700</bug_when>
    <thetext>Revision r87692 cherry-picked into qtwebkit-2.2 with commit 65741cd &lt;http://gitorious.org/webkit/qtwebkit/commit/65741cd&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95318</attachid>
            <date>2011-05-29 20:11:23 -0700</date>
            <delta_ts>2011-05-29 20:24:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61717-20110529201122.patch</filename>
            <type>text/plain</type>
            <size>22429</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NjYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDUtMjkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKHI4NzYyMik6IFNjcnViYmluZyBhIFZpbWVvIG1v
dmllIHdoZW4gaW4gZnVsbHNjcmVlbiBzdG9wcyBwbGF5YmFjazsgbm8gd2F5IHRvIG1ha2UgaXQg
c3RhcnQgYWdhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYxNzE3CisKKyAgICAgICAgTWF5IGJlIHNvbWUgZ29vZCB3YXkgdG8gdGVzdCB0aGlzIGxh
dGVyLiBJIGRvbid0IGtub3cgYXQgdGhlIG1vbWVudC4KKworICAgICAgICAqIGRvbS9FdmVudERp
c3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkZXRlcm1p
bmVEaXNwYXRjaEJlaGF2aW9yKTogUmVzdHJpY3QgZXZlbnRzIHRvIHRoZQorICAgICAgICBzaGFk
b3cgRE9NIHdoZW4gc2hvd2luZyBhIGZ1bGwgc2NyZWVuIHZpZGVvLgorCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBJbml0aWFsaXplIHZpZGVvLW9ubHkgZnVsbCBzY3JlZW4g
ZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVl
bik6IFNldCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZURpc3Bh
dGNoRXZlbnRIYW5kbGVyKTogQ2xlYXIgaXQgd2hlbiBsZWF2aW5nIGZ1bGwgc2NyZWVuLgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6IEFkZGVkIGlzVmlkZW9Pbmx5RnVsbHNj
cmVlbiBmdW5jdGlvbiBhbmQgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogUm9sbGVk
IG91dAorICAgICAgICBjaGFuZ2VzIHRoYXQgdHJpZWQgdG8gbWFrZSBzcGVjaWFsIHJ1bGVzIGZv
ciBldmVudHMgdXNpbmcgcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIgYW5kIHN1Y2guCisgICAgICAg
IFRoaXMgcm9sbHMgb3V0IGJvdGggcjg3NjIyIGFuZCByODc2NTUuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXdpbmRC
dXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oOiBEaXR0by4KKwogMjAxMS0wNS0yOSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAkocmV2aXNpb24gODc2
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cu
dG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtMjYsMTUgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0j
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKLSNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNjb3BlZEV2
ZW50UXVldWUuaCIKKyNpbmNsdWRlICJXaW5kb3dFdmVudENvbnRleHQuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0
YW5jZS5oIgpAQCAtNDIsMTIgKzQxLDYgQEAKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAj
ZW5kaWYKIAotI2luY2x1ZGUgIlVJRXZlbnQuaCIKLSNpbmNsdWRlICJVSUV2ZW50V2l0aEtleVN0
YXRlLmgiCi0jaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmgiCi0KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8Tm9kZSo+
KiBnTm9kZXNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcyA9IDA7CkBAIC0zNzcsNiArMzcwLDE1
IEBAIGNvbnN0IEV2ZW50Q29udGV4dCogRXZlbnREaXNwYXRjaGVyOjp0b3AKIAogRXZlbnREaXNw
YXRjaEJlaGF2aW9yIEV2ZW50RGlzcGF0Y2hlcjo6ZGV0ZXJtaW5lRGlzcGF0Y2hCZWhhdmlvcihF
dmVudCogZXZlbnQpCiB7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIC8vIFZpZGVv
LW9ubHkgZnVsbCBzY3JlZW4gaXMgYSBtb2RlIHdoZXJlIHdlIHVzZSB0aGUgc2hhZG93IERPTSBh
cyBhbiBpbXBsZW1lbnRhdGlvbgorICAgIC8vIGRldGFpbCB0aGF0IHNob3VsZCBub3QgYmUgZGV0
ZWN0YWJsZSBieSB0aGUgd2ViIGNvbnRlbnQuCisgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBt
X25vZGUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKSB7Cisg
ICAgICAgIGlmIChlbGVtZW50LT5pc01lZGlhRWxlbWVudCgpICYmIHN0YXRpY19jYXN0PEhUTUxN
ZWRpYUVsZW1lbnQqPihlbGVtZW50KS0+aXNWaWRlb09ubHlGdWxsc2NyZWVuKCkpCisgICAgICAg
ICAgICByZXR1cm4gU3RheUluc2lkZVNoYWRvd0RPTTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8v
IFBlciBYQkwgMi4wIHNwZWMsIG11dGF0aW9uIGV2ZW50cyBzaG91bGQgbmV2ZXIgY3Jvc3Mgc2hh
ZG93IERPTSBib3VuZGFyeToKICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3hibDIvI2V2
ZW50LWZsb3ctYW5kLXRhcmdldGluZy1hY3Jvc3Mtc2hhZG93LXMKICAgICBpZiAoZXZlbnQtPmlz
TXV0YXRpb25FdmVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA4NzY2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBIVE1MTWVkaWFF
bGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAgICAgLCBtX3BhdXNlZEludGVybmFsKGZh
bHNlKQogICAgICwgbV9zZW5kUHJvZ3Jlc3NFdmVudHModHJ1ZSkKICAgICAsIG1faXNGdWxsc2Ny
ZWVuKGZhbHNlKQorICAgICwgbV9pc1ZpZGVvT25seUZ1bGxzY3JlZW4oZmFsc2UpCiAgICAgLCBt
X2Nsb3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKICAgICAsIG1fbW91c2VPdmVyKGZhbHNlKQog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtMjUyMCw2ICsyNTIxLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbiIpOwogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpICYm
IGRvY3VtZW50KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpIHsKKyAgICAgICAg
bV9pc1ZpZGVvT25seUZ1bGxzY3JlZW4gPSB0cnVlOwogICAgICAgICBkb2N1bWVudCgpLT5yZXF1
ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgMCwgRG9jdW1lbnQ6OkV4ZW1wdElGcmFtZUFs
bG93RnVsU2NyZWVuUmVxdWlyZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjcy
NSwxMSArMjcyNywxMiBAQCB2b2lkKiBIVE1MTWVkaWFFbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50
CiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnNob3coKTsKICAgICAgICAgfSBlbHNlIGlm
IChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmhpZGUo
KTsKKyAgICAgICAgaWYgKCFpc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1faXNWaWRlb09u
bHlGdWxsc2NyZWVuID0gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi0KIH0KIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNp
b24gODc2NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gIW1fcGxheWVyIHx8IG1fcGxheWVyLT5o
YXNTaW5nbGVTZWN1cml0eU9yaWdpbigpOyB9CiAgICAgCiAgICAgYm9vbCBpc0Z1bGxzY3JlZW4o
KSBjb25zdDsKKyAgICBib29sIGlzVmlkZW9Pbmx5RnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNWaWRlb09ubHlGdWxsc2NyZWVuICYmIGlzRnVsbHNjcmVlbigpOyB9CiAgICAgdm9pZCBl
bnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAKQEAgLTQxNSw2
ICs0MTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZW5kUHJvZ3Jlc3NFdmVudHMgOiAxOwog
CiAgICAgYm9vbCBtX2lzRnVsbHNjcmVlbiA6IDE7CisgICAgYm9vbCBtX2lzVmlkZW9Pbmx5RnVs
bHNjcmVlbiA6IDE7CiAgICAgYm9vbCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSA6IDE7CiAgICAg
Ym9vbCBtX21vdXNlT3ZlciA6IDE7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDg3NjYwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSwxNSArNzUsNiBAQCBNZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNv
bnRyb2xFbGVtZW50CiB7CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbEVsZW1lbnQ6OnByZURpc3Bh
dGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBldmVudC0+cHJldmVudERlZmF1
bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLSAgICByZXR1
cm4gMDsKLX0KLQogc3RhdGljIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZygpCiB7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHMsICgiZGlzcGxheSIpKTsKQEAgLTIwMCwyMSAr
MTkxLDIwIEBAIFJlbmRlck9iamVjdCogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ28KICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIodGhpcyk7
CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnBy
ZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiB7CiAgICAgaWYgKCFldmVudC0+aXNNb3VzZUV2ZW50KCkgfHwgZXZlbnQtPnR5cGUoKSAh
PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFBvb3IgbWFuJ3MgbW91c2VsZWF2ZSBldmVudCBkZXRlY3Rpb24u
CiAgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihl
dmVudCk7CiAgICAgaWYgKCFtb3VzZUV2ZW50LT5yZWxhdGVkVGFyZ2V0KCkgfHwgIW1vdXNlRXZl
bnQtPnJlbGF0ZWRUYXJnZXQoKS0+dG9Ob2RlKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAodGhpcy0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00obW91
c2VFdmVudC0+cmVsYXRlZFRhcmdldCgpLT50b05vZGUoKSkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm47CiAKICAgICBoaWRlKCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIApAQCAt
MzMwLDE1ICszMjAsMTQgQEAgaW5saW5lIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpN
ZQogewogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0
Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgbWVkaWFF
bGVtZW50KCktPnNldE11dGVkKCFtZWRpYUVsZW1lbnQoKS0+bXV0ZWQoKSk7Ci0gICAgICAgIGV2
ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7
CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIAotICAgIHJldHVy
biAwOworICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwog
fQogCiB2b2lkIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjaGFuZ2VkTXV0ZSgpCkBA
IC0zNjgsMTIgKzM1NywxMiBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRv
bkVsCiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJv
bFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3ZvaWQgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLm1vdXNlb3ZlckV2ZW50KQogICAgICAgICBtX2NvbnRyb2xzLT5zaG93Vm9sdW1l
U2xpZGVyKCk7CiAKLSAgICByZXR1cm4gMDsKKyAgICBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdApAQCAtNDE2LDE1ICs0MDUsMTQgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0
dG9uRWxlbWVudAogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgbWVkaWFFbGVtZW50KCktPnRvZ2dsZVBsYXlT
dGF0ZSgpOwogICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgpOwotICAgICAgICBldmVudC0+cHJl
dmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOworICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAg
SFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIHZvaWQg
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKQEAgLTQ0
OCw3ICs0MzYsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Ok1lCiB7
CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKQEAgLTQ1Nyw4ICs0NDUsNyBAQCB2
b2lkKiBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6cHJlCiAgICAgICAgIH0KICAgICAg
ICAgbWVkaWFFbGVtZW50KCktPnBhdXNlKGV2ZW50LT5mcm9tVXNlckdlc3R1cmUoKSk7CiAgICAg
ICAgIG1fc2Vla1RpbWVyLnN0YXJ0UmVwZWF0aW5nKGNTZWVrUmVwZWF0RGVsYXkpOwotICAgICAg
ICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlv
bigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkgewogICAgICAgICBp
ZiAobV9jYXB0dXJpbmcpCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKSkgewpAQCAtNDczLDExICs0NjAsMTAgQEAgdm9pZCogTWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQ6OnByZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9zZWVrVGlt
ZXIuc3RvcCgpOwogICAgICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBl
dmVudC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRp
b24oKTsKKyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICB9
CiAgICAgfQotICAgIHJldHVybiAwOworICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
OjpzZWVrVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudD4qKQpA
QCAtNTUxLDE0ICs1MzcsMTMgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25F
bGVtZQogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRy
b2xSZXdpbmRCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCit2b2lkIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5yZXdpbmQoMzApOwot
ICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9w
YWdhdGlvbigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9ICAg
IAotICAgIHJldHVybiAwOworICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoZXZlbnQpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFJld2luZEJ1
dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTU4MiwxNCArNTY3LDEzIEBA
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUIKICAgICByZXR1cm4gYnV0
dG9uLnJlbGVhc2UoKTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1
dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQg
TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5yZXR1cm5Ub1JlYWx0
aW1lKCk7Ci0gICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+
c3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xSZXR1
cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtNjEz
LDE3ICs1OTcsMTYgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aQog
ICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xUb2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCFtZWRpYUVsZW1lbnQoKS0+Y2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKCkpOwogICAgICAgICBzZXRDaGVja2VkKG1lZGlhRWxlbWVudCgpLT5j
bG9zZWRDYXB0aW9uc1Zpc2libGUoKSk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0g
ICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3Bh
Z2F0aW9uKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIAot
ICAgIHJldHVybiAwOworICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
ZXZlbnQpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
RWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUoKQpAQCAtNjU1LDE0ICs2MzgsMTQgQEAgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IAogICAgIHJldHVybiB0aW1lbGluZS5y
ZWxlYXNlKCk7CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6cHJlRGlz
cGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xUaW1lbGlu
ZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIC8vIExl
ZnQgYnV0dG9uIGlzIDAuIFJlamVjdHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQgYnV0dG9u
LgogICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVu
dCo+KGV2ZW50KS0+YnV0dG9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIWF0dGFjaGVkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZl
bnQpCiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5iZWdpblNjcnViYmluZygpOwpAQCAtNjcwLDcg
KzY1Myw3IEBAIHZvaWQqIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6cHJlRGkKICAgICBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogCiAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8IGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm47CiAKICAgICBmbG9hdCB0aW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2
YWx1ZSgpLnRvRG91YmxlKCkpOwogICAgIGlmICh0aW1lICE9IG1lZGlhRWxlbWVudCgpLT5jdXJy
ZW50VGltZSgpKSB7CkBAIC02ODUsNyArNjY4LDYgQEAgdm9pZCogTWVkaWFDb250cm9sVGltZWxp
bmVFbGVtZW50OjpwcmVEaQogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNldXBFdmVudCkKICAgICAgICAgbWVkaWFFbGVtZW50KCktPmVuZFNjcnViYmluZygpOwot
ICAgIHJldHVybiAwOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0
UG9zaXRpb24oZmxvYXQgY3VycmVudFRpbWUpIApAQCAtNzIyLDE5ICs3MDQsMTkgQEAgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZQogICAgIHJldHVybiBzbGlkZXIucmVs
ZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpwcmVE
aXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAg
IC8vIExlZnQgYnV0dG9uIGlzIDAuIFJlamVjdHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQg
YnV0dG9uLgogICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91
c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIWF0dGFjaGVkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm47CiAKICAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOwogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNlb3ZlckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZl
bnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAKICAgICBmbG9hdCB2b2x1bWUgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7CiAgICAgaWYgKHZvbHVtZSAh
PSBtZWRpYUVsZW1lbnQoKS0+dm9sdW1lKCkpIHsKQEAgLTc0Miw3ICs3MjQsNiBAQCB2b2lkKiBN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpwCiAgICAgICAgIG1lZGlhRWxlbWVudCgp
LT5zZXRWb2x1bWUodm9sdW1lLCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KLSAg
ICByZXR1cm4gMDsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Ojpz
ZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQpAQCAtNzk4LDcgKzc3OSw3IEBAIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkUKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsK
IH0KIAotdm9pZCogTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnByZURpc3Bh
dGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtODE1LDEwICs3OTYsOSBAQCB2b2lkKiBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVuCiAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAg
ICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgICAgIGV2ZW50LT5w
cmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7CisgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAg
ICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKSBjb25zdApAQCAtODQxLDE1ICs4MjEsMTQgQEAgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTQogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwog
fQogCi12b2lkKiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6
cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBjb2RlID0gMDsKICAgICAgICAgbWVkaWFF
bGVtZW50KCktPnNldFZvbHVtZSgwLCBjb2RlKTsKLSAgICAgICAgZXZlbnQtPnByZXZlbnREZWZh
dWx0KCk7Ci0gICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIEhUTUxJbnB1
dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0CkBAIC04NzIsMTUgKzg1MSwxNCBAQCBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNCiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9
CiAKLXZvaWQqIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50Ojpw
cmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tF
dmVudCkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGNvZGUgPSAwOwogICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+c2V0Vm9sdW1lKDEsIGNvZGUpOwotICAgICAgICBldmVudC0+cHJldmVudERlZmF1
bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgSFRNTElucHV0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gODc2NjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Nyw3ICs4Nyw2IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnRyb2xFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNo
RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1f
bWVkaWFFbGVtZW50OyAgIApAQCAtMTI3LDcgKzEyNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50Kik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRI
YW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKTsKICAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3Q7CiB9OwpAQCAtMTgzLDcgKzE4Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNv
bnRyb2xFbGVtZW50VHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFu
ZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7CiAKIAogcHJpdmF0ZToKQEAgLTE5OSw3ICsxOTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCos
IE1lZGlhQ29udHJvbHMqKTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhh
bmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0OwogCiAgICAgTWVkaWFDb250cm9scyogbV9jb250cm9sczsKQEAgLTIyNCw3ICsyMjMsNyBA
QCBjbGFzcyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCA6IHB1CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRI
YW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKTsKIAogcHJpdmF0ZToK
QEAgLTIzNyw3ICsyMzYsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xTZWVrQnV0
dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgot
ICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlKTsKQEAgLTI4NSw3ICsyODQsNyBAQCBjbGFzcyBNZWRpYUNvbnRy
b2xSZXdpbmRCdXR0b25FbGVtZW50IDogCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQq
KTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcml2YXRl
OgogICAgIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCop
OwpAQCAtMjk5LDcgKzI5OCw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b24KIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKIAotICAg
IHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcml2YXRlOgogICAgIE1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
KTsKQEAgLTMxMyw3ICszMTIsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0
aW9uc0J1CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwog
Ci0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCk7CiAKIHByaXZhdGU6CkBAIC0zMjgsNyArMzI3LDcgQEAg
Y2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50IDogcHVibAogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKEhUTUxN
ZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURp
c3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqKTsKICAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0KTsKICAgICB2b2lk
IHNldER1cmF0aW9uKGZsb2F0KTsKIApAQCAtMzQ2LDcgKzM0NSw3IEBAIGNsYXNzIE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckVsZW1lbnQgOiAKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVu
dCopOwogCi0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCop
OworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdm9p
ZCBzZXRWb2x1bWUoZmxvYXQpOwogCiBwcm90ZWN0ZWQ6CkBAIC0zNjIsNyArMzYxLDcgQEAgY2xh
c3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbgogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAotICAgIHZpcnR1YWwgdm9pZCAq
cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CkBA
IC0zOTAsNyArMzg5LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1
dAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVNaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIAogcHJpdmF0ZToK
ICAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50Kik7CkBAIC00MDQsNyArNDAzLDcgQEAgY2xhc3MgTWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1heEJ1dAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCopOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIo
RXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwog
ICAgIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9u
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95319</attachid>
            <date>2011-05-29 20:24:38 -0700</date>
            <delta_ts>2011-05-29 21:53:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61717-20110529202437.patch</filename>
            <type>text/plain</type>
            <size>20153</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NjYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDUtMjkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKHI4NzYyMik6IFNjcnViYmluZyBhIFZpbWVvIG1v
dmllIHdoZW4gaW4gZnVsbHNjcmVlbiBzdG9wcyBwbGF5YmFjazsgbm8gd2F5IHRvIG1ha2UgaXQg
c3RhcnQgYWdhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYxNzE3CisKKyAgICAgICAgTWF5IGJlIHNvbWUgZ29vZCB3YXkgdG8gdGVzdCB0aGlzIGxh
dGVyLiBJIGRvbid0IGtub3cgYXQgdGhlIG1vbWVudC4KKworICAgICAgICAqIGRvbS9FdmVudERp
c3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkZXRlcm1p
bmVEaXNwYXRjaEJlaGF2aW9yKTogUmVzdHJpY3QgZXZlbnRzIHRvIHRoZQorICAgICAgICBzaGFk
b3cgRE9NIHdoZW4gc2hvd2luZyBhIGZ1bGwgc2NyZWVuIHZpZGVvLgorCisgICAgICAgICogaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6IFJvbGxlZCBvdXQKKyAgICAgICAgY2hhbmdlcyB0aGF0IHRyaWVkIHRvIG1ha2Ugc3BlY2lh
bCBydWxlcyBmb3IgZXZlbnRzIHVzaW5nIHByZURpc3BhdGNoRXZlbnRIYW5kbGVyIGFuZCBzdWNo
LgorICAgICAgICBUaGlzIHJvbGxzIG91dCBib3RoIHI4NzYyMiBhbmQgcjg3NjU1LgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhC
dXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDogRGl0dG8uCisKIDIwMTEtMDUtMjkgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAJKHJl
dmlzaW9uIDg3NjYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29w
eXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuICho
dHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI2LDE1ICsyNiwxNCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogCi0jaW5jbHVkZSAiRWxl
bWVudC5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCi0j
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRl
ICJTY29wZWRFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmgiCisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdF
bGVtZW50SW5zdGFuY2UuaCIKQEAgLTQyLDEyICs0MSw2IEBACiAjaW5jbHVkZSAiU1ZHVXNlRWxl
bWVudC5oIgogI2VuZGlmCiAKLSNpbmNsdWRlICJVSUV2ZW50LmgiCi0jaW5jbHVkZSAiVUlFdmVu
dFdpdGhLZXlTdGF0ZS5oIgotI2luY2x1ZGUgIldpbmRvd0V2ZW50Q29udGV4dC5oIgotCi0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNo
U2V0PE5vZGUqPiogZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MgPSAwOwpAQCAtMzc3
LDYgKzM3MCwxNyBAQCBjb25zdCBFdmVudENvbnRleHQqIEV2ZW50RGlzcGF0Y2hlcjo6dG9wCiAK
IEV2ZW50RGlzcGF0Y2hCZWhhdmlvciBFdmVudERpc3BhdGNoZXI6OmRldGVybWluZURpc3BhdGNo
QmVoYXZpb3IoRXZlbnQqIGV2ZW50KQogeworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAg
ICAvLyBWaWRlby1vbmx5IGZ1bGwgc2NyZWVuIGlzIGEgbW9kZSB3aGVyZSB3ZSB1c2UgdGhlIHNo
YWRvdyBET00gYXMgYW4gaW1wbGVtZW50YXRpb24KKyAgICAvLyBkZXRhaWwgdGhhdCBzaG91bGQg
bm90IGJlIGRldGVjdGFibGUgYnkgdGhlIHdlYiBjb250ZW50LgorICAgIGlmIChFbGVtZW50KiBl
bGVtZW50ID0gbV9ub2RlLT5kb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnQoKSkgeworICAgICAgICAvLyBGSVhNRTogV2UgYXNzdW1lIHRoYXQgaWYgdGhlIGZ1bGwgc2Ny
ZWVuIGVsZW1lbnQgaXMgYSBtZWRpYSBlbGVtZW50IHRoYXQgaXQncworICAgICAgICAvLyB0aGUg
dmlkZW8tb25seSBmdWxsIHNjcmVlbi4gQm90aCBoZXJlIGFuZCBlbHNld2hlcmUuIEJ1dCB0aGF0
IGlzIHByb2JhYmx5IHdyb25nLgorICAgICAgICBpZiAoZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBTdGF5SW5zaWRlU2hhZG93RE9NOworICAgIH0KKyNlbmRp
ZgorCiAgICAgLy8gUGVyIFhCTCAyLjAgc3BlYywgbXV0YXRpb24gZXZlbnRzIHNob3VsZCBuZXZl
ciBjcm9zcyBzaGFkb3cgRE9NIGJvdW5kYXJ5OgogICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnLzIw
MDYveGJsMi8jZXZlbnQtZmxvdy1hbmQtdGFyZ2V0aW5nLWFjcm9zcy1zaGFkb3ctcwogICAgIGlm
IChldmVudC0+aXNNdXRhdGlvbkV2ZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiA4NzY2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUsMTUgKzc1LDYgQEAgTWVkaWFDb250cm9sRWxlbWVudDo6TWVk
aWFDb250cm9sRWxlbWVudAogewogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xFbGVtZW50OjpwcmVE
aXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgZXZlbnQtPnByZXZlbnRE
ZWZhdWx0KCk7Ci0gICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcoKQogewog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzLCAoImRpc3BsYXkiKSk7CkBAIC0yMDAs
MjEgKzE5MSwyMCBAQCBSZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvCiAg
ICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKHRo
aXMpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogewogICAgIGlmICghZXZlbnQtPmlzTW91c2VFdmVudCgpIHx8IGV2ZW50LT50eXBl
KCkgIT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBQb29yIG1hbidzIG1vdXNlbGVhdmUgZXZlbnQgZGV0ZWN0
aW9uLgogICAgIE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50
Kj4oZXZlbnQpOwogICAgIGlmICghbW91c2VFdmVudC0+cmVsYXRlZFRhcmdldCgpIHx8ICFtb3Vz
ZUV2ZW50LT5yZWxhdGVkVGFyZ2V0KCktPnRvTm9kZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9N
KG1vdXNlRXZlbnQtPnJlbGF0ZWRUYXJnZXQoKS0+dG9Ob2RlKCkpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaGlkZSgpOwotICAgIHJldHVybiAwOwogfQogCiAK
QEAgLTMzMCwxNSArMzIwLDE0IEBAIGlubGluZSBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVu
dDo6TWUKIHsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OnByZURp
c3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIG1l
ZGlhRWxlbWVudCgpLT5zZXRNdXRlZCghbWVkaWFFbGVtZW50KCktPm11dGVkKCkpOwotICAgICAg
ICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlv
bigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6Y2hhbmdlZE11dGUo
KQpAQCAtMzY4LDEyICszNTcsMTIgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVC
dXR0b25FbAogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNv
bnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkKICAgICAgICAgbV9jb250cm9scy0+c2hvd1Zv
bHVtZVNsaWRlcigpOwogCi0gICAgcmV0dXJuIDA7CisgICAgTWVkaWFDb250cm9sTXV0ZUJ1dHRv
bkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KCkgY29uc3QKQEAgLTQxNiwxNSArNDA1LDE0IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxh
eUJ1dHRvbkVsZW1lbnQKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIAotdm9pZCog
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT50b2dnbGVQ
bGF5U3RhdGUoKTsKICAgICAgICAgdXBkYXRlRGlzcGxheVR5cGUoKTsKLSAgICAgICAgZXZlbnQt
PnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKKyAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQotICAgIHJldHVybiAwOwor
ICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiB2
b2lkIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCkBA
IC00NDgsNyArNDM2LDcgQEAgaW5saW5lIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpN
ZQogewogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0
Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7CiAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CkBAIC00NTcsOCArNDQ1LDcg
QEAgdm9pZCogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnByZQogICAgICAgICB9CiAg
ICAgICAgIG1lZGlhRWxlbWVudCgpLT5wYXVzZShldmVudC0+ZnJvbVVzZXJHZXN0dXJlKCkpOwog
ICAgICAgICBtX3NlZWtUaW1lci5zdGFydFJlcGVhdGluZyhjU2Vla1JlcGVhdERlbGF5KTsKLSAg
ICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIGV2ZW50LT5zdG9wUHJvcGFn
YXRpb24oKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNl
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpIHsKICAgICAg
ICAgaWYgKG1fY2FwdHVyaW5nKQogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKQEAgLTQ3MywxMSArNDYwLDEwIEBAIHZvaWQqIE1lZGlhQ29udHJv
bFNlZWtCdXR0b25FbGVtZW50OjpwcmUKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fc2Vl
a1RpbWVyLnN0b3AoKTsKICAgICAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOwotICAgICAgICAg
ICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgICAgICBldmVudC0+c3RvcFByb3Bh
Z2F0aW9uKCk7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxl
bWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+
KikKQEAgLTU1MSwxNCArNTM3LDEzIEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0
dG9uRWxlbWUKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIAotdm9pZCogTWVkaWFD
b250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmV3aW5kKDMw
KTsKLSAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIGV2ZW50LT5zdG9w
UHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
fSAgICAKLSAgICByZXR1cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CkBAIC01ODIsMTQgKzU2Nywx
MyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCCiAgICAgcmV0dXJu
IGJ1dHRvbi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRp
bWVCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2
b2lkIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmV0dXJuVG9S
ZWFsdGltZSgpOwotICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZl
bnQtPnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9s
UmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAg
LTYxMywxNyArNTk3LDE2IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2Fw
dGkKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9s
VG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgbWVk
aWFFbGVtZW50KCktPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSghbWVkaWFFbGVtZW50KCktPmNs
b3NlZENhcHRpb25zVmlzaWJsZSgpKTsKICAgICAgICAgc2V0Q2hlY2tlZChtZWRpYUVsZW1lbnQo
KS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOwogICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgp
OwotICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQ
cm9wYWdhdGlvbigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9
CiAKLSAgICByZXR1cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKGV2ZW50KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKQEAgLTY1NSwxNCArNjM4LDE0IEBAIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiAKICAgICByZXR1cm4gdGltZWxp
bmUucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnBy
ZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICAv
LyBMZWZ0IGJ1dHRvbiBpcyAwLiBSZWplY3RzIG1vdXNlIGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1
dHRvbi4KICAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNl
RXZlbnQqPihldmVudCktPmJ1dHRvbigpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFhdHRhY2hlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93
bkV2ZW50KQogICAgICAgICBtZWRpYUVsZW1lbnQoKS0+YmVnaW5TY3J1YmJpbmcoKTsKQEAgLTY3
MCw3ICs2NTMsNyBAQCB2b2lkKiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnByZURpCiAg
ICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsK
IAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCB8
fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50IHx8IGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQodmFsdWUoKS50b0RvdWJsZSgpKTsKICAgICBpZiAodGltZSAhPSBtZWRpYUVsZW1lbnQoKS0+
Y3VycmVudFRpbWUoKSkgewpAQCAtNjg1LDcgKzY2OCw2IEBAIHZvaWQqIE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDo6cHJlRGkKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5tb3VzZXVwRXZlbnQpCiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbmRTY3J1YmJpbmco
KTsKLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6
OnNldFBvc2l0aW9uKGZsb2F0IGN1cnJlbnRUaW1lKSAKQEAgLTcyMiwxOSArNzA0LDE5IEBAIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWUKICAgICByZXR1cm4gc2xpZGVy
LnJlbGVhc2UoKTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6
cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsK
ICAgICAvLyBMZWZ0IGJ1dHRvbiBpcyAwLiBSZWplY3RzIG1vdXNlIGV2ZW50cyBub3QgZnJvbSBs
ZWZ0IGJ1dHRvbi4KICAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0
PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFhdHRhY2hlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91
dEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgdm9sdW1lID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh2YWx1ZSgpLnRvRG91YmxlKCkpOwogICAgIGlmICh2b2x1
bWUgIT0gbWVkaWFFbGVtZW50KCktPnZvbHVtZSgpKSB7CkBAIC03NDIsNyArNzI0LDYgQEAgdm9p
ZCogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6cAogICAgICAgICBtZWRpYUVsZW1l
bnQoKS0+c2V0Vm9sdW1lKHZvbHVtZSwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9
Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVu
dDo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKQEAgLTc5OCw3ICs3NzksNyBAQCBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FCiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNl
KCk7CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpwcmVE
aXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTgxNSwxMCArNzk2LDkgQEAgdm9pZCogTWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbgogICAgICAgICB9IGVsc2UKICNlbmRpZgogICAg
ICAgICAgICAgbWVkaWFFbGVtZW50KCktPmVudGVyRnVsbHNjcmVlbigpOwotICAgICAgICBldmVu
dC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOwor
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7
CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTg0MSwxNSArODIxLDE0IEBAIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU0KICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2Uo
KTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1l
bnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50KSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgY29kZSA9IDA7CiAgICAgICAgIG1l
ZGlhRWxlbWVudCgpLT5zZXRWb2x1bWUoMCwgY29kZSk7Ci0gICAgICAgIGV2ZW50LT5wcmV2ZW50
RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBIVE1M
SW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtODcyLDE1ICs4NTEsMTQgQEAgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTQogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgp
OwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVu
dDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBjb2RlID0gMDsKICAgICAgICAgbWVk
aWFFbGVtZW50KCktPnNldFZvbHVtZSgxLCBjb2RlKTsKLSAgICAgICAgZXZlbnQtPnByZXZlbnRE
ZWZhdWx0KCk7Ci0gICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHJldmlzaW9uIDg3NjYwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5
KQpAQCAtODcsNyArODcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFDb250cm9sRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNw
YXRjaEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJv
bEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBIVE1MTWVkaWFFbGVtZW50
KiBtX21lZGlhRWxlbWVudDsgICAKQEAgLTEyNyw3ICsxMjYsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCopOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2
ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50Kik7CiAgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlw
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0OwogfTsKQEAgLTE4Myw3ICsxODIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVk
aWFDb250cm9sRWxlbWVudFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVu
dEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopOwogCiAKIHByaXZhdGU6CkBAIC0xOTksNyArMTk4LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZl
bnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQo
KSBjb25zdDsKIAogICAgIE1lZGlhQ29udHJvbHMqIG1fY29udHJvbHM7CkBAIC0yMjQsNyArMjIz
LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQgOiBwdQogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBjcmVh
dGUoSFRNTE1lZGlhRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2
ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCk7CiAKIHByaXZh
dGU6CkBAIC0yMzcsNyArMjM2LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7Cisg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogcHJvdGVjdGVk
OgogICAgIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CkBAIC0yODUsNyArMjg0LDcgQEAgY2xhc3MgTWVkaWFD
b250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCA6IAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVt
ZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogcHJp
dmF0ZToKICAgICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqKTsKQEAgLTI5OSw3ICsyOTgsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0
aW1lQnV0dG9uCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV0
dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogcHJpdmF0ZToKICAg
ICBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50Kik7CkBAIC0zMTMsNyArMzEyLDcgQEAgY2xhc3MgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQq
KTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpOwogCiBwcml2YXRlOgpAQCAtMzI4LDcgKzMyNyw3
IEBAIGNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCA6IHB1YmwKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IGNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9scyopOwogCi0gICAgdmlydHVhbCB2b2lkICpw
cmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7CiAgICAg
dm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CiAKQEAgLTM0Niw3ICszNDUsNyBAQCBjbGFzcyBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50IDogCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZl
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAg
IHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKIAogcHJvdGVjdGVkOgpAQCAtMzYyLDcgKzM2MSw3IEBA
IGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW4KIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9scyop
OwpAQCAtMzkwLDcgKzM4OSw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVN
aW5CdXQKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7Cisg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICAKIHByaXZh
dGU6CiAgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoSFRN
TE1lZGlhRWxlbWVudCopOwpAQCAtNDA0LDcgKzQwMyw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNYXhCdXQKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRp
YUVsZW1lbnQqKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5k
bGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KTsKICAgICAKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1
dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95324</attachid>
            <date>2011-05-29 21:53:55 -0700</date>
            <delta_ts>2011-05-29 23:10:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61717-20110529215354.patch</filename>
            <type>text/plain</type>
            <size>38289</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc2NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Nzg5MjllNDc1MTllMzAx
ZTVlMWYzNTg5MzA3M2QyMTkwZjAyYjIxLi4yMTEyMzY0MWVhZGMyMjY5NzZiYjg5MWRhYjA0ZmU5
OTQ0N2E0NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTA3IEBACiAyMDExLTA1LTI5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIFJFR1JFU1NJT04gKHI4NzYyMik6IFNjcnViYmluZyBhIFZpbWVv
IG1vdmllIHdoZW4gaW4gZnVsbHNjcmVlbiBzdG9wcyBwbGF5YmFjazsgbm8gd2F5IHRvIG1ha2Ug
aXQgc3RhcnQgYWdhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYxNzE3CisKKyAgICAgICAgTWF5IGJlIHNvbWUgZ29vZCB3YXkgdG8gdGVzdCB0aGlz
IGxhdGVyLiBObyBpbW1lZGlhdGUgaWRlYSBib3V0IGhvdy4KKworICAgICAgICAqIGRvbS9FdmVu
dERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkZXRl
cm1pbmVEaXNwYXRjaEJlaGF2aW9yKTogUmVzdHJpY3QgZXZlbnRzIHRvIHRoZQorICAgICAgICBz
aGFkb3cgRE9NIHdoZW4gc2hvd2luZyBhIGZ1bGwgc2NyZWVuIHZpZGVvLgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBSZW1vdmVkIGNvZGUgdG8gbWFuYWdlIGZ1bGwgc2Ny
ZWVuIGNvbnRyb2xzLgorICAgICAgICBUaGUgZXZlbnRzIHRlbGxpbmcgdXMgYWJvdXQgYWN0aXZp
dHkgaW4gdGhlIHNoYWRvdyBET00gbm8gbG9uZ2VyIGJ1YmJsZSBvdXQgc28gd2UgbmVlZCB0bwor
ICAgICAgICBoYW5kbGUgdGhpcyBpbnNpZGUgdGhlIHNoYWRvdyBET00gb24gdGhlIHJvb3QgZWxl
bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NUaW1l
ckZpcmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnRlckZ1bGxzY3JlZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6IEFkZGVkIGlzUGxheWluZyBmdW5jdGlvbiwgcmVtb3ZlZCB0aGluZ3MgbW92
ZWQgdG8gdGhlIHJvb3QgZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckNvbnRhaW5lckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBSb2xsZWQgb3V0Cisg
ICAgICAgIGNoYW5nZXMgdGhhdCB0cmllZCB0byBtYWtlIHNwZWNpYWwgcnVsZXMgZm9yIGV2ZW50
cyB1c2luZyBwcmVEaXNwYXRjaEV2ZW50SGFuZGxlciBhbmQgc3VjaC4KKyAgICAgICAgVGhpcyBy
b2xscyBvdXQgYm90aCByODc2MjIgYW5kIHI4NzY1NS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbE11dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQ
bGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVN
aW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmg6IERpdHRvLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50KTogSW5pdGlhbGl6ZSBuZXcgZGF0YSBtZW1i
ZXJzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNr
U3RhcnRlZCk6IFN0YXJ0IHRoZSB0aW1lciBzbyB3ZSB3aWxsIGNvbnNpZGVyCisgICAgICAgIGhp
ZGluZyB0aGUgY29udHJvbHMgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc2VkKTogSGlkZSB0aGUgY29udHJvbHMgaWYgdGhl
IG1vdXNlCisgICAgICAgIGlzIG5vIGxvbmdlciBvdmVyIHRoZSBjb250cm9scy4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0b3BwZWQpOiBTdG9w
IHRoZSB0aW1lciBzaW5jZSB3ZSBvbmx5IGhpZGUKKyAgICAgICAgYXV0b21hdGljYWxseSBpZiB3
ZSdyZSBwbGF5aW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6
OmVudGVyZWRGdWxsc2NyZWVuKTogU3RhcnQgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmV4aXRlZEZ1bGxzY3JlZW4pOiBTdG9wIHRoZSB0aW1l
ciBzaW5jZSB3ZSBvbmx5IGNhcmUKKyAgICAgICAgaWYgd2UgYXJlIGZ1bGwgc2NyZWVuLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNvbnRhaW5zUmVsYXRlZFRh
cmdldCk6IEFkZGVkLiBIZWxwZXIgZm9yIG5leHQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERvIHRoZSBo
aWRlL3Nob3cgYW5kIHRpbWVyIGZ1bmN0aW9ucworICAgICAgICBhcyB0aGUgbW91c2UgaXMgbW92
ZWQgaW4gYW5kIG91dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcik6IFN0YXJ0IHRoZSB0aW1lciBpZgor
ICAgICAgICBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVu
dDo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQpOiBIaWRlIGlmIHRoZSBjb25kaXRp
b25zCisgICAgICAgIGFyZSBtZXQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290
RWxlbWVudDo6c3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcik6IFN0b3AgdGhlIHRpbWVy
LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaDogQWRk
ZWQgbmV3IGZ1bmN0aW9ucyBhbmQgZGF0YSBtZW1iZXJzLgorCisKKzIwMTEtMDUtMjkgIEJyaWFu
IFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIENvbnRyb2xzIG5ldmVyIGhpZGUgaW4gZnVsbCBzY3Jl
ZW4gYWZ0ZXIgdXNlciBzdG9wcyBtb3ZpbmcgbW91c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85
NTIyMTgyPgorICAgICAgICAKKyAgICAgICAgV2hlbiB3ZSBnZXQgYSBtb3VzZSBtb3ZlIGV2ZW50
IGluIEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIsIGFuZCB3ZSBhcmUgaW4g
ZnVsbCBzY3JlZW4sCisgICAgICAgIHNob3cgdGhlIG1lZGlhIGNvbnRyb2xzLCBhbmQgdGhlbiBz
dGFydCBhIHRpbWVyLgorICAgICAgICAKKyAgICAgICAgVGhlIHRpbWVyIGZpcmVzIDMgc2Vjb25k
cyBhZnRlciB0aGUgdXNlcidzIGxhc3QgbW91c2UgbW92ZW1lbnQgKHRpbWVyIGlzIHJlc3RhcnRl
ZCBvbiBldmVyeSBtb3VzZQorICAgICAgICBtb3ZlKSwgYW5kIGhpZGVzIHRoZSBjb250cm9scy4K
KworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogSW5pdGlhbGl6ZSBvdXIgbmV3
IHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheSk6IElmIHdl
IGFyZSBpbiBmdWxsIHNjcmVlbiBtb2RlLCBzdGFydCBvdXIgdGltZXIgdG8gaGlkZSB0aGUgZnVs
bCBzY3JlZW4KKyAgICAgICAgICAgIGNvbnRyb2xzLiBXZSBkb24ndCB3YW50IHRoZSB1c2VyIHRv
IGhhdmUgdG8gbW92ZSB0aGUgbW91c2UgdG8gaGlkZSB0aGVtIHdoZW4gdGhleSB1c2UgdGhlIHNw
YWNlYmFyCisgICAgICAgICAgICB0byBwbGF5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIpOiBTdGFydHMgYSBvbmVz
aG90IHRpbWVyIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCisgICAgICAgICAgICBpZiB3ZSBhcmUg
aW4gZnVsbCBzY3JlZW4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpoaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZCk6IE1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBjdXJy
ZW50bHkgcGxheWluZywgYW5kCisgICAgICAgICAgICB3ZSBhcmUgaW4gZnVsbCBzY3JlZW4sIGFu
ZCBoaWRlIHRoZSBjb250cm9scy4gV2UgZG9uJ3Qgd2FudCB0byBoaWRlIHRoZSBjb250cm9scyBp
ZiB3ZSBhcmUgcGF1c2VkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3Rv
cEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcik6IFN0b3BzIHRoZSB0aW1lci4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBJZiB3ZSBn
ZXQgYSBtb3VzZSBtb3ZlIGV2ZW50IGFuZCBhcmUgaW4gZnVsbCBzY3JlZW4sIHNob3cgdGhlCisg
ICAgICAgICAgICBjb250cm9scyBhbmQgc3RhcnQgYSB0aW1lciB0byBoaWRlIHRoZW0uCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4pOiBTdGFydCBh
IHRpbWVyIHRvIGhpZGUgdGhlIGZ1bGwgc2NyZWVuIGNvbnRyb2xzLiBUaGUgdXNlciBzaG91bGRu
J3QKKyAgICAgICAgICAgIGhhdmUgdGhlIG1vdmUgdGhlIG1vdXNlIG9uY2UgdGhleSBlbnRlciBm
dWxsIHNjcmVlbiB0byBoaWRlIHRoZSBjb250cm9scy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKTogU3RvcCB0aGUgdGltZXIgdG8gaGlkZSB0aGUg
ZnVsbCBzY3JlZW4gY29udHJvbHMuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oOiBBZGRlZCBwdXJlIHZpcnR1
YWwgc2hvdWxkSGlkZUNvbnRyb2xzKCkgbWV0aG9kLgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFJvb3RFbGVtZW50OjpwbGF5YmFja1N0b3BwZWQpOiBTdG9wIHRoZSB0aW1lciB0byBoaWRlIHRo
ZSBmdWxsIHNjcmVlbiBjb250cm9scy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJv
b3RFbGVtZW50OjpzaG91bGRIaWRlQ29udHJvbHMpOiBBZGRlZCwgb25seSByZXBvcnQgdGhhdAor
ICAgICAgICAgICAgdGhlIGNhbGxlciBzaG91bGQgaGlkZSB0aGUgY29udHJvbHMgaWYgdGhlIHBh
bmVsIGlzIG5vdCBob3ZlcmVkLgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJv
b3RFbGVtZW50Lmg6CisKKzIwMTEtMDUtMjkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgogCiAgICAgICAgIEVtYmVk
ZGVkIFZpbWVvIHZpZGVvLCB3aGVuIHRha2VuIGZ1bGxzY3JlZW4sIGlzIG92ZXJsYXBwZWQgYnkg
Y29udGVudCBmcm9tIHRoZSBlbmNsb3NpbmcgcGFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNw
YXRjaGVyLmNwcAppbmRleCAyYjU3Mjg1ODFlNzVhZmM5Njc2MTRhNDc3MThhMTA5NGJmMmQ5ZjE2
Li5iZGVlODEzZGFlOTA4YTBjOTIzNGUwYThkM2ZmMWU0Mzg0MjFlODE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAx
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjYsMTUgKzI2LDE0IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAKLSNp
bmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudENv
bnRleHQuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiTm9kZS5o
IgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJXaW5kb3dFdmVudENv
bnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2lu
Y2x1ZGUgIlNWR0VsZW1lbnRJbnN0YW5jZS5oIgpAQCAtNDIsMTIgKzQxLDYgQEAKICNpbmNsdWRl
ICJTVkdVc2VFbGVtZW50LmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgIlVJRXZlbnQuaCIKLSNpbmNs
dWRlICJVSUV2ZW50V2l0aEtleVN0YXRlLmgiCi0jaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0
LmgiCi0KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIEhhc2hTZXQ8Tm9kZSo+KiBnTm9kZXNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcyA9
IDA7CkBAIC0zNzcsNiArMzcwLDE3IEBAIGNvbnN0IEV2ZW50Q29udGV4dCogRXZlbnREaXNwYXRj
aGVyOjp0b3BFdmVudENvbnRleHQoKQogCiBFdmVudERpc3BhdGNoQmVoYXZpb3IgRXZlbnREaXNw
YXRjaGVyOjpkZXRlcm1pbmVEaXNwYXRjaEJlaGF2aW9yKEV2ZW50KiBldmVudCkKIHsKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8gVmlkZW8tb25seSBmdWxsIHNjcmVlbiBpcyBh
IG1vZGUgd2hlcmUgd2UgdXNlIHRoZSBzaGFkb3cgRE9NIGFzIGFuIGltcGxlbWVudGF0aW9uCisg
ICAgLy8gZGV0YWlsIHRoYXQgc2hvdWxkIG5vdCBiZSBkZXRlY3RhYmxlIGJ5IHRoZSB3ZWIgY29u
dGVudC4KKyAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IG1fbm9kZS0+ZG9jdW1lbnQoKS0+d2Vi
a2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIGFz
c3VtZSB0aGF0IGlmIHRoZSBmdWxsIHNjcmVlbiBlbGVtZW50IGlzIGEgbWVkaWEgZWxlbWVudCB0
aGF0IGl0J3MKKyAgICAgICAgLy8gdGhlIHZpZGVvLW9ubHkgZnVsbCBzY3JlZW4uIEJvdGggaGVy
ZSBhbmQgZWxzZXdoZXJlLiBCdXQgdGhhdCBpcyBwcm9iYWJseSB3cm9uZy4KKyAgICAgICAgaWYg
KGVsZW1lbnQtPmlzTWVkaWFFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gU3RheUluc2lk
ZVNoYWRvd0RPTTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIFBlciBYQkwgMi4wIHNwZWMsIG11
dGF0aW9uIGV2ZW50cyBzaG91bGQgbmV2ZXIgY3Jvc3Mgc2hhZG93IERPTSBib3VuZGFyeToKICAg
ICAvLyBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3hibDIvI2V2ZW50LWZsb3ctYW5kLXRhcmdldGlu
Zy1hY3Jvc3Mtc2hhZG93LXMKICAgICBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDllZmMzOTk5MDk2MmM2
OTZlODA1Y2FmODg3ZjRiZTc5NDdjYzY4Ni4uYjZkY2JlZWI1N2NhNTNlMTZmNTk5NzM4NzhkNTJm
MTU1MTcyOWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC0xNjQsNyArMTY0LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAgICAsIG1fc2VuZFBy
b2dyZXNzRXZlbnRzKHRydWUpCiAgICAgLCBtX2lzRnVsbHNjcmVlbihmYWxzZSkKICAgICAsIG1f
Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNlKQotICAgICwgbV9tb3VzZU92ZXIoZmFsc2UpCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgLCBtX25lZWRXaWRnZXRVcGRh
dGUoZmFsc2UpCiAjZW5kaWYKQEAgLTE2MTAsNiArMTYwOSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZW5kU2NydWJiaW5nKCkKIC8vICIxNSB0byAyNTBtcyIsIHdlIGNob29zZSB0aGUgc2xv
d2VzdCBmcmVxdWVuY3kKIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4VGltZXVwZGF0ZUV2ZW50RnJl
cXVlbmN5ID0gMC4yNTsKIAorc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lV2l0aG91dE1vdXNlTW92
ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyA9IDM7CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIoKQogewogICAgIGlmIChtX3BsYXliYWNrUHJvZ3Jl
c3NUaW1lci5pc0FjdGl2ZSgpKQpAQCAtMTYyNywxMSArMTYyOCw4IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4qKQogICAgICAgICByZXR1cm47CiAKICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCh0cnVl
KTsKLSAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKSB7Ci0gICAgICAgIGlmICghbV9tb3VzZU92
ZXIgJiYgY29udHJvbHMoKSAmJiBoYXNWaWRlbygpKQotICAgICAgICAgICAgbWVkaWFDb250cm9s
cygpLT5tYWtlVHJhbnNwYXJlbnQoKTsKKyAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAg
ICAgICBtZWRpYUNvbnRyb2xzKCktPnBsYXliYWNrUHJvZ3Jlc3NlZCgpOwotICAgIH0KICAgICAv
LyBGSVhNRTogZGVhbCB3aXRoIGN1ZSByYW5nZXMgaGVyZQogfQogCkBAIC0yMzczLDE4ICsyMzcx
LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKICAgICBpZiAod2lkZ2V0KQogICAgICAgICB3aWRnZXQtPmhhbmRsZUV2ZW50KGV2ZW50
KTsKICNlbHNlCi0gICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgewotICAgICAgICBNb3Vz
ZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KTsKLSAg
ICAgICAgaWYgKG1vdXNlRXZlbnQtPnJlbGF0ZWRUYXJnZXQoKSAhPSB0aGlzKSB7Ci0gICAgICAg
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpIHsK
LSAgICAgICAgICAgICAgICBtX21vdXNlT3ZlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYg
KGhhc01lZGlhQ29udHJvbHMoKSAmJiBjb250cm9scygpICYmICFjYW5QbGF5KCkpCi0gICAgICAg
ICAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+bWFrZU9wYXF1ZSgpOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50KQot
ICAgICAgICAgICAgICAgIG1fbW91c2VPdmVyID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0K
ICAgICBIVE1MRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAjZW5kaWYKIH0K
QEAgLTI1MTgsNiArMjUwNCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNGdWxsc2NyZWVu
KCkgY29uc3QKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKICAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4iKTsKKwogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgp
LT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVk
KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRo
aXMsIDAsIERvY3VtZW50OjpFeGVtcHRJRnJhbWVBbGxvd0Z1bFNjcmVlblJlcXVpcmVtZW50KTsK
QEAgLTI1MzcsNiArMjUyNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2Ny
ZWVuKCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuIik7CisKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKSB7
CiAgICAgICAgIGlmIChkb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVu
dCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSB0aGlzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMzUyZTQ0YWVlNjhlYTYyMTJlMDM1MDQ0
M2Y1ZTBhMDhjMjhiZTJiLi4yNzE2MzllY2ZmZTViOTg0NTk5NmYyNzQ3ZGYwYjUzMGFhMGE5NmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRv
Z2dsZVBsYXlTdGF0ZSgpOwogICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKICAgICB2b2lkIGVu
ZFNjcnViYmluZygpOwotCisgICAgCiAgICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CiAKICAgICBm
bG9hdCBwZXJjZW50TG9hZGVkKCkgY29uc3Q7CkBAIC0yMDEsNiArMjAxLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CiAKKyAgICBib29sIGlzUGxheWluZygp
IGNvbnN0IHsgcmV0dXJuIG1fcGxheWluZzsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5I
VE1MTWVkaWFFbGVtZW50KCk7CkBAIC00MTYsNyArNDE4LDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9pc0Z1bGxzY3JlZW4gOiAxOwogICAgIGJvb2wgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUg
OiAxOwotICAgIGJvb2wgbV9tb3VzZU92ZXIgOiAxOwogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiAgICAgYm9vbCBtX25lZWRXaWRnZXRVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4
IDViMTExODAwNjA3OTY4NDQ0YzJmNGM3NmNjMDZhNjc2Mzg3MjkyOGMuLmU4ZGE0MjY5MzBkYTMx
MTkzNGIyY2QxNTRiNDY5ZTEwMjg4MjU2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTc1LDE1ICs3NSw2IEBAIE1lZGlhQ29udHJvbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVsZW1l
bnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewogfQogCi12b2lkKiBNZWRpYUNv
bnRyb2xFbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0g
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAg
ICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRp
b24oKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRp
c3BsYXlTdHJpbmcoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzLCAoImRp
c3BsYXkiKSk7CkBAIC0yMDAsMjEgKzE5MSwyMCBAQCBSZW5kZXJPYmplY3QqIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZQog
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcih0
aGlzKTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVu
dDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKIHsKICAgICBpZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSB8fCBldmVudC0+dHlw
ZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50KQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gUG9vciBtYW4ncyBtb3VzZWxlYXZlIGV2ZW50IGRldGVj
dGlvbi4KICAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVu
dCo+KGV2ZW50KTsKICAgICBpZiAoIW1vdXNlRXZlbnQtPnJlbGF0ZWRUYXJnZXQoKSB8fCAhbW91
c2VFdmVudC0+cmVsYXRlZFRhcmdldCgpLT50b05vZGUoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICh0aGlzLT5jb250YWluc0luY2x1ZGluZ1NoYWRvd0RP
TShtb3VzZUV2ZW50LT5yZWxhdGVkVGFyZ2V0KCktPnRvTm9kZSgpKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybjsKIAogICAgIGhpZGUoKTsKLSAgICByZXR1cm4gMDsKIH0KIAog
CkBAIC0zMzAsMTUgKzMyMCwxNCBAQCBpbmxpbmUgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZQogewogfQogCi12
b2lkKiBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgbWVkaWFFbGVtZW50KCktPnNl
dE11dGVkKCFtZWRpYUVsZW1lbnQoKS0+bXV0ZWQoKSk7Ci0gICAgICAgIGV2ZW50LT5wcmV2ZW50
RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIEhU
TUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiB2b2lkIE1l
ZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjaGFuZ2VkTXV0ZSgpCkBAIC0zNjgsMTIgKzM1
NywxMiBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbgogICAgIHJldHVybiBidXR0b24ucmVsZWFz
ZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpwcmVE
aXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbFBhbmVs
TXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewog
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkKICAg
ICAgICAgbV9jb250cm9scy0+c2hvd1ZvbHVtZVNsaWRlcigpOwogCi0gICAgcmV0dXJuIDA7Cisg
ICAgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZl
bnQpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRv
bkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTQxNiwxNSArNDA1LDE0IEBAIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBsYXlC
dXR0b25FbGVtZW50OjpjcmVhdGUoCiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQqIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBtZWRpYUVsZW1lbnQoKS0+
dG9nZ2xlUGxheVN0YXRlKCk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0gICAgICAg
IGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9u
KCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KLSAgICByZXR1
cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsK
IH0KIAogdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5
cGUoKQpAQCAtNDQ4LDcgKzQzNiw3IEBAIGlubGluZSBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxl
bWVudDo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlCiB7CiB9CiAK
LXZvaWQqIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKICAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKQEAgLTQ1Nyw4ICs0NDUsNyBAQCB2b2lkKiBN
ZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogICAgICAgICB9CiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5wYXVzZShldmVu
dC0+ZnJvbVVzZXJHZXN0dXJlKCkpOwogICAgICAgICBtX3NlZWtUaW1lci5zdGFydFJlcGVhdGlu
ZyhjU2Vla1JlcGVhdERlbGF5KTsKLSAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7Ci0g
ICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZXVwRXZlbnQpIHsKICAgICAgICAgaWYgKG1fY2FwdHVyaW5nKQogICAgICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKQEAgLTQ3MywxMSArNDYw
LDEwIEBAIHZvaWQqIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3Nl
ZWtUaW1lci5zdG9wKCk7CiAgICAgICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKLSAgICAgICAg
ICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgZXZlbnQtPnN0b3BQcm9w
YWdhdGlvbigpOworICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQ6OnNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
PiopCkBAIC01NTEsMTQgKzUzNywxMyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1
dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZQogICAgIHJl
dHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0
b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1l
ZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50KSB7CiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5yZXdpbmQoMzApOwotICAgICAgICBldmVu
dC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOwor
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9ICAgIAotICAgIHJldHVy
biAwOworICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTU4MiwxNCArNTY3LDEzIEBAIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJl
dHVyblRvUmVhbHRpCiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQqIE1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBt
ZWRpYUVsZW1lbnQoKS0+cmV0dXJuVG9SZWFsdGltZSgpOwotICAgICAgICBldmVudC0+cHJldmVu
dERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgSFRN
TElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTYxMywxNyArNTk3LDE2IEBAIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xU
b2dnbGVDbG9zCiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQqIE1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewog
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAg
ICAgIG1lZGlhRWxlbWVudCgpLT5zZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoIW1lZGlhRWxlbWVu
dCgpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSk7CiAgICAgICAgIHNldENoZWNrZWQobWVkaWFF
bGVtZW50KCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKICAgICAgICAgdXBkYXRlRGlzcGxh
eVR5cGUoKTsKLSAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIGV2ZW50
LT5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCkBAIC02NTUsMTQgKzYzOCwx
NCBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250cm9s
VGltZWxpbmVFbGVtZW50OjpjcmVhdGUoSFRNTAogICAgIHJldHVybiB0aW1lbGluZS5yZWxlYXNl
KCk7CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6cHJlRGlzcGF0Y2hF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIC8vIExlZnQgYnV0
dG9uIGlzIDAuIFJlamVjdHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQgYnV0dG9uLgogICAg
IGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2
ZW50KS0+YnV0dG9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIWF0dGFjaGVkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpCiAg
ICAgICAgIG1lZGlhRWxlbWVudCgpLT5iZWdpblNjcnViYmluZygpOwpAQCAtNjcwLDcgKzY1Myw3
IEBAIHZvaWQqIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2VvdmVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2VvdXRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVu
dCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IHRpbWUg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7CiAgICAgaWYgKHRp
bWUgIT0gbWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkpIHsKQEAgLTY4NSw3ICs2NjgsNiBA
QCB2b2lkKiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZXVwRXZlbnQpCiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbmRTY3J1YmJpbmcoKTsK
LSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNl
dFBvc2l0aW9uKGZsb2F0IGN1cnJlbnRUaW1lKSAKQEAgLTcyMiwxOSArNzA0LDE5IEBAIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyRWxlbWVudDo6Y3JlCiAgICAgcmV0dXJuIHNsaWRlci5yZWxlYXNlKCk7CiB9CiAKLXZv
aWQqIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgLy8gTGVmdCBidXR0b24g
aXMgMC4gUmVqZWN0cyBtb3VzZSBldmVudHMgbm90IGZyb20gbGVmdCBidXR0b24uCiAgICAgaWYg
KGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQp
LT5idXR0b24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghYXR0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAogICAg
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgfHwg
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IHZvbHVtZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQodmFsdWUoKS50b0RvdWJsZSgpKTsKICAgICBpZiAodm9sdW1lICE9IG1lZGlhRWxlbWVudCgp
LT52b2x1bWUoKSkgewpAQCAtNzQyLDcgKzcyNCw2IEBAIHZvaWQqIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAg
ICAgICAgbWVkaWFFbGVtZW50KCktPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKICAgICAgICAgQVNT
RVJUKCFlYyk7CiAgICAgfQotICAgIHJldHVybiAwOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCkBAIC03OTgsNyArNzc5
LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gTWVk
aWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW0KICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2Uo
KTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnByZURp
c3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewog
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtODE1LDEwICs3OTYsOSBAQCB2b2lkKiBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogICAgICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICAgICAgbWVkaWFFbGVt
ZW50KCktPmVudGVyRnVsbHNjcmVlbigpOwotICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQo
KTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgSFRNTElucHV0RWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKQEAgLTg0MSwxNSArODIxLDE0IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5WCiAgICAg
cmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBFeGNlcHRpb25Db2Rl
IGNvZGUgPSAwOwogICAgICAgICBtZWRpYUVsZW1lbnQoKS0+c2V0Vm9sdW1lKDAsIGNvZGUpOwot
ICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9w
YWdhdGlvbigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9Ci0g
ICAgcmV0dXJuIDA7CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dmVudCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTg3MiwxNSAr
ODUxLDE0IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRv
bkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5WCiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxl
YXNlKCk7CiB9CiAKLXZvaWQqIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25F
bGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkuY2xpY2tFdmVudCkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGNvZGUgPSAwOwogICAgICAg
ICBtZWRpYUVsZW1lbnQoKS0+c2V0Vm9sdW1lKDEsIGNvZGUpOwotICAgICAgICBldmVudC0+cHJl
dmVudERlZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOworICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAg
SFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IGY3NWI0NDgzNWEyNWY5ZjNjZGY5NDg0
ZjVmOTUzOWI3NzA0NWZmYjkuLmZmOGY0NjE0NmQ2YjRjNTdhYjBlNjYwOTE5NzEwOGEzMGVmYWY2
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODcsNyArODcsNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgTWVkaWFDb250cm9sRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCopOwogICAg
IHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsgICAKQEAgLTEyNyw3
ICsxMjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckNvbnRhaW5lckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwogICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAg
dmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1
YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVhbCBNZWRpYUNv
bnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogfTsKQEAgLTE4Myw3ICsxODIs
NyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxl
bWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUpOwotICAgIHZp
cnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiAKIHByaXZhdGU6CkBAIC0xOTks
NyArMTk4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVC
dXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAogICAgIE1lZGlhQ29udHJvbHMq
IG1fY29udHJvbHM7CkBAIC0yMjQsNyArMjIzLDcgQEAgY2xhc3MgTWVkaWFDb250cm9sUGxheUJ1
dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hF
dmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpOwogCiBwcml2
YXRlOgpAQCAtMjM3LDcgKzIzNiw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCopOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKIHByb3RlY3Rl
ZDoKICAgICBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kiwg
TWVkaWFDb250cm9sRWxlbWVudFR5cGUpOwpAQCAtMjg1LDcgKzI4NCw3IEBAIGNsYXNzIE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVt
ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRC
dXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2
b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9s
UmV3aW5kQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CkBAIC0yOTksNyArMjk4LDcg
QEAgY2xhc3MgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQgOiBwdWJs
aWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW4KIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxN
ZWRpYUVsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
OwogCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKQEAgLTMxMyw3ICszMTIsNyBAQCBjbGFzcyBNZWRpYUNv
bnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250
cm9sSW5wdXRFbAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQq
KTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpOwogCiBwcml2YXRlOgpAQCAtMzI4LDcgKzMyNyw3
IEBAIGNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRy
b2xzKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2
b2lkIHNldFBvc2l0aW9uKGZsb2F0KTsKICAgICB2b2lkIHNldER1cmF0aW9uKGZsb2F0KTsKIApA
QCAtMzQ2LDcgKzM0NSw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQg
OiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxl
cihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7
CiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOwogCiBwcm90ZWN0ZWQ6CkBAIC0zNjIsNyArMzYx
LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMg
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNo
RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9scyopOwpAQCAtMzkwLDcgKzM4
OSw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRj
aEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50Kik7CiAgICAgCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVNaW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKQEAgLTQwNCw3ICs0MDMs
NyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCopOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hF
dmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCopOwogICAgIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWF4QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKaW5kZXgg
YTFlNjIwYjBiYzYyMTkwZTExOWY3NzRlNTc1NmUwODVjOTIyZDY0MC4uNDQ1OGQ0ZGEwODYxYmIz
ZWU1YzBhYzgwZjJlZTU5ZDk3ZmU4NDhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lZGlhQ29udHJvbFJvb3RFbGVtZW50Lmgi
CiAKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUgIk1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKIApAQCAt
MzcsNiArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0YXRpYyBjb25zdCBkb3VibGUgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlk
aW5nQ29udHJvbHMgPSAzOworCiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6TWVkaWFDb250cm9s
Um9vdEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogICAgIDogTWVkaWFD
b250cm9scyhtZWRpYUVsZW1lbnQpCiAgICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQp
CkBAIC02MSw2ICs2NCw4IEBAIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xS
b290RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiAgICAgLCBtX2Z1bGxT
Y3JlZW5NYXhWb2x1bWVCdXR0b24oMCkKICAgICAsIG1fcGFuZWwoMCkKICAgICAsIG1fb3BhcXVl
KHRydWUpCisgICAgLCBtX2lzTW91c2VPdmVyQ29udHJvbHMoZmFsc2UpCisgICAgLCBtX2hpZGVG
dWxsc2NyZWVuQ29udHJvbHNUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Omhp
ZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKQogewogfQogCkBAIC0zMzYsMTIgKzM0MSwx
OCBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0YXJ0ZWQoKQogICAg
IG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX3RpbWVsaW5lLT5zZXRQ
b3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7CiAgICAgdXBkYXRlVGltZURp
c3BsYXkoKTsKKworICAgIGlmIChtX21lZGlhRWxlbWVudC0+aXNGdWxsc2NyZWVuKCkpCisgICAg
ICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CiB9CiAKIHZvaWQgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NlZCgpCiB7CiAgICAgbV90aW1lbGlu
ZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkpOwogICAgIHVwZGF0
ZVRpbWVEaXNwbGF5KCk7CisgICAgCisgICAgaWYgKCFtX2lzTW91c2VPdmVyQ29udHJvbHMgJiYg
bV9tZWRpYUVsZW1lbnQtPmhhc1ZpZGVvKCkpCisgICAgICAgIG1ha2VUcmFuc3BhcmVudCgpOwog
fQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0b3BwZWQoKQpAQCAt
MzUwLDYgKzM2MSw4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrU3Rv
cHBlZCgpCiAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJl
bnRUaW1lKCkpOwogICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7CiAgICAgbWFrZU9wYXF1ZSgpOwor
ICAgIAorICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKIH0KIAogdm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlVGltZURpc3BsYXkoKQpAQCAtNDM1LDYgKzQ0
OCw4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmVudGVyZWRGdWxsc2NyZWVuKCkK
ICAgICAgICAgbV9yZXdpbmRCdXR0b24tPmhpZGUoKTsKICAgICAgICAgbV9yZXR1cm5Ub1JlYWxU
aW1lQnV0dG9uLT5oaWRlKCk7CiAgICAgfQorCisgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRy
b2xzVGltZXIoKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6ZXhpdGVkRnVs
bHNjcmVlbigpCkBAIC00NDYsNiArNDYxLDggQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dDo6ZXhpdGVkRnVsbHNjcmVlbigpCiAgICAgbV9zZWVrQmFja0J1dHRvbi0+c2hvdygpOwogICAg
IG1fc2Vla0ZvcndhcmRCdXR0b24tPnNob3coKTsKICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0
b24tPnNob3coKTsKKworICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsgICAg
CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3dWb2x1bWVTbGlkZXIoKQpA
QCAtNDU3LDYgKzQ3NCw3NyBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzaG93Vm9s
dW1lU2xpZGVyKCkKICAgICAgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPnNob3coKTsKIH0K
IAorYm9vbCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hvdWxkSGlkZUNvbnRyb2xzKCkKK3sK
KyAgICByZXR1cm4gIW1fcGFuZWwtPmhvdmVyZWQoKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6Y29udGFpbnNSZWxhdGVkVGFyZ2V0KEV2ZW50KiBldmVudCkKK3sKKyAgICBp
ZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50
KS0+cmVsYXRlZFRhcmdldCgpOworICAgIGlmICghcmVsYXRlZFRhcmdldCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBjb250YWlucyhyZWxhdGVkVGFyZ2V0LT50b05vZGUoKSk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQoreworICAgIE1lZGlhQ29udHJvbHM6OmRlZmF1bHRFdmVudEhhbmRsZXIo
ZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3Zl
ckV2ZW50KSB7CisgICAgICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFyZ2V0KGV2ZW50KSkgewor
ICAgICAgICAgICAgbV9pc01vdXNlT3ZlckNvbnRyb2xzID0gdHJ1ZTsKKyAgICAgICAgICAgIGlm
ICghbV9tZWRpYUVsZW1lbnQtPmNhblBsYXkoKSkgeworICAgICAgICAgICAgICAgIG1ha2VPcGFx
dWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkSGlkZUNvbnRyb2xzKCkpCisgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlb3V0RXZlbnQpIHsKKyAgICAgICAgaWYgKCFjb250YWluc1JlbGF0ZWRUYXJn
ZXQoZXZlbnQpKSB7CisgICAgICAgICAgICBtX2lzTW91c2VPdmVyQ29udHJvbHMgPSBmYWxzZTsK
KyAgICAgICAgICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3Zl
RXZlbnQpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSkgewor
ICAgICAgICAgICAgLy8gV2hlbiB3ZSBnZXQgYSBtb3VzZSBtb3ZlIGluIGZ1bGxzY3JlZW4gbW9k
ZSwgc2hvdyB0aGUgbWVkaWEgY29udHJvbHMsIGFuZCBzdGFydCBhIHRpbWVyCisgICAgICAgICAg
ICAvLyB0aGF0IHdpbGwgaGlkZSB0aGUgbWVkaWEgY29udHJvbHMgYWZ0ZXIgYSAzIHNlY29uZHMg
d2l0aG91dCBhIG1vdXNlIG1vdmUuCisgICAgICAgICAgICBtYWtlT3BhcXVlKCk7CisgICAgICAg
ICAgICBpZiAoc2hvdWxkSGlkZUNvbnRyb2xzKCkpCisgICAgICAgICAgICAgICAgc3RhcnRIaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIo
KQoreworICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPmlzRnVsbHNjcmVlbigpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgbV9oaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIuc3RhcnRPbmVT
aG90KHRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVy
RmlyZWQoVGltZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+KikKK3sKKyAgICBpZiAoIW1fbWVk
aWFFbGVtZW50LT5pc1BsYXlpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmICgh
bV9tZWRpYUVsZW1lbnQtPmlzRnVsbHNjcmVlbigpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgaWYgKCFzaG91bGRIaWRlQ29udHJvbHMoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IG1ha2VUcmFuc3BhcmVudCgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpz
dG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCkKK3sKKyAgICBtX2hpZGVGdWxsc2NyZWVu
Q29udHJvbHNUaW1lci5zdG9wKCk7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scyIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxl
bWVudC5oCmluZGV4IDFmZGNjMDE4NmFhNzhjMzNjODkwZDVmMzNiYTY3ODQ1ZmViZTFhODAuLjc4
Y2UwNmZiYzUwMjM1MjQxMDA3MDE1MmFhNWMzYmZkMmYwNzQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtOTYsMTEgKzk2LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRp
bWVEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVTdGF0dXNEaXNwbGF5KCk7CiAKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCk7CisKIHByaXZhdGU6CiAgICAgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwogCisgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2b2lkIGhpZGVGdWxsc2NyZWVuQ29udHJv
bHNUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiopOworICAgIHZvaWQg
c3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKKyAgICB2b2lkIHN0b3BIaWRlRnVs
bHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKKwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCisgICAgYm9vbCBjb250YWluc1JlbGF0ZWRUYXJn
ZXQoRXZlbnQqKTsKKwogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OwogCiAg
ICAgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCogbV9yZXdpbmRCdXR0b247CkBAIC0x
MjMsOCArMTMyLDkgQEAgcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1l
U2xpZGVyRWxlbWVudCogbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyOwogICAgIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KiBtX2Z1bGxTY3JlZW5NYXhWb2x1bWVC
dXR0b247CiAgICAgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50KiBtX3BhbmVsOwotCiAgICAgYm9v
bCBtX29wYXF1ZTsKKyAgICBib29sIG1faXNNb3VzZU92ZXJDb250cm9sczsKKyAgICBUaW1lcjxN
ZWRpYUNvbnRyb2xSb290RWxlbWVudD4gbV9oaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXI7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKaW5kZXgg
OWFjZGI2NWI1OTJlMjc0ZTIzNjQ0OGZmNDg0OTY3ZDY0NTJlMWY1ZC4uNDMzYjE3YjE4NmI2ZDQ1
MzBjZmFjNzA1NDQ4MTk5NjA0OTVlNzI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuaApAQCAtNjgsNiArNjgsOCBAQCBjbGFzcyBNZWRpYUNvbnRyb2xzIDog
cHVibGljIEhUTUxEaXZFbGVtZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGltZURpc3Bs
YXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKSA9IDA7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCkgPSAwOworCiBwcm90ZWN0ZWQ6
CiAgICAgTWVkaWFDb250cm9scyhIVE1MTWVkaWFFbGVtZW50Kik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95326</attachid>
            <date>2011-05-29 23:10:55 -0700</date>
            <delta_ts>2011-05-30 10:31:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61717-20110529231053.patch</filename>
            <type>text/plain</type>
            <size>40412</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc2NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MGZmODE0ZGQ3YmRjMDEy
NmYxNTA3N2E4ODFlYmE0Y2RkNzAyMDg0Li4wZGY1MTE2NTMwY2UwYjNjOTJjNmFlYWE2YmY3MjNm
MjBlZmMwYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMDUtMjkgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg3NjIyKTogU2NydWJiaW5nIGEgVmltZW8g
bW92aWUgd2hlbiBpbiBmdWxsc2NyZWVuIHN0b3BzIHBsYXliYWNrOyBubyB3YXkgdG8gbWFrZSBp
dCBzdGFydCBhZ2FpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjE3MTcKKworICAgICAgICBNYXkgYmUgc29tZSBnb29kIHdheSB0byB0ZXN0IHRoaXMg
bGF0ZXIuIE5vIGltbWVkaWF0ZSBpZGVhIGJvdXQgaG93LgorCisgICAgICAgIFdoZW4gYSBtZWRp
YSBlbGVtZW50IGlzIHRha2VuIGludG8gZnVsbC1zY3JlZW4gbW9kZSwgc3RvcCBldmVudHMgZnJv
bSBwcm9wYWdhdGluZworICAgICAgICBvdXRzaWRlIHRoZSBtZWRpYSBlbGVtZW50J3Mgc2hhZG93
IERPTSwgRXZlbnREaXNwYXRjaGVyOjpkZXRlcm1pbmVEaXNwYXRjaEJlaGF2aW9yKCkKKyAgICAg
ICAgaGFzIGJlZW4gY2hhbmdlZCB0byB0YWtlIGEgc2hhZG93IHJvb3Qgbm9kZS4gSW4gb3VyIGZ1
bGwgc2NyZWVuIG1lZGlhIGVsZW1lbnQgY2hlY2ssCisgICAgICAgIHdlIGNoZWNrIHRvIHNlZSBp
ZiB0aGUgcGFzc2VkIHNoYWRvdyByb290IGlzIHRoZSBzaGFkb3cgcm9vdCBvZiB0aGUgZnVsbCBz
Y3JlZW4gbWVkaWEKKyAgICAgICAgZWxlbWVudCwgYW5kIGlmIHNvLCBzcGVjaWZ5IGV2ZW50cyBz
aG91bGQgU3RheUluc2lkZVNoYWRvd0RPTS4gVGhlIGVuZCByZXN1bHQgaXMgdGhhdAorICAgICAg
ICBpbnNpZGUgRXZlbnREaXNwYXRjaGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycywgYW4gYW5jZXN0
b3IgY2hhaW4gaXMgYnVpbHQgdXAgYWxsIHRoZQorICAgICAgICB3YXkgZnJvbSB0aGUgU2xpZGVy
VGh1bWIgdG8gdGhlIHZpZGVvIGVsZW1lbnQncyBzaGFkb3cgcm9vdCwgYnV0IG5vIGZ1cnRoZXIu
CisKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGV0ZXJtaW5lRGlzcGF0Y2hCZWhhdmlvcik6IFJlc3RyaWN0IGV2
ZW50cyB0byB0aGUKKyAgICAgICAgc2hhZG93IERPTSB3aGVuIHNob3dpbmcgYSBmdWxsIHNjcmVl
biB2aWRlby4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogUmVtb3ZlZCBj
b2RlIHRvIG1hbmFnZSBmdWxsIHNjcmVlbiBjb250cm9scy4KKyAgICAgICAgVGhlIGV2ZW50cyB0
ZWxsaW5nIHVzIGFib3V0IGFjdGl2aXR5IGluIHRoZSBzaGFkb3cgRE9NIG5vIGxvbmdlciBidWJi
bGUgb3V0IHNvIHdlIG5lZWQgdG8KKyAgICAgICAgaGFuZGxlIHRoaXMgaW5zaWRlIHRoZSBzaGFk
b3cgRE9NIG9uIHRoZSByb290IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpwbGF5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbik6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOiBBZGRlZCBpc1BsYXlpbmcgZnVuY3Rp
b24sIHJlbW92ZWQgdGhpbmdzIG1vdmVkIHRvIHRoZSByb290IGVsZW1lbnQuCisKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKTogUm9sbGVkIG91dAorICAgICAgICBjaGFuZ2VzIHRoYXQgdHJpZWQgdG8gbWFrZSBz
cGVjaWFsIHJ1bGVzIGZvciBldmVudHMgdXNpbmcgcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIgYW5k
IHN1Y2guCisgICAgICAgIFRoaXMgcm9sbHMgb3V0IGJvdGggcjg3NjIyIGFuZCByODc2NTUuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxN
dXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZU1heEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAg
KiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOiBEaXR0by4KKworICAgICAgICAq
IGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudCk6IElu
aXRpYWxpemUgbmV3IGRhdGEgbWVtYmVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFJvb3RFbGVtZW50OjpwbGF5YmFja1N0YXJ0ZWQpOiBTdGFydCB0aGUgdGltZXIgc28gd2Ugd2ls
bCBjb25zaWRlcgorICAgICAgICBoaWRpbmcgdGhlIGNvbnRyb2xzIGxhdGVyLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6IEhp
ZGUgdGhlIGNvbnRyb2xzIGlmIHRoZSBtb3VzZQorICAgICAgICBpcyBubyBsb25nZXIgb3ZlciB0
aGUgY29udHJvbHMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6
cGxheWJhY2tTdG9wcGVkKTogU3RvcCB0aGUgdGltZXIgc2luY2Ugd2Ugb25seSBoaWRlCisgICAg
ICAgIGF1dG9tYXRpY2FsbHkgaWYgd2UncmUgcGxheWluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OjplbnRlcmVkRnVsbHNjcmVlbik6IFN0YXJ0IHRoZSB0aW1l
ci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpleGl0ZWRGdWxs
c2NyZWVuKTogU3RvcCB0aGUgdGltZXIgc2luY2Ugd2Ugb25seSBjYXJlCisgICAgICAgIGlmIHdl
IGFyZSBmdWxsIHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Ojpjb250YWluc1JlbGF0ZWRUYXJnZXQpOiBBZGRlZC4gSGVscGVyIGZvciBuZXh0IGZ1bmN0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIpOiBEbyB0aGUgaGlkZS9zaG93IGFuZCB0aW1lciBmdW5jdGlvbnMKKyAgICAg
ICAgYXMgdGhlIG1vdXNlIGlzIG1vdmVkIGluIGFuZCBvdXQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIp
OiBTdGFydCB0aGUgdGltZXIgaWYKKyAgICAgICAgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVk
KTogSGlkZSBpZiB0aGUgY29uZGl0aW9ucworICAgICAgICBhcmUgbWV0LgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xz
VGltZXIpOiBTdG9wIHRoZSB0aW1lci4KKworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Lmg6IEFkZGVkIG5ldyBmdW5jdGlvbnMgYW5kIGRhdGEgbWVtYmVycy4K
KworCiAyMDExLTA1LTI5ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5jcHAKaW5kZXggMmI1NzI4NTgxZTc1YWZjOTY3NjE0YTQ3NzE4YTEwOTRiZjJk
OWYxNi4uNDdlYWU4ZDNiOGZjOWZjN2Y4NjM3MzJhMmMwMjNiNTVlZjhkNzE0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI2LDE1ICsyNiwx
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgog
Ci0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnRDb250ZXh0LmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiV2luZG93RXZl
bnRDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgRU5BQkxFKFNWRykK
ICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKQEAgLTQyLDEyICs0MSw2IEBACiAjaW5j
bHVkZSAiU1ZHVXNlRWxlbWVudC5oIgogI2VuZGlmCiAKLSNpbmNsdWRlICJVSUV2ZW50LmgiCi0j
aW5jbHVkZSAiVUlFdmVudFdpdGhLZXlTdGF0ZS5oIgotI2luY2x1ZGUgIldpbmRvd0V2ZW50Q29u
dGV4dC5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBIYXNoU2V0PE5vZGUqPiogZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlj
a3MgPSAwOwpAQCAtMjM1LDggKzIyOCw2IEBAIEV2ZW50RGlzcGF0Y2hlcjo6RXZlbnREaXNwYXRj
aGVyKE5vZGUqIG5vZGUpCiAKIHZvaWQgRXZlbnREaXNwYXRjaGVyOjplbnN1cmVFdmVudEFuY2Vz
dG9ycyhFdmVudCogZXZlbnQpCiB7Ci0gICAgRXZlbnREaXNwYXRjaEJlaGF2aW9yIGJlaGF2aW9y
ID0gZGV0ZXJtaW5lRGlzcGF0Y2hCZWhhdmlvcihldmVudCk7Ci0KICAgICBpZiAoIW1fbm9kZS0+
aW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTI1MSw3ICsyNDIsNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6ZW5zdXJlRXZlbnRBbmNlc3RvcnMoRXZlbnQqIGV2ZW50KQogICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGJvb2wgaXNTVkdTaGFkb3dSb290ID0gYW5jZXN0b3It
PmlzU1ZHU2hhZG93Um9vdCgpOwogICAgICAgICBpZiAoaXNTVkdTaGFkb3dSb290IHx8IGFuY2Vz
dG9yLT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAgICAgaWYgKGJlaGF2aW9yID09IFN0YXlJ
bnNpZGVTaGFkb3dET00pCisgICAgICAgICAgICBpZiAoZGV0ZXJtaW5lRGlzcGF0Y2hCZWhhdmlv
cihldmVudCwgYW5jZXN0b3IpID09IFN0YXlJbnNpZGVTaGFkb3dET00pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgICAgICBhbmNlc3RvciA9IGlzU1ZH
U2hhZG93Um9vdCA/IGFuY2VzdG9yLT5zdmdTaGFkb3dIb3N0KCkgOiBhbmNlc3Rvci0+c2hhZG93
SG9zdCgpOwpAQCAtMzc1LDggKzM2NiwxOSBAQCBjb25zdCBFdmVudENvbnRleHQqIEV2ZW50RGlz
cGF0Y2hlcjo6dG9wRXZlbnRDb250ZXh0KCkKICAgICByZXR1cm4gbV9hbmNlc3RvcnMuaXNFbXB0
eSgpID8gMCA6ICZtX2FuY2VzdG9ycy5sYXN0KCk7CiB9CiAKLUV2ZW50RGlzcGF0Y2hCZWhhdmlv
ciBFdmVudERpc3BhdGNoZXI6OmRldGVybWluZURpc3BhdGNoQmVoYXZpb3IoRXZlbnQqIGV2ZW50
KQorRXZlbnREaXNwYXRjaEJlaGF2aW9yIEV2ZW50RGlzcGF0Y2hlcjo6ZGV0ZXJtaW5lRGlzcGF0
Y2hCZWhhdmlvcihFdmVudCogZXZlbnQsIE5vZGUqIHNoYWRvd1Jvb3QpCiB7CisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorICAgIC8vIFZpZGVvLW9ubHkgZnVsbCBzY3JlZW4gaXMgYSBtb2Rl
IHdoZXJlIHdlIHVzZSB0aGUgc2hhZG93IERPTSBhcyBhbiBpbXBsZW1lbnRhdGlvbgorICAgIC8v
IGRldGFpbCB0aGF0IHNob3VsZCBub3QgYmUgZGV0ZWN0YWJsZSBieSB0aGUgd2ViIGNvbnRlbnQu
CisgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBtX25vZGUtPmRvY3VtZW50KCktPndlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBhc3N1bWUg
dGhhdCBpZiB0aGUgZnVsbCBzY3JlZW4gZWxlbWVudCBpcyBhIG1lZGlhIGVsZW1lbnQgdGhhdCBp
dCdzCisgICAgICAgIC8vIHRoZSB2aWRlby1vbmx5IGZ1bGwgc2NyZWVuLiBCb3RoIGhlcmUgYW5k
IGVsc2V3aGVyZS4gQnV0IHRoYXQgaXMgcHJvYmFibHkgd3JvbmcuCisgICAgICAgIGlmIChlbGVt
ZW50LT5pc01lZGlhRWxlbWVudCgpICYmIHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+c2hhZG93
SG9zdCgpID09IGVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gU3RheUluc2lkZVNoYWRvd0RP
TTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIFBlciBYQkwgMi4wIHNwZWMsIG11dGF0aW9uIGV2
ZW50cyBzaG91bGQgbmV2ZXIgY3Jvc3Mgc2hhZG93IERPTSBib3VuZGFyeToKICAgICAvLyBodHRw
Oi8vZGV2LnczLm9yZy8yMDA2L3hibDIvI2V2ZW50LWZsb3ctYW5kLXRhcmdldGluZy1hY3Jvc3Mt
c2hhZG93LXMKICAgICBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDg4ZTk3NTY0ZTE4OGNhY2QwZDc4OGQ0YWFiZWZjZDZh
ZmJiNTNmNmUuLjNjOTU0OGI0NzE0NTgyZjM0NDQ4YWFiNjdhYThjM2MyYmIxMTZiOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToK
ICAgICBFdmVudERpc3BhdGNoZXIoTm9kZSopOwogCiAgICAgUGFzc1JlZlB0cjxFdmVudFRhcmdl
dD4gYWRqdXN0VG9TaGFkb3dCb3VuZGFyaWVzKFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdl
dCwgY29uc3QgVmVjdG9yPE5vZGUqPiByZWxhdGVkVGFyZ2V0QW5jZXN0b3JzKTsKLSAgICBFdmVu
dERpc3BhdGNoQmVoYXZpb3IgZGV0ZXJtaW5lRGlzcGF0Y2hCZWhhdmlvcihFdmVudCopOworICAg
IEV2ZW50RGlzcGF0Y2hCZWhhdmlvciBkZXRlcm1pbmVEaXNwYXRjaEJlaGF2aW9yKEV2ZW50Kiwg
Tm9kZSogc2hhZG93Um9vdCk7CiAgICAgdm9pZCBlbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVudCop
OwogICAgIGNvbnN0IEV2ZW50Q29udGV4dCogdG9wRXZlbnRDb250ZXh0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGZhYWNlOGRlYjBkYTIwMmM5MGYy
ZmRhZjA0NTc2NTA3ZjJhNDk3ODguLmI2ZGNiZWViNTdjYTUzZTE2ZjU5OTczODc4ZDUyZjE1NTE3
MjliN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTIz
LDcgKzEyMyw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX2FzeW5jRXZlbnRU
aW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCiAgICAg
LCBtX3Byb2dyZXNzRXZlbnRUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NF
dmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lcih0aGlzLCAmSFRN
TE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQpCi0gICAgLCBtX2hpZGVG
dWxsc2NyZWVuQ29udHJvbHNUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6aGlkZUZ1bGxz
Y3JlZW5Db250cm9sc1RpbWVyRmlyZWQpCiAgICAgLCBtX3BsYXllZFRpbWVSYW5nZXMoKQogICAg
ICwgbV9wbGF5YmFja1JhdGUoMS4wZikKICAgICAsIG1fZGVmYXVsdFBsYXliYWNrUmF0ZSgxLjBm
KQpAQCAtMTY1LDcgKzE2NCw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX3Nl
bmRQcm9ncmVzc0V2ZW50cyh0cnVlKQogICAgICwgbV9pc0Z1bGxzY3JlZW4oZmFsc2UpCiAgICAg
LCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKLSAgICAsIG1fbW91c2VPdmVyKGZhbHNl
KQogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgICwgbV9uZWVkV2lkZ2V0
VXBkYXRlKGZhbHNlKQogI2VuZGlmCkBAIC0xNDI2LDkgKzE0MjQsNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXkoYm9vbCBpc1VzZXJHZXN0dXJlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKLSAgICBpZiAoaXNGdWxsc2NyZWVuKCkpCi0gICAgICAgIHN0YXJ0SGlkZUZ1
bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci0gICAgCiAgICAgcGxheUludGVybmFsKCk7CiB9CiAK
QEAgLTE2MzMsNDQgKzE2MjgsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1By
b2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KHRydWUpOwotICAgIGlmIChoYXNNZWRp
YUNvbnRyb2xzKCkpIHsKLSAgICAgICAgaWYgKCFtX21vdXNlT3ZlciAmJiBjb250cm9scygpICYm
IGhhc1ZpZGVvKCkpCi0gICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPm1ha2VUcmFuc3BhcmVu
dCgpOworICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlhQ29udHJvbHMo
KS0+cGxheWJhY2tQcm9ncmVzc2VkKCk7Ci0gICAgfQogICAgIC8vIEZJWE1FOiBkZWFsIHdpdGgg
Y3VlIHJhbmdlcyBoZXJlCiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RhcnRIaWRlRnVs
bHNjcmVlbkNvbnRyb2xzVGltZXIoKQotewotICAgIGlmICghaXNGdWxsc2NyZWVuKCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBtX2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lci5zdGFy
dE9uZVNob3QodGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMpOwot
fQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZp
cmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKLXsKLSAgICBpZiAoIW1fcGxheWluZykKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICghaXNGdWxsc2NyZWVuKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBpZiAoIWNvbnRyb2xzKCkgfHwgIWhhc01lZGlhQ29udHJvbHMoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICghbWVkaWFDb250cm9scygpLT5zaG91bGRI
aWRlQ29udHJvbHMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBtZWRpYUNvbnRy
b2xzKCktPm1ha2VUcmFuc3BhcmVudCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0
b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKQotewotICAgIG1faGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyLnN0b3AoKTsKLX0KLQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVs
ZVRpbWV1cGRhdGVFdmVudChib29sIHBlcmlvZGljRXZlbnQpCiB7CiAgICAgZG91YmxlIG5vdyA9
IFdURjo6Y3VycmVudFRpbWUoKTsKQEAgLTI0MDksMzIgKzIzNzEsNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmICh3aWRn
ZXQpCiAgICAgICAgIHdpZGdldC0+aGFuZGxlRXZlbnQoZXZlbnQpOwogI2Vsc2UKLSAgICBpZiAo
ZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7Ci0gICAgICAgIE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQg
PSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpOwotICAgICAgICBpZiAobW91c2VFdmVu
dC0+cmVsYXRlZFRhcmdldCgpICE9IHRoaXMpIHsKLSAgICAgICAgICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgewotICAgICAgICAgICAgICAgIG1f
bW91c2VPdmVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoaGFzTWVkaWFDb250cm9scygp
ICYmIGNvbnRyb2xzKCkgJiYgIWNhblBsYXkoKSkgewotICAgICAgICAgICAgICAgICAgICBtZWRp
YUNvbnRyb2xzKCktPm1ha2VPcGFxdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1lZGlh
Q29udHJvbHMoKS0+c2hvdWxkSGlkZUNvbnRyb2xzKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2VvdXRFdmVudCkgewotICAgICAgICAgICAgICAgIG1fbW91c2VPdmVyID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVu
dCkgewotICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSAmJiBoYXNNZWRpYUNvbnRy
b2xzKCkgJiYgY29udHJvbHMoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHdlIGdl
dCBhIG1vdXNlIG1vdmUgaW4gZnVsbHNjcmVlbiBtb2RlLCBzaG93IHRoZSBtZWRpYSBjb250cm9s
cywgYW5kIHN0YXJ0IGEgdGltZXIKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB3aWxsIGhp
ZGUgdGhlIG1lZGlhIGNvbnRyb2xzIGFmdGVyIGEgMyBzZWNvbmRzIHdpdGhvdXQgYSBtb3VzZSBt
b3ZlLgotICAgICAgICAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPm1ha2VPcGFxdWUoKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG1lZGlhQ29udHJvbHMoKS0+c2hvdWxkSGlkZUNvbnRy
b2xzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJv
bHNUaW1lcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAKLSAgICAg
ICAgfQotICAgIH0KLQogICAgIEhUTUxFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKICNlbmRpZgogfQpAQCAtMjU2OCw5ICsyNTA0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50
Ojppc0Z1bGxzY3JlZW4oKSBjb25zdAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxz
Y3JlZW4oKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNj
cmVlbiIpOwotICAgIAotICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci0g
ICAgCisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGRvY3VtZW50KCkgJiYg
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5mdWxsU2Ny
ZWVuRW5hYmxlZCgpKSB7CiAgICAgICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9y
RWxlbWVudCh0aGlzLCAwLCBEb2N1bWVudDo6RXhlbXB0SUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1
aXJlbWVudCk7CkBAIC0yNTkwLDkgKzI1MjQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVu
dGVyRnVsbHNjcmVlbigpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkK
IHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbiIpOwot
ICAgIAotICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLSAgICAKKwogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgp
LT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVk
KCkpIHsKICAgICAgICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRv
Y3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRoaXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGM4MjRlMTgxNzNhY2M1NTczNWJl
NzE0OGVmMDQ2OTJjZTA3ZjNkODAuLjI3MTYzOWVjZmZlNWI5ODQ1OTk2ZjI3NDdkZjBiNTMwYWEw
YTk2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDcsOCArMTQ3LDYgQEAgcHVibGljOgogICAgIHZv
aWQgYmVnaW5TY3J1YmJpbmcoKTsKICAgICB2b2lkIGVuZFNjcnViYmluZygpOwogICAgIAotICAg
IHZvaWQgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotCiAgICAgYm9vbCBjYW5Q
bGF5KCkgY29uc3Q7CiAKICAgICBmbG9hdCBwZXJjZW50TG9hZGVkKCkgY29uc3Q7CkBAIC0yMDMs
NiArMjAxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwog
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CiAK
KyAgICBib29sIGlzUGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWluZzsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC0yNzIsMTAgKzI3Miw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVk
aWFFbGVtZW50PiopOwogICAgIHZvaWQgcHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRN
TE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lkIHBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKFRp
bWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7Ci0gICAgdm9pZCBoaWRlRnVsbHNjcmVlbkNvbnRyb2xz
VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopOwogICAgIHZvaWQgc3RhcnRQbGF5
YmFja1Byb2dyZXNzVGltZXIoKTsKICAgICB2b2lkIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7
Ci0gICAgdm9pZCBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwogICAgIHZvaWQg
c3RvcFBlcmlvZGljVGltZXJzKCk7CiAKICAgICB2b2lkIHNlZWsoZmxvYXQgdGltZSwgRXhjZXB0
aW9uQ29kZSYpOwpAQCAtMzQ1LDcgKzM0Myw2IEBAIHByaXZhdGU6CiAgICAgVGltZXI8SFRNTE1l
ZGlhRWxlbWVudD4gbV9hc3luY0V2ZW50VGltZXI7CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4gbV9wcm9ncmVzc0V2ZW50VGltZXI7CiAgICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9w
bGF5YmFja1Byb2dyZXNzVGltZXI7Ci0gICAgVGltZXI8SFRNTE1lZGlhRWxlbWVudD4gbV9oaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXI7CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3Bl
bmRpbmdFdmVudHM7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdlczsK
IApAQCAtNDIxLDcgKzQxOCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNGdWxsc2NyZWVu
IDogMTsKICAgICBib29sIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlIDogMTsKLSAgICBib29sIG1f
bW91c2VPdmVyIDogMTsKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAg
IGJvb2wgbV9uZWVkV2lkZ2V0VXBkYXRlIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA1YjExMTgwMDYwNzk2ODQ0
NGMyZjRjNzZjYzA2YTY3NjM4NzI5MjhjLi45NGNiM2Q2YzA1OTg0MDBlMzY4MjNjODUwYzI2NmQ0
MWI4NzI1YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NSwxNSArNzUsNiBA
QCBNZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRyb2xFbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKIHsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sRWxlbWVudDo6cHJl
RGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQotewotICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGV2ZW50LT5wcmV2ZW50
RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotICAg
IHJldHVybiAwOwotfQotCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nKCkKIHsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcywgKCJkaXNwbGF5IikpOwpAQCAtMjAw
LDIxICsxOTEsMjAgQEAgUmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250
YWluZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmUKICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIodGhpcyk7CiB9CiAKLXZvaWQq
IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnByZURpc3BhdGNoRXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29u
dGFpbmVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKCFldmVudC0+aXNNb3VzZUV2ZW50KCkgfHwgZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVz
KCkubW91c2VvdXRFdmVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFBvb3IgbWFuJ3MgbW91c2VsZWF2ZSBldmVudCBkZXRlY3Rpb24uCiAgICAgTW91c2VF
dmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCk7CiAgICAg
aWYgKCFtb3VzZUV2ZW50LT5yZWxhdGVkVGFyZ2V0KCkgfHwgIW1vdXNlRXZlbnQtPnJlbGF0ZWRU
YXJnZXQoKS0+dG9Ob2RlKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAodGhpcy0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00obW91c2VFdmVudC0+cmVs
YXRlZFRhcmdldCgpLT50b05vZGUoKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm47CiAKICAgICBoaWRlKCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIApAQCAtMzMwLDE1ICszMjAs
MTQgQEAgaW5saW5lIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xN
dXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGUKIHsKIH0KIAotdm9pZCogTWVkaWFDb250cm9s
TXV0ZUJ1dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
K3ZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50KSB7CiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRNdXRlZCghbWVkaWFFbGVt
ZW50KCktPm11dGVkKCkpOwotICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKLSAgICAg
ICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0
dG9uRWxlbWVudDo6Y2hhbmdlZE11dGUoKQpAQCAtMzY4LDEyICszNTcsMTIgQEAgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbE11
dGVCdXR0b25FbGVtZW4KICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIAotdm9pZCog
TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpCiAgICAgICAgIG1fY29udHJvbHMt
PnNob3dWb2x1bWVTbGlkZXIoKTsKIAotICAgIHJldHVybiAwOworICAgIE1lZGlhQ29udHJvbE11
dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0CkBAIC00MTYsMTUgKzQwNSwxNCBAQCBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKAogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRy
b2xQbGF5QnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50
KQordm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpIHsKICAgICAgICAgbWVkaWFFbGVtZW50KCktPnRvZ2dsZVBsYXlTdGF0ZSgp
OwogICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgpOwotICAgICAgICBldmVudC0+cHJldmVudERl
ZmF1bHQoKTsKLSAgICAgICAgZXZlbnQtPnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgSFRNTElu
cHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIHZvaWQgTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKQEAgLTQ0OCw3ICs0
MzYsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFNlZWtCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZQogewogfQogCi12b2lkKiBNZWRpYUNvbnRy
b2xTZWVrQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50
KQordm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlZG93bkV2ZW50KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgp
LT5mcmFtZSgpKSB7CkBAIC00NTcsOCArNDQ1LDcgQEAgdm9pZCogTWVkaWFDb250cm9sU2Vla0J1
dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAg
ICAgfQogICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cGF1c2UoZXZlbnQtPmZyb21Vc2VyR2VzdHVy
ZSgpKTsKICAgICAgICAgbV9zZWVrVGltZXIuc3RhcnRSZXBlYXRpbmcoY1NlZWtSZXBlYXREZWxh
eSk7Ci0gICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3Rv
cFByb3BhZ2F0aW9uKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAg
IH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KSB7
CiAgICAgICAgIGlmIChtX2NhcHR1cmluZykKICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CkBAIC00NzMsMTEgKzQ2MCwxMCBAQCB2b2lkKiBNZWRp
YUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwog
ICAgICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBldmVudC0+cHJldmVu
dERlZmF1bHQoKTsKLSAgICAgICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICB9CiAgICAgfQotICAg
IHJldHVybiAwOworICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZl
bnQpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpzZWVrVGltZXJG
aXJlZChUaW1lcjxNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudD4qKQpAQCAtNTUxLDE0ICs1
MzcsMTMgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiBNZWRp
YUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmUKICAgICByZXR1cm4gYnV0dG9uLnJlbGVh
c2UoKTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6cHJlRGlz
cGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xSZXdpbmRC
dXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBt
ZWRpYUVsZW1lbnQoKS0+cmV3aW5kKDMwKTsKLSAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0
KCk7Ci0gICAgICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSAgICAKLSAgICByZXR1cm4gMDsKKyAgICBIVE1MSW5w
dXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0CkBAIC01ODIsMTQgKzU2NywxMyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVy
blRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aQogICAg
IHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQordm9pZCBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgbWVkaWFFbGVtZW50KCktPnJl
dHVyblRvUmVhbHRpbWUoKTsKLSAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7Ci0gICAg
ICAgIGV2ZW50LT5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0CkBAIC02MTMsMTcgKzU5NywxNiBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sVG9nZ2xlQ2xvcwogICAgIHJl
dHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3ZvaWQgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBtZWRpYUVsZW1lbnQo
KS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCFtZWRpYUVsZW1lbnQoKS0+Y2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKCkpOwogICAgICAgICBzZXRDaGVja2VkKG1lZGlhRWxlbWVudCgpLT5jbG9zZWRD
YXB0aW9uc1Zpc2libGUoKSk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0gICAgICAg
IGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9u
KCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIAotICAgIHJl
dHVybiAwOworICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVu
dDo6dXBkYXRlRGlzcGxheVR5cGUoKQpAQCAtNjU1LDIyICs2MzgsMjUgQEAgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6
Y3JlYXRlKEhUTUwKICAgICByZXR1cm4gdGltZWxpbmUucmVsZWFzZSgpOwogfQogCi12b2lkKiBN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICAvLyBMZWZ0IGJ1dHRvbiBpcyAwLiBSZWplY3Rz
IG1vdXNlIGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1dHRvbi4KICAgICBpZiAoZXZlbnQtPmlzTW91
c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFhdHRhY2hlZCgp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KQogICAgICAgICBtZWRpYUVsZW1l
bnQoKS0+YmVnaW5TY3J1YmJpbmcoKTsKIAorICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZXVwRXZlbnQpCisgICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbmRTY3J1YmJp
bmcoKTsKKwogICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihldmVudCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vv
dmVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8
fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IHRpbWUgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7CiAgICAgaWYgKHRpbWUgIT0gbWVkaWFF
bGVtZW50KCktPmN1cnJlbnRUaW1lKCkpIHsKQEAgLTY4MiwxMCArNjY4LDYgQEAgdm9pZCogTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCiAgICAgUmVuZGVyU2xpZGVyKiBzbGlkZXIgPSB0b1JlbmRlclNsaWRlcihyZW5kZXJl
cigpKTsKICAgICBpZiAoc2xpZGVyICYmIHNsaWRlci0+aW5EcmFnTW9kZSgpKQogICAgICAgICBt
X2NvbnRyb2xzLT51cGRhdGVUaW1lRGlzcGxheSgpOwotCi0gICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPmVu
ZFNjcnViYmluZygpOwotICAgIHJldHVybiAwOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRpbWVs
aW5lRWxlbWVudDo6c2V0UG9zaXRpb24oZmxvYXQgY3VycmVudFRpbWUpIApAQCAtNzIyLDE5ICs3
MDQsMTkgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmUKICAgICByZXR1cm4gc2xpZGVyLnJlbGVh
c2UoKTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6cHJlRGlz
cGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICAv
LyBMZWZ0IGJ1dHRvbiBpcyAwLiBSZWplY3RzIG1vdXNlIGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1
dHRvbi4KICAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNl
RXZlbnQqPihldmVudCktPmJ1dHRvbigpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFhdHRhY2hlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKGV2ZW50KTsKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50
IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgdm9sdW1lID0gbmFycm93
UHJlY2lzaW9uVG9GbG9hdCh2YWx1ZSgpLnRvRG91YmxlKCkpOwogICAgIGlmICh2b2x1bWUgIT0g
bWVkaWFFbGVtZW50KCktPnZvbHVtZSgpKSB7CkBAIC03NDIsNyArNzI0LDYgQEAgdm9pZCogTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogICAgICAgICBtZWRpYUVsZW1lbnQoKS0+c2V0Vm9sdW1lKHZvbHVtZSwgZWMp
OwogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkK
QEAgLTc5OCw3ICs3NzksNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbQogICAgIHJldHVybiBi
dXR0b24ucmVsZWFzZSgpOwogfQogCi12b2lkKiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpIHsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC04MTUsMTAgKzc5Niw5IEBA
IHZvaWQqIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpwcmVEaXNwYXRjaEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAg
ICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgICAgIGV2ZW50LT5w
cmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7CisgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAg
ICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKSBjb25zdApAQCAtODQxLDE1ICs4MjEsMTQgQEAgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVs
bHNjcmVlblYKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIAotdm9pZCogTWVkaWFD
b250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1p
bkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgY29kZSA9IDA7CiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRWb2x1
bWUoMCwgY29kZSk7Ci0gICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBl
dmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25z
dApAQCAtODcyLDE1ICs4NTEsMTQgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblYKICAgICByZXR1
cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIAotdm9pZCogTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1heEJ1dHRvbkVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgY29k
ZSA9IDA7CiAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRWb2x1bWUoMSwgY29kZSk7Ci0gICAg
ICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0
aW9uKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KLSAgICBy
ZXR1cm4gMDsKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1l
TWF4QnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKaW5kZXggZjc1YjQ0ODM1
YTI1ZjlmM2NkZjk0ODRmNWY5NTM5Yjc3MDQ1ZmZiOS4uZmY4ZjQ2MTQ2ZDZiNGM1N2FiMGU2NjA5
MTk3MTA4YTMwZWZhZjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Nyw3ICs4Nyw2
IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUNvbnRyb2xFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVy
KEV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50
OyAgIApAQCAtMTI3LDcgKzEyNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2
aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiB9OwpA
QCAtMTgzLDcgKzE4Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIE1lZGlhQ29udHJv
bE11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50
VHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCop
OworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKIAogcHJp
dmF0ZToKQEAgLTE5OSw3ICsxOTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1lZGlhQ29u
dHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJv
bHMqKTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCiAgICAg
TWVkaWFDb250cm9scyogbV9jb250cm9sczsKQEAgLTIyNCw3ICsyMjMsNyBAQCBjbGFzcyBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0
b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lk
ICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlU
eXBlKCk7CiAKIHByaXZhdGU6CkBAIC0yMzcsNyArMjM2LDcgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5k
bGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KTsKIAogcHJvdGVjdGVkOgogICAgIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CkBAIC0yODUsNyArMjg0LDcg
QEAgY2xhc3MgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogcHJpdmF0ZToKICAg
ICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKQEAg
LTI5OSw3ICsyOTgsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9u
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbgogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50
PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNw
YXRjaEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kik7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFs
dGltZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwpAQCAtMzEzLDcgKzMxMiw3IEBA
IGNsYXNzIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCA6IHB1
YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRN
TE1lZGlhRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkICpwcmVEaXNwYXRjaEV2ZW50SGFu
ZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCk7CiAKIHByaXZhdGU6CkBA
IC0zMjgsNyArMzI3LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVu
dCosIE1lZGlhQ29udHJvbHMqKTsKIAotICAgIHZpcnR1YWwgdm9pZCAqcHJlRGlzcGF0Y2hFdmVu
dEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopOwogICAgIHZvaWQgc2V0UG9zaXRpb24oZmxvYXQpOwogICAgIHZvaWQgc2V0RHVyYXRp
b24oZmxvYXQpOwogCkBAIC0zNDYsNyArMzQ1LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+
IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgKnByZURpc3Bh
dGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKTsKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAKIHByb3RlY3RlZDoK
QEAgLTM2Miw3ICszNjEsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBjcmVh
dGUoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCAqcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7
CkBAIC0zOTAsNyArMzg5LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1p
bkJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGUKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9u
RWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgKnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICAKIHByaXZhdGU6CiAgICAgTWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwpA
QCAtNDA0LDcgKzQwMyw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhC
dXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlCiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lk
ICpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVt
ZW50LmNwcAppbmRleCBlMzFmMjkwZjVkMWI5MjQyY2IxNmNjYWFhMjNmMmJmMzBhMDBlYTIzLi40
NDU4ZDRkYTA4NjFiYjNlZTVjMGFjODBmMmVlNTlkOTdmZTg0OGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisjaW5j
bHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJU
aGVtZS5oIgogCkBAIC0zNyw2ICszOCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lV2l0aG91dE1vdXNlTW92
ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyA9IDM7CisKIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQp
CiAgICAgOiBNZWRpYUNvbnRyb2xzKG1lZGlhRWxlbWVudCkKICAgICAsIG1fbWVkaWFFbGVtZW50
KG1lZGlhRWxlbWVudCkKQEAgLTYxLDYgKzY0LDggQEAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
ICAgICAsIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbigwKQogICAgICwgbV9wYW5lbCgwKQog
ICAgICwgbV9vcGFxdWUodHJ1ZSkKKyAgICAsIG1faXNNb3VzZU92ZXJDb250cm9scyhmYWxzZSkK
KyAgICAsIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQpCiB7CiB9CiAKQEAg
LTMzNiwxMiArMzQxLDE4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNr
U3RhcnRlZCgpCiAgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgIG1f
dGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpKTsKICAg
ICB1cGRhdGVUaW1lRGlzcGxheSgpOworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5pc0Z1bGxz
Y3JlZW4oKSkKKyAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKIH0K
IAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc2VkKCkKIHsK
ICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUo
KSk7CiAgICAgdXBkYXRlVGltZURpc3BsYXkoKTsKKyAgICAKKyAgICBpZiAoIW1faXNNb3VzZU92
ZXJDb250cm9scyAmJiBtX21lZGlhRWxlbWVudC0+aGFzVmlkZW8oKSkKKyAgICAgICAgbWFrZVRy
YW5zcGFyZW50KCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNr
U3RvcHBlZCgpCkBAIC0zNTEsNyArMzYyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dDo6cGxheWJhY2tTdG9wcGVkKCkKICAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwogICAgIG1ha2VP
cGFxdWUoKTsKICAgICAKLSAgICBtX21lZGlhRWxlbWVudC0+c3RvcEhpZGVGdWxsc2NyZWVuQ29u
dHJvbHNUaW1lcigpOworICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKIH0K
IAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlVGltZURpc3BsYXkoKQpAQCAt
NDM3LDYgKzQ0OCw4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmVudGVyZWRGdWxs
c2NyZWVuKCkKICAgICAgICAgbV9yZXdpbmRCdXR0b24tPmhpZGUoKTsKICAgICAgICAgbV9yZXR1
cm5Ub1JlYWxUaW1lQnV0dG9uLT5oaWRlKCk7CiAgICAgfQorCisgICAgc3RhcnRIaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXIoKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6
ZXhpdGVkRnVsbHNjcmVlbigpCkBAIC00NDgsNiArNDYxLDggQEAgdm9pZCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6ZXhpdGVkRnVsbHNjcmVlbigpCiAgICAgbV9zZWVrQmFja0J1dHRvbi0+c2hv
dygpOwogICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPnNob3coKTsKICAgICBtX3JldHVyblRvUmVh
bFRpbWVCdXR0b24tPnNob3coKTsKKworICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGlt
ZXIoKTsgICAgCiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3dWb2x1bWVT
bGlkZXIoKQpAQCAtNDY0LDYgKzQ3OSw3MiBAQCBib29sIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpzaG91bGRIaWRlQ29udHJvbHMoKQogICAgIHJldHVybiAhbV9wYW5lbC0+aG92ZXJlZCgpOwog
fQogCitib29sIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpjb250YWluc1JlbGF0ZWRUYXJnZXQo
RXZlbnQqIGV2ZW50KQoreworICAgIGlmICghZXZlbnQtPmlzTW91c2VFdmVudCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQgPSBzdGF0aWNf
Y2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5yZWxhdGVkVGFyZ2V0KCk7CisgICAgaWYgKCFyZWxh
dGVkVGFyZ2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbnRhaW5zKHJl
bGF0ZWRUYXJnZXQtPnRvTm9kZSgpKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgTWVkaWFDb250cm9s
czo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpIHsKKyAgICAgICAgaWYgKCFjb250YWluc1Jl
bGF0ZWRUYXJnZXQoZXZlbnQpKSB7CisgICAgICAgICAgICBtX2lzTW91c2VPdmVyQ29udHJvbHMg
PSB0cnVlOworICAgICAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudC0+Y2FuUGxheSgpKSB7Cisg
ICAgICAgICAgICAgICAgbWFrZU9wYXF1ZSgpOworICAgICAgICAgICAgICAgIGlmIChzaG91bGRI
aWRlQ29udHJvbHMoKSkKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNv
bnRyb2xzVGltZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCkgeworICAgICAgICBp
ZiAoIWNvbnRhaW5zUmVsYXRlZFRhcmdldChldmVudCkpIHsKKyAgICAgICAgICAgIG1faXNNb3Vz
ZU92ZXJDb250cm9scyA9IGZhbHNlOworICAgICAgICAgICAgc3RvcEhpZGVGdWxsc2NyZWVuQ29u
dHJvbHNUaW1lcigpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1l
bnQtPmlzRnVsbHNjcmVlbigpKSB7CisgICAgICAgICAgICAvLyBXaGVuIHdlIGdldCBhIG1vdXNl
IG1vdmUgaW4gZnVsbHNjcmVlbiBtb2RlLCBzaG93IHRoZSBtZWRpYSBjb250cm9scywgYW5kIHN0
YXJ0IGEgdGltZXIKKyAgICAgICAgICAgIC8vIHRoYXQgd2lsbCBoaWRlIHRoZSBtZWRpYSBjb250
cm9scyBhZnRlciBhIDMgc2Vjb25kcyB3aXRob3V0IGEgbW91c2UgbW92ZS4KKyAgICAgICAgICAg
IG1ha2VPcGFxdWUoKTsKKyAgICAgICAgICAgIGlmIChzaG91bGRIaWRlQ29udHJvbHMoKSkKKyAg
ICAgICAgICAgICAgICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOworICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzdGFydEhpZGVG
dWxsc2NyZWVuQ29udHJvbHNUaW1lcigpCit7CisgICAgaWYgKCFtX21lZGlhRWxlbWVudC0+aXNG
dWxsc2NyZWVuKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2hpZGVGdWxsc2NyZWVu
Q29udHJvbHNUaW1lci5zdGFydE9uZVNob3QodGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3Jl
SGlkaW5nQ29udHJvbHMpOworfQorCit2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpoaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xSb290RWxlbWVu
dD4qKQoreworICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPmlzUGxheWluZygpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFtX21lZGlhRWxlbWVudC0+aXNGdWxsc2NyZWVuKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoIXNob3VsZEhpZGVDb250cm9scygpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgbWFrZVRyYW5zcGFyZW50KCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKQor
eworICAgIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyLnN0b3AoKTsKK30KKwogY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgKaW5kZXggN2UwNzIyZmNmMGQ1ZjEwN2YxYzgz
ZTdmNGZkNzI1YzBkNTJlNGY1Ni4uNzhjZTA2ZmJjNTAyMzUyNDEwMDcwMTUyYWE1YzNiZmQyZjA3
NDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xSb290RWxlbWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC05NywxMSArOTcsMTkgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlU3RhdHVzRGlzcGxheSgpOwogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZEhpZGVDb250cm9scygpOworCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdm9pZCBoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJG
aXJlZChUaW1lcjxNZWRpYUNvbnRyb2xSb290RWxlbWVudD4qKTsKKyAgICB2b2lkIHN0YXJ0SGlk
ZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CisgICAgdm9pZCBzdG9wSGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyKCk7CisKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKIAorICAgIGJvb2wgY29udGFpbnNSZWxhdGVkVGFyZ2V0KEV2ZW50
Kik7CisKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKIAogICAgIE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQqIG1fcmV3aW5kQnV0dG9uOwpAQCAtMTI0LDggKzEz
Miw5IEBAIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVs
ZW1lbnQqIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcjsKICAgICBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCogbV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uOwog
ICAgIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudCogbV9wYW5lbDsKLQogICAgIGJvb2wgbV9vcGFx
dWU7CisgICAgYm9vbCBtX2lzTW91c2VPdmVyQ29udHJvbHM7CisgICAgVGltZXI8TWVkaWFDb250
cm9sUm9vdEVsZW1lbnQ+IG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="88821"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>