<?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>79537</bug_id>
          
          <creation_ts>2012-02-24 15:04:48 -0800</creation_ts>
          <short_desc>[chromium] Ensure we use the correct time when notifying animation started</short_desc>
          <delta_ts>2012-03-09 08:49:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76468</blocked>
    
    <blocked>79536</blocked>
    
    <blocked>80514</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>564688</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-02-24 15:04:48 -0800</bug_when>
    <thetext>We are currently plumbing back the same time that is passed to CCLayerTreeHostImpl::animate; this may not be the time expected by GraphicsLayerChromium&apos;s client, so some work may need to be done to normalize this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566966</commentid>
    <comment_count>1</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-02-28 12:25:57 -0800</bug_when>
    <thetext>How about we make the proxy send two times to the animate() paths --- both monotonic and regular clocks? Then we can send both down to the main thread and back to the client, and let the client figure out which of those two times it wants to use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572379</commentid>
    <comment_count>2</comment_count>
      <attachid>130503</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-06 18:02:37 -0800</bug_when>
    <thetext>Created attachment 130503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572398</commentid>
    <comment_count>3</comment_count>
      <attachid>130506</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-06 18:17:49 -0800</bug_when>
    <thetext>Created attachment 130506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572411</commentid>
    <comment_count>4</comment_count>
      <attachid>130506</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-06 18:27:35 -0800</bug_when>
    <thetext>Comment on attachment 130506
Patch

looks cool to me; methinks maybe we should take this opportunity to eradicate milliseconds from the system entirely?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572444</commentid>
    <comment_count>5</comment_count>
      <attachid>130520</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-06 19:16:57 -0800</bug_when>
    <thetext>Created attachment 130520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572993</commentid>
    <comment_count>6</comment_count>
      <attachid>130643</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-07 10:21:12 -0800</bug_when>
    <thetext>Created attachment 130643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573664</commentid>
    <comment_count>7</comment_count>
      <attachid>130643</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-07 23:52:09 -0800</bug_when>
    <thetext>Comment on attachment 130643
Patch

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

R=me but you&apos;re gonna have to sort the ChangeLog before this can land.

I think it would be good to have at least some unit tests that pass different values for monotonic / wall clock times through the system as a way to try to flush out code that uses the wrong one somewhere.

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

this won&apos;t fly - there&apos;s an SVN presubmit that will reject this on the server. just list the tests that cover this behavior

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:296
&gt; +      double wallClockTime = WTF::currentTime();

fyi: you don&apos;t need the WTF::, &lt;wtf/CurrentTime.h&gt; pulls the function into the global namespace with a using statement (which is the standard pattern for wtf/ stuff)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573998</commentid>
    <comment_count>8</comment_count>
      <attachid>130864</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 11:23:50 -0800</bug_when>
    <thetext>Created attachment 130864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574002</commentid>
    <comment_count>9</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-03-08 11:25:24 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 130643 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130643&amp;action=review
&gt; 
&gt; R=me but you&apos;re gonna have to sort the ChangeLog before this can land.
&gt; 
&gt; I think it would be good to have at least some unit tests that pass different values for monotonic / wall clock times through the system as a way to try to flush out code that uses the wrong one somewhere.
I&apos;ve added a unit test that ensures we use the correct times.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; this won&apos;t fly - there&apos;s an SVN presubmit that will reject this on the server. just list the tests that cover this behavior
Fixed.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:296
&gt; &gt; +      double wallClockTime = WTF::currentTime();
&gt; 
&gt; fyi: you don&apos;t need the WTF::, &lt;wtf/CurrentTime.h&gt; pulls the function into the global namespace with a using statement (which is the standard pattern for wtf/ stuff)
Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574080</commentid>
    <comment_count>10</comment_count>
      <attachid>130878</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 12:28:28 -0800</bug_when>
    <thetext>Created attachment 130878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574162</commentid>
    <comment_count>11</comment_count>
      <attachid>130898</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 13:54:42 -0800</bug_when>
    <thetext>Created attachment 130898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574166</commentid>
    <comment_count>12</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-03-08 13:57:11 -0800</bug_when>
    <thetext>Noteworthy changes:
 - The controller is never given the wall clock time.
 - The wall clock time is passed to the CCLayerTreeHostImpl. This time is passed along with the animation events.
 - I&apos;ve added a test to ensure that the events are not accompanied by the wrong time in CCLayerTreeHostTest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574267</commentid>
    <comment_count>13</comment_count>
      <attachid>130898</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-08 15:02:52 -0800</bug_when>
    <thetext>Comment on attachment 130898
Patch

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

nice!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCAnimationEvents.h:66
&gt; +    CCAnimationStartedEvent(int layerId);

explicit prz</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574284</commentid>
    <comment_count>14</comment_count>
      <attachid>130915</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-08 15:13:44 -0800</bug_when>
    <thetext>Created attachment 130915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574531</commentid>
    <comment_count>15</comment_count>
      <attachid>130915</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-08 20:15:11 -0800</bug_when>
    <thetext>Comment on attachment 130915
Patch

Rejecting attachment 130915 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
merTick()&apos;:
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:64: error: no matching function for call to &apos;WebCore::CCLayerTreeHostImpl::animate(double)&apos;
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:79: note: candidates are: virtual void WebCore::CCLayerTreeHostImpl::animate(double, double)
make: *** [out/Debug/obj.target/webcore_platform/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/11903327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574893</commentid>
    <comment_count>16</comment_count>
      <attachid>131039</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-09 08:00:09 -0800</bug_when>
    <thetext>Created attachment 131039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574916</commentid>
    <comment_count>17</comment_count>
      <attachid>131039</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 08:49:19 -0800</bug_when>
    <thetext>Comment on attachment 131039
Patch

Clearing flags on attachment: 131039

Committed r110299: &lt;http://trac.webkit.org/changeset/110299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574917</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 08:49:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130503</attachid>
            <date>2012-03-06 18:02:37 -0800</date>
            <delta_ts>2012-03-06 18:17:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120306210236.patch</filename>
            <type>text/plain</type>
            <size>37595</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uYzAxZjM0YTc5OTEwYWYxMjVkMTJhMTMyZWJkMGM1
YTYxZjljMzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTA2ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JOZXh0VGljayk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNS
ZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0
ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCk6CisKIDIwMTItMDMtMDYgIERhdmlkIENvcnZveXNpZXIgIDxkYXZpZC5jb3J2b3lzaWVy
QG9yYW5nZS5jb20+CiAKICAgICAgICAgVW5yZWxlYXNlZCBnc3Rfb2JqZWN0X3JlZmVyZW5jZSB0
byBhdWRpbyBzaW5rIGluIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCBiN2NjMDhlOGJkNDk3ZjU0NWY5YjE4ZWYwZTI1MjY1YjI2YzVkZDE5
Li40YTk0NWI0Y2MyMzY4MTU1ZGMwYzAyYTlmZDg5NWRmNDUyZDg0M2YxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTA2ICBJYW4gVm9sbGljayAg
PHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJlIHdlIHVz
ZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFydGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUzNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6
VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAg
ICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6Ok1vY2tMYXll
clRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyk6CisKIDIwMTItMDMtMDYgIFRha2FzaGkgVG95
b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gW1dl
YlNvY2tldF0gQWRkIFdlYlNvY2tldCBleHRlbnNpb25zIHF1ZXJ5IFdlYktpdCBBUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCmlu
ZGV4IGU4ZDZiYzdlZjc1YWM0MDNkMTFjYTYxMTU0ODhlY2M3MWQ1NjM1ZDUuLmQwZDViN2U3YzE3
N2JjZDU1MGNiOTY3OTEwNGJiNzkzOTljODAxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApAQCAtNDksMTUgKzQ5LDE1IEBA
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6fkNDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjph
bmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9y
JiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YW5pbWF0ZShk
b3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBkb3VibGUgd2FsbENsb2NrVGltZVNlY3MsIENDQW5p
bWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCiB7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGlu
Z0Zvck5leHRUaWNrKGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICBzdGFydEFuaW1h
dGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAg
ICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5U
aW1lU2VjcywgZXZlbnRzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2so
ZnJhbWVCZWdpblRpbWVTZWNzLCB3YWxsQ2xvY2tUaW1lU2VjcywgZXZlbnRzKTsKKyAgICBzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGZyYW1lQmVnaW5UaW1lU2Vjcywgd2FsbENs
b2NrVGltZVNlY3MsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdl
dEF2YWlsYWJpbGl0eShmcmFtZUJlZ2luVGltZVNlY3MsIHdhbGxDbG9ja1RpbWVTZWNzLCBldmVu
dHMpOwogICAgIHJlc29sdmVDb25mbGljdHMoZnJhbWVCZWdpblRpbWVTZWNzKTsKICAgICB0aWNr
QW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZVNlY3MpOwogICAgIHB1cmdlRmluaXNoZWRBbmltYXRp
b25zKGV2ZW50cyk7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJp
bGl0eShmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShmcmFtZUJlZ2luVGltZVNlY3MsIHdhbGxDbG9ja1Rp
bWVTZWNzLCBldmVudHMpOwogfQogCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bDo6YWRkKFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW0pCkBAIC04MywyOCArODMs
MjggQEAgYm9vbCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6Omhhc0FjdGl2ZUFuaW1h
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGRvdWJs
ZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGRv
dWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lU2VjcywgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9hY3RpdmVB
bmltYXRpb25zW2ldLT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9y
TmV4dFRpY2spIHsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3Rh
dGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShub3cpOwotICAgICAgICAgICAgZXZlbnRzLmFw
cGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cp
KTsKKyAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3Rp
dmVBbmltYXRpb246OlJ1bm5pbmcsIGZyYW1lQmVnaW5UaW1lU2Vjcyk7CisgICAgICAgICAgICBt
X2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShmcmFtZUJlZ2luVGltZVNlY3MpOwor
ICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRl
KG1fY2xpZW50LT5pZCgpLCB3YWxsQ2xvY2tUaW1lU2VjcykpOwogICAgICAgICB9CiAgICAgfQog
fQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25z
V2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYg
ZXZlbnRzKQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0
aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgZG91Ymxl
IHdhbGxDbG9ja1RpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NB
Y3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JTdGFydFRpbWUgJiYgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT5zdGFydFRpbWUoKSA8PSBub3cpIHsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7Ci0gICAg
ICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9j
bGllbnQtPmlkKCksIG5vdykpOworICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5y
dW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lICYmIG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkgPD0gZnJhbWVCZWdpblRpbWVTZWNzKSB7
CisgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZl
QW5pbWF0aW9uOjpSdW5uaW5nLCBmcmFtZUJlZ2luVGltZVNlY3MpOworICAgICAgICAgICAgZXZl
bnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgp
LCB3YWxsQ2xvY2tUaW1lU2VjcykpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdl
dEF2YWlsYWJpbGl0eShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRz
KQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dh
aXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgZG91
YmxlIHdhbGxDbG9ja1RpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQog
ewogICAgIC8vIEZpcnN0IGNvbGxlY3QgcnVubmluZyBwcm9wZXJ0aWVzLgogICAgIFRhcmdldFBy
b3BlcnRpZXMgYmxvY2tlZFByb3BlcnRpZXM7CkBAIC0xMzQsMTMgKzEzNCwxMyBAQCB2b2lkIEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRh
cmdldEF2YWlsYWJpbGl0eQogCiAgICAgICAgICAgICAvLyBJZiB0aGUgaW50ZXJzZWN0aW9uIGlz
IG51bGwsIHRoZW4gd2UgYXJlIGZyZWUgdG8gc3RhcnQgdGhlIGFuaW1hdGlvbnMgaW4gdGhlIGdy
b3VwLgogICAgICAgICAgICAgaWYgKG51bGxJbnRlcnNlY3Rpb24pIHsKLSAgICAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpS
dW5uaW5nLCBub3cpOwotICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0
U3RhcnRUaW1lKG5vdyk7Ci0gICAgICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKKyAgICAgICAgICAg
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9u
OjpSdW5uaW5nLCBmcmFtZUJlZ2luVGltZVNlY3MpOworICAgICAgICAgICAgICAgIG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKGZyYW1lQmVnaW5UaW1lU2Vjcyk7CisgICAgICAg
ICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1f
Y2xpZW50LT5pZCgpLCB3YWxsQ2xvY2tUaW1lU2VjcykpOwogICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGogPSBpICsgMTsgaiA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraikgewog
ICAgICAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpID09
IG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+Z3JvdXAoKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9hY3RpdmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6
UnVubmluZywgbm93KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9u
c1tqXS0+c2V0U3RhcnRUaW1lKG5vdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2
ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBm
cmFtZUJlZ2luVGltZVNlY3MpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmlt
YXRpb25zW2pdLT5zZXRTdGFydFRpbWUoZnJhbWVCZWdpblRpbWVTZWNzKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE0OCw3ICsx
NDgsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnJlc29sdmVDb25mbGljdHMoZG91YmxlIG5vdykKK3Zv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJs
ZSBmcmFtZUJlZ2luVGltZVNlY3MpCiB7CiAgICAgLy8gRmluZCBhbnkgYW5pbWF0aW9ucyB0aGF0
IGFyZSBhbmltYXRpbmcgdGhlIHNhbWUgcHJvcGVydHkgYW5kIHJlc29sdmUgdGhlCiAgICAgLy8g
Y29uZmljdC4gV2UgY291bGQgZXZlbnR1YWxseSBibGVuZCwgYnV0IGZvciBub3cgd2UnbGwganVz
dCBhYm9ydCB0aGUKQEAgLTE2MCw5ICsxNjAsOSBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbm93KQogICAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IGkgKyAxOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytqKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+cnVuU3RhdGUoKSA9
PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZyAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRh
cmdldFByb3BlcnR5KCkgPT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT50YXJnZXRQcm9wZXJ0eSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0
VGltZSgpID4gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5zdGFydFRpbWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVB
bmltYXRpb246OkFib3J0ZWQsIG5vdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2
ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpBYm9ydGVkLCBm
cmFtZUJlZ2luVGltZVNlY3MpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZl
QW5pbWF0aW9uOjpBYm9ydGVkLCBub3cpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwg
ZnJhbWVCZWdpblRpbWVTZWNzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTE5NCwxOSArMTk0LDE5IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50c1ZlCiAg
ICAgfQogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1h
dGlvbnMoZG91YmxlIG5vdykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp0
aWNrQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRp
b246OlJ1bm5pbmcpIHsKLSAgICAgICAgICAgIGRvdWJsZSB0cmltbWVkID0gbV9hY3RpdmVBbmlt
YXRpb25zW2ldLT50cmltVGltZVRvQ3VycmVudEl0ZXJhdGlvbihub3cpOworICAgICAgICAgICAg
ZG91YmxlIHRyaW1tZWQgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9DdXJyZW50
SXRlcmF0aW9uKGZyYW1lQmVnaW5UaW1lU2Vjcyk7CiAKICAgICAgICAgICAgIHN3aXRjaCAobV9h
Y3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpKSB7CiAKICAgICAgICAgICAgIGNh
c2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybTogewogICAgICAgICAgICAgICAgIGNvbnN0
IENDVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIHRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlID0gbV9h
Y3RpdmVBbmltYXRpb25zW2ldLT5jdXJ2ZSgpLT50b1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7
CiAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4ID0gdHJh
bnNmb3JtQW5pbWF0aW9uQ3VydmUtPmdldFZhbHVlKHRyaW1tZWQsIG1fY2xpZW50LT5ib3VuZHMo
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+aXNGaW5pc2hl
ZEF0KG5vdykpCi0gICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0
UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVkLCBub3cpOworICAgICAgICAgICAg
ICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmlzRmluaXNoZWRBdChmcmFtZUJlZ2luVGlt
ZVNlY3MpKQorICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1
blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwgZnJhbWVCZWdpblRpbWVTZWNzKTsK
IAogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTIxNSw4ICsyMTUsOCBAQCB2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMoZG91YmxlIG5vdykKICAgICAgICAgICAg
IGNhc2UgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHk6IHsKICAgICAgICAgICAgICAgICBjb25z
dCBDQ0Zsb2F0QW5pbWF0aW9uQ3VydmUqIGZsb2F0QW5pbWF0aW9uQ3VydmUgPSBtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPmN1cnZlKCktPnRvRmxvYXRBbmltYXRpb25DdXJ2ZSgpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IGZsb2F0IG9wYWNpdHkgPSBmbG9hdEFuaW1hdGlvbkN1cnZlLT5nZXRWYWx1
ZSh0cmltbWVkKTsKLSAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5p
c0ZpbmlzaGVkQXQobm93KSkKLSAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6RmluaXNoZWQsIG5vdyk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+aXNGaW5pc2hlZEF0KGZyYW1l
QmVnaW5UaW1lU2VjcykpCisgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVkLCBmcmFtZUJlZ2luVGlt
ZVNlY3MpOwogCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNldE9wYWNpdHkob3BhY2l0eSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbC5oCmluZGV4IDM1NDAwNDliMDM2MWZkZTYyMzk1YWJjMGU0
ZTE1MTcwNDJkNDQ4YjAuLjczZDRmNmY2ZjhkYmY2M2Y4Njk5OGExNjNkMTVkNDFjNGM5ZmNhNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVySW1wbCgpOwogCi0gICAgdm9pZCBhbmltYXRlKGRvdWJsZSBmcmFtZUJl
Z2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CisgICAgdm9pZCBhbmltYXRl
KGRvdWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lU2VjcywgQ0NB
bmltYXRpb25FdmVudHNWZWN0b3ImKTsKIAogICAgIHZvaWQgYWRkKFBhc3NPd25QdHI8Q0NBY3Rp
dmVBbmltYXRpb24+KTsKIApAQCAtNzgsMTMgKzc4LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gVGhl
IGFuaW1hdG9yIGlzIG93bmVkIGJ5IHRoZSBsYXllci4KICAgICBleHBsaWNpdCBDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGwoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsQ2xpZW50
Kik7CiAKLSAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayhkb3VibGUg
bm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwotICAgIHZvaWQgc3RhcnRBbmltYXRpb25z
V2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYp
OwotICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShk
b3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwotICAgIHZvaWQgcmVzb2x2ZUNv
bmZsaWN0cyhkb3VibGUgbm93KTsKKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JO
ZXh0VGljayhkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBkb3VibGUgd2FsbENsb2NrVGltZVNl
Y3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIGRvdWJsZSB3YWxs
Q2xvY2tUaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKKyAgICB2b2lkIHN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIGZyYW1lQmVnaW5U
aW1lU2VjcywgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rv
ciYpOworICAgIHZvaWQgcmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNz
KTsKICAgICB2b2lkIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKENDQW5pbWF0aW9uRXZlbnRzVmVj
dG9yJik7CiAKLSAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cpOworICAgIHZvaWQg
dGlja0FuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lU2Vjcyk7CiAKICAgICBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3RvcjxPd25Q
dHI8Q0NBY3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBmNzE1YWUzNWQxN2Y5MGI3NGRiMjJkYzBm
M2M5NGU2NjcwNTE5OTlhLi5kMGE2YTI1YzU4Zjk1MDcyYjFiZmFiMjZlMzlkZGQ5YjkxM2EwMmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtOTcsMTAgKzk3
LDEwIEBAIEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZXh0KCkK
ICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXllclJlbmRlcmVyLT5jb250ZXh0KCkg
OiAwOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIGZyYW1l
QmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIGZy
YW1lQmVnaW5UaW1lTXMsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lU2VjcykKIHsKICAgICBhbmltYXRl
UGFnZVNjYWxlKGZyYW1lQmVnaW5UaW1lTXMpOwotICAgIGFuaW1hdGVMYXllcnMoZnJhbWVCZWdp
blRpbWVNcyk7CisgICAgYW5pbWF0ZUxheWVycyhmcmFtZUJlZ2luVGltZU1zLCB3YWxsQ2xvY2tU
aW1lU2Vjcyk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQs
IGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZU1zLCBkb3VibGUgZHVyYXRpb25NcykK
QEAgLTI0NywxNCArMjQ3LDE0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6b3B0aW1pemVS
ZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzKQogICAgIFBsYXRmb3JtU3VwcG9y
dDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQucGl4ZWxPdmVyZHJhd0N1bGxlZCIs
IHN0YXRpY19jYXN0PGludD4obm9ybWFsaXphdGlvbiAqIG92ZXJkcmF3Q291bnRzLm1fcGl4ZWxz
Q3VsbGVkKSwgMTAwLCAxMDAwMDAwLCA1MCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVudCwgZG91YmxlIGZy
YW1lQmVnaW5UaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywgYm9vbCYg
ZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNBbmltYXRlTGF5ZXJzKQordm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjphbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50LCBkb3Vi
bGUgZnJhbWVCZWdpblRpbWVTZWNzLCBkb3VibGUgd2FsbENsb2NrVGltZVNlY3MsIENDQW5pbWF0
aW9uRXZlbnRzVmVjdG9yJiBldmVudHMsIGJvb2wmIGRpZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5p
bWF0ZUxheWVycykKIHsKICAgICBib29sIHN1YnRyZWVOZWVkc0FuaW1hdGVMYXllcnMgPSBmYWxz
ZTsKIAogICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCogY3VycmVudENvbnRyb2xs
ZXIgPSBjdXJyZW50LT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKIAogICAgIGJvb2wgaGFk
QWN0aXZlQW5pbWF0aW9uID0gY3VycmVudENvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigp
OwotICAgIGN1cnJlbnRDb250cm9sbGVyLT5hbmltYXRlKGZyYW1lQmVnaW5UaW1lU2VjcywgZXZl
bnRzKTsKKyAgICBjdXJyZW50Q29udHJvbGxlci0+YW5pbWF0ZShmcmFtZUJlZ2luVGltZVNlY3Ms
IHdhbGxDbG9ja1RpbWVTZWNzLCBldmVudHMpOwogICAgIGJvb2wgc3RhcnRlZEFuaW1hdGlvbiA9
IGV2ZW50cy5zaXplKCkgPiAwOwogCiAgICAgLy8gV2UgYW5pbWF0ZWQgaWYgd2UgZWl0aGVyIHRp
Y2tlZCBhIHJ1bm5pbmcgYW5pbWF0aW9uLCBvciBzdGFydGVkIGEgbmV3IGFuaW1hdGlvbi4KQEAg
LTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNS
ZWN1cnNpdmUoQ0NMYXllckltcGwqIGN1cnJlbnQsIGRvdWJsZSBmcgogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjdXJyZW50LT5jaGlsZHJlbigpLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGJvb2wgY2hpbGROZWVkc0FuaW1hdGVMYXllcnMgPSBmYWxzZTsKLSAgICAgICAgYW5pbWF0ZUxh
eWVyc1JlY3Vyc2l2ZShjdXJyZW50LT5jaGlsZHJlbigpW2ldLmdldCgpLCBmcmFtZUJlZ2luVGlt
ZVNlY3MsIGV2ZW50cywgZGlkQW5pbWF0ZSwgY2hpbGROZWVkc0FuaW1hdGVMYXllcnMpOworICAg
ICAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKGN1cnJlbnQtPmNoaWxkcmVuKClbaV0uZ2V0KCks
IGZyYW1lQmVnaW5UaW1lU2Vjcywgd2FsbENsb2NrVGltZVNlY3MsIGV2ZW50cywgZGlkQW5pbWF0
ZSwgY2hpbGROZWVkc0FuaW1hdGVMYXllcnMpOwogICAgICAgICBpZiAoY2hpbGROZWVkc0FuaW1h
dGVMYXllcnMpCiAgICAgICAgICAgICBzdWJ0cmVlTmVlZHNBbmltYXRlTGF5ZXJzID0gdHJ1ZTsK
ICAgICB9CkBAIC02ODEsNyArNjgxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmlt
YXRlUGFnZVNjYWxlKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQogICAgIH0KIH0KIAotdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1z
KQordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJl
Z2luVGltZU1zLCBkb3VibGUgd2FsbENsb2NrVGltZVNlY3MpCiB7CiAgICAgaWYgKCFtX3NldHRp
bmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMgfHwg
IW1fcm9vdExheWVySW1wbCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjkxLDcgKzY5MSw3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRp
bWVNcykKICAgICBPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cyhhZG9wdFB0
cihuZXcgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IpKTsKIAogICAgIGJvb2wgZGlkQW5pbWF0ZSA9
IGZhbHNlOwotICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUobV9yb290TGF5ZXJJbXBsLmdldCgp
LCBmcmFtZUJlZ2luVGltZU1zIC8gMTAwMCwgKmV2ZW50cywgZGlkQW5pbWF0ZSwgbV9uZWVkc0Fu
aW1hdGVMYXllcnMpOworICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUobV9yb290TGF5ZXJJbXBs
LmdldCgpLCBmcmFtZUJlZ2luVGltZU1zIC8gMTAwMCwgd2FsbENsb2NrVGltZVNlY3MsICpldmVu
dHMsIGRpZEFuaW1hdGUsIG1fbmVlZHNBbmltYXRlTGF5ZXJzKTsKIAogICAgIGlmICghZXZlbnRz
LT5pc0VtcHR5KCkpCiAgICAgICAgIG1fY2xpZW50LT5wb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWlu
VGhyZWFkT25JbXBsVGhyZWFkKGV2ZW50cy5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCmluZGV4IGZmNDdlYjA4ZmMyODM3MDAyNzMzMmY5ODViN2IxYzhmMmNk
YjllN2UuLjY0OGJiNjE1NjZjMzM2ZWRlNWVjNjU2NmVjOGNmZDc4YzUzOGM3ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0
KCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGFuaW1hdGUoZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcyk7CisgICAgdmlydHVhbCB2b2lkIGFu
aW1hdGUoZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcywgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNz
KTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVycygpOwogCiAgICAgYm9vbCBjYW5EcmF3KCk7
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYW5pbWF0ZVBhZ2VTY2Fs
ZShkb3VibGUgZnJhbWVCZWdpblRpbWVNcyk7CiAKICAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5n
LgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1z
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVN
cywgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNzKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX3NvdXJjZUZyYW1lTnVtYmVyOwpAQCAtMTUzLDcg
KzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0RhbWFnZUZvckFsbFN1cmZhY2VzKEND
TGF5ZXJJbXBsKiByb290RHJhd0xheWVyLCBjb25zdCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCk7CiAgICAgdm9pZCBjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNz
TGlzdCYsIENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICB2b2lkIG9w
dGltaXplUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmKTsKLSAgICB2b2lkIGFuaW1hdGVM
YXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwqLCBkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYsIGJvb2wmIGRpZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5p
bWF0ZUxheWVycyk7CisgICAgdm9pZCBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBs
KiwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNzLCBD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYsIGJvb2wmIGRpZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5p
bWF0ZUxheWVycyk7CiAgICAgSW50U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQg
c2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25SZWN1cnNpdmUoQ0NMYXllcklt
cGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAwYWYw
N2NiZGJmZDI5NTc4MzhmZWMxNDRiMjZhNmRhOWIzZGZjOGRmLi45ZThkMDZmZWM1MjI1YjYzMGE1
YTVlNWIwMmU0M2RmY2ZjMGUzYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcApAQCAtMjkzLDcgKzI5Myw5IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9D
b21wb3NpdGUoKQogICAgIHsKICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwog
ICAgICAgZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpICogMTAwMC4wOwotICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShmcmFt
ZURpc3BsYXlUaW1lTXMpOworICAgICAgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNzID0gV1RGOjpj
dXJyZW50VGltZSgpOworCisgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1l
RGlzcGxheVRpbWVNcywgd2FsbENsb2NrVGltZVNlY3MpOwogICAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC0+ZHJhd0xheWVycygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCA5MDVhMDk0YzA3YTYxMWUxMjc3Y2IxNmVhMzdiMjM1ZDZiZTY1M2UxLi45YTY5OGNjMWI2
ZGJjMzlmOWNmMmU0MmE0NDdmYmVlZDYxYTk1MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcApAQCAtNTI2LDkgKzUyNiwxMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwKCkKIAogICAgIC8vIEZJWE1FOiBjb21wdXRlIHRoZSBmcmFtZSBkaXNw
bGF5IHRpbWUgbW9yZSBpbnRlbGxpZ2VudGx5CiAgICAgZG91YmxlIGZyYW1lRGlzcGxheVRpbWVN
cyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wOworICAgIGRvdWJsZSB3
YWxsQ2xvY2tUaW1lU2VjcyA9IFdURjo6Y3VycmVudFRpbWUoKTsKIAogICAgIG1faW5wdXRIYW5k
bGVyT25JbXBsVGhyZWFkLT53aWxsRHJhdyhmcmFtZURpc3BsYXlUaW1lTXMpOwotICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUoZnJhbWVEaXNwbGF5VGltZU1zKTsKKyAgICBtX2xheWVy
VHJlZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1lRGlzcGxheVRpbWVNcywgd2FsbENsb2NrVGltZVNl
Y3MpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKIAogICAgIC8vIENo
ZWNrIGZvciBhIHBlbmRpbmcgY29tcG9zaXRlQW5kUmVhZGJhY2suCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGxUZXN0LmNwcAppbmRleCBlMWFlY2NjNTM5YTVkNTFkZmYxOGEyYmU3YzQyZWVi
YTE0NTdlZmJkLi4xODdhNjFhODlmZThjM2FkNTFmOWNlNmYyYjNlYzIyODNjMDY5MjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHAKQEAgLTUzLDEwICs1MywxMCBAQCBU
RVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIFRyaXZpYWxUcmFuc2l0aW9u
KQogICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gdG9BZGQoY3JlYXRlQWN0aXZlQW5pbWF0
aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3Rp
dmVBbmltYXRpb246Ok9wYWNpdHkpKTsKIAogICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxl
YXNlKCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJv
bGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVy
LT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHko
KSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVy
LT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5
KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CiB9CkBAIC03MiwxMyArNzIsMTMgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcklt
cGxUZXN0LCBUcml2aWFsUXVldWluZykKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZl
QW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwg
Q0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRl
QWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDEsIDAu
NWYpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKIAotICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZl
bnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5p
bWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMp
OwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAg
ICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRl
KDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgMiwgKmV2ZW50cyk7CiAg
ICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTkxLDcgKzkxLDcgQEAgVEVT
VChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBJbnRlcnJ1cHQpCiAgICAgT3du
UHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbD4gY29udHJvbGxlcigKICAgICAgICAg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpjcmVhdGUoJmR1bW15KSk7CiAgICAgY29u
dHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0
VHJhbnNpdGlvbigxLCAwLCAxKSksIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7Ci0g
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2
ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKIApAQCAt
OTksMTAgKzk5LDEwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwg
SW50ZXJydXB0KQogICAgIHRvQWRkLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2Fp
dGluZ0Zvck5leHRUaWNrLCAwKTsKICAgICBjb250cm9sbGVyLT5hZGQodG9BZGQucmVsZWFzZSgp
KTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMC41LCAqZXZlbnRzKTsgLy8gc2Vjb25kIGFu
aW0gc3RhcnRzIE5PVy4KKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwgMC41LCAqZXZlbnRz
KTsgLy8gc2Vjb25kIGFuaW0gc3RhcnRzIE5PVy4KICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVy
LT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHko
KSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjUsICpldmVudHMpOworICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMS41LCAxLjUsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1t
eS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmlt
YXRpb24oKSk7CiB9CkBAIC0xMTksMTUgKzExOSwxNSBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbFRlc3QsIFNjaGVkdWxlVG9nZXRoZXJXaGVuQVByb3BlcnR5SXNCbG9ja2Vk
KQogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3
IEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKDEpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5z
Zm9ybSkpOwogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQ
dHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlv
bjo6T3BhY2l0eSkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAg
ICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgwLCBk
dW1teS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7CiAgICAgLy8gU2hvdWxkIG5vdCBoYXZl
IHN0YXJ0ZWQgdGhlIGZsb2F0IHRyYW5zaXRpb24geWV0LgogICAgIEVYUEVDVF9UUlVFKGNvbnRy
b2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3Bh
Y2l0eSgpKTsKICAgICAvLyBUaGUgdGhlIGZsb2F0IGFuaW1hdGlvbiBzaG91bGQgaGF2ZSBzdGFy
dGVkIGF0IHRpbWUgMSBhbmQgc2hvdWxkIGJlIGRvbmUuCi0gICAgY29udHJvbGxlci0+YW5pbWF0
ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVudHMpOwog
ICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBAIC0xNDcsMjAgKzE0NywyMCBAQCBU
RVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIFNjaGVkdWxlVG9nZXRoZXJX
aXRoQW5BbmltV2FpdGluZykKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0
aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDEsIDAuNWYpKSwgMiwgQ0NB
Y3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKIAogICAgIC8vIEFuaW1zIHdpdGggaWQgMSBzaG91
bGQgYm90aCBzdGFydCBub3cuCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsK
KyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVt
bXkub3BhY2l0eSgpKTsKICAgICAvLyBUaGUgb3BhY2l0eSBhbmltYXRpb24gc2hvdWxkIGhhdmUg
ZmluaXNoZWQgYXQgdGltZSAxLCBidXQgdGhlIGdyb3VwCiAgICAgLy8gb2YgYW5pbWF0aW9ucyB3
aXRoIGlkIDEgZG9uJ3QgZmluaXNoIHVudGlsIHRpbWUgMiBiZWNhdXNlIG9mIHRoZSBsZW5ndGgK
ICAgICAvLyBvZiB0aGUgdHJhbnNmb3JtIGFuaW1hdGlvbi4KLSAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgMiwgKmV2ZW50cyk7
CiAgICAgLy8gU2hvdWxkIG5vdCBoYXZlIHN0YXJ0ZWQgdGhlIGZsb2F0IHRyYW5zaXRpb24geWV0
LgogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAg
ICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKIAogICAgIC8vIFRoZSB0aGUgc2Vjb25k
IG9wYWNpdHkgYW5pbWF0aW9uIHNob3VsZCBzdGFydCBhdCB0aW1lIDIgYW5kIHNob3VsZCBiZQog
ICAgIC8vIGRvbmUgYnkgdGltZSAzCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAqZXZlbnRz
KTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDMsIDMsICpldmVudHMpOwogICAgIEVYUEVDVF9F
USgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5o
YXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBAIC0xNzgsMTMgKzE3OCwxMyBAQCBURVNUKENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIFNjaGVkdWxlQW5pbWF0aW9uKQogICAgIHRv
QWRkLT5zZXRTdGFydFRpbWUoMSk7CiAgICAgY29udHJvbGxlci0+YWRkKHRvQWRkLnJlbGVhc2Uo
KSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+
aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkp
OwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+
YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNB
Y3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0g
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDIsIDIsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwog
ICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBA
IC0yMDUsMTYgKzIwNSwxNiBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRl
c3QsIFNjaGVkdWxlZEFuaW1hdGlvbkludGVycnVwdHNSdW5uaW5nQW5pbQogICAgIGNvbnRyb2xs
ZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogCiAgICAgLy8gRmlyc3QgMnMgb3BhY2l0eSB0cmFu
c2l0aW9uIHNob3VsZCBzdGFydCBpbW1lZGlhdGVseS4KLSAgICBjb250cm9sbGVyLT5hbmltYXRl
KDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAg
ICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVY
UEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMC41
LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwgMC41LCAqZXZlbnRzKTsK
ICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAg
RVhQRUNUX0VRKDAuMjVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1h
dGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsK
ICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAg
RVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0
ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVudHMpOwog
ICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBAIC0yMzgsMjAgKzIzOCwyMCBAQCBU
RVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIFNjaGVkdWxlZEFuaW1hdGlv
bkludGVycnVwdHNSdW5uaW5nQW5pbQogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVB
bmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMC43NWYpKSwg
MywgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKIAogICAgIC8vIEZpcnN0IDJzIG9wYWNp
dHkgdHJhbnNpdGlvbiBzaG91bGQgc3RhcnQgaW1tZWRpYXRlbHkuCi0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVu
dHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
ICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDAuNSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLjUsIDAuNSwgKmV2
ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkp
OwogICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfVFJV
RShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0gICAgY29udHJvbGxlci0+YW5p
bWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMp
OwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAg
ICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDMsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMywgMywgKmV2ZW50cyk7
CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAg
IEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
NCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSg0LCA0LCAqZXZlbnRzKTsKICAg
ICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTI2OCwyNyArMjY4LDI3IEBA
IFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgVHJpdmlhbExvb3Bpbmcp
CiAgICAgdG9BZGQtPnNldEl0ZXJhdGlvbnMoMyk7CiAgICAgY29udHJvbGxlci0+YWRkKHRvQWRk
LnJlbGVhc2UoKSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29u
dHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5v
cGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS4yNSwgKmV2ZW50cyk7CisgICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgxLjI1LCAxLjI1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJV
RShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVm
LCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS43NSwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjc1LCAxLjc1LCAqZXZlbnRzKTsKICAgICBF
WFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNU
X0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMi4y
NSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLjI1LCAyLjI1LCAqZXZlbnRz
KTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAg
ICAgRVhQRUNUX0VRKDAuMjVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMi43NSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLjc1LCAyLjc1
LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRp
b24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMywgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAz
LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgLy8gSnVz
dCBiZSBleHRyYSBzdXJlLgotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoNCwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSg0LCA0LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMSwg
ZHVtbXkub3BhY2l0eSgpKTsKIH0KIApAQCAtMzA1LDIwICszMDUsMjAgQEAgVEVTVChDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBJbmZpbml0ZUxvb3BpbmcpCiAgICAgdG9BZGQt
PnNldEl0ZXJhdGlvbnMoLTEpOwogICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkp
OwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVy
LT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhh
c0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsK
LSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuMjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMS4yNSwgMS4yNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxl
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVtbXkub3Bh
Y2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNzUsICpldmVudHMpOworICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMS43NSwgMS43NSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUo
Y29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjc1Ziwg
ZHVtbXkub3BhY2l0eSgpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTA3Mzc0MTgyNC4y
NSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDczNzQxODI0LjI1LCAxMDcz
NzQxODI0LjI1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3Rp
dmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVmLCBkdW1teS5vcGFjaXR5KCkpOwot
ICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTA3Mzc0MTgyNC43NSwgKmV2ZW50cyk7CisgICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgxMDczNzQxODI0Ljc1LCAxMDczNzQxODI0Ljc1LCAqZXZlbnRzKTsK
ICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAg
RVhQRUNUX0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwogCkBAIC0zMzksMjcgKzMzOSwyNyBA
QCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIFBhdXNlUmVzdW1lKQog
ICAgIGNvbnN0IGludCBpZCA9IDE7CiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFu
aW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIGlkLCBD
Q0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgw
LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBF
Q1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwg
KmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLjUsIDAuNSwgKmV2ZW50cyk7CiAg
ICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVY
UEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkp
OwogICAgIGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVBbmltYXRp
b246Ok9wYWNpdHkpLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UGF1c2VkLCAwLjVm
KTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTAyNCwgKmV2ZW50cyk7CisgICAgY29udHJv
bGxlci0+YW5pbWF0ZSgxMDI0LCAxMDI0LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15
Lm9wYWNpdHkoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5nZXRBY3RpdmVBbmlt
YXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgY29udHJvbGxlci0+
Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSktPnNldFJ1
blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCAxMDI0KTsKIAotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMTAyNC4yNSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgx
MDI0LjI1LCAxMDI0LjI1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5o
YXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5
KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTAyNC41LCAqZXZlbnRzKTsKKyAgICBjb250
cm9sbGVyLT5hbmltYXRlKDEwMjQuNSwgMTAyNC41LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRkFM
U0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgxLCBk
dW1teS5vcGFjaXR5KCkpOwogfQpAQCAtMzc2LDE5ICszNzYsMTkgQEAgVEVTVChDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBBYm9ydEFHcm91cGVkQW5pbWF0aW9uKQogICAgIGNv
bnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9h
dFRyYW5zaXRpb24oMiwgMCwgMSkpLCBpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsK
ICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBG
YWtlRmxvYXRUcmFuc2l0aW9uKDEsIDEsIDAuNzVmKSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpP
cGFjaXR5KSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFj
aXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJv
bGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVy
LT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNp
dHkoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24o
aWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgY29udHJvbGxlci0+Z2V0QWN0
aXZlQW5pbWF0aW9uKGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSktPnNldFJ1blN0YXRl
KENDQWN0aXZlQW5pbWF0aW9uOjpBYm9ydGVkLCAxKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRl
KDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7CiAg
ICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVY
UEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwg
KmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAyLCAqZXZlbnRzKTsKICAgICBF
WFBFQ1RfVFJVRSghY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVD
VF9FUSgwLjc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0
LmNwcAppbmRleCBjNGYxMDNhM2NhZmU0NjhlNGI4ZTc5Nzg2ZDJiMjE4N2U0NWQ3ZWExLi44YTYy
N2ZhMGY2NTlkODFkMzg3NWNlMTJhY2FjYTZmMGIyNmQ3M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlclRlc3QuY3BwCkBAIC0yMDEsOCArMjAxLDggQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlclRlc3QsIHN5bmNDb21wbGV0ZWRBbmltYXRpb24pCiAKICAgICAvLyBTdGVwIHRocm91
Z2ggdGhlIGFuaW1hdGlvbiB1bnRpbCBpdCBpcyBmaW5pc2hlZC4gQXQgdGhlIG5leHQgc3luYywg
dGhlIG1haW4gdGhyZWFkJ3MgYW5pbWF0aW9uIHNob3VsZCBiZSBjbGVhcmVkLgogICAgIE93blB0
cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKGFkb3B0UHRyKG5ldyBDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3RvcikpOwotICAgIGNvbnRyb2xsZXJJbXBsLT5hbmltYXRlKDAsICpldmVudHMp
OwotICAgIGNvbnRyb2xsZXJJbXBsLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xs
ZXJJbXBsLT5hbmltYXRlKDAsIDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXJJbXBsLT5hbmlt
YXRlKDIsIDIsICpldmVudHMpOwogCiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXJJbXBsLT5n
ZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBF
WFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwCmluZGV4IGVkMDUyYTljM2Q4NjljN2FlOTI3MWY2MTFhMzljNDVhYmE4YmIyOTcuLmQwMGY0
MDZiMzUwMWNhOWMzZjdkMWI0NDA1ZmE4ODY2ZTQ1YTcyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBA
IC0zNTEsNiArMzUxLDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2Nh
bGVBbmltYXRpb24pCiAgICAgY29uc3QgZmxvYXQgbWluUGFnZVNjYWxlID0gMC41LCBtYXhQYWdl
U2NhbGUgPSA0OwogICAgIGNvbnN0IGRvdWJsZSBzdGFydFRpbWVNcyA9IDEwMDA7CiAgICAgY29u
c3QgZG91YmxlIGR1cmF0aW9uTXMgPSAxMDA7CisgICAgY29uc3QgZG91YmxlIGhhbGZ3YXlUaHJv
dWdoQW5pbWF0aW9uID0gc3RhcnRUaW1lTXMgKyBkdXJhdGlvbk1zIC8gMjsKKyAgICBjb25zdCBk
b3VibGUgZW5kVGltZU1zID0gc3RhcnRUaW1lTXMgKyBkdXJhdGlvbk1zOwogCiAgICAgLy8gTm9u
LWFuY2hvciB6b29tLWluCiAgICAgewpAQCAtMzU5LDkgKzM2MSw5IEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNjYWxlQW5pbWF0aW9uKQogICAgICAgICBzY3JvbGxMYXll
ci0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoNTAsIDUwKSk7CiAKICAgICAgICAgbV9ob3N0
SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZSgwLCAwKSwgZmFsc2UsIDIsIHN0
YXJ0VGltZU1zLCBkdXJhdGlvbk1zKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShzdGFy
dFRpbWVNcyArIGR1cmF0aW9uTXMgLyAyKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZSho
YWxmd2F5VGhyb3VnaEFuaW1hdGlvbiwgaGFsZndheVRocm91Z2hBbmltYXRpb24pOwogICAgICAg
ICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgICAgICBtX2hvc3RJbXBsLT5h
bmltYXRlKHN0YXJ0VGltZU1zICsgZHVyYXRpb25Ncyk7CisgICAgICAgIG1faG9zdEltcGwtPmFu
aW1hdGUoZW5kVGltZU1zLCBlbmRUaW1lTXMpOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJl
cXVlc3RDb21taXQpOwogCiAgICAgICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3Jv
bGxJbmZvID0gbV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwpAQCAtMzc2LDcgKzM3
OCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNjYWxlQW5pbWF0aW9u
KQogICAgICAgICBzY3JvbGxMYXllci0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoNTAsIDUw
KSk7CiAKICAgICAgICAgbV9ob3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6
ZSgyNSwgMjUpLCB0cnVlLCBtaW5QYWdlU2NhbGUsIHN0YXJ0VGltZU1zLCBkdXJhdGlvbk1zKTsK
LSAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShzdGFydFRpbWVNcyArIGR1cmF0aW9uTXMpOwor
ICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKGVuZFRpbWVNcywgZW5kVGltZU1zKTsKICAgICAg
ICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3KTsKICAgICAgICAgRVhQRUNUX1RSVUUo
bV9kaWRSZXF1ZXN0Q29tbWl0KTsKIApAQCAtODQ2LDcgKzg0OCw3IEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgdmlzaWJpbGl0eUNoYW5nZVJlc2V0c0RhbWFnZSkKICAgICAvLyBG
aXJzdCBmcmFtZTogaWdub3JlLgogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7Ci0gCisKICAgICAvLyBTZWNv
bmQgZnJhbWU6IG5vdGhpbmcgaGFzIGNoYW5nZWQgLS0tIHNvIHdlIHNvdWxkbid0IHB1c2ggYW55
dGhpbmcgd2l0aCBwYXJ0aWFsIHN3YXAuCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXll
cnMoKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4
IGQ3ZGQwNTU5NWJmZTUyNmE1MDdlOGI3MmU0OGRhN2MxODY3NjM0OTUuLjdhYTc4ZjU5NmI2NDI2
NDU4NWNkNTYyN2Q3NzI0NmU3MzJiNmVlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTAyLDkgKzEwMiw5IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxh
eWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcykKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxh
eWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcywgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNzKQog
ICAgIHsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyhmcmFtZUJl
Z2luVGltZU1zKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyhm
cmFtZUJlZ2luVGltZU1zLCB3YWxsQ2xvY2tUaW1lU2Vjcyk7CiAgICAgICAgIG1fdGVzdEhvb2tz
LT5hbmltYXRlTGF5ZXJzKHRoaXMpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130506</attachid>
            <date>2012-03-06 18:17:49 -0800</date>
            <delta_ts>2012-03-06 19:16:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120306211747.patch</filename>
            <type>text/plain</type>
            <size>39765</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uYzAxZjM0YTc5OTEwYWYxMjVkMTJhMTMyZWJkMGM1
YTYxZjljMzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTA2ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JOZXh0VGljayk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNS
ZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0
ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCk6CisKIDIwMTItMDMtMDYgIERhdmlkIENvcnZveXNpZXIgIDxkYXZpZC5jb3J2b3lzaWVy
QG9yYW5nZS5jb20+CiAKICAgICAgICAgVW5yZWxlYXNlZCBnc3Rfb2JqZWN0X3JlZmVyZW5jZSB0
byBhdWRpbyBzaW5rIGluIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCBiN2NjMDhlOGJkNDk3ZjU0NWY5YjE4ZWYwZTI1MjY1YjI2YzVkZDE5
Li40YTk0NWI0Y2MyMzY4MTU1ZGMwYzAyYTlmZDg5NWRmNDUyZDg0M2YxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTA2ICBJYW4gVm9sbGljayAg
PHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJlIHdlIHVz
ZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFydGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUzNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6
VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAg
ICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6Ok1vY2tMYXll
clRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyk6CisKIDIwMTItMDMtMDYgIFRha2FzaGkgVG95
b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gW1dl
YlNvY2tldF0gQWRkIFdlYlNvY2tldCBleHRlbnNpb25zIHF1ZXJ5IFdlYktpdCBBUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCmlu
ZGV4IGU4ZDZiYzdlZjc1YWM0MDNkMTFjYTYxMTU0ODhlY2M3MWQ1NjM1ZDUuLjNiYTI5OTlhNmRk
NTI4YzI0NmRmMDliMTBhZTUzMjMxZGMyNWVkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApAQCAtNDksMTUgKzQ5LDE1IEBA
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6fkNDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjph
bmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9y
JiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YW5pbWF0ZShk
b3VibGUgbW9ub3RvbmljVGltZVNlY3MsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lU2VjcywgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKIHsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5n
Rm9yTmV4dFRpY2soZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMpOwotICAgIHN0YXJ0QW5pbWF0
aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUoZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMpOwotICAg
IHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZnJhbWVCZWdpblRp
bWVTZWNzLCBldmVudHMpOwotICAgIHJlc29sdmVDb25mbGljdHMoZnJhbWVCZWdpblRpbWVTZWNz
KTsKLSAgICB0aWNrQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZVNlY3MpOworICAgIHN0YXJ0QW5p
bWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayhtb25vdG9uaWNUaW1lU2Vjcywgd2FsbENsb2NrVGlt
ZVNlY3MsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZSht
b25vdG9uaWNUaW1lU2Vjcywgd2FsbENsb2NrVGltZVNlY3MsIGV2ZW50cyk7CisgICAgc3RhcnRB
bmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNUaW1lU2Vjcywg
d2FsbENsb2NrVGltZVNlY3MsIGV2ZW50cyk7CisgICAgcmVzb2x2ZUNvbmZsaWN0cyhtb25vdG9u
aWNUaW1lU2Vjcyk7CisgICAgdGlja0FuaW1hdGlvbnMobW9ub3RvbmljVGltZVNlY3MpOwogICAg
IHB1cmdlRmluaXNoZWRBbmltYXRpb25zKGV2ZW50cyk7Ci0gICAgc3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7Cisg
ICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNU
aW1lU2Vjcywgd2FsbENsb2NrVGltZVNlY3MsIGV2ZW50cyk7CiB9CiAKIHZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjphZGQoUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4g
YW5pbSkKQEAgLTgzLDI4ICs4MywyOCBAQCBib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0
aW5nRm9yTmV4dFRpY2soZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50
cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yTmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWVTZWNzLCBkb3VibGUgd2FsbENs
b2NrVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFu
aW1hdGlvbjo6V2FpdGluZ0Zvck5leHRUaWNrKSB7Ci0gICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBub3cpOwot
ICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobm93KTsKLSAg
ICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZSht
X2NsaWVudC0+aWQoKSwgbm93KSk7CisgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1lU2Vj
cyk7CisgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25v
dG9uaWNUaW1lU2Vjcyk7CisgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3Rh
cnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIHdhbGxDbG9ja1RpbWVTZWNzKSk7CiAg
ICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBs
OjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBub3csIENDQW5pbWF0
aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbW9ub3Rvbmlj
VGltZVNlY3MsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0
b3ImIGV2ZW50cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0
aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5y
dW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lICYmIG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkgPD0gbm93KSB7Ci0gICAgICAgICAgICBt
X2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5u
aW5nLCBub3cpOwotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKKyAgICAgICAgaWYgKG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0Zv
clN0YXJ0VGltZSAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0VGltZSgpIDw9IG1vbm90
b25pY1RpbWVTZWNzKSB7CisgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1
blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1lU2Vjcyk7Cisg
ICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUo
bV9jbGllbnQtPmlkKCksIHdhbGxDbG9ja1RpbWVTZWNzKSk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3Rh
cnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbW9ub3Rvbmlj
VGltZVNlY3MsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0
b3ImIGV2ZW50cykKIHsKICAgICAvLyBGaXJzdCBjb2xsZWN0IHJ1bm5pbmcgcHJvcGVydGllcy4K
ICAgICBUYXJnZXRQcm9wZXJ0aWVzIGJsb2NrZWRQcm9wZXJ0aWVzOwpAQCAtMTM0LDEzICsxMzQs
MTMgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkKIAogICAgICAgICAgICAgLy8gSWYgdGhlIGlu
dGVyc2VjdGlvbiBpcyBudWxsLCB0aGVuIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHRoZSBhbmltYXRp
b25zIGluIHRoZSBncm91cC4KICAgICAgICAgICAgIGlmIChudWxsSW50ZXJzZWN0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2
ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnNldFN0YXJ0VGltZShub3cpOwotICAgICAgICAgICAgICAgIGV2ZW50cy5hcHBl
bmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbm93KSk7
CisgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0Fj
dGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZVNlY3MpOworICAgICAgICAgICAg
ICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG1vbm90b25pY1RpbWVTZWNz
KTsKKyAgICAgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50
OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIHdhbGxDbG9ja1RpbWVTZWNzKSk7CiAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUo
KTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
Pmdyb3VwKCkgPT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5ncm91cCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZl
QW5pbWF0aW9uOjpSdW5uaW5nLCBub3cpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2pdLT5zZXRTdGFydFRpbWUobm93KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246
OlJ1bm5pbmcsIG1vbm90b25pY1RpbWVTZWNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
YWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0U3RhcnRUaW1lKG1vbm90b25pY1RpbWVTZWNzKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTE0OCw3ICsxNDgsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3Rh
cnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eQogICAgIH0KIH0KIAotdm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnJlc29sdmVDb25mbGljdHMoZG91Ymxl
IG5vdykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxp
Y3RzKGRvdWJsZSBtb25vdG9uaWNUaW1lU2VjcykKIHsKICAgICAvLyBGaW5kIGFueSBhbmltYXRp
b25zIHRoYXQgYXJlIGFuaW1hdGluZyB0aGUgc2FtZSBwcm9wZXJ0eSBhbmQgcmVzb2x2ZSB0aGUK
ICAgICAvLyBjb25maWN0LiBXZSBjb3VsZCBldmVudHVhbGx5IGJsZW5kLCBidXQgZm9yIG5vdyB3
ZSdsbCBqdXN0IGFib3J0IHRoZQpAQCAtMTYwLDkgKzE2MCw5IEBAIHZvaWQgQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpCiAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgp
OyArK2opIHsKICAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2pdLT5ydW5T
dGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nICYmIG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+dGFyZ2V0UHJvcGVydHkoKSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnRhcmdldFBy
b3BlcnR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+c3RhcnRUaW1lKCkgPiBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnN0YXJ0VGltZSgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShD
Q0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFi
b3J0ZWQsIG1vbm90b25pY1RpbWVTZWNzKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShD
Q0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFi
b3J0ZWQsIG1vbm90b25pY1RpbWVTZWNzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTE5NCwxOSArMTk0LDE5IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50
c1ZlCiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlj
a0FuaW1hdGlvbnMoZG91YmxlIG5vdykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZVNlY3MpCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFu
aW1hdGlvbjo6UnVubmluZykgewotICAgICAgICAgICAgZG91YmxlIHRyaW1tZWQgPSBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9uKG5vdyk7CisgICAgICAg
ICAgICBkb3VibGUgdHJpbW1lZCA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dHJpbVRpbWVUb0N1
cnJlbnRJdGVyYXRpb24obW9ub3RvbmljVGltZVNlY3MpOwogCiAgICAgICAgICAgICBzd2l0Y2gg
KG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSkgewogCiAgICAgICAgICAg
ICBjYXNlIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm06IHsKICAgICAgICAgICAgICAgICBj
b25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiB0cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSA9
IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y3VydmUoKS0+dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2
ZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9
IHRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLT5nZXRWYWx1ZSh0cmltbWVkLCBtX2NsaWVudC0+Ym91
bmRzKCkpOwotICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmlzRmlu
aXNoZWRBdChub3cpKQotICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwgbm93KTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQobW9ub3Rvbmlj
VGltZVNlY3MpKQorICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNl
dFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwgbW9ub3RvbmljVGltZVNlY3Mp
OwogCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNldFRyYW5zZm9ybShtYXRyaXgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE1LDggKzIxNSw4IEBAIHZvaWQgQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUgbm93KQogICAgICAgICAg
ICAgY2FzZSBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eTogewogICAgICAgICAgICAgICAgIGNv
bnN0IENDRmxvYXRBbmltYXRpb25DdXJ2ZSogZmxvYXRBbmltYXRpb25DdXJ2ZSA9IG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+Y3VydmUoKS0+dG9GbG9hdEFuaW1hdGlvbkN1cnZlKCk7CiAgICAgICAg
ICAgICAgICAgY29uc3QgZmxvYXQgb3BhY2l0eSA9IGZsb2F0QW5pbWF0aW9uQ3VydmUtPmdldFZh
bHVlKHRyaW1tZWQpOwotICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PmlzRmluaXNoZWRBdChub3cpKQotICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwgbm93KTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQobW9u
b3RvbmljVGltZVNlY3MpKQorICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwgbW9ub3RvbmljVGlt
ZVNlY3MpOwogCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNldE9wYWNpdHkob3BhY2l0eSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbC5oCmluZGV4IDM1NDAwNDliMDM2MWZkZTYyMzk1YWJjMGU0
ZTE1MTcwNDJkNDQ4YjAuLjYxY2QxMzM5ZmMwNGNmYzhiZWNiZmIzODA3NDA3OTk0MTJiY2NiNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVySW1wbCgpOwogCi0gICAgdm9pZCBhbmltYXRlKGRvdWJsZSBmcmFtZUJl
Z2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CisgICAgdm9pZCBhbmltYXRl
KGRvdWJsZSBtb25vdG9uaWNUaW1lU2VjcywgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNzLCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciYpOwogCiAgICAgdm9pZCBhZGQoUGFzc093blB0cjxDQ0FjdGl2
ZUFuaW1hdGlvbj4pOwogCkBAIC03OCwxMyArNzgsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUg
YW5pbWF0b3IgaXMgb3duZWQgYnkgdGhlIGxheWVyLgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVySW1wbChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQq
KTsKIAotICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGRvdWJsZSBu
b3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7Ci0gICAgdm9pZCBzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7
Ci0gICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRv
dWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7Ci0gICAgdm9pZCByZXNvbHZlQ29u
ZmxpY3RzKGRvdWJsZSBub3cpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5l
eHRUaWNrKGRvdWJsZSBtb25vdG9uaWNUaW1lU2VjcywgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNz
LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbW9ub3RvbmljVGltZVNlY3MsIGRvdWJsZSB3YWxsQ2xv
Y2tUaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKKyAgICB2b2lkIHN0YXJ0QW5p
bWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG1vbm90b25pY1RpbWVT
ZWNzLCBkb3VibGUgd2FsbENsb2NrVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7
CisgICAgdm9pZCByZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBtb25vdG9uaWNUaW1lU2Vjcyk7CiAg
ICAgdm9pZCBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYp
OwogCi0gICAgdm9pZCB0aWNrQW5pbWF0aW9ucyhkb3VibGUgbm93KTsKKyAgICB2b2lkIHRpY2tB
bmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lU2Vjcyk7CiAKICAgICBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3RvcjxPd25QdHI8Q0NB
Y3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBmNzE1YWUzNWQxN2Y5MGI3NGRiMjJkYzBmM2M5NGU2
NjcwNTE5OTlhLi5mMTRmNmMzZjYxNTJmZTgzYmY5ZjY3NDJkYmVlMTMzMTczNDk0MmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtOTcsMTAgKzk3LDEwIEBA
IEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZXh0KCkKICAgICBy
ZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXllclJlbmRlcmVyLT5jb250ZXh0KCkgOiAwOwog
fQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5U
aW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25p
Y1RpbWVNcywgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNzKQogewotICAgIGFuaW1hdGVQYWdlU2Nh
bGUoZnJhbWVCZWdpblRpbWVNcyk7Ci0gICAgYW5pbWF0ZUxheWVycyhmcmFtZUJlZ2luVGltZU1z
KTsKKyAgICBhbmltYXRlUGFnZVNjYWxlKG1vbm90b25pY1RpbWVNcyk7CisgICAgYW5pbWF0ZUxh
eWVycyhtb25vdG9uaWNUaW1lTXMsIHdhbGxDbG9ja1RpbWVTZWNzKTsKIH0KIAogdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0
YXJnZXRQb3NpdGlvbiwgYm9vbCBhbmNob3JQb2ludCwgZmxvYXQgcGFnZVNjYWxlLCBkb3VibGUg
c3RhcnRUaW1lTXMsIGRvdWJsZSBkdXJhdGlvbk1zKQpAQCAtMjQ3LDE0ICsyNDcsMTQgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpvcHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NM
aXN0JiBwYXNzZXMpCiAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMo
IlJlbmRlcmVyNC5waXhlbE92ZXJkcmF3Q3VsbGVkIiwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxp
emF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNDdWxsZWQpLCAxMDAsIDEwMDAwMDAsIDUw
KTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzUmVjdXJzaXZl
KENDTGF5ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBDQ0FuaW1h
dGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0Fu
aW1hdGVMYXllcnMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1
cnNpdmUoQ0NMYXllckltcGwqIGN1cnJlbnQsIGRvdWJsZSBtb25vdG9uaWNUaW1lU2VjcywgZG91
YmxlIHdhbGxDbG9ja1RpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzLCBi
b29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpCiB7CiAgICAgYm9vbCBz
dWJ0cmVlTmVlZHNBbmltYXRlTGF5ZXJzID0gZmFsc2U7CiAKICAgICBDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGwqIGN1cnJlbnRDb250cm9sbGVyID0gY3VycmVudC0+bGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKCk7CiAKICAgICBib29sIGhhZEFjdGl2ZUFuaW1hdGlvbiA9IGN1cnJlbnRD
b250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKTsKLSAgICBjdXJyZW50Q29udHJvbGxlci0+
YW5pbWF0ZShmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7CisgICAgY3VycmVudENvbnRyb2xs
ZXItPmFuaW1hdGUobW9ub3RvbmljVGltZVNlY3MsIHdhbGxDbG9ja1RpbWVTZWNzLCBldmVudHMp
OwogICAgIGJvb2wgc3RhcnRlZEFuaW1hdGlvbiA9IGV2ZW50cy5zaXplKCkgPiAwOwogCiAgICAg
Ly8gV2UgYW5pbWF0ZWQgaWYgd2UgZWl0aGVyIHRpY2tlZCBhIHJ1bm5pbmcgYW5pbWF0aW9uLCBv
ciBzdGFydGVkIGEgbmV3IGFuaW1hdGlvbi4KQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwqIGN1cnJl
bnQsIGRvdWJsZSBmcgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdXJyZW50LT5jaGls
ZHJlbigpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGJvb2wgY2hpbGROZWVkc0FuaW1hdGVMYXll
cnMgPSBmYWxzZTsKLSAgICAgICAgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShjdXJyZW50LT5jaGls
ZHJlbigpW2ldLmdldCgpLCBmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cywgZGlkQW5pbWF0ZSwg
Y2hpbGROZWVkc0FuaW1hdGVMYXllcnMpOworICAgICAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZl
KGN1cnJlbnQtPmNoaWxkcmVuKClbaV0uZ2V0KCksIG1vbm90b25pY1RpbWVTZWNzLCB3YWxsQ2xv
Y2tUaW1lU2VjcywgZXZlbnRzLCBkaWRBbmltYXRlLCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyk7
CiAgICAgICAgIGlmIChjaGlsZE5lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgICAgIHN1YnRy
ZWVOZWVkc0FuaW1hdGVMYXllcnMgPSB0cnVlOwogICAgIH0KQEAgLTY2MiwyNiArNjYyLDI2IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0RnVsbFJvb3RMYXllckRhbWFnZSgpCiAgICAg
fQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdl
U2NhbGUoZG91YmxlIG1vbm90b25pY1RpbWVNcykKIHsKICAgICBpZiAoIW1fcGFnZVNjYWxlQW5p
bWF0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gdG9T
aXplKG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbERlbHRhKCkpOwogCi0gICAgc2V0UGFnZVNjYWxlRGVsdGEobV9wYWdlU2NhbGVB
bmltYXRpb24tPnBhZ2VTY2FsZUF0VGltZShmcmFtZUJlZ2luVGltZU1zKSAvIG1fcGFnZVNjYWxl
KTsKLSAgICBJbnRTaXplIG5leHRTY3JvbGwgPSBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+c2Nyb2xs
T2Zmc2V0QXRUaW1lKGZyYW1lQmVnaW5UaW1lTXMpOworICAgIHNldFBhZ2VTY2FsZURlbHRhKG1f
cGFnZVNjYWxlQW5pbWF0aW9uLT5wYWdlU2NhbGVBdFRpbWUobW9ub3RvbmljVGltZU1zKSAvIG1f
cGFnZVNjYWxlKTsKKyAgICBJbnRTaXplIG5leHRTY3JvbGwgPSBtX3BhZ2VTY2FsZUFuaW1hdGlv
bi0+c2Nyb2xsT2Zmc2V0QXRUaW1lKG1vbm90b25pY1RpbWVNcyk7CiAgICAgbmV4dFNjcm9sbC5z
Y2FsZSgxIC8gbV9wYWdlU2NhbGVEZWx0YSk7CiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9s
bEJ5KG5leHRTY3JvbGwgLSBzY3JvbGxUb3RhbCk7CiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVk
cmF3T25JbXBsVGhyZWFkKCk7CiAKLSAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5p
bWF0aW9uQ29tcGxldGVBdFRpbWUoZnJhbWVCZWdpblRpbWVNcykpIHsKKyAgICBpZiAobV9wYWdl
U2NhbGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUobW9ub3RvbmljVGltZU1z
KSkgewogICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi5jbGVhcigpOwogICAgICAgICBtX2Ns
aWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcykK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyhkb3VibGUgbW9ub3Rvbmlj
VGltZU1zLCBkb3VibGUgd2FsbENsb2NrVGltZVNlY3MpCiB7CiAgICAgaWYgKCFtX3NldHRpbmdz
LnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMgfHwgIW1f
cm9vdExheWVySW1wbCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjkxLDcgKzY5MSw3IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVN
cykKICAgICBPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cyhhZG9wdFB0cihu
ZXcgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IpKTsKIAogICAgIGJvb2wgZGlkQW5pbWF0ZSA9IGZh
bHNlOwotICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUobV9yb290TGF5ZXJJbXBsLmdldCgpLCBm
cmFtZUJlZ2luVGltZU1zIC8gMTAwMCwgKmV2ZW50cywgZGlkQW5pbWF0ZSwgbV9uZWVkc0FuaW1h
dGVMYXllcnMpOworICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUobV9yb290TGF5ZXJJbXBsLmdl
dCgpLCBtb25vdG9uaWNUaW1lTXMgLyAxMDAwLCB3YWxsQ2xvY2tUaW1lU2VjcywgKmV2ZW50cywg
ZGlkQW5pbWF0ZSwgbV9uZWVkc0FuaW1hdGVMYXllcnMpOwogCiAgICAgaWYgKCFldmVudHMtPmlz
RW1wdHkoKSkKICAgICAgICAgbV9jbGllbnQtPnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJl
YWRPbkltcGxUaHJlYWQoZXZlbnRzLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKaW5kZXggZmY0N2ViMDhmYzI4MzcwMDI3MzMyZjk4NWI3YjFjOGYyY2RiOWU3
ZS4uNWUyOTlmZGUzMGI5ZTdkNDcwZTdhZmExN2EzMTIxYzI0MmFmMzZjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVmlydHVhbCBmb3IgdGVzdGluZy4KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0ZShkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0
ZShkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zLCBkb3VibGUgd2FsbENsb2NrVGltZVNlY3MpOwog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7CiAKICAgICBib29sIGNhbkRyYXcoKTsKQEAg
LTEzMyw3ICsxMzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhbmltYXRlUGFnZVNjYWxlKGRv
dWJsZSBmcmFtZUJlZ2luVGltZU1zKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCi0g
ICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpOwor
ICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lTXMsIGRv
dWJsZSB3YWxsQ2xvY2tUaW1lU2Vjcyk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
KiBtX2NsaWVudDsKICAgICBpbnQgbV9zb3VyY2VGcmFtZU51bWJlcjsKQEAgLTE1Myw3ICsxNTMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVy
SW1wbCogcm9vdERyYXdMYXllciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOwogICAgIHZvaWQgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3Qm
LCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgdm9pZCBvcHRpbWl6
ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0Jik7Ci0gICAgdm9pZCBhbmltYXRlTGF5ZXJz
UmVjdXJzaXZlKENDTGF5ZXJJbXBsKiwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3ImLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVM
YXllcnMpOworICAgIHZvaWQgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRv
dWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lU2VjcywgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3ImLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVM
YXllcnMpOwogICAgIEludFNpemUgY29udGVudFNpemUoKSBjb25zdDsKICAgICB2b2lkIHNlbmRD
b250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uUmVjdXJzaXZlKENDTGF5ZXJJbXBsKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMGFmMDdjYmRi
ZmQyOTU3ODM4ZmVjMTQ0YjI2YTZkYTliM2RmYzhkZi4uMTcyNDgwNjA0YmQwODYyNGM4NWFhMDJh
MDdhODQ2NjIxZDc4NzRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKQEAgLTI5Miw4ICsyOTIsMTAgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBv
c2l0ZSgpCiAgICAgQVNTRVJUKCFtX2NvbnRleHRMb3N0KTsKICAgICB7CiAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICAgIGRvdWJsZSBmcmFtZURpc3BsYXlUaW1lTXMg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMDsKLSAgICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmFuaW1hdGUoZnJhbWVEaXNwbGF5VGltZU1zKTsKKyAgICAgIGRvdWJsZSBt
b25vdG9uaWNUaW1lTXMgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMDsK
KyAgICAgIGRvdWJsZSB3YWxsQ2xvY2tUaW1lU2VjcyA9IFdURjo6Y3VycmVudFRpbWUoKTsKKwor
ICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lTXMsIHdhbGxD
bG9ja1RpbWVTZWNzKTsKICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOTA1YTA5NGMwN2E2MTFl
MTI3N2NiMTZlYTM3YjIzNWQ2YmU2NTNlMS4uYTJkOTI1ZTJmOTBkMjMxNGIxOGM2NDAyOGQ1ZDg3
NmRjZDczNmQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTUyNSwxMCArNTI1
LDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogY29tcHV0ZSB0aGUgZnJhbWUgZGlzcGxh
eSB0aW1lIG1vcmUgaW50ZWxsaWdlbnRseQotICAgIGRvdWJsZSBmcmFtZURpc3BsYXlUaW1lTXMg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMDsKKyAgICBkb3VibGUgbW9u
b3RvbmljVGltZU1zID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7Cisg
ICAgZG91YmxlIHdhbGxDbG9ja1RpbWVTZWNzID0gV1RGOjpjdXJyZW50VGltZSgpOwogCi0gICAg
bV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPndpbGxEcmF3KGZyYW1lRGlzcGxheVRpbWVNcyk7
Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShmcmFtZURpc3BsYXlUaW1lTXMpOwor
ICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT53aWxsRHJhdyhtb25vdG9uaWNUaW1lTXMp
OworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZU1zLCB3YWxs
Q2xvY2tUaW1lU2Vjcyk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwog
CiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbFRlc3QuY3BwCmluZGV4IGUxYWVjY2M1MzlhNWQ1MWRmZjE4
YTJiZTdjNDJlZWJhMTQ1N2VmYmQuLjE4N2E2MWE4OWZlOGMzYWQ1MWY5Y2U2ZjJiM2VjMjI4M2Mw
NjkyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LmNwcApAQCAtNTMsMTAg
KzUzLDEwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgVHJpdmlh
bFRyYW5zaXRpb24pCiAgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZChjcmVhdGVB
Y3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkp
LCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgY29udHJvbGxlci0+YWRk
KHRvQWRkLnJlbGVhc2UoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsK
KyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVt
bXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDEsIGR1
bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKIH0KQEAgLTcyLDEzICs3MiwxMyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbFRlc3QsIFRyaXZpYWxRdWV1aW5nKQogICAgIGNvbnRyb2xsZXItPmFkZChj
cmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwg
MCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogICAgIGNvbnRyb2xsZXIt
PmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRp
b24oMSwgMSwgMC41ZikpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCi0gICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRl
KDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwg
MSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAyLCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBF
Q1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtOTEsNyAr
OTEsNyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIEludGVycnVw
dCkKICAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsPiBjb250cm9sbGVy
KAogICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OmNyZWF0ZSgmZHVtbXkp
KTsKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5l
dyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9w
YWNpdHkpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxl
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5
KCkpOwogCkBAIC05OSwxMCArOTksMTAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGxUZXN0LCBJbnRlcnJ1cHQpCiAgICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5p
bWF0aW9uOjpXYWl0aW5nRm9yTmV4dFRpY2ssIDApOwogICAgIGNvbnRyb2xsZXItPmFkZCh0b0Fk
ZC5yZWxlYXNlKCkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLjUsICpldmVudHMpOyAv
LyBzZWNvbmQgYW5pbSBzdGFydHMgTk9XLgorICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMC41LCAw
LjUsICpldmVudHMpOyAvLyBzZWNvbmQgYW5pbSBzdGFydHMgTk9XLgogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVt
bXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNSwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjUsIDEuNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VR
KDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhh
c0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTExOSwxNSArMTE5LDE1IEBAIFRFU1QoQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgU2NoZWR1bGVUb2dldGhlcldoZW5BUHJvcGVy
dHlJc0Jsb2NrZWQpCiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihh
ZG9wdFB0cihuZXcgRmFrZVRyYW5zZm9ybVRyYW5zaXRpb24oMSkpLCAyLCBDQ0FjdGl2ZUFuaW1h
dGlvbjo6VHJhbnNmb3JtKSk7CiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1h
dGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIDIsIENDQWN0
aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpl
dmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQ
RUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+
aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICAvLyBTaG91
bGQgbm90IGhhdmUgc3RhcnRlZCB0aGUgZmxvYXQgdHJhbnNpdGlvbiB5ZXQuCiAgICAgRVhQRUNU
X1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgw
LCBkdW1teS5vcGFjaXR5KCkpOwogICAgIC8vIFRoZSB0aGUgZmxvYXQgYW5pbWF0aW9uIHNob3Vs
ZCBoYXZlIHN0YXJ0ZWQgYXQgdGltZSAxIGFuZCBzaG91bGQgYmUgZG9uZS4KLSAgICBjb250cm9s
bGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgMiwg
KmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTE0NywyMCAr
MTQ3LDIwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgU2NoZWR1
bGVUb2dldGhlcldpdGhBbkFuaW1XYWl0aW5nKQogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVB
Y3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMSwgMC41
ZikpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgLy8gQW5pbXMgd2l0
aCBpZCAxIHNob3VsZCBib3RoIHN0YXJ0IG5vdy4KLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAs
ICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAg
RVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVD
VF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIC8vIFRoZSBvcGFjaXR5IGFuaW1hdGlvbiBz
aG91bGQgaGF2ZSBmaW5pc2hlZCBhdCB0aW1lIDEsIGJ1dCB0aGUgZ3JvdXAKICAgICAvLyBvZiBh
bmltYXRpb25zIHdpdGggaWQgMSBkb24ndCBmaW5pc2ggdW50aWwgdGltZSAyIGJlY2F1c2Ugb2Yg
dGhlIGxlbmd0aAogICAgIC8vIG9mIHRoZSB0cmFuc2Zvcm0gYW5pbWF0aW9uLgotICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAy
LCAqZXZlbnRzKTsKICAgICAvLyBTaG91bGQgbm90IGhhdmUgc3RhcnRlZCB0aGUgZmxvYXQgdHJh
bnNpdGlvbiB5ZXQuCiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgLy8gVGhl
IHRoZSBzZWNvbmQgb3BhY2l0eSBhbmltYXRpb24gc2hvdWxkIHN0YXJ0IGF0IHRpbWUgMiBhbmQg
c2hvdWxkIGJlCiAgICAgLy8gZG9uZSBieSB0aW1lIDMKLSAgICBjb250cm9sbGVyLT5hbmltYXRl
KDMsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMywgMywgKmV2ZW50cyk7CiAg
ICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTE3OCwxMyArMTc4LDEzIEBA
IFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgU2NoZWR1bGVBbmltYXRp
b24pCiAgICAgdG9BZGQtPnNldFN0YXJ0VGltZSgxKTsKICAgICBjb250cm9sbGVyLT5hZGQodG9B
ZGQucmVsZWFzZSgpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShj
b250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15
Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBj
b250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRy
b2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3Bh
Y2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMiwgMiwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9w
YWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKIH0KQEAgLTIwNSwxNiArMjA1LDE2IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsVGVzdCwgU2NoZWR1bGVkQW5pbWF0aW9uSW50ZXJydXB0c1J1bm5pbmdBbmltCiAg
ICAgY29udHJvbGxlci0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CiAKICAgICAvLyBGaXJzdCAycyBv
cGFjaXR5IHRyYW5zaXRpb24gc2hvdWxkIHN0YXJ0IGltbWVkaWF0ZWx5LgotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgwLjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMC41LCAwLjUs
ICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKICAgICBFWFBFQ1RfRVEoMC4yNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJv
bGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEs
ICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9s
bGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgMiwg
KmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTIzOCwyMCAr
MjM4LDIwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgU2NoZWR1
bGVkQW5pbWF0aW9uSW50ZXJydXB0c1J1bm5pbmdBbmltCiAgICAgY29udHJvbGxlci0+YWRkKGNy
ZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAw
LCAwLjc1ZikpLCAzLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgLy8gRmly
c3QgMnMgb3BhY2l0eSB0cmFuc2l0aW9uIHNob3VsZCBzdGFydCBpbW1lZGlhdGVseS4KLSAgICBj
b250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
MCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5p
bWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMC41LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAu
NSwgMC41LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVB
bmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVmLCBkdW1teS5vcGFjaXR5KCkpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwg
MSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMywgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAz
LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRp
b24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxl
ci0+YW5pbWF0ZSg0LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDQsIDQsICpl
dmVudHMpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBF
Q1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtMjY4LDI3
ICsyNjgsMjcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBUcml2
aWFsTG9vcGluZykKICAgICB0b0FkZC0+c2V0SXRlcmF0aW9ucygzKTsKICAgICBjb250cm9sbGVy
LT5hZGQodG9BZGQucmVsZWFzZSgpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2
ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBF
Q1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VR
KDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjI1LCAqZXZl
bnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuMjUsIDEuMjUsICpldmVudHMpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBF
Q1RfRVEoMC4yNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgx
Ljc1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNzUsIDEuNzUsICpldmVu
dHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
ICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgyLjI1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDIuMjUsIDIu
MjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1h
dGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC4yNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgyLjc1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRl
KDIuNzUsIDIuNzUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0Fj
dGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7
Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5h
bmltYXRlKDMsIDMsICpldmVudHMpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNB
Y3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiAK
ICAgICAvLyBKdXN0IGJlIGV4dHJhIHN1cmUuCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSg0LCAq
ZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDQsIDQsICpldmVudHMpOwogICAgIEVY
UEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogfQogCkBAIC0zMDUsMjAgKzMwNSwyMCBAQCBU
RVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIEluZmluaXRlTG9vcGluZykK
ICAgICB0b0FkZC0+c2V0SXRlcmF0aW9ucygtMSk7CiAgICAgY29udHJvbGxlci0+YWRkKHRvQWRk
LnJlbGVhc2UoKSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29u
dHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5v
cGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS4yNSwgKmV2ZW50cyk7CisgICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgxLjI1LCAxLjI1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJV
RShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVm
LCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS43NSwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjc1LCAxLjc1LCAqZXZlbnRzKTsKICAgICBF
WFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNU
X0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgx
MDczNzQxODI0LjI1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwNzM3NDE4
MjQuMjUsIDEwNzM3NDE4MjQuMjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xs
ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC4yNWYsIGR1bW15Lm9w
YWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDczNzQxODI0Ljc1LCAqZXZlbnRz
KTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwNzM3NDE4MjQuNzUsIDEwNzM3NDE4MjQuNzUs
ICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAKQEAgLTMzOSwy
NyArMzM5LDI3IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgUGF1
c2VSZXN1bWUpCiAgICAgY29uc3QgaW50IGlkID0gMTsKICAgICBjb250cm9sbGVyLT5hZGQoY3Jl
YXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAs
IDEpKSwgaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKLSAgICBjb250cm9sbGVy
LT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2
ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMC41LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwgMC41LCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAKICAgICBFWFBFQ1Rf
VFJVRShjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9u
OjpPcGFjaXR5KSk7CiAgICAgY29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0Fj
dGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSktPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpQ
YXVzZWQsIDAuNWYpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LCAqZXZlbnRzKTsK
KyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwMjQsIDEwMjQsICpldmVudHMpOwogICAgIEVYUEVD
VF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEo
MC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmdl
dEFjdGl2ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBj
b250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFj
aXR5KS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIDEwMjQpOwogCi0g
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LjI1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVy
LT5hbmltYXRlKDEwMjQuMjUsIDEwMjQuMjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1
bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LjUsICpldmVudHMp
OworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTAyNC41LCAxMDI0LjUsICpldmVudHMpOwogICAg
IEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQ
RUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiB9CkBAIC0zNzYsMTkgKzM3NiwxOSBAQCBURVNU
KENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIEFib3J0QUdyb3VwZWRBbmltYXRp
b24pCiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihu
ZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigyLCAwLCAxKSksIGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6
T3BhY2l0eSkpOwogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRv
cHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMSwgMC43NWYpKSwgMiwgQ0NBY3RpdmVB
bmltYXRpb246Ok9wYWNpdHkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1Rf
VFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAs
IGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsK
KyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC41Ziwg
ZHVtbXkub3BhY2l0eSgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmdldEFjdGl2
ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBjb250cm9s
bGVyLT5nZXRBY3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KS0+
c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIDEpOwotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVu
dHMpOwogICAgIEVYUEVDVF9UUlVFKCFjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlclRlc3QuY3BwCmluZGV4IGM0ZjEwM2EzY2FmZTQ2OGU0YjhlNzk3ODZkMmIyMTg3ZTQ1
ZDdlYTEuLjhhNjI3ZmEwZjY1OWQ4MWQzODc1Y2UxMmFjYWNhNmYwYjI2ZDczZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyVGVzdC5jcHAKQEAgLTIwMSw4ICsyMDEsOCBAQCBURVNUKENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyVGVzdCwgc3luY0NvbXBsZXRlZEFuaW1hdGlvbikKIAogICAgIC8v
IFN0ZXAgdGhyb3VnaCB0aGUgYW5pbWF0aW9uIHVudGlsIGl0IGlzIGZpbmlzaGVkLiBBdCB0aGUg
bmV4dCBzeW5jLCB0aGUgbWFpbiB0aHJlYWQncyBhbmltYXRpb24gc2hvdWxkIGJlIGNsZWFyZWQu
CiAgICAgT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiBldmVudHMoYWRvcHRQdHIobmV3
IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKSk7Ci0gICAgY29udHJvbGxlckltcGwtPmFuaW1hdGUo
MCwgKmV2ZW50cyk7Ci0gICAgY29udHJvbGxlckltcGwtPmFuaW1hdGUoMiwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlckltcGwtPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxl
ckltcGwtPmFuaW1hdGUoMiwgMiwgKmV2ZW50cyk7CiAKICAgICBFWFBFQ1RfRkFMU0UoY29udHJv
bGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0
eSkpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKaW5kZXggZWQwNTJhOWMzZDg2OWM3YWU5MjcxZjYxMWEzOWM0NWFiYThi
YjI5Ny4uZDAwZjQwNmIzNTAxY2E5YzNmN2QxYjQ0MDVmYTg4NjZlNDVhNzI4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKQEAgLTM1MSw2ICszNTEsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKICAgICBjb25zdCBmbG9hdCBtaW5QYWdlU2NhbGUgPSAw
LjUsIG1heFBhZ2VTY2FsZSA9IDQ7CiAgICAgY29uc3QgZG91YmxlIHN0YXJ0VGltZU1zID0gMTAw
MDsKICAgICBjb25zdCBkb3VibGUgZHVyYXRpb25NcyA9IDEwMDsKKyAgICBjb25zdCBkb3VibGUg
aGFsZndheVRocm91Z2hBbmltYXRpb24gPSBzdGFydFRpbWVNcyArIGR1cmF0aW9uTXMgLyAyOwor
ICAgIGNvbnN0IGRvdWJsZSBlbmRUaW1lTXMgPSBzdGFydFRpbWVNcyArIGR1cmF0aW9uTXM7CiAK
ICAgICAvLyBOb24tYW5jaG9yIHpvb20taW4KICAgICB7CkBAIC0zNTksOSArMzYxLDkgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiAgICAgICAg
IHNjcm9sbExheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCg1MCwgNTApKTsKIAogICAg
ICAgICBtX2hvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRTaXplKDAsIDApLCBm
YWxzZSwgMiwgc3RhcnRUaW1lTXMsIGR1cmF0aW9uTXMpOwotICAgICAgICBtX2hvc3RJbXBsLT5h
bmltYXRlKHN0YXJ0VGltZU1zICsgZHVyYXRpb25NcyAvIDIpOworICAgICAgICBtX2hvc3RJbXBs
LT5hbmltYXRlKGhhbGZ3YXlUaHJvdWdoQW5pbWF0aW9uLCBoYWxmd2F5VGhyb3VnaEFuaW1hdGlv
bik7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdFJlZHJhdyk7Ci0gICAgICAgIG1f
aG9zdEltcGwtPmFuaW1hdGUoc3RhcnRUaW1lTXMgKyBkdXJhdGlvbk1zKTsKKyAgICAgICAgbV9o
b3N0SW1wbC0+YW5pbWF0ZShlbmRUaW1lTXMsIGVuZFRpbWVNcyk7CiAgICAgICAgIEVYUEVDVF9U
UlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7CiAKICAgICAgICAgT3duUHRyPENDU2Nyb2xsQW5kU2Nh
bGVTZXQ+IHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CkBA
IC0zNzYsNyArMzc4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2Nh
bGVBbmltYXRpb24pCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQ
b2ludCg1MCwgNTApKTsKIAogICAgICAgICBtX2hvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbihJbnRTaXplKDI1LCAyNSksIHRydWUsIG1pblBhZ2VTY2FsZSwgc3RhcnRUaW1lTXMsIGR1
cmF0aW9uTXMpOwotICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKHN0YXJ0VGltZU1zICsgZHVy
YXRpb25Ncyk7CisgICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoZW5kVGltZU1zLCBlbmRUaW1l
TXMpOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwogICAgICAgICBF
WFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RDb21taXQpOwogCkBAIC04NDYsNyArODQ4LDcgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aXNpYmlsaXR5Q2hhbmdlUmVzZXRzRGFtYWdl
KQogICAgIC8vIEZpcnN0IGZyYW1lOiBpZ25vcmUuCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRy
YXdMYXllcnMoKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKLSAKKwog
ICAgIC8vIFNlY29uZCBmcmFtZTogbm90aGluZyBoYXMgY2hhbmdlZCAtLS0gc28gd2Ugc291bGRu
J3QgcHVzaCBhbnl0aGluZyB3aXRoIHBhcnRpYWwgc3dhcC4KICAgICBsYXllclRyZWVIb3N0SW1w
bC0+ZHJhd0xheWVycygpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKaW5kZXggZDdkZDA1NTk1YmZlNTI2YTUwN2U4YjcyZTQ4ZGE3YzE4Njc2MzQ5NS4uM2M5
N2NhY2EyMTNjMDhjYmE1M2FmMmIxZDUyNTZmYzg0MTIxNGMwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQo
Q0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJz
KENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxB
bmRTY2FsZShjb25zdCBJbnRTaXplJiwgZmxvYXQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSB7IH0KIAogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIENDTGF5ZXJBbmlt
YXRpb25EZWxlZ2F0ZQpAQCAtMTAyLDkgKzEwMiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRp
bWVNcykKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhkb3VibGUgbW9ub3RvbmljVGlt
ZU1zLCBkb3VibGUgd2FsbENsb2NrVGltZVNlY3MpCiAgICAgewotICAgICAgICBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGZyYW1lQmVnaW5UaW1lTXMpOworICAgICAgICBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKG1vbm90b25pY1RpbWVNcywgd2FsbENsb2Nr
VGltZVNlY3MpOwogICAgICAgICBtX3Rlc3RIb29rcy0+YW5pbWF0ZUxheWVycyh0aGlzKTsKICAg
ICB9CiAKQEAgLTIxMiw5ICsyMTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTW9ja0xheWVyVHJlZUhvc3RDbGllbnQodGVzdEhvb2tzKSk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogICAg
IHsKLSAgICAgICAgbV90ZXN0SG9va3MtPnVwZGF0ZUFuaW1hdGlvbnMoZnJhbWVCZWdpblRpbWUp
OworICAgICAgICBtX3Rlc3RIb29rcy0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130520</attachid>
            <date>2012-03-06 19:16:57 -0800</date>
            <delta_ts>2012-03-07 10:50:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120306221656.patch</filename>
            <type>text/plain</type>
            <size>58095</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uYzMxZWRiYWVjNzI2MzYwMjc0ODE1YjQxNzk2YmE3
YzM1YjRmNDc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAzLTA2ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKENDSW5wdXRIYW5kbGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNv
bHZlQ29uZmxpY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbDo6dGlja0FuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oOgorICAgICAgICAoQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlUGFnZVNjYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoK
KyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
YWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
YWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0ZvclRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxl
QW5pbWF0aW9uLmg6CisgICAgICAgIChDQ1BhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZW5kVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAg
ICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAzLTA2ICBEYXZpZCBDb3J2
b3lzaWVyICA8ZGF2aWQuY29ydm95c2llckBvcmFuZ2UuY29tPgogCiAgICAgICAgIFVucmVsZWFz
ZWQgZ3N0X29iamVjdF9yZWZlcmVuY2UgdG8gYXVkaW8gc2luayBpbiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjdjYzA4ZThiZDQ5N2Y1
NDVmOWIxOGVmMGUyNTI2NWIyNmM1ZGQxOS4uMWUzNWVlNjAyOTA1OGFiYTUzNGUwODRkMDRkYWJi
MjAyZDFkOThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAxMi0wMy0wNiAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIEVuc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3QgdGltZSB3aGVuIG5vdGlmeWlu
ZyBhbmltYXRpb24gc3RhcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzk1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp3aWxsRHJhdyk6Cisg
ICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgIChX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVT
VCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcDoK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6
dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0SW1wbDo6
YW5pbWF0ZUxheWVycyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojp1
cGRhdGVBbmltYXRpb25zKToKKwogMjAxMi0wMy0wNiAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lv
c2hpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBbV2ViU29ja2V0XSBBZGQg
V2ViU29ja2V0IGV4dGVuc2lvbnMgcXVlcnkgV2ViS2l0IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5k
bGVyLmgKaW5kZXggNmMwNTU5OTRjNThlY2E0MTEzMTlhOWM5OWQxNDNmOWMxN2YzZTJjMi4uMzM3
MjFmMWRmYzcwYzQ2NTcyNDdkNjc4MWZlOTY5ZjFhMjBiODlkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0
SGFuZGxlci5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN0YXJ0VGlt
ZU1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVy
YXRpb25NcykgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgc3RhcnRUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgZHVyYXRpb24pID0gMDsKIAogcHJvdGVjdGVkOgogICAgIENDSW5wdXRIYW5kbGVy
Q2xpZW50KCkgeyB9CkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ0lu
cHV0SGFuZGxlcigpIHsgfQogCiAgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUgbW9ub3RvbmljVGltZSkgPSAw
OwogCiBwcm90ZWN0ZWQ6CiAgICAgQ0NJbnB1dEhhbmRsZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCmluZGV4IGU4ZDZi
YzdlZjc1YWM0MDNkMTFjYTYxMTU0ODhlY2M3MWQ1NjM1ZDUuLmI4NDRiM2NiNDUxZmRmZmFmNjc3
NmE2ZGYwYTE5ZmI5ZTQ1M2U2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApAQCAtNDksMTUgKzQ5LDE1IEBAIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbDo6fkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCgp
CiB7CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjphbmltYXRlKGRv
dWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMp
Cit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YW5pbWF0ZShkb3VibGUgbW9u
b3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9y
JiBldmVudHMpCiB7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGZyYW1l
QmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3Rh
cnRUaW1lKGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsK
LSAgICByZXNvbHZlQ29uZmxpY3RzKGZyYW1lQmVnaW5UaW1lU2Vjcyk7Ci0gICAgdGlja0FuaW1h
dGlvbnMoZnJhbWVCZWdpblRpbWVTZWNzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
TmV4dFRpY2sobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSwgZXZlbnRzKTsKKyAgICBzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1Rp
bWUsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJp
bGl0eShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lLCBldmVudHMpOworICAgIHJlc29sdmVD
b25mbGljdHMobW9ub3RvbmljVGltZSk7CisgICAgdGlja0FuaW1hdGlvbnMobW9ub3RvbmljVGlt
ZSk7CiAgICAgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoZXZlbnRzKTsKLSAgICBzdGFydEFuaW1h
dGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5UaW1lU2VjcywgZXZl
bnRzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KG1v
bm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsIGV2ZW50cyk7CiB9CiAKIHZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjphZGQoUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4g
YW5pbSkKQEAgLTgzLDI4ICs4MywyOCBAQCBib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0
aW5nRm9yTmV4dFRpY2soZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50
cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yTmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tU
aW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlm
IChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246
OldhaXRpbmdGb3JOZXh0VGljaykgewotICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ld
LT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAg
ICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG5vdyk7Ci0gICAgICAgICAg
ICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQt
PmlkKCksIG5vdykpOworICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5T
dGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CisgICAgICAg
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsK
KyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0
ZShtX2NsaWVudC0+aWQoKSwgd2FsbENsb2NrVGltZSkpOwogICAgICAgICB9CiAgICAgfQogfQog
Ci12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZl
bnRzKQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xv
Y2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRp
b246OldhaXRpbmdGb3JTdGFydFRpbWUgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zdGFydFRp
bWUoKSA8PSBub3cpIHsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVu
U3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICBldmVu
dHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCks
IG5vdykpOworICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ydW5TdGF0ZSgpID09
IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lICYmIG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+c3RhcnRUaW1lKCkgPD0gbW9ub3RvbmljVGltZSkgeworICAgICAgICAgICAgbV9h
Y3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmlu
ZywgbW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIHdhbGxDbG9ja1RpbWUpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6
OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG5vdywg
Q0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5
KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25F
dmVudHNWZWN0b3ImIGV2ZW50cykKIHsKICAgICAvLyBGaXJzdCBjb2xsZWN0IHJ1bm5pbmcgcHJv
cGVydGllcy4KICAgICBUYXJnZXRQcm9wZXJ0aWVzIGJsb2NrZWRQcm9wZXJ0aWVzOwpAQCAtMTM0
LDEzICsxMzQsMTMgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkKIAogICAgICAgICAgICAgLy8g
SWYgdGhlIGludGVyc2VjdGlvbiBpcyBudWxsLCB0aGVuIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHRo
ZSBhbmltYXRpb25zIGluIHRoZSBncm91cC4KICAgICAgICAgICAgIGlmIChudWxsSW50ZXJzZWN0
aW9uKSB7Ci0gICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0
ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShub3cpOwotICAgICAgICAgICAgICAgIGV2
ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQo
KSwgbm93KSk7CisgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5T
dGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CisgICAgICAg
ICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGlt
ZSk7CisgICAgICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCB3YWxsQ2xvY2tUaW1lKSk7CiAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsg
KytqKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdy
b3VwKCkgPT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5ncm91cCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5p
bWF0aW9uOjpSdW5uaW5nLCBub3cpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVB
bmltYXRpb25zW2pdLT5zZXRTdGFydFRpbWUobm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1
bm5pbmcsIG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVB
bmltYXRpb25zW2pdLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNDgsNyArMTQ4
LDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpCit2b2lk
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUg
bW9ub3RvbmljVGltZSkKIHsKICAgICAvLyBGaW5kIGFueSBhbmltYXRpb25zIHRoYXQgYXJlIGFu
aW1hdGluZyB0aGUgc2FtZSBwcm9wZXJ0eSBhbmQgcmVzb2x2ZSB0aGUKICAgICAvLyBjb25maWN0
LiBXZSBjb3VsZCBldmVudHVhbGx5IGJsZW5kLCBidXQgZm9yIG5vdyB3ZSdsbCBqdXN0IGFib3J0
IHRoZQpAQCAtMTYwLDkgKzE2MCw5IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpCiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2opIHsKICAgICAg
ICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2pdLT5ydW5TdGF0ZSgpID09IENDQWN0
aXZlQW5pbWF0aW9uOjpSdW5uaW5nICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJv
cGVydHkoKSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnRhcmdldFByb3BlcnR5KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkg
PiBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnN0YXJ0VGltZSgpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlv
bjo6QWJvcnRlZCwgbm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0
aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIG1vbm90b25p
Y1RpbWUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpB
Ym9ydGVkLCBub3cpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbW9ub3RvbmljVGlt
ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTQs
MTkgKzE5NCwxOSBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cHVyZ2VG
aW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZQogICAgIH0KIH0KIAotdm9pZCBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cp
Cit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMoZG91
YmxlIG1vbm90b25pY1RpbWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2
ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZykgewotICAgICAg
ICAgICAgZG91YmxlIHRyaW1tZWQgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9D
dXJyZW50SXRlcmF0aW9uKG5vdyk7CisgICAgICAgICAgICBkb3VibGUgdHJpbW1lZCA9IG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+dHJpbVRpbWVUb0N1cnJlbnRJdGVyYXRpb24obW9ub3RvbmljVGlt
ZSk7CiAKICAgICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQ
cm9wZXJ0eSgpKSB7CiAKICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5z
Zm9ybTogewogICAgICAgICAgICAgICAgIGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUq
IHRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT5jdXJ2ZSgp
LT50b1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXggbWF0cml4ID0gdHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUtPmdldFZh
bHVlKHRyaW1tZWQsIG1fY2xpZW50LT5ib3VuZHMoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+aXNGaW5pc2hlZEF0KG5vdykpCi0gICAgICAgICAgICAgICAg
ICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246
OkZpbmlzaGVkLCBub3cpOworICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPmlzRmluaXNoZWRBdChtb25vdG9uaWNUaW1lKSkKKyAgICAgICAgICAgICAgICAgICAgbV9h
Y3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6RmluaXNo
ZWQsIG1vbm90b25pY1RpbWUpOwogCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNldFRyYW5z
Zm9ybShtYXRyaXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE1LDggKzIxNSw4IEBA
IHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3Vi
bGUgbm93KQogICAgICAgICAgICAgY2FzZSBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eTogewog
ICAgICAgICAgICAgICAgIGNvbnN0IENDRmxvYXRBbmltYXRpb25DdXJ2ZSogZmxvYXRBbmltYXRp
b25DdXJ2ZSA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y3VydmUoKS0+dG9GbG9hdEFuaW1hdGlv
bkN1cnZlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgb3BhY2l0eSA9IGZsb2F0QW5p
bWF0aW9uQ3VydmUtPmdldFZhbHVlKHRyaW1tZWQpOwotICAgICAgICAgICAgICAgIGlmIChtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPmlzRmluaXNoZWRBdChub3cpKQotICAgICAgICAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpG
aW5pc2hlZCwgbm93KTsKKyAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ld
LT5pc0ZpbmlzaGVkQXQobW9ub3RvbmljVGltZSkpCisgICAgICAgICAgICAgICAgICAgIG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVk
LCBtb25vdG9uaWNUaW1lKTsKIAogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZXRPcGFjaXR5
KG9wYWNpdHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaAppbmRleCAzNTQwMDQ5YjAzNjFmZGU2
MjM5NWFiYzBlNGUxNTE3MDQyZDQ0OGIwLi44ZDBlOGQxNDBiNjY5NDBkMWIwYTQ0N2Y2ODBjMWY5
YjBmZTlhZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwoKTsKIAotICAgIHZvaWQgYW5pbWF0ZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZv
aWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CiAKICAgICB2b2lkIGFkZChQYXNzT3duUHRyPENDQWN0
aXZlQW5pbWF0aW9uPik7CiAKQEAgLTc4LDEzICs3OCwxMyBAQCBwcml2YXRlOgogICAgIC8vIFRo
ZSBhbmltYXRvciBpcyBvd25lZCBieSB0aGUgbGF5ZXIuCiAgICAgZXhwbGljaXQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbENsaWVu
dCopOwogCi0gICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91Ymxl
IG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3Im
KTsKLSAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHko
ZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHJlc29sdmVD
b25mbGljdHMoZG91YmxlIG5vdyk7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
TmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zv
clN0YXJ0VGltZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5n
Rm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENs
b2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKKyAgICB2b2lkIHJlc29sdmVDb25m
bGljdHMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgcHVyZ2VGaW5pc2hlZEFuaW1h
dGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKIAotICAgIHZvaWQgdGlja0FuaW1hdGlv
bnMoZG91YmxlIG5vdyk7CisgICAgdm9pZCB0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rvbmlj
VGltZSk7CiAKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQqIG1fY2xp
ZW50OwogICAgIFZlY3RvcjxPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmlt
YXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBmNzE1
YWUzNWQxN2Y5MGI3NGRiMjJkYzBmM2M5NGU2NjcwNTE5OTlhLi4yNjRkYjA5OGE0MmVmNTMzNGI1
ODhlYTZkYzlmODU5ZDk3MzEwZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcApAQCAtOTcsMTMgKzk3LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjb250ZXh0KCkKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXll
clJlbmRlcmVyLT5jb250ZXh0KCkgOiAwOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQog
ewotICAgIGFuaW1hdGVQYWdlU2NhbGUoZnJhbWVCZWdpblRpbWVNcyk7Ci0gICAgYW5pbWF0ZUxh
eWVycyhmcmFtZUJlZ2luVGltZU1zKTsKKyAgICBhbmltYXRlUGFnZVNjYWxlKG1vbm90b25pY1Rp
bWUpOworICAgIGFuaW1hdGVMYXllcnMobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VT
Y2FsZSwgZG91YmxlIHN0YXJ0VGltZU1zLCBkb3VibGUgZHVyYXRpb25NcykKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFy
Z2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0
YXJ0VGltZSwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIGlmICghbV9zY3JvbGxMYXllckltcGwp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNCwxNSArMTE0LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9z
aXRpb24sCiAgICAgSW50U2l6ZSBzY2FsZWRDb250ZW50U2l6ZSA9IGNvbnRlbnRTaXplKCk7CiAg
ICAgc2NhbGVkQ29udGVudFNpemUuc2NhbGUobV9wYWdlU2NhbGVEZWx0YSk7CiAKLSAgICBtX3Bh
Z2VTY2FsZUFuaW1hdGlvbiA9IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoc2Nyb2xsVG90
YWwsIHNjYWxlVG90YWwsIG1fdmlld3BvcnRTaXplLCBzY2FsZWRDb250ZW50U2l6ZSwgc3RhcnRU
aW1lTXMpOworICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uID0gQ0NQYWdlU2NhbGVBbmltYXRpb246
OmNyZWF0ZShzY3JvbGxUb3RhbCwgc2NhbGVUb3RhbCwgbV92aWV3cG9ydFNpemUsIHNjYWxlZENv
bnRlbnRTaXplLCBzdGFydFRpbWUpOwogCiAgICAgaWYgKGFuY2hvclBvaW50KSB7CiAgICAgICAg
IEludFNpemUgd2luZG93QW5jaG9yKHRhcmdldFBvc2l0aW9uKTsKICAgICAgICAgd2luZG93QW5j
aG9yLnNjYWxlKHNjYWxlVG90YWwgLyBwYWdlU2NhbGUpOwogICAgICAgICB3aW5kb3dBbmNob3Ig
LT0gc2Nyb2xsVG90YWw7Ci0gICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLT56b29tV2l0aEFu
Y2hvcih3aW5kb3dBbmNob3IsIHBhZ2VTY2FsZSwgZHVyYXRpb25Ncyk7CisgICAgICAgIG1fcGFn
ZVNjYWxlQW5pbWF0aW9uLT56b29tV2l0aEFuY2hvcih3aW5kb3dBbmNob3IsIHBhZ2VTY2FsZSwg
ZHVyYXRpb24pOwogICAgIH0gZWxzZQotICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9v
bVRvKHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0aW9uTXMpOworICAgICAgICBtX3Bh
Z2VTY2FsZUFuaW1hdGlvbi0+em9vbVRvKHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0
aW9uKTsKIAogICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAg
IG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwpAQCAtMjQ3LDE0ICsyNDcs
MTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpvcHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1Jl
bmRlclBhc3NMaXN0JiBwYXNzZXMpCiAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0
b21Db3VudHMoIlJlbmRlcmVyNC5waXhlbE92ZXJkcmF3Q3VsbGVkIiwgc3RhdGljX2Nhc3Q8aW50
Pihub3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNDdWxsZWQpLCAxMDAsIDEw
MDAwMDAsIDUwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJz
UmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNz
LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzLCBib29sJiBkaWRBbmltYXRlLCBib29s
JiBuZWVkc0FuaW1hdGVMYXllcnMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVM
YXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwqIGN1cnJlbnQsIGRvdWJsZSBtb25vdG9uaWNUaW1l
LCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywg
Ym9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNBbmltYXRlTGF5ZXJzKQogewogICAgIGJvb2wg
c3VidHJlZU5lZWRzQW5pbWF0ZUxheWVycyA9IGZhbHNlOwogCiAgICAgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsKiBjdXJyZW50Q29udHJvbGxlciA9IGN1cnJlbnQtPmxheWVyQW5pbWF0
aW9uQ29udHJvbGxlcigpOwogCiAgICAgYm9vbCBoYWRBY3RpdmVBbmltYXRpb24gPSBjdXJyZW50
Q29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci0gICAgY3VycmVudENvbnRyb2xsZXIt
PmFuaW1hdGUoZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMpOworICAgIGN1cnJlbnRDb250cm9s
bGVyLT5hbmltYXRlKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsIGV2ZW50cyk7CiAgICAg
Ym9vbCBzdGFydGVkQW5pbWF0aW9uID0gZXZlbnRzLnNpemUoKSA+IDA7CiAKICAgICAvLyBXZSBh
bmltYXRlZCBpZiB3ZSBlaXRoZXIgdGlja2VkIGEgcnVubmluZyBhbmltYXRpb24sIG9yIHN0YXJ0
ZWQgYSBuZXcgYW5pbWF0aW9uLgpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVudCwgZG91
YmxlIGZyCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnQtPmNoaWxkcmVuKCku
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgYm9vbCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyA9IGZh
bHNlOwotICAgICAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKGN1cnJlbnQtPmNoaWxkcmVuKClb
aV0uZ2V0KCksIGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzLCBkaWRBbmltYXRlLCBjaGlsZE5l
ZWRzQW5pbWF0ZUxheWVycyk7CisgICAgICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoY3VycmVu
dC0+Y2hpbGRyZW4oKVtpXS5nZXQoKSwgbW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSwgZXZl
bnRzLCBkaWRBbmltYXRlLCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyk7CiAgICAgICAgIGlmIChj
aGlsZE5lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgICAgIHN1YnRyZWVOZWVkc0FuaW1hdGVM
YXllcnMgPSB0cnVlOwogICAgIH0KQEAgLTY2MiwyNiArNjYyLDI2IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2V0RnVsbFJvb3RMYXllckRhbWFnZSgpCiAgICAgfQogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIGZyYW1lQmVnaW5UaW1l
TXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIG1v
bm90b25pY1RpbWVTZWNzKQogewogICAgIGlmICghbV9wYWdlU2NhbGVBbmltYXRpb24pCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEludFNpemUgc2Nyb2xsVG90YWwgPSB0b1NpemUobV9zY3JvbGxM
YXllckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVs
dGEoKSk7CiAKLSAgICBzZXRQYWdlU2NhbGVEZWx0YShtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+cGFn
ZVNjYWxlQXRUaW1lKGZyYW1lQmVnaW5UaW1lTXMpIC8gbV9wYWdlU2NhbGUpOwotICAgIEludFNp
emUgbmV4dFNjcm9sbCA9IG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5zY3JvbGxPZmZzZXRBdFRpbWUo
ZnJhbWVCZWdpblRpbWVNcyk7CisgICAgc2V0UGFnZVNjYWxlRGVsdGEobV9wYWdlU2NhbGVBbmlt
YXRpb24tPnBhZ2VTY2FsZUF0VGltZShtb25vdG9uaWNUaW1lU2VjcykgLyBtX3BhZ2VTY2FsZSk7
CisgICAgSW50U2l6ZSBuZXh0U2Nyb2xsID0gbV9wYWdlU2NhbGVBbmltYXRpb24tPnNjcm9sbE9m
ZnNldEF0VGltZShtb25vdG9uaWNUaW1lU2Vjcyk7CiAgICAgbmV4dFNjcm9sbC5zY2FsZSgxIC8g
bV9wYWdlU2NhbGVEZWx0YSk7CiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KG5leHRT
Y3JvbGwgLSBzY3JvbGxUb3RhbCk7CiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCk7CiAKLSAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29t
cGxldGVBdFRpbWUoZnJhbWVCZWdpblRpbWVNcykpIHsKKyAgICBpZiAobV9wYWdlU2NhbGVBbmlt
YXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUobW9ub3RvbmljVGltZVNlY3MpKSB7CiAg
ICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLmNsZWFyKCk7CiAgICAgICAgIG1fY2xpZW50LT5z
ZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQordm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBk
b3VibGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBpZiAoIW1fc2V0dGluZ3MudGhyZWFkZWRBbmlt
YXRpb25FbmFibGVkIHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycyB8fCAhbV9yb290TGF5ZXJJbXBs
KQogICAgICAgICByZXR1cm47CkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQogICAgIE93blB0
cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKGFkb3B0UHRyKG5ldyBDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3RvcikpOwogCiAgICAgYm9vbCBkaWRBbmltYXRlID0gZmFsc2U7Ci0gICAgYW5p
bWF0ZUxheWVyc1JlY3Vyc2l2ZShtX3Jvb3RMYXllckltcGwuZ2V0KCksIGZyYW1lQmVnaW5UaW1l
TXMgLyAxMDAwLCAqZXZlbnRzLCBkaWRBbmltYXRlLCBtX25lZWRzQW5pbWF0ZUxheWVycyk7Cisg
ICAgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShtX3Jvb3RMYXllckltcGwuZ2V0KCksIG1vbm90b25p
Y1RpbWUsIHdhbGxDbG9ja1RpbWUsICpldmVudHMsIGRpZEFuaW1hdGUsIG1fbmVlZHNBbmltYXRl
TGF5ZXJzKTsKIAogICAgIGlmICghZXZlbnRzLT5pc0VtcHR5KCkpCiAgICAgICAgIG1fY2xpZW50
LT5wb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKGV2ZW50cy5yZWxl
YXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGZmNDdlYjA4
ZmMyODM3MDAyNzMzMmY5ODViN2IxYzhmMmNkYjllN2UuLjVmMTc5ZGUzZGUyMWVmZmUzNGQxOGEw
YzkxM2MzM2ZlZjllMTk4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
QEAgLTY4LDEyICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVy
ZUJlZ2luKCk7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCwgY29u
c3QgSW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5kKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdl
dFBvc2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBzdGFy
dFRpbWVNcywgZG91YmxlIGR1cmF0aW9uTXMpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCBhbmNob3JQ
b2ludCwgZmxvYXQgcGFnZVNjYWxlLCBkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZHVyYXRpb24p
OwogCiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5D
b21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGUoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYW5pbWF0ZShkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYW5pbWF0ZShkb3VibGUgZnJhbWVEaXNwbGF5VGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUp
OwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7CiAKICAgICBib29sIGNhbkRyYXcoKTsK
QEAgLTEzMyw3ICsxMzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhbmltYXRlUGFnZVNjYWxl
KGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3Rpbmcu
Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMp
OworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBk
b3VibGUgd2FsbENsb2NrVGltZSk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBt
X2NsaWVudDsKICAgICBpbnQgbV9zb3VyY2VGcmFtZU51bWJlcjsKQEAgLTE1Myw3ICsxNTMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1w
bCogcm9vdERyYXdMYXllciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogICAgIHZvaWQgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmLCBD
Q0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgdm9pZCBvcHRpbWl6ZVJl
bmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0Jik7Ci0gICAgdm9pZCBhbmltYXRlTGF5ZXJzUmVj
dXJzaXZlKENDTGF5ZXJJbXBsKiwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmltYXRp
b25FdmVudHNWZWN0b3ImLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXll
cnMpOworICAgIHZvaWQgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJiwgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNBbmltYXRlTGF5ZXJzKTsKICAg
ICBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kQ29udGV4dExvc3RB
bmRSZXN0b3JlZE5vdGlmaWNhdGlvblJlY3Vyc2l2ZShDQ0xheWVySW1wbCopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VT
Y2FsZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKaW5kZXggMzNiNmYyMmZiZWRmNTNlMWJh
NGI2Mjk0NDkxNDg3ZjYwOGFkNTA4Yi4uNDlhMTI1ZDIzYzM4Nzc0NWJmYzUwOTEyODcyY2FhZjJm
ZjM4OGQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcApAQCAt
MjIsNyArMjIsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CkBAIC0zNiwxMyArMzYsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRy
PENDUGFnZVNjYWxlQW5pbWF0aW9uPiBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6
ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRvdWJsZSBzdGFydFRp
bWVNcykKK1Bhc3NPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IENDUGFnZVNjYWxlQW5pbWF0
aW9uOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0
YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6
ZSwgZG91YmxlIHN0YXJ0VGltZSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUGFnZVNj
YWxlQW5pbWF0aW9uKHNjcm9sbFN0YXJ0LCBwYWdlU2NhbGVTdGFydCwgd2luZG93U2l6ZSwgY29u
dGVudFNpemUsIHN0YXJ0VGltZU1zKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1BhZ2VT
Y2FsZUFuaW1hdGlvbihzY3JvbGxTdGFydCwgcGFnZVNjYWxlU3RhcnQsIHdpbmRvd1NpemUsIGNv
bnRlbnRTaXplLCBzdGFydFRpbWUpKTsKIH0KIAogCi1DQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VT
Y2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250
ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZU1zKQorQ0NQYWdlU2NhbGVBbmltYXRpb246OkNDUGFn
ZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2Nh
bGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVu
dFNpemUsIGRvdWJsZSBzdGFydFRpbWUpCiAgICAgOiBtX3Njcm9sbFN0YXJ0KHNjcm9sbFN0YXJ0
KQogICAgICwgbV9wYWdlU2NhbGVTdGFydChwYWdlU2NhbGVTdGFydCkKICAgICAsIG1fd2luZG93
U2l6ZSh3aW5kb3dTaXplKQpAQCAtNTAsMTEgKzUwLDExIEBAIENDUGFnZVNjYWxlQW5pbWF0aW9u
OjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQg
cGFnCiAgICAgLCBtX2FuY2hvck1vZGUoZmFsc2UpCiAgICAgLCBtX3Njcm9sbEVuZChzY3JvbGxT
dGFydCkKICAgICAsIG1fcGFnZVNjYWxlRW5kKHBhZ2VTY2FsZVN0YXJ0KQotICAgICwgbV9zdGFy
dFRpbWVNcyhzdGFydFRpbWVNcykKKyAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKIHsKIH0K
IAotdm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVRvKGNvbnN0IEludFNpemUmIGZpbmFs
U2Nyb2xsLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpCit2b2lkIEND
UGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZs
b2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgaWYgKG1fcGFnZVNj
YWxlU3RhcnQgIT0gZmluYWxQYWdlU2NhbGUpIHsKICAgICAgICAgLy8gRm9yIHVuaWZvcm0tbG9v
a2luZyB6b29taW5nLCBpbmZlciB0aGUgYW5jaG9yIChwb2ludCB0aGF0IHJlbWFpbnMgaW4KQEAg
LTc4LDE4ICs3OCwxOCBAQCB2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8oY29uc3Qg
SW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYQogICAgICAgICBmbG9hdCBy
YXRpb1kgPSAoc3RhcnRSZWN0LnkoKSAtIGVuZFJlY3QueSgpKSAvIChlbmRSZWN0LmhlaWdodCgp
IC0gc3RhcnRSZWN0LmhlaWdodCgpKTsKIAogICAgICAgICBJbnRTaXplIGFuY2hvcihtX3dpbmRv
d1NpemUud2lkdGgoKSAqIHJhdGlvWCwgbV93aW5kb3dTaXplLmhlaWdodCgpICogcmF0aW9ZKTsK
LSAgICAgICAgem9vbVdpdGhBbmNob3IoYW5jaG9yLCBmaW5hbFBhZ2VTY2FsZSwgZHVyYXRpb25N
cyk7CisgICAgICAgIHpvb21XaXRoQW5jaG9yKGFuY2hvciwgZmluYWxQYWdlU2NhbGUsIGR1cmF0
aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHVyZSB0cmFuc2xh
dGlvbiwgdGhlbiB0aGVyZSBleGlzdHMgbm8gYW5jaG9yLiBMaW5lYXJseQogICAgICAgICAvLyBp
bnRlcnBvbGF0ZSB0aGUgc2Nyb2xsIG9mZnNldCBpbnN0ZWFkLgogICAgICAgICBtX3Njcm9sbEVu
ZCA9IGZpbmFsU2Nyb2xsOwogICAgICAgICBtX3BhZ2VTY2FsZUVuZCA9IGZpbmFsUGFnZVNjYWxl
OwotICAgICAgICBtX2R1cmF0aW9uTXMgPSBkdXJhdGlvbk1zOworICAgICAgICBtX2R1cmF0aW9u
ID0gZHVyYXRpb247CiAgICAgICAgIG1fYW5jaG9yTW9kZSA9IGZhbHNlOwogICAgIH0KIH0KIAot
dm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYg
YW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpCit2b2lkIEND
UGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25zdCBJbnRTaXplJiBhbmNob3Is
IGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgbV9zY3JvbGxF
bmQgPSBtX3Njcm9sbFN0YXJ0ICsgYW5jaG9yOwogICAgIG1fc2Nyb2xsRW5kLnNjYWxlKGZpbmFs
UGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFydCk7CkBAIC0xMDMsMzEgKzEwMywzMSBAQCB2b2lk
IENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25zdCBJbnRTaXplJiBhbmNo
b3IsIGZsb2F0IGZpbmFsUGFnZQogCiAgICAgbV9hbmNob3IgPSBhbmNob3I7CiAgICAgbV9wYWdl
U2NhbGVFbmQgPSBmaW5hbFBhZ2VTY2FsZTsKLSAgICBtX2R1cmF0aW9uTXMgPSBkdXJhdGlvbk1z
OworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKICAgICBtX2FuY2hvck1vZGUgPSB0cnVlOwog
fQogCi1JbnRTaXplIENDUGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUoZG91
YmxlIHRpbWVNcykgY29uc3QKK0ludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9m
ZnNldEF0VGltZShkb3VibGUgdGltZSkgY29uc3QKIHsKLSAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0
QXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lTXMpKTsKKyAgICByZXR1cm4gc2Nyb2xs
T2Zmc2V0QXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lKSk7CiB9CiAKLWZsb2F0IEND
UGFnZVNjYWxlQW5pbWF0aW9uOjpwYWdlU2NhbGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QK
K2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwYWdlU2NhbGVBdFRpbWUoZG91YmxlIHRpbWUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2VTY2FsZUF0UmF0aW8ocHJvZ3Jlc3NSYXRpb0ZvclRp
bWUodGltZU1zKSk7CisgICAgcmV0dXJuIHBhZ2VTY2FsZUF0UmF0aW8ocHJvZ3Jlc3NSYXRpb0Zv
clRpbWUodGltZSkpOwogfQogCi1ib29sIENDUGFnZVNjYWxlQW5pbWF0aW9uOjppc0FuaW1hdGlv
bkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0Citib29sIENDUGFnZVNjYWxlQW5p
bWF0aW9uOjppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAogewot
ICAgIHJldHVybiB0aW1lTXMgPj0gZW5kVGltZU1zKCk7CisgICAgcmV0dXJuIHRpbWUgPj0gZW5k
VGltZSgpOwogfQogCi1mbG9hdCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0Zv
clRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpw
cm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZSkgY29uc3QKIHsKLSAgICBpZiAoaXNBbmlt
YXRpb25Db21wbGV0ZUF0VGltZSh0aW1lTXMpKQorICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRl
QXRUaW1lKHRpbWUpKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIHJldHVybiAodGltZU1zIC0g
bV9zdGFydFRpbWVNcykgLyBtX2R1cmF0aW9uTXM7CisgICAgcmV0dXJuICh0aW1lIC0gbV9zdGFy
dFRpbWUpIC8gbV9kdXJhdGlvbjsKIH0KIAogSW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
c2Nyb2xsT2Zmc2V0QXRSYXRpbyhmbG9hdCByYXRpbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5oCmluZGV4IGY0YjFiZjQ3YTlhOTc2NzhjMzZlZjYyYWJjYjRjZGUw
NWM4NGRlODkuLmQ5YWNiNDkxMWRiYzI1NmZmOWViZjllYTdlMmQzZWMzM2U2ZmYwN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaApAQCAtMzksMzkgKzM5LDM5IEBAIHB1
YmxpYzoKICAgICAvLyBDb25zdHJ1Y3Qgd2l0aCB0aGUgc3RhcnRpbmcgcGFnZSBzY2FsZSBhbmQg
c2Nyb2xsIG9mZnNldCAod2hpY2ggaXMgaW4KICAgICAvLyBwYWdlU2NhbGVTdGFydCBzcGFjZSku
IFRoZSB3aW5kb3cgc2l6ZSBpcyB0aGUgdXNlci12aWV3YWJsZSBhcmVhCiAgICAgLy8gaW4gcGl4
ZWxzLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJ
bnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0
YXJ0VGltZU1zKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1BhZ2VTY2FsZUFuaW1hdGlvbj4g
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwg
Y29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRv
dWJsZSBzdGFydFRpbWUpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGluaXRpYWxp
emUgdGhlIGFuaW1hdGlvbi4gQ2FsbCBvbmUgb2YgdGhlbQogICAgIC8vIGltbWVkaWF0ZWx5IGFm
dGVyIGNvbnN0cnVjdGlvbiB0byBzZXQgdGhlIGZpbmFsIHNjcm9sbCBhbmQgcGFnZSBzY2FsZS4K
IAogICAgIC8vIFpvb20gd2hpbGUgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSB0b3AtbGVmdCBz
Y3JvbGwgcG9zaXRpb24uIFRoZQogICAgIC8vIHNjcm9sbCBvZmZzZXQgaXMgaW4gZmluYWxQYWdl
U2NhbGUgY29vcmRpbmF0ZXMuCi0gICAgdm9pZCB6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxT
Y3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25Ncyk7CisgICAgdm9p
ZCB6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxl
LCBkb3VibGUgZHVyYXRpb24pOwogCiAgICAgLy8gWm9vbSBiYXNlZCBvbiBhIHNwZWNpZmllZCBv
bnNjcmVlbiBhbmNob3IsIHdoaWNoIHdpbGwgcmVtYWluIGF0IHRoZSBzYW1lCiAgICAgLy8gcG9z
aXRpb24gb24gdGhlIHNjcmVlbiB0aHJvdWdob3V0IHRoZSBhbmltYXRpb24uIFRoZSBhbmNob3Ig
aXMgaW4gbG9jYWwKICAgICAvLyBzcGFjZSByZWxhdGl2ZSB0byBzY3JvbGxTdGFydC4KLSAgICB2
b2lkIHpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdl
U2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsKKyAgICB2b2lkIHpvb21XaXRoQW5jaG9yKGNvbnN0
IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbik7
CiAKICAgICAvLyBDYWxsIHRoZXNlIGZ1bmN0aW9ucyB3aGlsZSB0aGUgYW5pbWF0aW9uIGlzIGlu
IHByb2dyZXNzIHRvIG91dHB1dCB0aGUKICAgICAvLyBjdXJyZW50IHN0YXRlLgotICAgIEludFNp
emUgc2Nyb2xsT2Zmc2V0QXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OwotICAgIGZsb2F0IHBh
Z2VTY2FsZUF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdDsKLSAgICBib29sIGlzQW5pbWF0aW9u
Q29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3Q7CisgICAgSW50U2l6ZSBzY3JvbGxP
ZmZzZXRBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0OworICAgIGZsb2F0IHBhZ2VTY2FsZUF0VGlt
ZShkb3VibGUgdGltZSkgY29uc3Q7CisgICAgYm9vbCBpc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1l
KGRvdWJsZSB0aW1lKSBjb25zdDsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyByZXR1
cm4gc3RhdGUgd2hpY2ggaXMgaW52YXJpYW50IHRocm91Z2hvdXQgdGhlCiAgICAgLy8gY291cnNl
IG9mIHRoZSBhbmltYXRpb24uCi0gICAgZG91YmxlIHN0YXJ0VGltZU1zKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydFRpbWVNczsgfQotICAgIGRvdWJsZSBkdXJhdGlvbk1zKCkgY29uc3QgeyByZXR1
cm4gbV9kdXJhdGlvbk1zOyB9Ci0gICAgZG91YmxlIGVuZFRpbWVNcygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnRUaW1lTXMgKyBtX2R1cmF0aW9uTXM7IH0KKyAgICBkb3VibGUgc3RhcnRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KKyAgICBkb3VibGUgZHVyYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgZG91YmxlIGVuZFRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXJ0VGltZSArIG1fZHVyYXRpb247IH0KICAgICBjb25zdCBJbnRTaXplJiBmaW5h
bFNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsRW5kOyB9CiAgICAgZmxvYXQg
ZmluYWxQYWdlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUVuZDsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgQ0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3Rh
cnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25z
dCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZU1zKTsKKyAgICBDQ1BhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxl
U3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRT
aXplLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCBwcm9ncmVzc1Jh
dGlvRm9yVGltZShkb3VibGUgdGltZU1zKSBjb25zdDsKKyAgICBmbG9hdCBwcm9ncmVzc1JhdGlv
Rm9yVGltZShkb3VibGUgdGltZSkgY29uc3Q7CiAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRBdFJh
dGlvKGZsb2F0IHJhdGlvKSBjb25zdDsKICAgICBmbG9hdCBwYWdlU2NhbGVBdFJhdGlvKGZsb2F0
IHJhdGlvKSBjb25zdDsKIApAQCAtODUsOCArODUsOCBAQCBwcml2YXRlOgogICAgIEludFNpemUg
bV9zY3JvbGxFbmQ7CiAgICAgZmxvYXQgbV9wYWdlU2NhbGVFbmQ7CiAKLSAgICBkb3VibGUgbV9z
dGFydFRpbWVNczsKLSAgICBkb3VibGUgbV9kdXJhdGlvbk1zOworICAgIGRvdWJsZSBtX3N0YXJ0
VGltZTsKKyAgICBkb3VibGUgbV9kdXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMGFmMDdjYmRi
ZmQyOTU3ODM4ZmVjMTQ0YjI2YTZkYTliM2RmYzhkZi4uYjEzODIxMzkwOTM5ZjIyODhlNzJlYjFl
MTU4Njg0MzU5YjRmNjdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKQEAgLTg4LDkgKzg4LDkgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVB
bmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0
IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29s
IHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBtX2xheWVy
VHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNl
QW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjAsIGR1
cmF0aW9uU2VjICogMTAwMC4wKTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Qq
IENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQpAQCAtMjkyLDggKzI5MiwxMCBAQCBib29s
IENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKICAgICBBU1NFUlQoIW1fY29udGV4
dExvc3QpOwogICAgIHsKICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAg
ICAgZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpICogMTAwMC4wOwotICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShmcmFtZURp
c3BsYXlUaW1lTXMpOworICAgICAgZG91YmxlIG1vbm90b25pY1RpbWUgPSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAgIGRvdWJsZSB3YWxsQ2xvY2tUaW1lID0gV1RGOjpjdXJy
ZW50VGltZSgpOworCisgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1vbm90b25p
Y1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xh
eWVycygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4
IDhlMTg2MGMyNjA2OGE3MjM0ODc0NGUxNWEwNjJlZmRiZDU1MjIxNDUuLjk4NzZhNDZiZjFkZTk5
NjEwNDAzNTQzYjFiMTQ5Nzg0YmI0MGJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94eSBpbXBs
ZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpw
aXhlbHMsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNl
QW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKTsKICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRl
cmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggOTA1YTA5NGMwN2E2MTFlMTI3N2NiMTZlYTM3YjIzNWQ2YmU2
NTNlMS4uNGIzZDJiZDMyZDIzYjMyZDYzY2ZiMGI2ODNkNGRmZTI5MGVjZjJlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTEzMywxNyArMTMzLDE3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCogcmVxdWVz
dCkKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsK
IH0KIAotdm9pZCBDQ1RocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJ
bnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3Vi
bGUgZHVyYXRpb25TZWMpCit2b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQg
c2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhy
ZWFkKCkpOwotICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJl
YWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRp
b25PbkltcGxUaHJlYWQsIHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlv
blNlYykpOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJl
YWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRp
b25PbkltcGxUaHJlYWQsIHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlv
bikpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwg
ZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVx
dWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9z
aXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fbGF5ZXJUcmVl
SG9zdEltcGwpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKSAqIDEwMDAuMCwgZHVyYXRpb25TZWMgKiAxMDAwLjApOworICAgICAgICBt
X2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlv
biwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0
aW9uKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQpA
QCAtNTI1LDEwICs1MjUsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBjb21wdXRlIHRo
ZSBmcmFtZSBkaXNwbGF5IHRpbWUgbW9yZSBpbnRlbGxpZ2VudGx5Ci0gICAgZG91YmxlIGZyYW1l
RGlzcGxheVRpbWVNcyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wOwor
ICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
CisgICAgZG91YmxlIHdhbGxDbG9ja1RpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CiAKLSAgICBt
X2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+d2lsbERyYXcoZnJhbWVEaXNwbGF5VGltZU1zKTsK
LSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1lRGlzcGxheVRpbWVNcyk7Cisg
ICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPndpbGxEcmF3KG1vbm90b25pY1RpbWUpOwor
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2Nr
VGltZSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogCiAgICAgLy8g
Q2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaAppbmRleCA1N2JhNTk4NzQ4ODg2OWU5MzI4MGVlNDU1MzBmOGI4OTc1ODJiYjM3Li5h
ZDUwMDU3N2QyMmMwMmJlNDA4YmU5MmQ0OGU4ZDhmNGJkMmE4ZDlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENDUHJveHkgaW1w
bGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAq
cGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwg
ZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbik7CiAgICAgdmlydHVhbCBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5k
ZXJpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5jcHAKaW5kZXggMzk3MzA4YjUyOWNjNDE3NDcxODdjN2Y4NjdkMTIxYjliMjNmY2Fl
ZS4uYzJkYmVlM2I0NzJkZjY2NjE2ZjQyMTU4NmNiNWZiNzA3NzdkNjJlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIGludCBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbDo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsK
IH0KIAotdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6d2lsbERyYXcoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp3
aWxsRHJhdyhkb3VibGUgbW9ub3RvbmljVGltZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgK
aW5kZXggYTJmMTMwMjVkOWYxN2JmZDE4YzE0NGY5MzE3ZDgyYTZlYTEwOWVjNS4uODNiNGJkNTQ2
MWFjMzRhNTE2YmNlZGZlYzQyNGVhMWY0Y2MzMDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVy
IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0OwotICAg
IHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcyk7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxEcmF3KGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbChXZWJDb3JlOjpDQ0lucHV0
SGFuZGxlckNsaWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHAKaW5k
ZXggZTFhZWNjYzUzOWE1ZDUxZGZmMThhMmJlN2M0MmVlYmExNDU3ZWZiZC4uMTg3YTYxYTg5ZmU4
YzNhZDUxZjljZTZmMmIzZWMyMjgzYzA2OTIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbFRlc3QuY3BwCkBAIC01MywxMCArNTMsMTAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGxUZXN0LCBUcml2aWFsVHJhbnNpdGlvbikKICAgICBPd25QdHI8Q0NBY3RpdmVB
bmltYXRpb24+IHRvQWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZs
b2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7
CiAKICAgICBjb250cm9sbGVyLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKLSAgICBjb250cm9sbGVy
LT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2
ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRz
KTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uo
Y29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtNzIsMTMgKzcyLDEzIEBA
IFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgVHJpdmlhbFF1ZXVpbmcp
CiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcg
RmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFj
aXR5KSk7CiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0
cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAxLCAwLjVmKSksIDIsIENDQWN0aXZlQW5pbWF0
aW9uOjpPcGFjaXR5KSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOwor
ICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUo
Y29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1t
eS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9w
YWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250
cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1t
eS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmlt
YXRpb24oKSk7CiB9CkBAIC05MSw3ICs5MSw3IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsVGVzdCwgSW50ZXJydXB0KQogICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGw+IGNvbnRyb2xsZXIoCiAgICAgICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbDo6Y3JlYXRlKCZkdW1teSkpOwogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3Rp
dmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCAx
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
MCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAg
ICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQ
RUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAKQEAgLTk5LDEwICs5OSwxMCBAQCBURVNUKEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIEludGVycnVwdCkKICAgICB0b0FkZC0+
c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JOZXh0VGljaywgMCk7CiAg
ICAgY29udHJvbGxlci0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CiAKLSAgICBjb250cm9sbGVyLT5h
bmltYXRlKDAuNSwgKmV2ZW50cyk7IC8vIHNlY29uZCBhbmltIHN0YXJ0cyBOT1cuCisgICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgwLjUsIDAuNSwgKmV2ZW50cyk7IC8vIHNlY29uZCBhbmltIHN0YXJ0
cyBOT1cuCiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkp
OwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMS41LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNSwgMS41LCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBF
Q1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtMTE5LDE1
ICsxMTksMTUgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBTY2hl
ZHVsZVRvZ2V0aGVyV2hlbkFQcm9wZXJ0eUlzQmxvY2tlZCkKICAgICBjb250cm9sbGVyLT5hZGQo
Y3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlVHJhbnNmb3JtVHJhbnNpdGlv
bigxKSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0pKTsKICAgICBjb250cm9sbGVy
LT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0
aW9uKDEsIDAsIDEpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKIAotICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgw
LCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBF
WFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0gICAgY29udHJv
bGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEs
ICpldmVudHMpOwogICAgIC8vIFNob3VsZCBub3QgaGF2ZSBzdGFydGVkIHRoZSBmbG9hdCB0cmFu
c2l0aW9uIHlldC4KICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRp
b24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgLy8gVGhlIHRo
ZSBmbG9hdCBhbmltYXRpb24gc2hvdWxkIGhhdmUgc3RhcnRlZCBhdCB0aW1lIDEgYW5kIHNob3Vs
ZCBiZSBkb25lLgotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgyLCAyLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXku
b3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogfQpAQCAtMTQ3LDIwICsxNDcsMjAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGxUZXN0LCBTY2hlZHVsZVRvZ2V0aGVyV2l0aEFuQW5pbVdhaXRpbmcpCiAgICAg
Y29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZs
b2F0VHJhbnNpdGlvbigxLCAxLCAwLjVmKSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5
KSk7CiAKICAgICAvLyBBbmltcyB3aXRoIGlkIDEgc2hvdWxkIGJvdGggc3RhcnQgbm93LgotICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0
ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVB
bmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgLy8g
VGhlIG9wYWNpdHkgYW5pbWF0aW9uIHNob3VsZCBoYXZlIGZpbmlzaGVkIGF0IHRpbWUgMSwgYnV0
IHRoZSBncm91cAogICAgIC8vIG9mIGFuaW1hdGlvbnMgd2l0aCBpZCAxIGRvbid0IGZpbmlzaCB1
bnRpbCB0aW1lIDIgYmVjYXVzZSBvZiB0aGUgbGVuZ3RoCiAgICAgLy8gb2YgdGhlIHRyYW5zZm9y
bSBhbmltYXRpb24uCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBj
b250cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVudHMpOwogICAgIC8vIFNob3VsZCBub3QgaGF2
ZSBzdGFydGVkIHRoZSBmbG9hdCB0cmFuc2l0aW9uIHlldC4KICAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9w
YWNpdHkoKSk7CiAKICAgICAvLyBUaGUgdGhlIHNlY29uZCBvcGFjaXR5IGFuaW1hdGlvbiBzaG91
bGQgc3RhcnQgYXQgdGltZSAyIGFuZCBzaG91bGQgYmUKICAgICAvLyBkb25lIGJ5IHRpbWUgMwot
ICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMywgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5p
bWF0ZSgzLCAzLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgp
KTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwog
fQpAQCAtMTc4LDEzICsxNzgsMTMgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcklt
cGxUZXN0LCBTY2hlZHVsZUFuaW1hdGlvbikKICAgICB0b0FkZC0+c2V0U3RhcnRUaW1lKDEpOwog
ICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogCi0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVu
dHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
ICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7
CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAg
IEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
MiwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAyLCAqZXZlbnRzKTsKICAg
ICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtMjA1LDE2ICsyMDUsMTYgQEAgVEVT
VChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBTY2hlZHVsZWRBbmltYXRpb25J
bnRlcnJ1cHRzUnVubmluZ0FuaW0KICAgICBjb250cm9sbGVyLT5hZGQodG9BZGQucmVsZWFzZSgp
KTsKIAogICAgIC8vIEZpcnN0IDJzIG9wYWNpdHkgdHJhbnNpdGlvbiBzaG91bGQgc3RhcnQgaW1t
ZWRpYXRlbHkuCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250
cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xs
ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0
eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwgKmV2ZW50cyk7CisgICAgY29udHJv
bGxlci0+YW5pbWF0ZSgwLjUsIDAuNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVtbXku
b3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5v
cGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgyLCAyLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXku
b3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogfQpAQCAtMjM4LDIwICsyMzgsMjAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGxUZXN0LCBTY2hlZHVsZWRBbmltYXRpb25JbnRlcnJ1cHRzUnVubmluZ0FuaW0K
ICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBG
YWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDAuNzVmKSksIDMsIENDQWN0aXZlQW5pbWF0aW9uOjpP
cGFjaXR5KSk7CiAKICAgICAvLyBGaXJzdCAycyBvcGFjaXR5IHRyYW5zaXRpb24gc2hvdWxkIHN0
YXJ0IGltbWVkaWF0ZWx5LgotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShj
b250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15
Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLjUsICpldmVudHMpOworICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMC41LCAwLjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC4yNWYs
IGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15
Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAqZXZlbnRzKTsKKyAgICBj
b250cm9sbGVyLT5hbmltYXRlKDMsIDMsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRy
b2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3Bh
Y2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDQsICpldmVudHMpOworICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoNCwgNCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1t
eS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmlt
YXRpb24oKSk7CiB9CkBAIC0yNjgsMjcgKzI2OCwyNyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbFRlc3QsIFRyaXZpYWxMb29waW5nKQogICAgIHRvQWRkLT5zZXRJdGVyYXRp
b25zKDMpOwogICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogCi0gICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAs
IDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1h
dGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9s
bGVyLT5hbmltYXRlKDEuMjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS4y
NSwgMS4yNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAg
ICBjb250cm9sbGVyLT5hbmltYXRlKDEuNzUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMS43NSwgMS43NSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+
aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3BhY2l0
eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDIuMjUsICpldmVudHMpOworICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMi4yNSwgMi4yNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29u
dHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVt
bXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDIuNzUsICpldmVudHMpOwor
ICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMi43NSwgMi43NSwgKmV2ZW50cyk7CiAgICAgRVhQRUNU
X1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgw
Ljc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDMsICpldmVu
dHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMywgMywgKmV2ZW50cyk7CiAgICAgRVhQRUNU
X0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEo
MSwgZHVtbXkub3BhY2l0eSgpKTsKIAogICAgIC8vIEp1c3QgYmUgZXh0cmEgc3VyZS4KLSAgICBj
b250cm9sbGVyLT5hbmltYXRlKDQsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
NCwgNCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiB9CiAK
QEAgLTMwNSwyMCArMzA1LDIwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBs
VGVzdCwgSW5maW5pdGVMb29waW5nKQogICAgIHRvQWRkLT5zZXRJdGVyYXRpb25zKC0xKTsKICAg
ICBjb250cm9sbGVyLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKIAotICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRz
KTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAg
ICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0
ZSgxLjI1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuMjUsIDEuMjUsICpl
dmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigp
KTsKICAgICBFWFBFQ1RfRVEoMC4yNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxl
ci0+YW5pbWF0ZSgxLjc1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNzUs
IDEuNzUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAKLSAg
ICBjb250cm9sbGVyLT5hbmltYXRlKDEwNzM3NDE4MjQuMjUsICpldmVudHMpOworICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMTA3Mzc0MTgyNC4yNSwgMTA3Mzc0MTgyNC4yNSwgKmV2ZW50cyk7CiAg
ICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVY
UEVDVF9FUSgwLjI1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRl
KDEwNzM3NDE4MjQuNzUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTA3Mzc0
MTgyNC43NSwgMTA3Mzc0MTgyNC43NSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXku
b3BhY2l0eSgpKTsKIApAQCAtMzM5LDI3ICszMzksMjcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGxUZXN0LCBQYXVzZVJlc3VtZSkKICAgICBjb25zdCBpbnQgaWQgPSAxOwog
ICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZh
a2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCBpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNp
dHkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJv
bGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVy
LT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHko
KSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLjUsICpldmVudHMpOworICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMC41LCAwLjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xs
ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3Bh
Y2l0eSgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1hdGlv
bihpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBjb250cm9sbGVyLT5nZXRB
Y3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KS0+c2V0UnVuU3Rh
dGUoQ0NBY3RpdmVBbmltYXRpb246OlBhdXNlZCwgMC41Zik7CiAKLSAgICBjb250cm9sbGVyLT5h
bmltYXRlKDEwMjQsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTAyNCwgMTAy
NCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgRVhQ
RUNUX1RSVUUoY29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0FjdGl2ZUFuaW1h
dGlvbjo6T3BhY2l0eSkpOwogICAgIGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1hdGlvbihpZCwg
Q0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlv
bjo6UnVubmluZywgMTAyNCk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwMjQuMjUsICpl
dmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTAyNC4yNSwgMTAyNC4yNSwgKmV2ZW50
cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwog
ICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5h
bmltYXRlKDEwMjQuNSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LjUs
IDEwMjQuNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2
ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKIH0KQEAg
LTM3NiwxOSArMzc2LDE5IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVz
dCwgQWJvcnRBR3JvdXBlZEFuaW1hdGlvbikKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0
aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDIsIDAsIDEpKSwg
aWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgY29udHJvbGxlci0+YWRkKGNy
ZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAx
LCAwLjc1ZikpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCi0gICAgY29udHJv
bGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAs
ICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVy
LT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2
ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkp
OwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX1RS
VUUoY29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6
T3BhY2l0eSkpOwogICAgIGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1hdGlvbihpZCwgQ0NBY3Rp
dmVBbmltYXRpb246Ok9wYWNpdHkpLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJv
cnRlZCwgMSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250
cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xs
ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0
eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMiwgMiwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoIWNvbnRyb2xsZXIt
Pmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNp
dHkoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKaW5kZXggYzRmMTAzYTNjYWZl
NDY4ZTRiOGU3OTc4NmQyYjIxODdlNDVkN2VhMS4uOGE2MjdmYTBmNjU5ZDgxZDM4NzVjZTEyYWNh
Y2E2ZjBiMjZkNzNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcApAQCAtMjAxLDgg
KzIwMSw4IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBzeW5jQ29tcGxl
dGVkQW5pbWF0aW9uKQogCiAgICAgLy8gU3RlcCB0aHJvdWdoIHRoZSBhbmltYXRpb24gdW50aWwg
aXQgaXMgZmluaXNoZWQuIEF0IHRoZSBuZXh0IHN5bmMsIHRoZSBtYWluIHRocmVhZCdzIGFuaW1h
dGlvbiBzaG91bGQgYmUgY2xlYXJlZC4KICAgICBPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0
b3I+IGV2ZW50cyhhZG9wdFB0cihuZXcgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IpKTsKLSAgICBj
b250cm9sbGVySW1wbC0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKLSAgICBjb250cm9sbGVySW1wbC0+
YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVySW1wbC0+YW5pbWF0ZSgwLCAwLCAq
ZXZlbnRzKTsKKyAgICBjb250cm9sbGVySW1wbC0+YW5pbWF0ZSgyLCAyLCAqZXZlbnRzKTsKIAog
ICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIEND
QWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+
aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBlZDA1MmE5YzNkODY5
YzdhZTkyNzFmNjExYTM5YzQ1YWJhOGJiMjk3Li5kMzBiYzQ1MmQ0MjQ4MjJmODZmMmVkNDVjYTM4
YTk2YzgyZGQ2YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMzQ5LDggKzM0OSwxMCBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKICAgICBBU1NF
UlQoc2Nyb2xsTGF5ZXIpOwogCiAgICAgY29uc3QgZmxvYXQgbWluUGFnZVNjYWxlID0gMC41LCBt
YXhQYWdlU2NhbGUgPSA0OwotICAgIGNvbnN0IGRvdWJsZSBzdGFydFRpbWVNcyA9IDEwMDA7Ci0g
ICAgY29uc3QgZG91YmxlIGR1cmF0aW9uTXMgPSAxMDA7CisgICAgY29uc3QgZG91YmxlIHN0YXJ0
VGltZSA9IDE7CisgICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0gMC4xOworICAgIGNvbnN0IGRv
dWJsZSBoYWxmd2F5VGhyb3VnaEFuaW1hdGlvbiA9IHN0YXJ0VGltZSArIGR1cmF0aW9uIC8gMjsK
KyAgICBjb25zdCBkb3VibGUgZW5kVGltZSA9IHN0YXJ0VGltZSArIGR1cmF0aW9uOwogCiAgICAg
Ly8gTm9uLWFuY2hvciB6b29tLWluCiAgICAgewpAQCAtMzU4LDEwICszNjAsMTAgQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiAgICAgICAgIHNj
cm9sbExheWVyLT5zZXRQYWdlU2NhbGVEZWx0YSgxKTsKICAgICAgICAgc2Nyb2xsTGF5ZXItPnNl
dFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDUwLCA1MCkpOwogCi0gICAgICAgIG1faG9zdEltcGwt
PnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKEludFNpemUoMCwgMCksIGZhbHNlLCAyLCBzdGFydFRp
bWVNcywgZHVyYXRpb25Ncyk7Ci0gICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoc3RhcnRUaW1l
TXMgKyBkdXJhdGlvbk1zIC8gMik7CisgICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uKEludFNpemUoMCwgMCksIGZhbHNlLCAyLCBzdGFydFRpbWUsIGR1cmF0aW9uKTsK
KyAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShoYWxmd2F5VGhyb3VnaEFuaW1hdGlvbiwgaGFs
ZndheVRocm91Z2hBbmltYXRpb24pOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RS
ZWRyYXcpOwotICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKHN0YXJ0VGltZU1zICsgZHVyYXRp
b25Ncyk7CisgICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoZW5kVGltZSwgZW5kVGltZSk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7CiAKICAgICAgICAgT3duUHRy
PENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Ny
b2xsRGVsdGFzKCk7CkBAIC0zNzUsOCArMzc3LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQYWdl
U2NhbGVEZWx0YSgxKTsKICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKElu
dFBvaW50KDUwLCA1MCkpOwogCi0gICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKEludFNpemUoMjUsIDI1KSwgdHJ1ZSwgbWluUGFnZVNjYWxlLCBzdGFydFRpbWVNcywg
ZHVyYXRpb25Ncyk7Ci0gICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoc3RhcnRUaW1lTXMgKyBk
dXJhdGlvbk1zKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24o
SW50U2l6ZSgyNSwgMjUpLCB0cnVlLCBtaW5QYWdlU2NhbGUsIHN0YXJ0VGltZSwgZHVyYXRpb24p
OworICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKGVuZFRpbWUsIGVuZFRpbWUpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwogICAgICAgICBFWFBFQ1RfVFJVRSht
X2RpZFJlcXVlc3RDb21taXQpOwogCkBAIC04NDYsNyArODQ4LDcgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCB2aXNpYmlsaXR5Q2hhbmdlUmVzZXRzRGFtYWdlKQogICAgIC8vIEZp
cnN0IGZyYW1lOiBpZ25vcmUuCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
ICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKLSAKKwogICAgIC8vIFNlY29u
ZCBmcmFtZTogbm90aGluZyBoYXMgY2hhbmdlZCAtLS0gc28gd2Ugc291bGRuJ3QgcHVzaCBhbnl0
aGluZyB3aXRoIHBhcnRpYWwgc3dhcC4KICAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVy
cygpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXgg
ZDdkZDA1NTk1YmZlNTI2YTUwN2U4YjcyZTQ4ZGE3YzE4Njc2MzQ5NS4uZGE2Njk5YmJjMzNlMjZj
ZmVlNTMxYjRmYTk1OWExZGExNDAwYmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVl
SG9zdEltcGwqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25z
dCBJbnRTaXplJiwgZmxvYXQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25z
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSB7IH0KIAogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIENDTGF5ZXJBbmltYXRpb25EZWxlZ2F0
ZQpAQCAtMTAyLDkgKzEwMiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcykKKyAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdh
bGxDbG9ja1RpbWUpCiAgICAgewotICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRl
TGF5ZXJzKGZyYW1lQmVnaW5UaW1lTXMpOworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjph
bmltYXRlTGF5ZXJzKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgICAgICBtX3Rl
c3RIb29rcy0+YW5pbWF0ZUxheWVycyh0aGlzKTsKICAgICB9CiAKQEAgLTIxMiw5ICsyMTIsOSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTW9ja0xheWVyVHJlZUhvc3RD
bGllbnQodGVzdEhvb2tzKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogICAgIHsKLSAgICAgICAgbV90ZXN0SG9va3Mt
PnVwZGF0ZUFuaW1hdGlvbnMoZnJhbWVCZWdpblRpbWUpOworICAgICAgICBtX3Rlc3RIb29rcy0+
dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130643</attachid>
            <date>2012-03-07 10:21:12 -0800</date>
            <delta_ts>2012-03-08 11:23:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120307132111.patch</filename>
            <type>text/plain</type>
            <size>58211</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uYjM4ZTFiZjdlZDNiN2FmNTJjYzBkNTU4Mjg2ZGE3
NzQzMWIxMDk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAzLTA3ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKENDSW5wdXRIYW5kbGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNv
bHZlQ29uZmxpY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbDo6dGlja0FuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oOgorICAgICAgICAoQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlUGFnZVNjYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoK
KyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
YWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
YWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0ZvclRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxl
QW5pbWF0aW9uLmg6CisgICAgICAgIChDQ1BhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZW5kVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAg
ICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAzLTA2ICBEYXZpZCBDb3J2
b3lzaWVyICA8ZGF2aWQuY29ydm95c2llckBvcmFuZ2UuY29tPgogCiAgICAgICAgIFVucmVsZWFz
ZWQgZ3N0X29iamVjdF9yZWZlcmVuY2UgdG8gYXVkaW8gc2luayBpbiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjdjYzA4ZThiZDQ5N2Y1
NDVmOWIxOGVmMGUyNTI2NWIyNmM1ZGQxOS4uNGNiMzY1NGQ1YTc3YWUzNWIyNTQ5OTA5MDBiOWM4
YWIxZDhmOWQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAxMi0wMy0wNyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIEVuc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3QgdGltZSB3aGVuIG5vdGlmeWlu
ZyBhbmltYXRpb24gc3RhcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzk1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp3aWxsRHJhdyk6Cisg
ICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgIChX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVT
VCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcDoK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6
dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0SW1wbDo6
YW5pbWF0ZUxheWVycyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojp1
cGRhdGVBbmltYXRpb25zKToKKwogMjAxMi0wMy0wNiAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lv
c2hpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBbV2ViU29ja2V0XSBBZGQg
V2ViU29ja2V0IGV4dGVuc2lvbnMgcXVlcnkgV2ViS2l0IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5k
bGVyLmgKaW5kZXggNmMwNTU5OTRjNThlY2E0MTEzMTlhOWM5OWQxNDNmOWMxN2YzZTJjMi4uMzM3
MjFmMWRmYzcwYzQ2NTcyNDdkNjc4MWZlOTY5ZjFhMjBiODlkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0
SGFuZGxlci5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN0YXJ0VGlt
ZU1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVy
YXRpb25NcykgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgc3RhcnRUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgZHVyYXRpb24pID0gMDsKIAogcHJvdGVjdGVkOgogICAgIENDSW5wdXRIYW5kbGVy
Q2xpZW50KCkgeyB9CkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ0lu
cHV0SGFuZGxlcigpIHsgfQogCiAgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUgbW9ub3RvbmljVGltZSkgPSAw
OwogCiBwcm90ZWN0ZWQ6CiAgICAgQ0NJbnB1dEhhbmRsZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCmluZGV4IGU4ZDZi
YzdlZjc1YWM0MDNkMTFjYTYxMTU0ODhlY2M3MWQ1NjM1ZDUuLmI4NDRiM2NiNDUxZmRmZmFmNjc3
NmE2ZGYwYTE5ZmI5ZTQ1M2U2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApAQCAtNDksMTUgKzQ5LDE1IEBAIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbDo6fkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCgp
CiB7CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjphbmltYXRlKGRv
dWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMp
Cit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YW5pbWF0ZShkb3VibGUgbW9u
b3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9y
JiBldmVudHMpCiB7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGZyYW1l
QmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3Rh
cnRUaW1lKGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsK
LSAgICByZXNvbHZlQ29uZmxpY3RzKGZyYW1lQmVnaW5UaW1lU2Vjcyk7Ci0gICAgdGlja0FuaW1h
dGlvbnMoZnJhbWVCZWdpblRpbWVTZWNzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
TmV4dFRpY2sobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSwgZXZlbnRzKTsKKyAgICBzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1Rp
bWUsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJp
bGl0eShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lLCBldmVudHMpOworICAgIHJlc29sdmVD
b25mbGljdHMobW9ub3RvbmljVGltZSk7CisgICAgdGlja0FuaW1hdGlvbnMobW9ub3RvbmljVGlt
ZSk7CiAgICAgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoZXZlbnRzKTsKLSAgICBzdGFydEFuaW1h
dGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5UaW1lU2VjcywgZXZl
bnRzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KG1v
bm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsIGV2ZW50cyk7CiB9CiAKIHZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjphZGQoUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4g
YW5pbSkKQEAgLTgzLDI4ICs4MywyOCBAQCBib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0
aW5nRm9yTmV4dFRpY2soZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50
cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yTmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tU
aW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlm
IChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246
OldhaXRpbmdGb3JOZXh0VGljaykgewotICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ld
LT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAg
ICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG5vdyk7Ci0gICAgICAgICAg
ICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQt
PmlkKCksIG5vdykpOworICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5T
dGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CisgICAgICAg
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsK
KyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0
ZShtX2NsaWVudC0+aWQoKSwgd2FsbENsb2NrVGltZSkpOwogICAgICAgICB9CiAgICAgfQogfQog
Ci12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZl
bnRzKQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xv
Y2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRp
b246OldhaXRpbmdGb3JTdGFydFRpbWUgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zdGFydFRp
bWUoKSA8PSBub3cpIHsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVu
U3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICBldmVu
dHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCks
IG5vdykpOworICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ydW5TdGF0ZSgpID09
IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lICYmIG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+c3RhcnRUaW1lKCkgPD0gbW9ub3RvbmljVGltZSkgeworICAgICAgICAgICAgbV9h
Y3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmlu
ZywgbW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIHdhbGxDbG9ja1RpbWUpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6
OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG5vdywg
Q0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5
KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25F
dmVudHNWZWN0b3ImIGV2ZW50cykKIHsKICAgICAvLyBGaXJzdCBjb2xsZWN0IHJ1bm5pbmcgcHJv
cGVydGllcy4KICAgICBUYXJnZXRQcm9wZXJ0aWVzIGJsb2NrZWRQcm9wZXJ0aWVzOwpAQCAtMTM0
LDEzICsxMzQsMTMgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkKIAogICAgICAgICAgICAgLy8g
SWYgdGhlIGludGVyc2VjdGlvbiBpcyBudWxsLCB0aGVuIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHRo
ZSBhbmltYXRpb25zIGluIHRoZSBncm91cC4KICAgICAgICAgICAgIGlmIChudWxsSW50ZXJzZWN0
aW9uKSB7Ci0gICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0
ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShub3cpOwotICAgICAgICAgICAgICAgIGV2
ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQo
KSwgbm93KSk7CisgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5T
dGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CisgICAgICAg
ICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGlt
ZSk7CisgICAgICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCB3YWxsQ2xvY2tUaW1lKSk7CiAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsg
KytqKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdy
b3VwKCkgPT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5ncm91cCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5p
bWF0aW9uOjpSdW5uaW5nLCBub3cpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVB
bmltYXRpb25zW2pdLT5zZXRTdGFydFRpbWUobm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1
bm5pbmcsIG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVB
bmltYXRpb25zW2pdLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNDgsNyArMTQ4
LDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpCit2b2lk
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUg
bW9ub3RvbmljVGltZSkKIHsKICAgICAvLyBGaW5kIGFueSBhbmltYXRpb25zIHRoYXQgYXJlIGFu
aW1hdGluZyB0aGUgc2FtZSBwcm9wZXJ0eSBhbmQgcmVzb2x2ZSB0aGUKICAgICAvLyBjb25maWN0
LiBXZSBjb3VsZCBldmVudHVhbGx5IGJsZW5kLCBidXQgZm9yIG5vdyB3ZSdsbCBqdXN0IGFib3J0
IHRoZQpAQCAtMTYwLDkgKzE2MCw5IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpCiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2opIHsKICAgICAg
ICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2pdLT5ydW5TdGF0ZSgpID09IENDQWN0
aXZlQW5pbWF0aW9uOjpSdW5uaW5nICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJv
cGVydHkoKSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnRhcmdldFByb3BlcnR5KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkg
PiBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnN0YXJ0VGltZSgpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlv
bjo6QWJvcnRlZCwgbm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0
aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIG1vbm90b25p
Y1RpbWUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpB
Ym9ydGVkLCBub3cpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbW9ub3RvbmljVGlt
ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTQs
MTkgKzE5NCwxOSBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cHVyZ2VG
aW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZQogICAgIH0KIH0KIAotdm9pZCBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cp
Cit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMoZG91
YmxlIG1vbm90b25pY1RpbWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2
ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZykgewotICAgICAg
ICAgICAgZG91YmxlIHRyaW1tZWQgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9D
dXJyZW50SXRlcmF0aW9uKG5vdyk7CisgICAgICAgICAgICBkb3VibGUgdHJpbW1lZCA9IG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+dHJpbVRpbWVUb0N1cnJlbnRJdGVyYXRpb24obW9ub3RvbmljVGlt
ZSk7CiAKICAgICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQ
cm9wZXJ0eSgpKSB7CiAKICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5z
Zm9ybTogewogICAgICAgICAgICAgICAgIGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUq
IHRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT5jdXJ2ZSgp
LT50b1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXggbWF0cml4ID0gdHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUtPmdldFZh
bHVlKHRyaW1tZWQsIG1fY2xpZW50LT5ib3VuZHMoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+aXNGaW5pc2hlZEF0KG5vdykpCi0gICAgICAgICAgICAgICAg
ICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246
OkZpbmlzaGVkLCBub3cpOworICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPmlzRmluaXNoZWRBdChtb25vdG9uaWNUaW1lKSkKKyAgICAgICAgICAgICAgICAgICAgbV9h
Y3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6RmluaXNo
ZWQsIG1vbm90b25pY1RpbWUpOwogCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNldFRyYW5z
Zm9ybShtYXRyaXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE1LDggKzIxNSw4IEBA
IHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3Vi
bGUgbm93KQogICAgICAgICAgICAgY2FzZSBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eTogewog
ICAgICAgICAgICAgICAgIGNvbnN0IENDRmxvYXRBbmltYXRpb25DdXJ2ZSogZmxvYXRBbmltYXRp
b25DdXJ2ZSA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y3VydmUoKS0+dG9GbG9hdEFuaW1hdGlv
bkN1cnZlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgb3BhY2l0eSA9IGZsb2F0QW5p
bWF0aW9uQ3VydmUtPmdldFZhbHVlKHRyaW1tZWQpOwotICAgICAgICAgICAgICAgIGlmIChtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPmlzRmluaXNoZWRBdChub3cpKQotICAgICAgICAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpG
aW5pc2hlZCwgbm93KTsKKyAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ld
LT5pc0ZpbmlzaGVkQXQobW9ub3RvbmljVGltZSkpCisgICAgICAgICAgICAgICAgICAgIG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVk
LCBtb25vdG9uaWNUaW1lKTsKIAogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZXRPcGFjaXR5
KG9wYWNpdHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaAppbmRleCAzNTQwMDQ5YjAzNjFmZGU2
MjM5NWFiYzBlNGUxNTE3MDQyZDQ0OGIwLi44ZDBlOGQxNDBiNjY5NDBkMWIwYTQ0N2Y2ODBjMWY5
YjBmZTlhZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwoKTsKIAotICAgIHZvaWQgYW5pbWF0ZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZv
aWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CiAKICAgICB2b2lkIGFkZChQYXNzT3duUHRyPENDQWN0
aXZlQW5pbWF0aW9uPik7CiAKQEAgLTc4LDEzICs3OCwxMyBAQCBwcml2YXRlOgogICAgIC8vIFRo
ZSBhbmltYXRvciBpcyBvd25lZCBieSB0aGUgbGF5ZXIuCiAgICAgZXhwbGljaXQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbENsaWVu
dCopOwogCi0gICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91Ymxl
IG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3Im
KTsKLSAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHko
ZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHJlc29sdmVD
b25mbGljdHMoZG91YmxlIG5vdyk7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
TmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zv
clN0YXJ0VGltZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5n
Rm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENs
b2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKKyAgICB2b2lkIHJlc29sdmVDb25m
bGljdHMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgcHVyZ2VGaW5pc2hlZEFuaW1h
dGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKIAotICAgIHZvaWQgdGlja0FuaW1hdGlv
bnMoZG91YmxlIG5vdyk7CisgICAgdm9pZCB0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rvbmlj
VGltZSk7CiAKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQqIG1fY2xp
ZW50OwogICAgIFZlY3RvcjxPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmlt
YXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBmNzE1
YWUzNWQxN2Y5MGI3NGRiMjJkYzBmM2M5NGU2NjcwNTE5OTlhLi5kMmU5OTc5MWRjMTQwZWNmZGI0
MTQ0ZWVhMGUyNTA3MTIwYmMxYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcApAQCAtOTcsMTMgKzk3LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjb250ZXh0KCkKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXll
clJlbmRlcmVyLT5jb250ZXh0KCkgOiAwOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQog
ewotICAgIGFuaW1hdGVQYWdlU2NhbGUoZnJhbWVCZWdpblRpbWVNcyk7Ci0gICAgYW5pbWF0ZUxh
eWVycyhmcmFtZUJlZ2luVGltZU1zKTsKKyAgICBhbmltYXRlUGFnZVNjYWxlKG1vbm90b25pY1Rp
bWUpOworICAgIGFuaW1hdGVMYXllcnMobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VT
Y2FsZSwgZG91YmxlIHN0YXJ0VGltZU1zLCBkb3VibGUgZHVyYXRpb25NcykKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFy
Z2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0
YXJ0VGltZSwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIGlmICghbV9zY3JvbGxMYXllckltcGwp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNCwxNSArMTE0LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9z
aXRpb24sCiAgICAgSW50U2l6ZSBzY2FsZWRDb250ZW50U2l6ZSA9IGNvbnRlbnRTaXplKCk7CiAg
ICAgc2NhbGVkQ29udGVudFNpemUuc2NhbGUobV9wYWdlU2NhbGVEZWx0YSk7CiAKLSAgICBtX3Bh
Z2VTY2FsZUFuaW1hdGlvbiA9IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoc2Nyb2xsVG90
YWwsIHNjYWxlVG90YWwsIG1fdmlld3BvcnRTaXplLCBzY2FsZWRDb250ZW50U2l6ZSwgc3RhcnRU
aW1lTXMpOworICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uID0gQ0NQYWdlU2NhbGVBbmltYXRpb246
OmNyZWF0ZShzY3JvbGxUb3RhbCwgc2NhbGVUb3RhbCwgbV92aWV3cG9ydFNpemUsIHNjYWxlZENv
bnRlbnRTaXplLCBzdGFydFRpbWUpOwogCiAgICAgaWYgKGFuY2hvclBvaW50KSB7CiAgICAgICAg
IEludFNpemUgd2luZG93QW5jaG9yKHRhcmdldFBvc2l0aW9uKTsKICAgICAgICAgd2luZG93QW5j
aG9yLnNjYWxlKHNjYWxlVG90YWwgLyBwYWdlU2NhbGUpOwogICAgICAgICB3aW5kb3dBbmNob3Ig
LT0gc2Nyb2xsVG90YWw7Ci0gICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLT56b29tV2l0aEFu
Y2hvcih3aW5kb3dBbmNob3IsIHBhZ2VTY2FsZSwgZHVyYXRpb25Ncyk7CisgICAgICAgIG1fcGFn
ZVNjYWxlQW5pbWF0aW9uLT56b29tV2l0aEFuY2hvcih3aW5kb3dBbmNob3IsIHBhZ2VTY2FsZSwg
ZHVyYXRpb24pOwogICAgIH0gZWxzZQotICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9v
bVRvKHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0aW9uTXMpOworICAgICAgICBtX3Bh
Z2VTY2FsZUFuaW1hdGlvbi0+em9vbVRvKHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0
aW9uKTsKIAogICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAg
IG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwpAQCAtMjQ3LDE0ICsyNDcs
MTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpvcHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1Jl
bmRlclBhc3NMaXN0JiBwYXNzZXMpCiAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0
b21Db3VudHMoIlJlbmRlcmVyNC5waXhlbE92ZXJkcmF3Q3VsbGVkIiwgc3RhdGljX2Nhc3Q8aW50
Pihub3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNDdWxsZWQpLCAxMDAsIDEw
MDAwMDAsIDUwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJz
UmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNz
LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzLCBib29sJiBkaWRBbmltYXRlLCBib29s
JiBuZWVkc0FuaW1hdGVMYXllcnMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVM
YXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwqIGN1cnJlbnQsIGRvdWJsZSBtb25vdG9uaWNUaW1l
LCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywg
Ym9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNBbmltYXRlTGF5ZXJzKQogewogICAgIGJvb2wg
c3VidHJlZU5lZWRzQW5pbWF0ZUxheWVycyA9IGZhbHNlOwogCiAgICAgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsKiBjdXJyZW50Q29udHJvbGxlciA9IGN1cnJlbnQtPmxheWVyQW5pbWF0
aW9uQ29udHJvbGxlcigpOwogCiAgICAgYm9vbCBoYWRBY3RpdmVBbmltYXRpb24gPSBjdXJyZW50
Q29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci0gICAgY3VycmVudENvbnRyb2xsZXIt
PmFuaW1hdGUoZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMpOworICAgIGN1cnJlbnRDb250cm9s
bGVyLT5hbmltYXRlKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsIGV2ZW50cyk7CiAgICAg
Ym9vbCBzdGFydGVkQW5pbWF0aW9uID0gZXZlbnRzLnNpemUoKSA+IDA7CiAKICAgICAvLyBXZSBh
bmltYXRlZCBpZiB3ZSBlaXRoZXIgdGlja2VkIGEgcnVubmluZyBhbmltYXRpb24sIG9yIHN0YXJ0
ZWQgYSBuZXcgYW5pbWF0aW9uLgpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVudCwgZG91
YmxlIGZyCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnQtPmNoaWxkcmVuKCku
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgYm9vbCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyA9IGZh
bHNlOwotICAgICAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKGN1cnJlbnQtPmNoaWxkcmVuKClb
aV0uZ2V0KCksIGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzLCBkaWRBbmltYXRlLCBjaGlsZE5l
ZWRzQW5pbWF0ZUxheWVycyk7CisgICAgICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoY3VycmVu
dC0+Y2hpbGRyZW4oKVtpXS5nZXQoKSwgbW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSwgZXZl
bnRzLCBkaWRBbmltYXRlLCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyk7CiAgICAgICAgIGlmIChj
aGlsZE5lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgICAgIHN1YnRyZWVOZWVkc0FuaW1hdGVM
YXllcnMgPSB0cnVlOwogICAgIH0KQEAgLTY2MiwyNiArNjYyLDI2IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2V0RnVsbFJvb3RMYXllckRhbWFnZSgpCiAgICAgfQogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIGZyYW1lQmVnaW5UaW1l
TXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIG1v
bm90b25pY1RpbWUpCiB7CiAgICAgaWYgKCFtX3BhZ2VTY2FsZUFuaW1hdGlvbikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IHRvU2l6ZShtX3Njcm9sbExheWVy
SW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgp
KTsKIAotICAgIHNldFBhZ2VTY2FsZURlbHRhKG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5wYWdlU2Nh
bGVBdFRpbWUoZnJhbWVCZWdpblRpbWVNcykgLyBtX3BhZ2VTY2FsZSk7Ci0gICAgSW50U2l6ZSBu
ZXh0U2Nyb2xsID0gbV9wYWdlU2NhbGVBbmltYXRpb24tPnNjcm9sbE9mZnNldEF0VGltZShmcmFt
ZUJlZ2luVGltZU1zKTsKKyAgICBzZXRQYWdlU2NhbGVEZWx0YShtX3BhZ2VTY2FsZUFuaW1hdGlv
bi0+cGFnZVNjYWxlQXRUaW1lKG1vbm90b25pY1RpbWUpIC8gbV9wYWdlU2NhbGUpOworICAgIElu
dFNpemUgbmV4dFNjcm9sbCA9IG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5zY3JvbGxPZmZzZXRBdFRp
bWUobW9ub3RvbmljVGltZSk7CiAgICAgbmV4dFNjcm9sbC5zY2FsZSgxIC8gbV9wYWdlU2NhbGVE
ZWx0YSk7CiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KG5leHRTY3JvbGwgLSBzY3Jv
bGxUb3RhbCk7CiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiAK
LSAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUo
ZnJhbWVCZWdpblRpbWVNcykpIHsKKyAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5p
bWF0aW9uQ29tcGxldGVBdFRpbWUobW9ub3RvbmljVGltZSkpIHsKICAgICAgICAgbV9wYWdlU2Nh
bGVBbmltYXRpb24uY2xlYXIoKTsKICAgICAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25J
bXBsVGhyZWFkKCk7CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1h
dGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tU
aW1lKQogewogICAgIGlmICghbV9zZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwg
IW1fbmVlZHNBbmltYXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXllckltcGwpCiAgICAgICAgIHJldHVy
bjsKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVM
YXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCiAgICAgT3duUHRyPENDQW5pbWF0aW9uRXZl
bnRzVmVjdG9yPiBldmVudHMoYWRvcHRQdHIobmV3IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKSk7
CiAKICAgICBib29sIGRpZEFuaW1hdGUgPSBmYWxzZTsKLSAgICBhbmltYXRlTGF5ZXJzUmVjdXJz
aXZlKG1fcm9vdExheWVySW1wbC5nZXQoKSwgZnJhbWVCZWdpblRpbWVNcyAvIDEwMDAsICpldmVu
dHMsIGRpZEFuaW1hdGUsIG1fbmVlZHNBbmltYXRlTGF5ZXJzKTsKKyAgICBhbmltYXRlTGF5ZXJz
UmVjdXJzaXZlKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbW9ub3RvbmljVGltZSwgd2FsbENsb2Nr
VGltZSwgKmV2ZW50cywgZGlkQW5pbWF0ZSwgbV9uZWVkc0FuaW1hdGVMYXllcnMpOwogCiAgICAg
aWYgKCFldmVudHMtPmlzRW1wdHkoKSkKICAgICAgICAgbV9jbGllbnQtPnBvc3RBbmltYXRpb25F
dmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoZXZlbnRzLnJlbGVhc2UoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZmY0N2ViMDhmYzI4MzcwMDI3MzMyZjk4
NWI3YjFjOGYyY2RiOWU3ZS4uNWNjMjg0MjlhY2UzM2UzZDc5MTg5MzI0Y2M1ZWQwMzY3NzM4NjRj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNjgsMTIgKzY4LDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0LCBjb25zdCBJbnRQb2ludCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVFbmQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wg
YW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZU1zLCBkb3VibGUg
ZHVyYXRpb25Ncyk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNv
bnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9hdCBwYWdl
U2NhbGUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBkdXJhdGlvbik7CiAKICAgICAvLyBWaXJ0
dWFsIGZvciB0ZXN0aW5nLgogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpOwogICAgIHZp
cnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRv
dWJsZSBmcmFtZURpc3BsYXlUaW1lTXMpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdMYXllcnMoKTsKIAogICAgIGJvb2wgY2FuRHJhdygpOwpAQCAtMTMwLDEwICsxMzAsMTAg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NT
ZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKIAotICAgIHZvaWQgYW5pbWF0
ZVBhZ2VTY2FsZShkb3VibGUgZnJhbWVCZWdpblRpbWVNcyk7CisgICAgdm9pZCBhbmltYXRlUGFn
ZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3Rp
bmcuCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1l
TXMpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1l
LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
KiBtX2NsaWVudDsKICAgICBpbnQgbV9zb3VyY2VGcmFtZU51bWJlcjsKQEAgLTE1Myw3ICsxNTMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVy
SW1wbCogcm9vdERyYXdMYXllciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOwogICAgIHZvaWQgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3Qm
LCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgdm9pZCBvcHRpbWl6
ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0Jik7Ci0gICAgdm9pZCBhbmltYXRlTGF5ZXJz
UmVjdXJzaXZlKENDTGF5ZXJJbXBsKiwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3ImLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVM
YXllcnMpOworICAgIHZvaWQgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRv
dWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwog
ICAgIEludFNpemUgY29udGVudFNpemUoKSBjb25zdDsKICAgICB2b2lkIHNlbmRDb250ZXh0TG9z
dEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uUmVjdXJzaXZlKENDTGF5ZXJJbXBsKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcAppbmRleCAzM2I2ZjIyZmJlZGY1M2Ux
YmE0YjYyOTQ0OTE0ODdmNjA4YWQ1MDhiLi40OWExMjVkMjNjMzg3NzQ1YmZjNTA5MTI4NzJjYWFm
MmZmMzg4ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uY3BwCkBA
IC0yMiw3ICsyMiw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKQEAgLTM2LDEzICszNiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25Q
dHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoY29u
c3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRT
aXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0
VGltZU1zKQorUGFzc093blB0cjxDQ1BhZ2VTY2FsZUFuaW1hdGlvbj4gQ0NQYWdlU2NhbGVBbmlt
YXRpb246OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxl
U3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRT
aXplLCBkb3VibGUgc3RhcnRUaW1lKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NQYWdl
U2NhbGVBbmltYXRpb24oc2Nyb2xsU3RhcnQsIHBhZ2VTY2FsZVN0YXJ0LCB3aW5kb3dTaXplLCBj
b250ZW50U2l6ZSwgc3RhcnRUaW1lTXMpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUGFn
ZVNjYWxlQW5pbWF0aW9uKHNjcm9sbFN0YXJ0LCBwYWdlU2NhbGVTdGFydCwgd2luZG93U2l6ZSwg
Y29udGVudFNpemUsIHN0YXJ0VGltZSkpOwogfQogCiAKLUNDUGFnZVNjYWxlQW5pbWF0aW9uOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFn
ZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNv
bnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lTXMpCitDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VT
Y2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250
ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZSkKICAgICA6IG1fc2Nyb2xsU3RhcnQoc2Nyb2xsU3Rh
cnQpCiAgICAgLCBtX3BhZ2VTY2FsZVN0YXJ0KHBhZ2VTY2FsZVN0YXJ0KQogICAgICwgbV93aW5k
b3dTaXplKHdpbmRvd1NpemUpCkBAIC01MCwxMSArNTAsMTEgQEAgQ0NQYWdlU2NhbGVBbmltYXRp
b246OkNDUGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9h
dCBwYWcKICAgICAsIG1fYW5jaG9yTW9kZShmYWxzZSkKICAgICAsIG1fc2Nyb2xsRW5kKHNjcm9s
bFN0YXJ0KQogICAgICwgbV9wYWdlU2NhbGVFbmQocGFnZVNjYWxlU3RhcnQpCi0gICAgLCBtX3N0
YXJ0VGltZU1zKHN0YXJ0VGltZU1zKQorICAgICwgbV9zdGFydFRpbWUoc3RhcnRUaW1lKQogewog
fQogCi12b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8oY29uc3QgSW50U2l6ZSYgZmlu
YWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25NcykKK3ZvaWQg
Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwg
ZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBpZiAobV9wYWdl
U2NhbGVTdGFydCAhPSBmaW5hbFBhZ2VTY2FsZSkgewogICAgICAgICAvLyBGb3IgdW5pZm9ybS1s
b29raW5nIHpvb21pbmcsIGluZmVyIHRoZSBhbmNob3IgKHBvaW50IHRoYXQgcmVtYWlucyBpbgpA
QCAtNzgsMTggKzc4LDE4IEBAIHZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21Ubyhjb25z
dCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhCiAgICAgICAgIGZsb2F0
IHJhdGlvWSA9IChzdGFydFJlY3QueSgpIC0gZW5kUmVjdC55KCkpIC8gKGVuZFJlY3QuaGVpZ2h0
KCkgLSBzdGFydFJlY3QuaGVpZ2h0KCkpOwogCiAgICAgICAgIEludFNpemUgYW5jaG9yKG1fd2lu
ZG93U2l6ZS53aWR0aCgpICogcmF0aW9YLCBtX3dpbmRvd1NpemUuaGVpZ2h0KCkgKiByYXRpb1kp
OwotICAgICAgICB6b29tV2l0aEFuY2hvcihhbmNob3IsIGZpbmFsUGFnZVNjYWxlLCBkdXJhdGlv
bk1zKTsKKyAgICAgICAgem9vbVdpdGhBbmNob3IoYW5jaG9yLCBmaW5hbFBhZ2VTY2FsZSwgZHVy
YXRpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwdXJlIHRyYW5z
bGF0aW9uLCB0aGVuIHRoZXJlIGV4aXN0cyBubyBhbmNob3IuIExpbmVhcmx5CiAgICAgICAgIC8v
IGludGVycG9sYXRlIHRoZSBzY3JvbGwgb2Zmc2V0IGluc3RlYWQuCiAgICAgICAgIG1fc2Nyb2xs
RW5kID0gZmluYWxTY3JvbGw7CiAgICAgICAgIG1fcGFnZVNjYWxlRW5kID0gZmluYWxQYWdlU2Nh
bGU7Ci0gICAgICAgIG1fZHVyYXRpb25NcyA9IGR1cmF0aW9uTXM7CisgICAgICAgIG1fZHVyYXRp
b24gPSBkdXJhdGlvbjsKICAgICAgICAgbV9hbmNob3JNb2RlID0gZmFsc2U7CiAgICAgfQogfQog
Ci12b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25zdCBJbnRTaXpl
JiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25NcykKK3ZvaWQg
Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hv
ciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBtX3Njcm9s
bEVuZCA9IG1fc2Nyb2xsU3RhcnQgKyBhbmNob3I7CiAgICAgbV9zY3JvbGxFbmQuc2NhbGUoZmlu
YWxQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZVN0YXJ0KTsKQEAgLTEwMywzMSArMTAzLDMxIEBAIHZv
aWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFu
Y2hvciwgZmxvYXQgZmluYWxQYWdlCiAKICAgICBtX2FuY2hvciA9IGFuY2hvcjsKICAgICBtX3Bh
Z2VTY2FsZUVuZCA9IGZpbmFsUGFnZVNjYWxlOwotICAgIG1fZHVyYXRpb25NcyA9IGR1cmF0aW9u
TXM7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOwogICAgIG1fYW5jaG9yTW9kZSA9IHRydWU7
CiB9CiAKLUludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0VGltZShk
b3VibGUgdGltZU1zKSBjb25zdAorSW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xs
T2Zmc2V0QXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIHJldHVybiBzY3JvbGxPZmZz
ZXRBdFJhdGlvKHByb2dyZXNzUmF0aW9Gb3JUaW1lKHRpbWVNcykpOworICAgIHJldHVybiBzY3Jv
bGxPZmZzZXRBdFJhdGlvKHByb2dyZXNzUmF0aW9Gb3JUaW1lKHRpbWUpKTsKIH0KIAotZmxvYXQg
Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGltZU1zKSBjb25z
dAorZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGlt
ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFnZVNjYWxlQXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9y
VGltZSh0aW1lTXMpKTsKKyAgICByZXR1cm4gcGFnZVNjYWxlQXRSYXRpbyhwcm9ncmVzc1JhdGlv
Rm9yVGltZSh0aW1lKSk7CiB9CiAKLWJvb2wgQ0NQYWdlU2NhbGVBbmltYXRpb246OmlzQW5pbWF0
aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK2Jvb2wgQ0NQYWdlU2NhbGVB
bmltYXRpb246OmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHRpbWVNcyA+PSBlbmRUaW1lTXMoKTsKKyAgICByZXR1cm4gdGltZSA+PSBl
bmRUaW1lKCk7CiB9CiAKLWZsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlv
Rm9yVGltZShkb3VibGUgdGltZU1zKSBjb25zdAorZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246
OnByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIGlmIChpc0Fu
aW1hdGlvbkNvbXBsZXRlQXRUaW1lKHRpbWVNcykpCisgICAgaWYgKGlzQW5pbWF0aW9uQ29tcGxl
dGVBdFRpbWUodGltZSkpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgcmV0dXJuICh0aW1lTXMg
LSBtX3N0YXJ0VGltZU1zKSAvIG1fZHVyYXRpb25NczsKKyAgICByZXR1cm4gKHRpbWUgLSBtX3N0
YXJ0VGltZSkgLyBtX2R1cmF0aW9uOwogfQogCiBJbnRTaXplIENDUGFnZVNjYWxlQW5pbWF0aW9u
OjpzY3JvbGxPZmZzZXRBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmlt
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGFnZVNjYWxlQW5pbWF0aW9uLmgKaW5kZXggZjRiMWJmNDdhOWE5NzY3OGMzNmVmNjJhYmNiNGNk
ZTA1Yzg0ZGU4OS4uZDlhY2I0OTExZGJjMjU2ZmY5ZWJmOWVhN2UyZDNlYzMzZTZmZjA3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
YWdlU2NhbGVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oCkBAIC0zOSwzOSArMzksMzkgQEAg
cHVibGljOgogICAgIC8vIENvbnN0cnVjdCB3aXRoIHRoZSBzdGFydGluZyBwYWdlIHNjYWxlIGFu
ZCBzY3JvbGwgb2Zmc2V0ICh3aGljaCBpcyBpbgogICAgIC8vIHBhZ2VTY2FsZVN0YXJ0IHNwYWNl
KS4gVGhlIHdpbmRvdyBzaXplIGlzIHRoZSB1c2VyLXZpZXdhYmxlIGFyZWEKICAgICAvLyBpbiBw
aXhlbHMuCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IGNyZWF0
ZShjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0
IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUg
c3RhcnRUaW1lTXMpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9u
PiBjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0
LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwg
ZG91YmxlIHN0YXJ0VGltZSk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW5pdGlh
bGl6ZSB0aGUgYW5pbWF0aW9uLiBDYWxsIG9uZSBvZiB0aGVtCiAgICAgLy8gaW1tZWRpYXRlbHkg
YWZ0ZXIgY29uc3RydWN0aW9uIHRvIHNldCB0aGUgZmluYWwgc2Nyb2xsIGFuZCBwYWdlIHNjYWxl
LgogCiAgICAgLy8gWm9vbSB3aGlsZSBleHBsaWNpdGx5IHNwZWNpZnlpbmcgdGhlIHRvcC1sZWZ0
IHNjcm9sbCBwb3NpdGlvbi4gVGhlCiAgICAgLy8gc2Nyb2xsIG9mZnNldCBpcyBpbiBmaW5hbFBh
Z2VTY2FsZSBjb29yZGluYXRlcy4KLSAgICB2b2lkIHpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5h
bFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsKKyAgICB2
b2lkIHpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2Nh
bGUsIGRvdWJsZSBkdXJhdGlvbik7CiAKICAgICAvLyBab29tIGJhc2VkIG9uIGEgc3BlY2lmaWVk
IG9uc2NyZWVuIGFuY2hvciwgd2hpY2ggd2lsbCByZW1haW4gYXQgdGhlIHNhbWUKICAgICAvLyBw
b3NpdGlvbiBvbiB0aGUgc2NyZWVuIHRocm91Z2hvdXQgdGhlIGFuaW1hdGlvbi4gVGhlIGFuY2hv
ciBpcyBpbiBsb2NhbAogICAgIC8vIHNwYWNlIHJlbGF0aXZlIHRvIHNjcm9sbFN0YXJ0LgotICAg
IHZvaWQgem9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBh
Z2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpOworICAgIHZvaWQgem9vbVdpdGhBbmNob3IoY29u
c3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9u
KTsKIAogICAgIC8vIENhbGwgdGhlc2UgZnVuY3Rpb25zIHdoaWxlIHRoZSBhbmltYXRpb24gaXMg
aW4gcHJvZ3Jlc3MgdG8gb3V0cHV0IHRoZQogICAgIC8vIGN1cnJlbnQgc3RhdGUuCi0gICAgSW50
U2l6ZSBzY3JvbGxPZmZzZXRBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3Q7Ci0gICAgZmxvYXQg
cGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OwotICAgIGJvb2wgaXNBbmltYXRp
b25Db21wbGV0ZUF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdDsKKyAgICBJbnRTaXplIHNjcm9s
bE9mZnNldEF0VGltZShkb3VibGUgdGltZSkgY29uc3Q7CisgICAgZmxvYXQgcGFnZVNjYWxlQXRU
aW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKKyAgICBib29sIGlzQW5pbWF0aW9uQ29tcGxldGVBdFRp
bWUoZG91YmxlIHRpbWUpIGNvbnN0OwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIHJl
dHVybiBzdGF0ZSB3aGljaCBpcyBpbnZhcmlhbnQgdGhyb3VnaG91dCB0aGUKICAgICAvLyBjb3Vy
c2Ugb2YgdGhlIGFuaW1hdGlvbi4KLSAgICBkb3VibGUgc3RhcnRUaW1lTXMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXJ0VGltZU1zOyB9Ci0gICAgZG91YmxlIGR1cmF0aW9uTXMoKSBjb25zdCB7IHJl
dHVybiBtX2R1cmF0aW9uTXM7IH0KLSAgICBkb3VibGUgZW5kVGltZU1zKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydFRpbWVNcyArIG1fZHVyYXRpb25NczsgfQorICAgIGRvdWJsZSBzdGFydFRpbWUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGltZTsgfQorICAgIGRvdWJsZSBkdXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICBkb3VibGUgZW5kVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnRUaW1lICsgbV9kdXJhdGlvbjsgfQogICAgIGNvbnN0IEludFNpemUmIGZp
bmFsU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxFbmQ7IH0KICAgICBmbG9h
dCBmaW5hbFBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlRW5kOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxT
dGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNv
bnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lTXMpOworICAgIENDUGFn
ZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2Nh
bGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVu
dFNpemUsIGRvdWJsZSBzdGFydFRpbWUpOwogCiBwcml2YXRlOgotICAgIGZsb2F0IHByb2dyZXNz
UmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OworICAgIGZsb2F0IHByb2dyZXNzUmF0
aW9Gb3JUaW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKICAgICBJbnRTaXplIHNjcm9sbE9mZnNldEF0
UmF0aW8oZmxvYXQgcmF0aW8pIGNvbnN0OwogICAgIGZsb2F0IHBhZ2VTY2FsZUF0UmF0aW8oZmxv
YXQgcmF0aW8pIGNvbnN0OwogCkBAIC04NSw4ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgSW50U2l6
ZSBtX3Njcm9sbEVuZDsKICAgICBmbG9hdCBtX3BhZ2VTY2FsZUVuZDsKIAotICAgIGRvdWJsZSBt
X3N0YXJ0VGltZU1zOwotICAgIGRvdWJsZSBtX2R1cmF0aW9uTXM7CisgICAgZG91YmxlIG1fc3Rh
cnRUaW1lOworICAgIGRvdWJsZSBtX2R1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAwYWYwN2Ni
ZGJmZDI5NTc4MzhmZWMxNDRiMjZhNmRhOWIzZGZjOGRmLi5iMTM4MjEzOTA5MzlmMjI4OGU3MmVi
MWUxNTg2ODQzNTliNGY2N2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcApAQCAtODgsOSArODgsOSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0
ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJv
b2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQogewotICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1
c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMCwg
ZHVyYXRpb25TZWMgKiAxMDAwLjApOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgZHVyYXRpb24pOwogfQogCiBHcmFwaGljc0NvbnRleHQz
RCogQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCgpCkBAIC0yOTIsOCArMjkyLDEwIEBAIGJv
b2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21wb3NpdGUoKQogICAgIEFTU0VSVCghbV9jb250
ZXh0TG9zdCk7CiAgICAgewogICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0g
ICAgICBkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgKiAxMDAwLjA7Ci0gICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1l
RGlzcGxheVRpbWVNcyk7CisgICAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOworICAgICAgZG91YmxlIHdhbGxDbG9ja1RpbWUgPSBXVEY6OmN1
cnJlbnRUaW1lKCk7CisKKyAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3Rv
bmljVGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5k
ZXggOGUxODYwYzI2MDY4YTcyMzQ4NzQ0ZTE1YTA2MmVmZGJkNTUyMjE0NS4uOTg3NmE0NmJmMWRl
OTk2MTA0MDM1NDNiMWIxNDk3ODRiYjQwYmZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ1Byb3h5IGlt
cGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQg
KnBpeGVscywgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3Is
IGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1
c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pOwogICAgIHZpcnR1YWwgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVu
ZGVyaW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAppbmRleCA5MDVhMDk0YzA3YTYxMWUxMjc3Y2IxNmVhMzdiMjM1ZDZi
ZTY1M2UxLi40YjNkMmJkMzJkMjNiMzJkNjNjZmIwYjY4M2Q0ZGZlMjkwZWNmMmUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMTMzLDE3ICsxMzMsMTcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0KiByZXF1
ZXN0KQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0ZvcmNlZFJlZHJhdygp
OwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRv
dWJsZSBkdXJhdGlvblNlYykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9h
dCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKSk7Ci0gICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1Ro
cmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbk9uSW1wbFRocmVhZCwgdGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIGR1cmF0
aW9uU2VjKSk7CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1Ro
cmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbk9uSW1wbFRocmVhZCwgdGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIGR1cmF0
aW9uKSk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9y
LCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKQordm9pZCBDQ1RocmVhZFByb3h5Ojpy
ZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQoSW50U2l6ZSB0YXJnZXRQ
b3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pCiB7
CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAobV9sYXllclRy
ZWVIb3N0SW1wbCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVB
bmltYXRpb24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpICogMTAwMC4wLCBkdXJhdGlvblNlYyAqIDEwMDAuMCk7CisgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0
aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgZHVy
YXRpb24pOwogfQogCiBHcmFwaGljc0NvbnRleHQzRCogQ0NUaHJlYWRQcm94eTo6Y29udGV4dCgp
CkBAIC01MjUsMTAgKzUyNSwxMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IGNvbXB1dGUg
dGhlIGZyYW1lIGRpc3BsYXkgdGltZSBtb3JlIGludGVsbGlnZW50bHkKLSAgICBkb3VibGUgZnJh
bWVEaXNwbGF5VGltZU1zID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7
CisgICAgZG91YmxlIG1vbm90b25pY1RpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsKKyAgICBkb3VibGUgd2FsbENsb2NrVGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKIAotICAg
IG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT53aWxsRHJhdyhmcmFtZURpc3BsYXlUaW1lTXMp
OwotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUoZnJhbWVEaXNwbGF5VGltZU1zKTsK
KyAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+d2lsbERyYXcobW9ub3RvbmljVGltZSk7
CisgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xv
Y2tUaW1lKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAKICAgICAv
LyBDaGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNrLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCmluZGV4IDU3YmE1OTg3NDg4ODY5ZTkzMjgwZWU0NTUzMGY4Yjg5NzU4MmJiMzcu
LmFkNTAwNTc3ZDIyYzAyYmU0MDhiZTkyZDQ4ZThkOGY0YmQyYThkOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94eSBp
bXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lk
ICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2Nh
bGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9y
LCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wg
dXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKTsKICAgICB2aXJ0dWFsIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJl
bmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmNwcAppbmRleCAzOTczMDhiNTI5Y2M0MTc0NzE4N2M3Zjg2N2QxMjFiOWIyM2Zj
YWVlLi5jMmRiZWUzYjQ3MmRmNjY2MTZmNDIxNTg2Y2I1ZmI3MDc3N2Q2MmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgaW50IFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9pZGVudGlmaWVy
OwogfQogCi12b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp3aWxsRHJhdyhkb3Vi
bGUgZnJhbWVCZWdpblRpbWVNcykKK3ZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OndpbGxEcmF3KGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
aAppbmRleCBhMmYxMzAyNWQ5ZjE3YmZkMThjMTQ0ZjkzMTdkODJhNmVhMTA5ZWM1Li44M2I0YmQ1
NDYxYWMzNGE1MTZiY2VkZmVjNDI0ZWExZjRjYzMwNmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgK
QEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgLy8gV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGludCBpZGVudGlmaWVyKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbERyYXcoZG91YmxlIG1vbm90b25pY1RpbWUpOwogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyQ2xpZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LmNwcApp
bmRleCBlMWFlY2NjNTM5YTVkNTFkZmYxOGEyYmU3YzQyZWViYTE0NTdlZmJkLi4xODdhNjFhODlm
ZThjM2FkNTFmOWNlNmYyYjNlYzIyODNjMDY5MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsVGVzdC5jcHAKQEAgLTUzLDEwICs1MywxMCBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbFRlc3QsIFRyaXZpYWxUcmFuc2l0aW9uKQogICAgIE93blB0cjxDQ0FjdGl2
ZUFuaW1hdGlvbj4gdG9BZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtl
RmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkp
KTsKIAogICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVu
dHMpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxT
RShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBAIC03MiwxMyArNzIsMTMg
QEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBUcml2aWFsUXVldWlu
ZykKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5l
dyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9w
YWNpdHkpKTsKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0
UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDEsIDAuNWYpKSwgMiwgQ0NBY3RpdmVBbmlt
YXRpb246Ok9wYWNpdHkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7
CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJV
RShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1
bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAg
ICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXku
b3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMiwgMiwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1
bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKIH0KQEAgLTkxLDcgKzkxLDcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGxUZXN0LCBJbnRlcnJ1cHQpCiAgICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbD4gY29udHJvbGxlcigKICAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsOjpjcmVhdGUoJmR1bW15KSk7CiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFj
dGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSks
IDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0
ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwog
ICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBF
WFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKIApAQCAtOTksMTAgKzk5LDEwIEBAIFRFU1Qo
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgSW50ZXJydXB0KQogICAgIHRvQWRk
LT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0Zvck5leHRUaWNrLCAwKTsK
ICAgICBjb250cm9sbGVyLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKIAotICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMC41LCAqZXZlbnRzKTsgLy8gc2Vjb25kIGFuaW0gc3RhcnRzIE5PVy4KKyAgICBj
b250cm9sbGVyLT5hbmltYXRlKDAuNSwgMC41LCAqZXZlbnRzKTsgLy8gc2Vjb25kIGFuaW0gc3Rh
cnRzIE5PVy4KICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgxLjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS41LCAxLjUs
ICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIEVY
UEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBAIC0xMTks
MTUgKzExOSwxNSBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIFNj
aGVkdWxlVG9nZXRoZXJXaGVuQVByb3BlcnR5SXNCbG9ja2VkKQogICAgIGNvbnRyb2xsZXItPmFk
ZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VUcmFuc2Zvcm1UcmFuc2l0
aW9uKDEpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkpOwogICAgIGNvbnRyb2xs
ZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5z
aXRpb24oMSwgMCwgMSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCi0gICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRl
KDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwg
MSwgKmV2ZW50cyk7CiAgICAgLy8gU2hvdWxkIG5vdCBoYXZlIHN0YXJ0ZWQgdGhlIGZsb2F0IHRy
YW5zaXRpb24geWV0LgogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1h
dGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKICAgICAvLyBUaGUg
dGhlIGZsb2F0IGFuaW1hdGlvbiBzaG91bGQgaGF2ZSBzdGFydGVkIGF0IHRpbWUgMSBhbmQgc2hv
dWxkIGJlIGRvbmUuCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBj
b250cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1t
eS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmlt
YXRpb24oKSk7CiB9CkBAIC0xNDcsMjAgKzE0NywyMCBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbFRlc3QsIFNjaGVkdWxlVG9nZXRoZXJXaXRoQW5BbmltV2FpdGluZykKICAg
ICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtl
RmxvYXRUcmFuc2l0aW9uKDEsIDEsIDAuNWYpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNp
dHkpKTsKIAogICAgIC8vIEFuaW1zIHdpdGggaWQgMSBzaG91bGQgYm90aCBzdGFydCBub3cuCi0g
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2
ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKICAgICAv
LyBUaGUgb3BhY2l0eSBhbmltYXRpb24gc2hvdWxkIGhhdmUgZmluaXNoZWQgYXQgdGltZSAxLCBi
dXQgdGhlIGdyb3VwCiAgICAgLy8gb2YgYW5pbWF0aW9ucyB3aXRoIGlkIDEgZG9uJ3QgZmluaXNo
IHVudGlsIHRpbWUgMiBiZWNhdXNlIG9mIHRoZSBsZW5ndGgKICAgICAvLyBvZiB0aGUgdHJhbnNm
b3JtIGFuaW1hdGlvbi4KLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgMiwgKmV2ZW50cyk7CiAgICAgLy8gU2hvdWxkIG5vdCBo
YXZlIHN0YXJ0ZWQgdGhlIGZsb2F0IHRyYW5zaXRpb24geWV0LgogICAgIEVYUEVDVF9UUlVFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXku
b3BhY2l0eSgpKTsKIAogICAgIC8vIFRoZSB0aGUgc2Vjb25kIG9wYWNpdHkgYW5pbWF0aW9uIHNo
b3VsZCBzdGFydCBhdCB0aW1lIDIgYW5kIHNob3VsZCBiZQogICAgIC8vIGRvbmUgYnkgdGltZSAz
Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5h
bmltYXRlKDMsIDMsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5
KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CiB9CkBAIC0xNzgsMTMgKzE3OCwxMyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbFRlc3QsIFNjaGVkdWxlQW5pbWF0aW9uKQogICAgIHRvQWRkLT5zZXRTdGFydFRpbWUoMSk7
CiAgICAgY29udHJvbGxlci0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CiAKLSAgICBjb250cm9sbGVy
LT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2
ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRz
KTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAg
ICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0
ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVudHMpOwog
ICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBAIC0yMDUsMTYgKzIwNSwxNiBAQCBU
RVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIFNjaGVkdWxlZEFuaW1hdGlv
bkludGVycnVwdHNSdW5uaW5nQW5pbQogICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNl
KCkpOwogCiAgICAgLy8gRmlyc3QgMnMgb3BhY2l0eSB0cmFuc2l0aW9uIHNob3VsZCBzdGFydCBp
bW1lZGlhdGVseS4KLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFj
aXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMC41LCAqZXZlbnRzKTsKKyAgICBjb250
cm9sbGVyLT5hbmltYXRlKDAuNSwgMC41LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVmLCBkdW1t
eS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15
Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBj
b250cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1t
eS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmlt
YXRpb24oKSk7CiB9CkBAIC0yMzgsMjAgKzIzOCwyMCBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbFRlc3QsIFNjaGVkdWxlZEFuaW1hdGlvbkludGVycnVwdHNSdW5uaW5nQW5p
bQogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3
IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMC43NWYpKSwgMywgQ0NBY3RpdmVBbmltYXRpb246
Ok9wYWNpdHkpKTsKIAogICAgIC8vIEZpcnN0IDJzIG9wYWNpdHkgdHJhbnNpdGlvbiBzaG91bGQg
c3RhcnQgaW1tZWRpYXRlbHkuCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsK
KyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVt
bXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLjUsIDAuNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RS
VUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjI1
ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3Rp
dmVBbmltYXRpb24oKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAg
ICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVt
bXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDMsICpldmVudHMpOworICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMywgMywgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29u
dHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5v
cGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoNCwgKmV2ZW50cyk7CisgICAgY29u
dHJvbGxlci0+YW5pbWF0ZSg0LCA0LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1
bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKIH0KQEAgLTI2OCwyNyArMjY4LDI3IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsVGVzdCwgVHJpdmlhbExvb3BpbmcpCiAgICAgdG9BZGQtPnNldEl0ZXJh
dGlvbnMoMyk7CiAgICAgY29udHJvbGxlci0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CiAKLSAgICBj
b250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
MCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5p
bWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMS4yNSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgx
LjI1LCAxLjI1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3Rp
dmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVmLCBkdW1teS5vcGFjaXR5KCkpOwot
ICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS43NSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+
YW5pbWF0ZSgxLjc1LCAxLjc1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVy
LT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1teS5vcGFj
aXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMi4yNSwgKmV2ZW50cyk7CisgICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgyLjI1LCAyLjI1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShj
b250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVmLCBk
dW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMi43NSwgKmV2ZW50cyk7
CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLjc1LCAyLjc1LCAqZXZlbnRzKTsKICAgICBFWFBF
Q1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VR
KDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMywgKmV2
ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAzLCAqZXZlbnRzKTsKICAgICBFWFBF
Q1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9F
USgxLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgLy8gSnVzdCBiZSBleHRyYSBzdXJlLgotICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoNCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0
ZSg0LCA0LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKIH0K
IApAQCAtMzA1LDIwICszMDUsMjAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcklt
cGxUZXN0LCBJbmZpbml0ZUxvb3BpbmcpCiAgICAgdG9BZGQtPnNldEl0ZXJhdGlvbnMoLTEpOwog
ICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogCi0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVu
dHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
ICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDEuMjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS4yNSwgMS4yNSwg
KmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9u
KCkpOwogICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9s
bGVyLT5hbmltYXRlKDEuNzUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS43
NSwgMS43NSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKIAot
ICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTA3Mzc0MTgyNC4yNSwgKmV2ZW50cyk7CisgICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgxMDczNzQxODI0LjI1LCAxMDczNzQxODI0LjI1LCAqZXZlbnRzKTsK
ICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAg
RVhQRUNUX0VRKDAuMjVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1h
dGUoMTA3Mzc0MTgyNC43NSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDcz
NzQxODI0Ljc1LCAxMDczNzQxODI0Ljc1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1t
eS5vcGFjaXR5KCkpOwogCkBAIC0zMzksMjcgKzMzOSwyNyBAQCBURVNUKENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbFRlc3QsIFBhdXNlUmVzdW1lKQogICAgIGNvbnN0IGludCBpZCA9IDE7
CiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcg
RmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3Bh
Y2l0eSkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250
cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xs
ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0
eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwgKmV2ZW50cyk7CisgICAgY29udHJv
bGxlci0+YW5pbWF0ZSgwLjUsIDAuNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5v
cGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0
aW9uKGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogICAgIGNvbnRyb2xsZXItPmdl
dEFjdGl2ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpLT5zZXRSdW5T
dGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UGF1c2VkLCAwLjVmKTsKIAotICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMTAyNCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LCAx
MDI0LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmlt
YXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAKICAgICBF
WFBFQ1RfVFJVRShjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5p
bWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgY29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKGlk
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSktPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0
aW9uOjpSdW5uaW5nLCAxMDI0KTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTAyNC4yNSwg
KmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LjI1LCAxMDI0LjI1LCAqZXZl
bnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMTAyNC41LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwMjQu
NSwgMTAyNC41LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0
aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogfQpA
QCAtMzc2LDE5ICszNzYsMTkgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxU
ZXN0LCBBYm9ydEFHcm91cGVkQW5pbWF0aW9uKQogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVB
Y3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMiwgMCwgMSkp
LCBpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBjb250cm9sbGVyLT5hZGQo
Y3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEs
IDEsIDAuNzVmKSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwg
MCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAKICAgICBFWFBFQ1Rf
VFJVRShjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9u
OjpPcGFjaXR5KSk7CiAgICAgY29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0Fj
dGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSktPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpB
Ym9ydGVkLCAxKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFj
aXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29udHJv
bGxlci0+YW5pbWF0ZSgyLCAyLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRSghY29udHJvbGxl
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3Bh
Y2l0eSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcAppbmRleCBjNGYxMDNhM2Nh
ZmU0NjhlNGI4ZTc5Nzg2ZDJiMjE4N2U0NWQ3ZWExLi44YTYyN2ZhMGY2NTlkODFkMzg3NWNlMTJh
Y2FjYTZmMGIyNmQ3M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCkBAIC0yMDEs
OCArMjAxLDggQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIHN5bmNDb21w
bGV0ZWRBbmltYXRpb24pCiAKICAgICAvLyBTdGVwIHRocm91Z2ggdGhlIGFuaW1hdGlvbiB1bnRp
bCBpdCBpcyBmaW5pc2hlZC4gQXQgdGhlIG5leHQgc3luYywgdGhlIG1haW4gdGhyZWFkJ3MgYW5p
bWF0aW9uIHNob3VsZCBiZSBjbGVhcmVkLgogICAgIE93blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3Rvcj4gZXZlbnRzKGFkb3B0UHRyKG5ldyBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvcikpOwotICAg
IGNvbnRyb2xsZXJJbXBsLT5hbmltYXRlKDAsICpldmVudHMpOwotICAgIGNvbnRyb2xsZXJJbXBs
LT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXJJbXBsLT5hbmltYXRlKDAsIDAs
ICpldmVudHMpOworICAgIGNvbnRyb2xsZXJJbXBsLT5hbmltYXRlKDIsIDIsICpldmVudHMpOwog
CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oMCwg
Q0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVy
LT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGVkMDUyYTljM2Q4
NjljN2FlOTI3MWY2MTFhMzljNDVhYmE4YmIyOTcuLmQzMGJjNDUyZDQyNDgyMmY4NmYyZWQ0NWNh
MzhhOTZjODJkZDZiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zNDksOCArMzQ5LDEwIEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNjYWxlQW5pbWF0aW9uKQogICAgIEFT
U0VSVChzY3JvbGxMYXllcik7CiAKICAgICBjb25zdCBmbG9hdCBtaW5QYWdlU2NhbGUgPSAwLjUs
IG1heFBhZ2VTY2FsZSA9IDQ7Ci0gICAgY29uc3QgZG91YmxlIHN0YXJ0VGltZU1zID0gMTAwMDsK
LSAgICBjb25zdCBkb3VibGUgZHVyYXRpb25NcyA9IDEwMDsKKyAgICBjb25zdCBkb3VibGUgc3Rh
cnRUaW1lID0gMTsKKyAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAwLjE7CisgICAgY29uc3Qg
ZG91YmxlIGhhbGZ3YXlUaHJvdWdoQW5pbWF0aW9uID0gc3RhcnRUaW1lICsgZHVyYXRpb24gLyAy
OworICAgIGNvbnN0IGRvdWJsZSBlbmRUaW1lID0gc3RhcnRUaW1lICsgZHVyYXRpb247CiAKICAg
ICAvLyBOb24tYW5jaG9yIHpvb20taW4KICAgICB7CkBAIC0zNTgsMTAgKzM2MCwxMCBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKICAgICAgICAg
c2Nyb2xsTGF5ZXItPnNldFBhZ2VTY2FsZURlbHRhKDEpOwogICAgICAgICBzY3JvbGxMYXllci0+
c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoNTAsIDUwKSk7CiAKLSAgICAgICAgbV9ob3N0SW1w
bC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZSgwLCAwKSwgZmFsc2UsIDIsIHN0YXJ0
VGltZU1zLCBkdXJhdGlvbk1zKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShzdGFydFRp
bWVNcyArIGR1cmF0aW9uTXMgLyAyKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+c3RhcnRQYWdlU2Nh
bGVBbmltYXRpb24oSW50U2l6ZSgwLCAwKSwgZmFsc2UsIDIsIHN0YXJ0VGltZSwgZHVyYXRpb24p
OworICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKGhhbGZ3YXlUaHJvdWdoQW5pbWF0aW9uLCBo
YWxmd2F5VGhyb3VnaEFuaW1hdGlvbik7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVz
dFJlZHJhdyk7Ci0gICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoc3RhcnRUaW1lTXMgKyBkdXJh
dGlvbk1zKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShlbmRUaW1lLCBlbmRUaW1lKTsK
ICAgICAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0Q29tbWl0KTsKIAogICAgICAgICBPd25Q
dHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IG1faG9zdEltcGwtPnByb2Nlc3NT
Y3JvbGxEZWx0YXMoKTsKQEAgLTM3NSw4ICszNzcsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFBh
Z2VTY2FsZURlbHRhKDEpOwogICAgICAgICBzY3JvbGxMYXllci0+c2V0U2Nyb2xsUG9zaXRpb24o
SW50UG9pbnQoNTAsIDUwKSk7CiAKLSAgICAgICAgbV9ob3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oSW50U2l6ZSgyNSwgMjUpLCB0cnVlLCBtaW5QYWdlU2NhbGUsIHN0YXJ0VGltZU1z
LCBkdXJhdGlvbk1zKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShzdGFydFRpbWVNcyAr
IGR1cmF0aW9uTXMpOworICAgICAgICBtX2hvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihJbnRTaXplKDI1LCAyNSksIHRydWUsIG1pblBhZ2VTY2FsZSwgc3RhcnRUaW1lLCBkdXJhdGlv
bik7CisgICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoZW5kVGltZSwgZW5kVGltZSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdFJlZHJhdyk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KG1fZGlkUmVxdWVzdENvbW1pdCk7CiAKQEAgLTg0Niw3ICs4NDgsNyBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIHZpc2liaWxpdHlDaGFuZ2VSZXNldHNEYW1hZ2UpCiAgICAgLy8g
Rmlyc3QgZnJhbWU6IGlnbm9yZS4KICAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygp
OwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwotIAorCiAgICAgLy8gU2Vj
b25kIGZyYW1lOiBub3RoaW5nIGhhcyBjaGFuZ2VkIC0tLSBzbyB3ZSBzb3VsZG4ndCBwdXNoIGFu
eXRoaW5nIHdpdGggcGFydGlhbCBzd2FwLgogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRl
eCBkN2RkMDU1OTViZmU1MjZhNTA3ZThiNzJlNDhkYTdjMTg2NzYzNDk1Li5kYTY2OTliYmMzM2Uy
NmNmZWU1MzFiNGZhOTU5YTFkYTE0MDBiZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRy
ZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNv
bnN0IEludFNpemUmLCBmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5p
bWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpIHsgfQogCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgQ0NMYXllckFuaW1hdGlvbkRlbGVn
YXRlCkBAIC0xMDIsOSArMTAyLDkgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQorICAg
IHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUg
d2FsbENsb2NrVGltZSkKICAgICB7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1h
dGVMYXllcnMoZnJhbWVCZWdpblRpbWVNcyk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmFuaW1hdGVMYXllcnMobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgICAgIG1f
dGVzdEhvb2tzLT5hbmltYXRlTGF5ZXJzKHRoaXMpOwogICAgIH0KIApAQCAtMjEyLDkgKzIxMiw5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9z
dENsaWVudCh0ZXN0SG9va3MpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5p
bWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFu
aW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgewotICAgICAgICBtX3Rlc3RIb29r
cy0+dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7CisgICAgICAgIG1fdGVzdEhvb2tz
LT51cGRhdGVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130864</attachid>
            <date>2012-03-08 11:23:50 -0800</date>
            <delta_ts>2012-03-08 12:28:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120308142348.patch</filename>
            <type>text/plain</type>
            <size>59879</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NTA1OThhZjc1
NTVkYjZmMjY5N2UxNWVjMmNhMTMxMDU4Yi4uZTMyNzQ1NWM0MDNhMzAxYzZkOWE1MGYyYjBlNmVl
YWIzNDJmNTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qg
dGhhdCBjb3JyZWN0IHRpbWUgaXMgdXNlZCBpcyBpbiBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGxUZXN0LkFuaW1hdGlvbnNVc2VDb3JyZWN0VGltZQorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKENDSW5wdXRI
YW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRU
aWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6
c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JU
YXJnZXRBdmFpbGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bC5oOgorICAgICAgICAoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1Jl
Y3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRl
UGFnZVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1h
dGVMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxlQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6aXNBbmltYXRpb25D
b21wbGV0ZUF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
cHJvZ3Jlc3NSYXRpb0ZvclRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmg6CisgICAgICAgIChDQ1BhZ2VTY2FsZUFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c3RhcnRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpkdXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZW5kVGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBv
c2l0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRp
b25PbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEy
LTAzLTA2ICBEYXZpZCBDb3J2b3lzaWVyICA8ZGF2aWQuY29ydm95c2llckBvcmFuZ2UuY29tPgog
CiAgICAgICAgIFVucmVsZWFzZWQgZ3N0X29iamVjdF9yZWZlcmVuY2UgdG8gYXVkaW8gc2luayBp
biBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYjdjYzA4ZThiZDQ5N2Y1NDVmOWIxOGVmMGUyNTI2NWIyNmM1ZGQxOS4uMWU0NWQ4MzljNmFi
ZTk5ODY2OGU2MTg3OTNkYWFlYjE0NjA2Zjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxMi0wMy0wOCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3Qg
dGltZSB3aGVuIG5vdGlmeWluZyBhbmltYXRpb24gc3RhcnRlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1MzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOjp3aWxsRHJhdyk6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmg6CisgICAgICAgIChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAg
ICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHA6CisgICAgICAg
IChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgICog
dGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6dXBkYXRlQW5pbWF0aW9u
cyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyk6
CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojp1cGRhdGVBbmltYXRpb25z
KToKKwogMjAxMi0wMy0wNiAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBbV2ViU29ja2V0XSBBZGQgV2ViU29ja2V0IGV4dGVu
c2lvbnMgcXVlcnkgV2ViS2l0IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggNmMw
NTU5OTRjNThlY2E0MTEzMTlhOWM5OWQxNDNmOWMxN2YzZTJjMi4uMzM3MjFmMWRmYzcwYzQ2NTcy
NDdkNjc4MWZlOTY5ZjFhMjBiODlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC03
Miw4ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN0YXJ0VGltZU1zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVyYXRpb25NcykgPSAwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgc3RhcnRUaW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVyYXRp
b24pID0gMDsKIAogcHJvdGVjdGVkOgogICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CkBA
IC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ0lucHV0SGFuZGxlcigpIHsg
fQogCiAgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERyYXcoZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUgbW9ub3RvbmljVGltZSkgPSAwOwogCiBwcm90ZWN0ZWQ6
CiAgICAgQ0NJbnB1dEhhbmRsZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCmluZGV4IGU4ZDZiYzdlZjc1YWM0MDNkMTFj
YTYxMTU0ODhlY2M3MWQ1NjM1ZDUuLmI4NDRiM2NiNDUxZmRmZmFmNjc3NmE2ZGYwYTE5ZmI5ZTQ1
M2U2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsLmNwcApAQCAtNDksMTUgKzQ5LDE1IEBAIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbDo6fkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCgpCiB7CiB9CiAKLXZvaWQg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2lu
VGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCit2b2lkIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbDo6YW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91
YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCiB7Ci0g
ICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGZyYW1lQmVnaW5UaW1lU2Vjcywg
ZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGZyYW1lQmVn
aW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0
QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICByZXNvbHZlQ29u
ZmxpY3RzKGZyYW1lQmVnaW5UaW1lU2Vjcyk7Ci0gICAgdGlja0FuaW1hdGlvbnMoZnJhbWVCZWdp
blRpbWVTZWNzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2sobW9ub3Rv
bmljVGltZSwgd2FsbENsb2NrVGltZSwgZXZlbnRzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0
aW5nRm9yU3RhcnRUaW1lKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsIGV2ZW50cyk7Cisg
ICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNU
aW1lLCB3YWxsQ2xvY2tUaW1lLCBldmVudHMpOworICAgIHJlc29sdmVDb25mbGljdHMobW9ub3Rv
bmljVGltZSk7CisgICAgdGlja0FuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7CiAgICAgcHVyZ2VG
aW5pc2hlZEFuaW1hdGlvbnMoZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
VGFyZ2V0QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKKyAgICBzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KG1vbm90b25pY1RpbWUsIHdh
bGxDbG9ja1RpbWUsIGV2ZW50cyk7CiB9CiAKIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsOjphZGQoUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gYW5pbSkKQEAgLTgzLDI4
ICs4MywyOCBAQCBib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6aGFzQWN0aXZl
QW5pbWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2so
ZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKK3ZvaWQgQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRp
Y2soZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9h
Y3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JOZXh0
VGljaykgewotICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShD
Q0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG5vdyk7Ci0gICAgICAgICAgICBldmVudHMuYXBwZW5k
KENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG5vdykpOwor
ICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFu
aW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICBtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsKKyAgICAgICAgICAgIGV2
ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQo
KSwgd2FsbENsb2NrVGltZSkpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGlt
ZShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQordm9pZCBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFy
dFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1h
dGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JT
dGFydFRpbWUgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zdGFydFRpbWUoKSA8PSBub3cpIHsK
LSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVB
bmltYXRpb246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5p
bWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG5vdykpOworICAgICAg
ICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0
aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRU
aW1lKCkgPD0gbW9ub3RvbmljVGltZSkgeworICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGlt
ZSk7CisgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50Ojpj
cmVhdGUobV9jbGllbnQtPmlkKCksIHdhbGxDbG9ja1RpbWUpKTsKICAgICAgICAgfQogICAgIH0K
IH0KIAotdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImIGV2ZW50cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpz
dGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBtb25vdG9u
aWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2
ZW50cykKIHsKICAgICAvLyBGaXJzdCBjb2xsZWN0IHJ1bm5pbmcgcHJvcGVydGllcy4KICAgICBU
YXJnZXRQcm9wZXJ0aWVzIGJsb2NrZWRQcm9wZXJ0aWVzOwpAQCAtMTM0LDEzICsxMzQsMTMgQEAg
dm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkKIAogICAgICAgICAgICAgLy8gSWYgdGhlIGludGVyc2Vj
dGlvbiBpcyBudWxsLCB0aGVuIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHRoZSBhbmltYXRpb25zIGlu
IHRoZSBncm91cC4KICAgICAgICAgICAgIGlmIChudWxsSW50ZXJzZWN0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1h
dGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPnNldFN0YXJ0VGltZShub3cpOwotICAgICAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NB
bmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbm93KSk7CisgICAg
ICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFu
aW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7CisgICAgICAgICAg
ICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xp
ZW50LT5pZCgpLCB3YWxsQ2xvY2tUaW1lKSk7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IGkgKyAxOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytqKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCkgPT0gbV9hY3Rp
dmVBbmltYXRpb25zW2pdLT5ncm91cCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5n
LCBub3cpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2pdLT5z
ZXRTdGFydFRpbWUobm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0
aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25p
Y1RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2pdLT5z
ZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJn
ZXRBdmFpbGFiaWxpdHkKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpCit2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbW9ub3RvbmljVGltZSkK
IHsKICAgICAvLyBGaW5kIGFueSBhbmltYXRpb25zIHRoYXQgYXJlIGFuaW1hdGluZyB0aGUgc2Ft
ZSBwcm9wZXJ0eSBhbmQgcmVzb2x2ZSB0aGUKICAgICAvLyBjb25maWN0LiBXZSBjb3VsZCBldmVu
dHVhbGx5IGJsZW5kLCBidXQgZm9yIG5vdyB3ZSdsbCBqdXN0IGFib3J0IHRoZQpAQCAtMTYwLDkg
KzE2MCw5IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29u
ZmxpY3RzKGRvdWJsZSBub3cpCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGog
PCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICBpZiAo
bV9hY3RpdmVBbmltYXRpb25zW2pdLT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpS
dW5uaW5nICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSA9PSBtX2Fj
dGl2ZUFuaW1hdGlvbnNbal0tPnRhcmdldFByb3BlcnR5KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkgPiBtX2FjdGl2ZUFuaW1h
dGlvbnNbal0tPnN0YXJ0VGltZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVB
bmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbm93
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVu
U3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIG1vbm90b25pY1RpbWUpOwogICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpBYm9ydGVkLCBub3cpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0
ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbW9ub3RvbmljVGltZSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTQsMTkgKzE5NCwxOSBAQCB2
b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlv
bnMoQ0NBbmltYXRpb25FdmVudHNWZQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cpCit2b2lkIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1Rp
bWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUo
KSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZykgewotICAgICAgICAgICAgZG91YmxlIHRy
aW1tZWQgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9u
KG5vdyk7CisgICAgICAgICAgICBkb3VibGUgdHJpbW1lZCA9IG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+dHJpbVRpbWVUb0N1cnJlbnRJdGVyYXRpb24obW9ub3RvbmljVGltZSk7CiAKICAgICAgICAg
ICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpKSB7CiAK
ICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybTogewogICAgICAg
ICAgICAgICAgIGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIHRyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT5jdXJ2ZSgpLT50b1RyYW5zZm9ybUFu
aW1hdGlvbkN1cnZlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXggbWF0cml4ID0gdHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUtPmdldFZhbHVlKHRyaW1tZWQsIG1f
Y2xpZW50LT5ib3VuZHMoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+aXNGaW5pc2hlZEF0KG5vdykpCi0gICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVkLCBub3cp
OworICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmlzRmluaXNoZWRB
dChtb25vdG9uaWNUaW1lKSkKKyAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6RmluaXNoZWQsIG1vbm90b25pY1Rp
bWUpOwogCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNldFRyYW5zZm9ybShtYXRyaXgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE1LDggKzIxNSw4IEBAIHZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUgbm93KQogICAgICAg
ICAgICAgY2FzZSBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eTogewogICAgICAgICAgICAgICAg
IGNvbnN0IENDRmxvYXRBbmltYXRpb25DdXJ2ZSogZmxvYXRBbmltYXRpb25DdXJ2ZSA9IG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+Y3VydmUoKS0+dG9GbG9hdEFuaW1hdGlvbkN1cnZlKCk7CiAgICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQgb3BhY2l0eSA9IGZsb2F0QW5pbWF0aW9uQ3VydmUtPmdl
dFZhbHVlKHRyaW1tZWQpOwotICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPmlzRmluaXNoZWRBdChub3cpKQotICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwgbm93KTsK
KyAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQo
bW9ub3RvbmljVGltZSkpCisgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVkLCBtb25vdG9uaWNUaW1l
KTsKIAogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckltcGwuaAppbmRleCAzNTQwMDQ5YjAzNjFmZGU2MjM5NWFiYzBlNGUxNTE3
MDQyZDQ0OGIwLi44ZDBlOGQxNDBiNjY5NDBkMWIwYTQ0N2Y2ODBjMWY5YjBmZTlhZjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaApA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGwoKTsKIAotICAgIHZvaWQgYW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRp
bWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZvaWQgYW5pbWF0ZShkb3Vi
bGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJik7CiAKICAgICB2b2lkIGFkZChQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPik7
CiAKQEAgLTc4LDEzICs3OCwxMyBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBhbmltYXRvciBpcyBv
d25lZCBieSB0aGUgbGF5ZXIuCiAgICAgZXhwbGljaXQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbENsaWVudCopOwogCi0gICAgdm9p
ZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91YmxlIG5vdywgQ0NBbmltYXRp
b25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFy
dFRpbWUoZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHN0
YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG5vdywgQ0NB
bmltYXRpb25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHJlc29sdmVDb25mbGljdHMoZG91Ymxl
IG5vdyk7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91Ymxl
IG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3RvciYpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZShkb3Vi
bGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJik7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxh
YmlsaXR5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3ImKTsKKyAgICB2b2lkIHJlc29sdmVDb25mbGljdHMoZG91YmxlIG1v
bm90b25pY1RpbWUpOwogICAgIHZvaWQgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRp
b25FdmVudHNWZWN0b3ImKTsKIAotICAgIHZvaWQgdGlja0FuaW1hdGlvbnMoZG91YmxlIG5vdyk7
CisgICAgdm9pZCB0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSk7CiAKICAgICBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3Rv
cjxPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmltYXRpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBmNzE1YWUzNWQxN2Y5MGI3NGRi
MjJkYzBmM2M5NGU2NjcwNTE5OTlhLi5kMmU5OTc5MWRjMTQwZWNmZGI0MTQ0ZWVhMGUyNTA3MTIw
YmMxYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtOTcs
MTMgKzk3LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250
ZXh0KCkKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXllclJlbmRlcmVyLT5jb250
ZXh0KCkgOiAwOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91
YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewotICAgIGFuaW1hdGVQ
YWdlU2NhbGUoZnJhbWVCZWdpblRpbWVNcyk7Ci0gICAgYW5pbWF0ZUxheWVycyhmcmFtZUJlZ2lu
VGltZU1zKTsKKyAgICBhbmltYXRlUGFnZVNjYWxlKG1vbm90b25pY1RpbWUpOworICAgIGFuaW1h
dGVMYXllcnMobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiB9CiAKLXZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFy
Z2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0
YXJ0VGltZU1zLCBkb3VibGUgZHVyYXRpb25NcykKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJv
b2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZSwgZG91Ymxl
IGR1cmF0aW9uKQogewogICAgIGlmICghbV9zY3JvbGxMYXllckltcGwpCiAgICAgICAgIHJldHVy
bjsKQEAgLTExNCwxNSArMTE0LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgSW50
U2l6ZSBzY2FsZWRDb250ZW50U2l6ZSA9IGNvbnRlbnRTaXplKCk7CiAgICAgc2NhbGVkQ29udGVu
dFNpemUuc2NhbGUobV9wYWdlU2NhbGVEZWx0YSk7CiAKLSAgICBtX3BhZ2VTY2FsZUFuaW1hdGlv
biA9IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoc2Nyb2xsVG90YWwsIHNjYWxlVG90YWws
IG1fdmlld3BvcnRTaXplLCBzY2FsZWRDb250ZW50U2l6ZSwgc3RhcnRUaW1lTXMpOworICAgIG1f
cGFnZVNjYWxlQW5pbWF0aW9uID0gQ0NQYWdlU2NhbGVBbmltYXRpb246OmNyZWF0ZShzY3JvbGxU
b3RhbCwgc2NhbGVUb3RhbCwgbV92aWV3cG9ydFNpemUsIHNjYWxlZENvbnRlbnRTaXplLCBzdGFy
dFRpbWUpOwogCiAgICAgaWYgKGFuY2hvclBvaW50KSB7CiAgICAgICAgIEludFNpemUgd2luZG93
QW5jaG9yKHRhcmdldFBvc2l0aW9uKTsKICAgICAgICAgd2luZG93QW5jaG9yLnNjYWxlKHNjYWxl
VG90YWwgLyBwYWdlU2NhbGUpOwogICAgICAgICB3aW5kb3dBbmNob3IgLT0gc2Nyb2xsVG90YWw7
Ci0gICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLT56b29tV2l0aEFuY2hvcih3aW5kb3dBbmNo
b3IsIHBhZ2VTY2FsZSwgZHVyYXRpb25Ncyk7CisgICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9u
LT56b29tV2l0aEFuY2hvcih3aW5kb3dBbmNob3IsIHBhZ2VTY2FsZSwgZHVyYXRpb24pOwogICAg
IH0gZWxzZQotICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9vbVRvKHRhcmdldFBvc2l0
aW9uLCBwYWdlU2NhbGUsIGR1cmF0aW9uTXMpOworICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlv
bi0+em9vbVRvKHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0aW9uKTsKIAogICAgIG1f
Y2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAgIG1fY2xpZW50LT5zZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwpAQCAtMjQ3LDE0ICsyNDcsMTQgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpvcHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBw
YXNzZXMpCiAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRl
cmVyNC5waXhlbE92ZXJkcmF3Q3VsbGVkIiwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemF0aW9u
ICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNDdWxsZWQpLCAxMDAsIDEwMDAwMDAsIDUwKTsKIH0K
IAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5
ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3RvciYgZXZlbnRzLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVM
YXllcnMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUo
Q0NMYXllckltcGwqIGN1cnJlbnQsIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENs
b2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywgYm9vbCYgZGlkQW5pbWF0
ZSwgYm9vbCYgbmVlZHNBbmltYXRlTGF5ZXJzKQogewogICAgIGJvb2wgc3VidHJlZU5lZWRzQW5p
bWF0ZUxheWVycyA9IGZhbHNlOwogCiAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBs
KiBjdXJyZW50Q29udHJvbGxlciA9IGN1cnJlbnQtPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigp
OwogCiAgICAgYm9vbCBoYWRBY3RpdmVBbmltYXRpb24gPSBjdXJyZW50Q29udHJvbGxlci0+aGFz
QWN0aXZlQW5pbWF0aW9uKCk7Ci0gICAgY3VycmVudENvbnRyb2xsZXItPmFuaW1hdGUoZnJhbWVC
ZWdpblRpbWVTZWNzLCBldmVudHMpOworICAgIGN1cnJlbnRDb250cm9sbGVyLT5hbmltYXRlKG1v
bm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsIGV2ZW50cyk7CiAgICAgYm9vbCBzdGFydGVkQW5p
bWF0aW9uID0gZXZlbnRzLnNpemUoKSA+IDA7CiAKICAgICAvLyBXZSBhbmltYXRlZCBpZiB3ZSBl
aXRoZXIgdGlja2VkIGEgcnVubmluZyBhbmltYXRpb24sIG9yIHN0YXJ0ZWQgYSBuZXcgYW5pbWF0
aW9uLgpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0
ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVudCwgZG91YmxlIGZyCiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnQtPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgYm9vbCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyA9IGZhbHNlOwotICAgICAgICBh
bmltYXRlTGF5ZXJzUmVjdXJzaXZlKGN1cnJlbnQtPmNoaWxkcmVuKClbaV0uZ2V0KCksIGZyYW1l
QmVnaW5UaW1lU2VjcywgZXZlbnRzLCBkaWRBbmltYXRlLCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVy
cyk7CisgICAgICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoY3VycmVudC0+Y2hpbGRyZW4oKVtp
XS5nZXQoKSwgbW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSwgZXZlbnRzLCBkaWRBbmltYXRl
LCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyk7CiAgICAgICAgIGlmIChjaGlsZE5lZWRzQW5pbWF0
ZUxheWVycykKICAgICAgICAgICAgIHN1YnRyZWVOZWVkc0FuaW1hdGVMYXllcnMgPSB0cnVlOwog
ICAgIH0KQEAgLTY2MiwyNiArNjYyLDI2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0
RnVsbFJvb3RMYXllckRhbWFnZSgpCiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIG1vbm90b25pY1RpbWUpCiB7
CiAgICAgaWYgKCFtX3BhZ2VTY2FsZUFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SW50U2l6ZSBzY3JvbGxUb3RhbCA9IHRvU2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9z
aXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKIAotICAgIHNldFBh
Z2VTY2FsZURlbHRhKG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5wYWdlU2NhbGVBdFRpbWUoZnJhbWVC
ZWdpblRpbWVNcykgLyBtX3BhZ2VTY2FsZSk7Ci0gICAgSW50U2l6ZSBuZXh0U2Nyb2xsID0gbV9w
YWdlU2NhbGVBbmltYXRpb24tPnNjcm9sbE9mZnNldEF0VGltZShmcmFtZUJlZ2luVGltZU1zKTsK
KyAgICBzZXRQYWdlU2NhbGVEZWx0YShtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+cGFnZVNjYWxlQXRU
aW1lKG1vbm90b25pY1RpbWUpIC8gbV9wYWdlU2NhbGUpOworICAgIEludFNpemUgbmV4dFNjcm9s
bCA9IG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5zY3JvbGxPZmZzZXRBdFRpbWUobW9ub3RvbmljVGlt
ZSk7CiAgICAgbmV4dFNjcm9sbC5zY2FsZSgxIC8gbV9wYWdlU2NhbGVEZWx0YSk7CiAgICAgbV9z
Y3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KG5leHRTY3JvbGwgLSBzY3JvbGxUb3RhbCk7CiAgICAg
bV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiAKLSAgICBpZiAobV9wYWdl
U2NhbGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUoZnJhbWVCZWdpblRpbWVN
cykpIHsKKyAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVB
dFRpbWUobW9ub3RvbmljVGltZSkpIHsKICAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24uY2xl
YXIoKTsKICAgICAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CiAg
ICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXll
cnMoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIGlm
ICghbV9zZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwgIW1fbmVlZHNBbmltYXRl
TGF5ZXJzIHx8ICFtX3Jvb3RMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKQEAgLTY5MSw3ICs2
OTEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZG91YmxlIGZy
YW1lQmVnaW5UaW1lTXMpCiAgICAgT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiBldmVu
dHMoYWRvcHRQdHIobmV3IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKSk7CiAKICAgICBib29sIGRp
ZEFuaW1hdGUgPSBmYWxzZTsKLSAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKG1fcm9vdExheWVy
SW1wbC5nZXQoKSwgZnJhbWVCZWdpblRpbWVNcyAvIDEwMDAsICpldmVudHMsIGRpZEFuaW1hdGUs
IG1fbmVlZHNBbmltYXRlTGF5ZXJzKTsKKyAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKG1fcm9v
dExheWVySW1wbC5nZXQoKSwgbW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSwgKmV2ZW50cywg
ZGlkQW5pbWF0ZSwgbV9uZWVkc0FuaW1hdGVMYXllcnMpOwogCiAgICAgaWYgKCFldmVudHMtPmlz
RW1wdHkoKSkKICAgICAgICAgbV9jbGllbnQtPnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJl
YWRPbkltcGxUaHJlYWQoZXZlbnRzLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKaW5kZXggZmY0N2ViMDhmYzI4MzcwMDI3MzMyZjk4NWI3YjFjOGYyY2RiOWU3
ZS4uNWNjMjg0MjlhY2UzM2UzZDc5MTg5MzI0Y2M1ZWQwMzY3NzM4NjRjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNjgsMTIgKzY4LDEyIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgcGlu
Y2hHZXN0dXJlVXBkYXRlKGZsb2F0LCBjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwaW5jaEdlc3R1cmVFbmQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZs
b2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZU1zLCBkb3VibGUgZHVyYXRpb25Ncyk7Cisg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRh
cmdldFBvc2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBz
dGFydFRpbWUsIGRvdWJsZSBkdXJhdGlvbik7CiAKICAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5n
LgogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21t
aXRDb21wbGV0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBmcmFtZURpc3Bs
YXlUaW1lTXMpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1l
LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnMoKTsK
IAogICAgIGJvb2wgY2FuRHJhdygpOwpAQCAtMTMwLDEwICsxMzAsMTAgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5
ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKIAotICAgIHZvaWQgYW5pbWF0ZVBhZ2VTY2FsZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWVNcyk7CisgICAgdm9pZCBhbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBt
b25vdG9uaWNUaW1lKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCi0gICAgdmlydHVh
bCB2b2lkIGFuaW1hdGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpOworICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENs
b2NrVGltZSk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAg
ICBpbnQgbV9zb3VyY2VGcmFtZU51bWJlcjsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9vdERyYXdM
YXllciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIHZv
aWQgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmLCBDQ0xheWVyTGlzdCYg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgdm9pZCBvcHRpbWl6ZVJlbmRlclBhc3NlcyhD
Q1JlbmRlclBhc3NMaXN0Jik7Ci0gICAgdm9pZCBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5
ZXJJbXBsKiwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0
b3ImLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOworICAgIHZv
aWQgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRvdWJsZSBtb25vdG9uaWNU
aW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImLCBib29s
JiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwogICAgIEludFNpemUgY29u
dGVudFNpemUoKSBjb25zdDsKICAgICB2b2lkIHNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90
aWZpY2F0aW9uUmVjdXJzaXZlKENDTGF5ZXJJbXBsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmNwcAppbmRleCAzM2I2ZjIyZmJlZGY1M2UxYmE0YjYyOTQ0OTE0ODdm
NjA4YWQ1MDhiLi40OWExMjVkMjNjMzg3NzQ1YmZjNTA5MTI4NzJjYWFmMmZmMzg4ZDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uY3BwCkBAIC0yMiw3ICsyMiw3IEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTM2LDEzICsz
NiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NQYWdlU2NhbGVB
bmltYXRpb24+IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2Ny
b2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXpl
LCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZU1zKQorUGFzc093
blB0cjxDQ1BhZ2VTY2FsZUFuaW1hdGlvbj4gQ0NQYWdlU2NhbGVBbmltYXRpb246OmNyZWF0ZShj
b25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IElu
dFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3Rh
cnRUaW1lKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NQYWdlU2NhbGVBbmltYXRpb24o
c2Nyb2xsU3RhcnQsIHBhZ2VTY2FsZVN0YXJ0LCB3aW5kb3dTaXplLCBjb250ZW50U2l6ZSwgc3Rh
cnRUaW1lTXMpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUGFnZVNjYWxlQW5pbWF0aW9u
KHNjcm9sbFN0YXJ0LCBwYWdlU2NhbGVTdGFydCwgd2luZG93U2l6ZSwgY29udGVudFNpemUsIHN0
YXJ0VGltZSkpOwogfQogCiAKLUNDUGFnZVNjYWxlQW5pbWF0aW9uOjpDQ1BhZ2VTY2FsZUFuaW1h
dGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNv
bnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3Vi
bGUgc3RhcnRUaW1lTXMpCitDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRp
b24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25z
dCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91Ymxl
IHN0YXJ0VGltZSkKICAgICA6IG1fc2Nyb2xsU3RhcnQoc2Nyb2xsU3RhcnQpCiAgICAgLCBtX3Bh
Z2VTY2FsZVN0YXJ0KHBhZ2VTY2FsZVN0YXJ0KQogICAgICwgbV93aW5kb3dTaXplKHdpbmRvd1Np
emUpCkBAIC01MCwxMSArNTAsMTEgQEAgQ0NQYWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxl
QW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWcKICAgICAsIG1f
YW5jaG9yTW9kZShmYWxzZSkKICAgICAsIG1fc2Nyb2xsRW5kKHNjcm9sbFN0YXJ0KQogICAgICwg
bV9wYWdlU2NhbGVFbmQocGFnZVNjYWxlU3RhcnQpCi0gICAgLCBtX3N0YXJ0VGltZU1zKHN0YXJ0
VGltZU1zKQorICAgICwgbV9zdGFydFRpbWUoc3RhcnRUaW1lKQogewogfQogCi12b2lkIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0
IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25NcykKK3ZvaWQgQ0NQYWdlU2NhbGVBbmlt
YXRpb246Onpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdl
U2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBpZiAobV9wYWdlU2NhbGVTdGFydCAhPSBm
aW5hbFBhZ2VTY2FsZSkgewogICAgICAgICAvLyBGb3IgdW5pZm9ybS1sb29raW5nIHpvb21pbmcs
IGluZmVyIHRoZSBhbmNob3IgKHBvaW50IHRoYXQgcmVtYWlucyBpbgpAQCAtNzgsMTggKzc4LDE4
IEBAIHZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5h
bFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhCiAgICAgICAgIGZsb2F0IHJhdGlvWSA9IChzdGFy
dFJlY3QueSgpIC0gZW5kUmVjdC55KCkpIC8gKGVuZFJlY3QuaGVpZ2h0KCkgLSBzdGFydFJlY3Qu
aGVpZ2h0KCkpOwogCiAgICAgICAgIEludFNpemUgYW5jaG9yKG1fd2luZG93U2l6ZS53aWR0aCgp
ICogcmF0aW9YLCBtX3dpbmRvd1NpemUuaGVpZ2h0KCkgKiByYXRpb1kpOwotICAgICAgICB6b29t
V2l0aEFuY2hvcihhbmNob3IsIGZpbmFsUGFnZVNjYWxlLCBkdXJhdGlvbk1zKTsKKyAgICAgICAg
em9vbVdpdGhBbmNob3IoYW5jaG9yLCBmaW5hbFBhZ2VTY2FsZSwgZHVyYXRpb24pOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwdXJlIHRyYW5zbGF0aW9uLCB0aGVuIHRo
ZXJlIGV4aXN0cyBubyBhbmNob3IuIExpbmVhcmx5CiAgICAgICAgIC8vIGludGVycG9sYXRlIHRo
ZSBzY3JvbGwgb2Zmc2V0IGluc3RlYWQuCiAgICAgICAgIG1fc2Nyb2xsRW5kID0gZmluYWxTY3Jv
bGw7CiAgICAgICAgIG1fcGFnZVNjYWxlRW5kID0gZmluYWxQYWdlU2NhbGU7Ci0gICAgICAgIG1f
ZHVyYXRpb25NcyA9IGR1cmF0aW9uTXM7CisgICAgICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsK
ICAgICAgICAgbV9hbmNob3JNb2RlID0gZmFsc2U7CiAgICAgfQogfQogCi12b2lkIENDUGFnZVNj
YWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25zdCBJbnRTaXplJiBhbmNob3IsIGZsb2F0
IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25NcykKK3ZvaWQgQ0NQYWdlU2NhbGVBbmlt
YXRpb246Onpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQ
YWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBtX3Njcm9sbEVuZCA9IG1fc2Nyb2xs
U3RhcnQgKyBhbmNob3I7CiAgICAgbV9zY3JvbGxFbmQuc2NhbGUoZmluYWxQYWdlU2NhbGUgLyBt
X3BhZ2VTY2FsZVN0YXJ0KTsKQEAgLTEwMywzMSArMTAzLDMxIEBAIHZvaWQgQ0NQYWdlU2NhbGVB
bmltYXRpb246Onpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmlu
YWxQYWdlCiAKICAgICBtX2FuY2hvciA9IGFuY2hvcjsKICAgICBtX3BhZ2VTY2FsZUVuZCA9IGZp
bmFsUGFnZVNjYWxlOwotICAgIG1fZHVyYXRpb25NcyA9IGR1cmF0aW9uTXM7CisgICAgbV9kdXJh
dGlvbiA9IGR1cmF0aW9uOwogICAgIG1fYW5jaG9yTW9kZSA9IHRydWU7CiB9CiAKLUludFNpemUg
Q0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0VGltZShkb3VibGUgdGltZU1zKSBj
b25zdAorSW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRUaW1lKGRv
dWJsZSB0aW1lKSBjb25zdAogewotICAgIHJldHVybiBzY3JvbGxPZmZzZXRBdFJhdGlvKHByb2dy
ZXNzUmF0aW9Gb3JUaW1lKHRpbWVNcykpOworICAgIHJldHVybiBzY3JvbGxPZmZzZXRBdFJhdGlv
KHByb2dyZXNzUmF0aW9Gb3JUaW1lKHRpbWUpKTsKIH0KIAotZmxvYXQgQ0NQYWdlU2NhbGVBbmlt
YXRpb246OnBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdAorZmxvYXQgQ0NQYWdl
U2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGltZSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcGFnZVNjYWxlQXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lTXMpKTsK
KyAgICByZXR1cm4gcGFnZVNjYWxlQXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lKSk7
CiB9CiAKLWJvb2wgQ0NQYWdlU2NhbGVBbmltYXRpb246OmlzQW5pbWF0aW9uQ29tcGxldGVBdFRp
bWUoZG91YmxlIHRpbWVNcykgY29uc3QKK2Jvb2wgQ0NQYWdlU2NhbGVBbmltYXRpb246OmlzQW5p
bWF0aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRp
bWVNcyA+PSBlbmRUaW1lTXMoKTsKKyAgICByZXR1cm4gdGltZSA+PSBlbmRUaW1lKCk7CiB9CiAK
LWZsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUg
dGltZU1zKSBjb25zdAorZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246OnByb2dyZXNzUmF0aW9G
b3JUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRl
QXRUaW1lKHRpbWVNcykpCisgICAgaWYgKGlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUodGltZSkp
CiAgICAgICAgIHJldHVybiAxOwogCi0gICAgcmV0dXJuICh0aW1lTXMgLSBtX3N0YXJ0VGltZU1z
KSAvIG1fZHVyYXRpb25NczsKKyAgICByZXR1cm4gKHRpbWUgLSBtX3N0YXJ0VGltZSkgLyBtX2R1
cmF0aW9uOwogfQogCiBJbnRTaXplIENDUGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRB
dFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0
aW9uLmgKaW5kZXggZjRiMWJmNDdhOWE5NzY3OGMzNmVmNjJhYmNiNGNkZTA1Yzg0ZGU4OS4uZDlh
Y2I0OTExZGJjMjU2ZmY5ZWJmOWVhN2UyZDNlYzMzZTZmZjA3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1BhZ2VTY2FsZUFuaW1hdGlvbi5oCkBAIC0zOSwzOSArMzksMzkgQEAgcHVibGljOgogICAgIC8v
IENvbnN0cnVjdCB3aXRoIHRoZSBzdGFydGluZyBwYWdlIHNjYWxlIGFuZCBzY3JvbGwgb2Zmc2V0
ICh3aGljaCBpcyBpbgogICAgIC8vIHBhZ2VTY2FsZVN0YXJ0IHNwYWNlKS4gVGhlIHdpbmRvdyBz
aXplIGlzIHRoZSB1c2VyLXZpZXdhYmxlIGFyZWEKICAgICAvLyBpbiBwaXhlbHMuCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IGNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRv
d1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lTXMpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXpl
JiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGlt
ZSk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW5pdGlhbGl6ZSB0aGUgYW5pbWF0
aW9uLiBDYWxsIG9uZSBvZiB0aGVtCiAgICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgY29uc3RydWN0
aW9uIHRvIHNldCB0aGUgZmluYWwgc2Nyb2xsIGFuZCBwYWdlIHNjYWxlLgogCiAgICAgLy8gWm9v
bSB3aGlsZSBleHBsaWNpdGx5IHNwZWNpZnlpbmcgdGhlIHRvcC1sZWZ0IHNjcm9sbCBwb3NpdGlv
bi4gVGhlCiAgICAgLy8gc2Nyb2xsIG9mZnNldCBpcyBpbiBmaW5hbFBhZ2VTY2FsZSBjb29yZGlu
YXRlcy4KLSAgICB2b2lkIHpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQg
ZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsKKyAgICB2b2lkIHpvb21Ubyhjb25z
dCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJh
dGlvbik7CiAKICAgICAvLyBab29tIGJhc2VkIG9uIGEgc3BlY2lmaWVkIG9uc2NyZWVuIGFuY2hv
ciwgd2hpY2ggd2lsbCByZW1haW4gYXQgdGhlIHNhbWUKICAgICAvLyBwb3NpdGlvbiBvbiB0aGUg
c2NyZWVuIHRocm91Z2hvdXQgdGhlIGFuaW1hdGlvbi4gVGhlIGFuY2hvciBpcyBpbiBsb2NhbAog
ICAgIC8vIHNwYWNlIHJlbGF0aXZlIHRvIHNjcm9sbFN0YXJ0LgotICAgIHZvaWQgem9vbVdpdGhB
bmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91Ymxl
IGR1cmF0aW9uTXMpOworICAgIHZvaWQgem9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5j
aG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uKTsKIAogICAgIC8vIENh
bGwgdGhlc2UgZnVuY3Rpb25zIHdoaWxlIHRoZSBhbmltYXRpb24gaXMgaW4gcHJvZ3Jlc3MgdG8g
b3V0cHV0IHRoZQogICAgIC8vIGN1cnJlbnQgc3RhdGUuCi0gICAgSW50U2l6ZSBzY3JvbGxPZmZz
ZXRBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3Q7Ci0gICAgZmxvYXQgcGFnZVNjYWxlQXRUaW1l
KGRvdWJsZSB0aW1lTXMpIGNvbnN0OwotICAgIGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZUF0VGlt
ZShkb3VibGUgdGltZU1zKSBjb25zdDsKKyAgICBJbnRTaXplIHNjcm9sbE9mZnNldEF0VGltZShk
b3VibGUgdGltZSkgY29uc3Q7CisgICAgZmxvYXQgcGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0aW1l
KSBjb25zdDsKKyAgICBib29sIGlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWUp
IGNvbnN0OwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIHJldHVybiBzdGF0ZSB3aGlj
aCBpcyBpbnZhcmlhbnQgdGhyb3VnaG91dCB0aGUKICAgICAvLyBjb3Vyc2Ugb2YgdGhlIGFuaW1h
dGlvbi4KLSAgICBkb3VibGUgc3RhcnRUaW1lTXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGlt
ZU1zOyB9Ci0gICAgZG91YmxlIGR1cmF0aW9uTXMoKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9u
TXM7IH0KLSAgICBkb3VibGUgZW5kVGltZU1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWVN
cyArIG1fZHVyYXRpb25NczsgfQorICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0VGltZTsgfQorICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZHVyYXRpb247IH0KKyAgICBkb3VibGUgZW5kVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRU
aW1lICsgbV9kdXJhdGlvbjsgfQogICAgIGNvbnN0IEludFNpemUmIGZpbmFsU2Nyb2xsT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxFbmQ7IH0KICAgICBmbG9hdCBmaW5hbFBhZ2VTY2Fs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlRW5kOyB9CiAKIHByb3RlY3RlZDoKLSAgICBD
Q1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFn
ZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNv
bnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lTXMpOworICAgIENDUGFnZVNjYWxlQW5pbWF0aW9u
KGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3Qg
SW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRvdWJsZSBz
dGFydFRpbWUpOwogCiBwcml2YXRlOgotICAgIGZsb2F0IHByb2dyZXNzUmF0aW9Gb3JUaW1lKGRv
dWJsZSB0aW1lTXMpIGNvbnN0OworICAgIGZsb2F0IHByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJs
ZSB0aW1lKSBjb25zdDsKICAgICBJbnRTaXplIHNjcm9sbE9mZnNldEF0UmF0aW8oZmxvYXQgcmF0
aW8pIGNvbnN0OwogICAgIGZsb2F0IHBhZ2VTY2FsZUF0UmF0aW8oZmxvYXQgcmF0aW8pIGNvbnN0
OwogCkBAIC04NSw4ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3Njcm9sbEVuZDsK
ICAgICBmbG9hdCBtX3BhZ2VTY2FsZUVuZDsKIAotICAgIGRvdWJsZSBtX3N0YXJ0VGltZU1zOwot
ICAgIGRvdWJsZSBtX2R1cmF0aW9uTXM7CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRv
dWJsZSBtX2R1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAwYWYwN2NiZGJmZDI5NTc4MzhmZWMx
NDRiMjZhNmRhOWIzZGZjOGRmLi43NTBkMDU1OTg0ZWZiMWZiZDJhZDhhYTQ1MDUxMWJkNzRhMzBi
MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtODgsOSAr
ODgsOSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZv
aWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IElu
dFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJs
ZSBkdXJhdGlvblNlYykKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQogewotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxl
LCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMCwgZHVyYXRpb25TZWMgKiAx
MDAwLjApOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSwgZHVyYXRpb24pOwogfQogCiBHcmFwaGljc0NvbnRleHQzRCogQ0NTaW5nbGVUaHJl
YWRQcm94eTo6Y29udGV4dCgpCkBAIC0yOTIsOCArMjkyLDEwIEBAIGJvb2wgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6ZG9Db21wb3NpdGUoKQogICAgIEFTU0VSVCghbV9jb250ZXh0TG9zdCk7CiAgICAg
ewogICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgICBkb3VibGUgZnJh
bWVEaXNwbGF5VGltZU1zID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7
Ci0gICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1lRGlzcGxheVRpbWVNcyk7
CisgICAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpOworICAgICAgZG91YmxlIHdhbGxDbG9ja1RpbWUgPSBjdXJyZW50VGltZSgpOworCisgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1Rp
bWUpOwogICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDhlMTg2MGMyNjA2OGE3MjM0
ODc0NGUxNWEwNjJlZmRiZDU1MjIxNDUuLjk4NzZhNDZiZjFkZTk5NjEwNDAzNTQzYjFiMTQ5Nzg0
YmI0MGJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZp
cnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50
U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91Ymxl
IGR1cmF0aW9uU2VjKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24o
Y29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2Fs
ZSwgZG91YmxlIGR1cmF0aW9uKTsKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1
YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5k
ZXggOTA1YTA5NGMwN2E2MTFlMTI3N2NiMTZlYTM3YjIzNWQ2YmU2NTNlMS4uZWEwZTFiY2U2NTkw
ZmY4NzZiMWIzZGVmYmE3NGE2MDZlN2U0MzJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAKQEAgLTEzMywxNyArMTMzLDE3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRi
YWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCogcmVxdWVzdCkKICAgICBtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZC0+c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIH0KIAotdm9pZCBDQ1RocmVh
ZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3Np
dGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCit2
b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUm
IHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJh
dGlvbikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwotICAgIENDUHJv
eHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1Ro
cmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQsIHRh
cmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvblNlYykpOworICAgIENDUHJv
eHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1Ro
cmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQsIHRh
cmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvbikpOwogfQogCi12b2lkIEND
VGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJ
bnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJs
ZSBkdXJhdGlvblNlYykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIEFTU0VSVChDQ1Byb3h5
Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwpCi0gICAgICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0
aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEw
MDAuMCwgZHVyYXRpb25TZWMgKiAxMDAwLjApOworICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBs
LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2Fs
ZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQpAQCAtNTI1LDEwICs1MjUsMTEg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBjb21wdXRlIHRoZSBmcmFtZSBkaXNwbGF5IHRp
bWUgbW9yZSBpbnRlbGxpZ2VudGx5Ci0gICAgZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcyA9IG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wOworICAgIGRvdWJsZSBtb25vdG9u
aWNUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgZG91YmxlIHdhbGxD
bG9ja1RpbWUgPSBjdXJyZW50VGltZSgpOwogCi0gICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJl
YWQtPndpbGxEcmF3KGZyYW1lRGlzcGxheVRpbWVNcyk7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+YW5pbWF0ZShmcmFtZURpc3BsYXlUaW1lTXMpOworICAgIG1faW5wdXRIYW5kbGVyT25JbXBs
VGhyZWFkLT53aWxsRHJhdyhtb25vdG9uaWNUaW1lKTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBs
LT5hbmltYXRlKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmRyYXdMYXllcnMoKTsKIAogICAgIC8vIENoZWNrIGZvciBhIHBlbmRpbmcgY29t
cG9zaXRlQW5kUmVhZGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggNTdiYTU5ODc0
ODg4NjllOTMyODBlZTQ1NTMwZjhiODk3NTgyYmIzNy4uYWQ1MDA1NzdkMjJjMDJiZTQwOGJlOTJk
NDhlOGQ4ZjRiZDJhOGQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ1Byb3h5IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVh
bCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYp
OwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVy
YXRpb25TZWMpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25z
dCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBk
b3VibGUgZHVyYXRpb24pOwogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgdmlydHVhbCBi
b29sIGlzU3RhcnRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCmluZGV4IDM5NzMw
OGI1MjljYzQxNzQ3MTg3YzdmODY3ZDEyMWI5YjIzZmNhZWUuLmMyZGJlZTNiNDcyZGY2NjYxNmY0
MjE1ODZjYjVmYjcwNzc3ZDYyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTIwNiw3
ICsyMDYsNyBAQCBpbnQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmlkZW50aWZpZXIo
KSBjb25zdAogICAgIHJldHVybiBtX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OndpbGxEcmF3KGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQordm9p
ZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6d2lsbERyYXcoZG91YmxlIG1vbm90b25p
Y1RpbWUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCmluZGV4IGEyZjEzMDI1ZDlmMTdiZmQx
OGMxNDRmOTMxN2Q4MmE2ZWExMDllYzUuLjgzYjRiZDU0NjFhYzM0YTUxNmJjZWRmZWM0MjRlYTFm
NGNjMzA2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBXZWJDb3JlOjpDQ0lucHV0SGFuZGxlciBpbXBsZW1lbnRhdGlvbgogICAgIHZp
cnR1YWwgaW50IGlkZW50aWZpZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXco
ZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3Vi
bGUgbW9ub3RvbmljVGltZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbFRlc3QuY3BwCmluZGV4IGUxYWVjY2M1MzlhNWQ1MWRmZjE4
YTJiZTdjNDJlZWJhMTQ1N2VmYmQuLjg0MjlmZTQwMDMyZjdkYmQ0NDMyODVjNDc1YzlhNDJmNzNi
ZGFkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LmNwcApAQCAtNTMsMTAg
KzUzLDEwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgVHJpdmlh
bFRyYW5zaXRpb24pCiAgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZChjcmVhdGVB
Y3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkp
LCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgY29udHJvbGxlci0+YWRk
KHRvQWRkLnJlbGVhc2UoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsK
KyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVt
bXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDEsIGR1
bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKIH0KQEAgLTcyLDEzICs3MiwxMyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbFRlc3QsIFRyaXZpYWxRdWV1aW5nKQogICAgIGNvbnRyb2xsZXItPmFkZChj
cmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwg
MCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogICAgIGNvbnRyb2xsZXIt
PmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRp
b24oMSwgMSwgMC41ZikpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCi0gICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRl
KDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwg
MSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAyLCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBF
Q1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtOTEsNyAr
OTEsNyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIEludGVycnVw
dCkKICAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsPiBjb250cm9sbGVy
KAogICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OmNyZWF0ZSgmZHVtbXkp
KTsKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5l
dyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9w
YWNpdHkpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxl
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5
KCkpOwogCkBAIC05OSwxMCArOTksMTAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGxUZXN0LCBJbnRlcnJ1cHQpCiAgICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5p
bWF0aW9uOjpXYWl0aW5nRm9yTmV4dFRpY2ssIDApOwogICAgIGNvbnRyb2xsZXItPmFkZCh0b0Fk
ZC5yZWxlYXNlKCkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLjUsICpldmVudHMpOyAv
LyBzZWNvbmQgYW5pbSBzdGFydHMgTk9XLgorICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMC41LCAw
LjUsICpldmVudHMpOyAvLyBzZWNvbmQgYW5pbSBzdGFydHMgTk9XLgogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVt
bXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNSwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjUsIDEuNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VR
KDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhh
c0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTExOSwxNSArMTE5LDE1IEBAIFRFU1QoQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgU2NoZWR1bGVUb2dldGhlcldoZW5BUHJvcGVy
dHlJc0Jsb2NrZWQpCiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihh
ZG9wdFB0cihuZXcgRmFrZVRyYW5zZm9ybVRyYW5zaXRpb24oMSkpLCAyLCBDQ0FjdGl2ZUFuaW1h
dGlvbjo6VHJhbnNmb3JtKSk7CiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1h
dGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIDIsIENDQWN0
aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpl
dmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQ
RUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+
aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICAvLyBTaG91
bGQgbm90IGhhdmUgc3RhcnRlZCB0aGUgZmxvYXQgdHJhbnNpdGlvbiB5ZXQuCiAgICAgRVhQRUNU
X1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgw
LCBkdW1teS5vcGFjaXR5KCkpOwogICAgIC8vIFRoZSB0aGUgZmxvYXQgYW5pbWF0aW9uIHNob3Vs
ZCBoYXZlIHN0YXJ0ZWQgYXQgdGltZSAxIGFuZCBzaG91bGQgYmUgZG9uZS4KLSAgICBjb250cm9s
bGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgMiwg
KmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTE0NywyMCAr
MTQ3LDIwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgU2NoZWR1
bGVUb2dldGhlcldpdGhBbkFuaW1XYWl0aW5nKQogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVB
Y3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMSwgMC41
ZikpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgLy8gQW5pbXMgd2l0
aCBpZCAxIHNob3VsZCBib3RoIHN0YXJ0IG5vdy4KLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAs
ICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAg
RVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVD
VF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIC8vIFRoZSBvcGFjaXR5IGFuaW1hdGlvbiBz
aG91bGQgaGF2ZSBmaW5pc2hlZCBhdCB0aW1lIDEsIGJ1dCB0aGUgZ3JvdXAKICAgICAvLyBvZiBh
bmltYXRpb25zIHdpdGggaWQgMSBkb24ndCBmaW5pc2ggdW50aWwgdGltZSAyIGJlY2F1c2Ugb2Yg
dGhlIGxlbmd0aAogICAgIC8vIG9mIHRoZSB0cmFuc2Zvcm0gYW5pbWF0aW9uLgotICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAy
LCAqZXZlbnRzKTsKICAgICAvLyBTaG91bGQgbm90IGhhdmUgc3RhcnRlZCB0aGUgZmxvYXQgdHJh
bnNpdGlvbiB5ZXQuCiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgLy8gVGhl
IHRoZSBzZWNvbmQgb3BhY2l0eSBhbmltYXRpb24gc2hvdWxkIHN0YXJ0IGF0IHRpbWUgMiBhbmQg
c2hvdWxkIGJlCiAgICAgLy8gZG9uZSBieSB0aW1lIDMKLSAgICBjb250cm9sbGVyLT5hbmltYXRl
KDMsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMywgMywgKmV2ZW50cyk7CiAg
ICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTE3OCwxMyArMTc4LDEzIEBA
IFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgU2NoZWR1bGVBbmltYXRp
b24pCiAgICAgdG9BZGQtPnNldFN0YXJ0VGltZSgxKTsKICAgICBjb250cm9sbGVyLT5hZGQodG9B
ZGQucmVsZWFzZSgpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShj
b250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15
Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBj
b250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRy
b2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3Bh
Y2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMiwgMiwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9w
YWNpdHkoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKIH0KQEAgLTIwNSwxNiArMjA1LDE2IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsVGVzdCwgU2NoZWR1bGVkQW5pbWF0aW9uSW50ZXJydXB0c1J1bm5pbmdBbmltCiAg
ICAgY29udHJvbGxlci0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CiAKICAgICAvLyBGaXJzdCAycyBv
cGFjaXR5IHRyYW5zaXRpb24gc2hvdWxkIHN0YXJ0IGltbWVkaWF0ZWx5LgotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgwLjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMC41LCAwLjUs
ICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKICAgICBFWFBFQ1RfRVEoMC4yNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJv
bGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEs
ICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9s
bGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgMiwg
KmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KQEAgLTIzOCwyMCAr
MjM4LDIwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgU2NoZWR1
bGVkQW5pbWF0aW9uSW50ZXJydXB0c1J1bm5pbmdBbmltCiAgICAgY29udHJvbGxlci0+YWRkKGNy
ZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAw
LCAwLjc1ZikpLCAzLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgLy8gRmly
c3QgMnMgb3BhY2l0eSB0cmFuc2l0aW9uIHNob3VsZCBzdGFydCBpbW1lZGlhdGVseS4KLSAgICBj
b250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
MCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5p
bWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMC41LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAu
NSwgMC41LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVB
bmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVmLCBkdW1teS5vcGFjaXR5KCkpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwg
MSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMywgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAz
LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRp
b24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxl
ci0+YW5pbWF0ZSg0LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDQsIDQsICpl
dmVudHMpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBF
Q1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtMjY4LDI3
ICsyNjgsMjcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBUcml2
aWFsTG9vcGluZykKICAgICB0b0FkZC0+c2V0SXRlcmF0aW9ucygzKTsKICAgICBjb250cm9sbGVy
LT5hZGQodG9BZGQucmVsZWFzZSgpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2
ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBF
Q1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VR
KDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjI1LCAqZXZl
bnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuMjUsIDEuMjUsICpldmVudHMpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBF
Q1RfRVEoMC4yNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgx
Ljc1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNzUsIDEuNzUsICpldmVu
dHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
ICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgyLjI1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDIuMjUsIDIu
MjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1h
dGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC4yNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgyLjc1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRl
KDIuNzUsIDIuNzUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0Fj
dGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7
Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5h
bmltYXRlKDMsIDMsICpldmVudHMpOwogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNB
Y3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiAK
ICAgICAvLyBKdXN0IGJlIGV4dHJhIHN1cmUuCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSg0LCAq
ZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDQsIDQsICpldmVudHMpOwogICAgIEVY
UEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogfQogCkBAIC0zMDUsMjAgKzMwNSwyMCBAQCBU
RVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIEluZmluaXRlTG9vcGluZykK
ICAgICB0b0FkZC0+c2V0SXRlcmF0aW9ucygtMSk7CiAgICAgY29udHJvbGxlci0+YWRkKHRvQWRk
LnJlbGVhc2UoKSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29u
dHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5v
cGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS4yNSwgKmV2ZW50cyk7CisgICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgxLjI1LCAxLjI1LCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJV
RShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuMjVm
LCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS43NSwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjc1LCAxLjc1LCAqZXZlbnRzKTsKICAgICBF
WFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNU
X0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgx
MDczNzQxODI0LjI1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwNzM3NDE4
MjQuMjUsIDEwNzM3NDE4MjQuMjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xs
ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC4yNWYsIGR1bW15Lm9w
YWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDczNzQxODI0Ljc1LCAqZXZlbnRz
KTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwNzM3NDE4MjQuNzUsIDEwNzM3NDE4MjQuNzUs
ICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAKQEAgLTMzOSwy
NyArMzM5LDI3IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgUGF1
c2VSZXN1bWUpCiAgICAgY29uc3QgaW50IGlkID0gMTsKICAgICBjb250cm9sbGVyLT5hZGQoY3Jl
YXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAs
IDEpKSwgaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKLSAgICBjb250cm9sbGVy
LT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2
ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMC41LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwgMC41LCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAKICAgICBFWFBFQ1Rf
VFJVRShjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9u
OjpPcGFjaXR5KSk7CiAgICAgY29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0Fj
dGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSktPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpQ
YXVzZWQsIDAuNWYpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LCAqZXZlbnRzKTsK
KyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwMjQsIDEwMjQsICpldmVudHMpOwogICAgIEVYUEVD
VF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEo
MC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmdl
dEFjdGl2ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBj
b250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFj
aXR5KS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIDEwMjQpOwogCi0g
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LjI1LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVy
LT5hbmltYXRlKDEwMjQuMjUsIDEwMjQuMjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1
bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LjUsICpldmVudHMp
OworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTAyNC41LCAxMDI0LjUsICpldmVudHMpOwogICAg
IEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQ
RUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiB9CkBAIC0zNzYsMjEgKzM3Niw1NCBAQCBURVNU
KENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIEFib3J0QUdyb3VwZWRBbmltYXRp
b24pCiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihu
ZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigyLCAwLCAxKSksIGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6
T3BhY2l0eSkpOwogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRv
cHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMSwgMC43NWYpKSwgMiwgQ0NBY3RpdmVB
bmltYXRpb246Ok9wYWNpdHkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1Rf
VFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAs
IGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsK
KyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC41Ziwg
ZHVtbXkub3BhY2l0eSgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmdldEFjdGl2
ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBjb250cm9s
bGVyLT5nZXRBY3RpdmVBbmltYXRpb24oaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KS0+
c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIDEpOwotICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAq
ZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24o
KSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+
YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDIsIDIsICpldmVu
dHMpOwogICAgIEVYUEVDVF9UUlVFKCFjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwogfQogCitURVNUKENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QsIEFuaW1hdGlvbnNVc2VDb3JyZWN0VGltZSkK
K3sKKyAgICBPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cyhhZG9wdFB0cihu
ZXcgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IpKTsKKyAgICBGYWtlTGF5ZXJBbmltYXRpb25Db250
cm9sbGVySW1wbENsaWVudCBkdW1teTsKKyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsPiBjb250cm9sbGVyKAorICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGw6OmNyZWF0ZSgmZHVtbXkpKTsKKworICAgIGNvbnN0IGludCBpZCA9IDE7CisgICAgY29u
dHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0
VHJhbnNpdGlvbigyLCAwLCAxKSksIGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwor
CisgICAgLy8gQW5pbWF0aW9uIHN0YXJ0ZWQgZXZlbnRzIHNob3VsZCBiZSBleHByZXNzZWQgaW4g
dGVybXMgb2YgdGhlIHdhbGwgY2xvY2sgdGltZS4KKyAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9
IDA7CisgICAgZG91YmxlIHdhbGxDbG9ja1RpbWUgPSA0MjsKKyAgICBjb250cm9sbGVyLT5hbmlt
YXRlKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsICpldmVudHMpOworICAgIEVYUEVDVF9G
QUxTRShldmVudHMtPmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uRXZlbnQ6
OlN0YXJ0ZWQsICgqZXZlbnRzKVswXS0+dHlwZSgpKTsKKyAgICBjb25zdCBDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudCogYW5pbWF0aW9uU3RhcnRlZEV2ZW50ID0gKCpldmVudHMpWzBdLT50b0FuaW1h
dGlvblN0YXJ0ZWRFdmVudCgpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3YWxsQ2xvY2tUaW1lLCBh
bmltYXRpb25TdGFydGVkRXZlbnQtPnN0YXJ0VGltZSgpKTsKKworICAgIGV2ZW50cy0+Y2xlYXIo
KTsKKworICAgIC8vIFdlIHNob3VsZCBiZSB0aWNraW5nIHdpdGggdGhlIG1vbm90b25pYyB0aW1l
LiBUaGUgYW5pbWF0aW9uIGlzIDIgc2Vjb25kcyBsb25nLCBzbyBpZgorICAgIC8vIHdlIGFyZSBt
aXN0YWtlbmx5IHVzaW5nIHRoZSB3YWxsIGNsb2NrIHRpbWUgZm9yIHRpY2tpbmcsIHdlIHNob3Vs
ZCBub3Qgc2VlIGFuIGFuaW1hdGlvbgorICAgIC8vIGZpbmlzaC4gSWYgd2UgYXJlIHVzaW5nIG1v
bm90b25pYyB0aW1lIChhcyB3ZSBzaG91bGQpIHRoZSBvcGFjaXR5IGFuaW1hdGlvbiBzaG91bGQK
KyAgICAvLyBoYXZlIGVuZGVkLgorICAgIG1vbm90b25pY1RpbWUgPSAzOworICAgIHdhbGxDbG9j
a1RpbWUgPSA0MzsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKG1vbm90b25pY1RpbWUsIHdhbGxD
bG9ja1RpbWUsICpldmVudHMpOworICAgIEVYUEVDVF9GQUxTRShldmVudHMtPmlzRW1wdHkoKSk7
CisgICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uRXZlbnQ6OkZpbmlzaGVkLCAoKmV2ZW50cylbMF0t
PnR5cGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcApp
bmRleCBjNGYxMDNhM2NhZmU0NjhlNGI4ZTc5Nzg2ZDJiMjE4N2U0NWQ3ZWExLi44YTYyN2ZhMGY2
NTlkODFkMzg3NWNlMTJhY2FjYTZmMGIyNmQ3M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRl
c3QuY3BwCkBAIC0yMDEsOCArMjAxLDggQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
clRlc3QsIHN5bmNDb21wbGV0ZWRBbmltYXRpb24pCiAKICAgICAvLyBTdGVwIHRocm91Z2ggdGhl
IGFuaW1hdGlvbiB1bnRpbCBpdCBpcyBmaW5pc2hlZC4gQXQgdGhlIG5leHQgc3luYywgdGhlIG1h
aW4gdGhyZWFkJ3MgYW5pbWF0aW9uIHNob3VsZCBiZSBjbGVhcmVkLgogICAgIE93blB0cjxDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKGFkb3B0UHRyKG5ldyBDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3RvcikpOwotICAgIGNvbnRyb2xsZXJJbXBsLT5hbmltYXRlKDAsICpldmVudHMpOwotICAg
IGNvbnRyb2xsZXJJbXBsLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXJJbXBs
LT5hbmltYXRlKDAsIDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXJJbXBsLT5hbmltYXRlKDIs
IDIsICpldmVudHMpOwogCiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXJJbXBsLT5nZXRBY3Rp
dmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBFWFBFQ1Rf
VFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmlu
ZGV4IGVkMDUyYTljM2Q4NjljN2FlOTI3MWY2MTFhMzljNDVhYmE4YmIyOTcuLmQzMGJjNDUyZDQy
NDgyMmY4NmYyZWQ0NWNhMzhhOTZjODJkZDZiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zNDks
OCArMzQ5LDEwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNjYWxlQW5p
bWF0aW9uKQogICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAKICAgICBjb25zdCBmbG9hdCBtaW5Q
YWdlU2NhbGUgPSAwLjUsIG1heFBhZ2VTY2FsZSA9IDQ7Ci0gICAgY29uc3QgZG91YmxlIHN0YXJ0
VGltZU1zID0gMTAwMDsKLSAgICBjb25zdCBkb3VibGUgZHVyYXRpb25NcyA9IDEwMDsKKyAgICBj
b25zdCBkb3VibGUgc3RhcnRUaW1lID0gMTsKKyAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAw
LjE7CisgICAgY29uc3QgZG91YmxlIGhhbGZ3YXlUaHJvdWdoQW5pbWF0aW9uID0gc3RhcnRUaW1l
ICsgZHVyYXRpb24gLyAyOworICAgIGNvbnN0IGRvdWJsZSBlbmRUaW1lID0gc3RhcnRUaW1lICsg
ZHVyYXRpb247CiAKICAgICAvLyBOb24tYW5jaG9yIHpvb20taW4KICAgICB7CkBAIC0zNTgsMTAg
KzM2MCwxMCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhZ2VTY2FsZUFuaW1h
dGlvbikKICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFBhZ2VTY2FsZURlbHRhKDEpOwogICAgICAg
ICBzY3JvbGxMYXllci0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoNTAsIDUwKSk7CiAKLSAg
ICAgICAgbV9ob3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZSgwLCAwKSwg
ZmFsc2UsIDIsIHN0YXJ0VGltZU1zLCBkdXJhdGlvbk1zKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+
YW5pbWF0ZShzdGFydFRpbWVNcyArIGR1cmF0aW9uTXMgLyAyKTsKKyAgICAgICAgbV9ob3N0SW1w
bC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZSgwLCAwKSwgZmFsc2UsIDIsIHN0YXJ0
VGltZSwgZHVyYXRpb24pOworICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKGhhbGZ3YXlUaHJv
dWdoQW5pbWF0aW9uLCBoYWxmd2F5VGhyb3VnaEFuaW1hdGlvbik7CiAgICAgICAgIEVYUEVDVF9U
UlVFKG1fZGlkUmVxdWVzdFJlZHJhdyk7Ci0gICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoc3Rh
cnRUaW1lTXMgKyBkdXJhdGlvbk1zKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShlbmRU
aW1lLCBlbmRUaW1lKTsKICAgICAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0Q29tbWl0KTsK
IAogICAgICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IG1faG9z
dEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKQEAgLTM3NSw4ICszNzcsOCBAQCBURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKICAgICAgICAgc2Ny
b2xsTGF5ZXItPnNldFBhZ2VTY2FsZURlbHRhKDEpOwogICAgICAgICBzY3JvbGxMYXllci0+c2V0
U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoNTAsIDUwKSk7CiAKLSAgICAgICAgbV9ob3N0SW1wbC0+
c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZSgyNSwgMjUpLCB0cnVlLCBtaW5QYWdlU2Nh
bGUsIHN0YXJ0VGltZU1zLCBkdXJhdGlvbk1zKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0
ZShzdGFydFRpbWVNcyArIGR1cmF0aW9uTXMpOworICAgICAgICBtX2hvc3RJbXBsLT5zdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbihJbnRTaXplKDI1LCAyNSksIHRydWUsIG1pblBhZ2VTY2FsZSwgc3Rh
cnRUaW1lLCBkdXJhdGlvbik7CisgICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoZW5kVGltZSwg
ZW5kVGltZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdFJlZHJhdyk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7CiAKQEAgLTg0Niw3ICs4NDgsNyBA
QCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHZpc2liaWxpdHlDaGFuZ2VSZXNldHNE
YW1hZ2UpCiAgICAgLy8gRmlyc3QgZnJhbWU6IGlnbm9yZS4KICAgICBsYXllclRyZWVIb3N0SW1w
bC0+ZHJhd0xheWVycygpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwot
IAorCiAgICAgLy8gU2Vjb25kIGZyYW1lOiBub3RoaW5nIGhhcyBjaGFuZ2VkIC0tLSBzbyB3ZSBz
b3VsZG4ndCBwdXNoIGFueXRoaW5nIHdpdGggcGFydGlhbCBzd2FwLgogICAgIGxheWVyVHJlZUhv
c3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAppbmRleCBkN2RkMDU1OTViZmU1MjZhNTA3ZThiNzJlNDhkYTdjMTg2NzYzNDk1
Li5kYTY2OTliYmMzM2UyNmNmZWU1MzFiNGZhOTU5YTFkYTE0MDBiZDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1Ro
cmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVM
YXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNj
cm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmLCBmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGxheW91dCgpIHsgfQogCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgQ0NMYXll
ckFuaW1hdGlvbkRlbGVnYXRlCkBAIC0xMDIsOSArMTAyLDkgQEAgcHVibGljOgogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJl
Z2luVGltZU1zKQorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9u
aWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKICAgICB7Ci0gICAgICAgIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZnJhbWVCZWdpblRpbWVNcyk7CisgICAgICAgIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGlt
ZSk7CiAgICAgICAgIG1fdGVzdEhvb2tzLT5hbmltYXRlTGF5ZXJzKHRoaXMpOwogICAgIH0KIApA
QCAtMjEyLDkgKzIxMiw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBN
b2NrTGF5ZXJUcmVlSG9zdENsaWVudCh0ZXN0SG9va3MpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgewotICAg
ICAgICBtX3Rlc3RIb29rcy0+dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7CisgICAg
ICAgIG1fdGVzdEhvb2tzLT51cGRhdGVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130878</attachid>
            <date>2012-03-08 12:28:28 -0800</date>
            <delta_ts>2012-03-08 13:54:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120308152826.patch</filename>
            <type>text/plain</type>
            <size>59879</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5OTUyM2Y1OTQwMzY3
ODcxNTEwMTBkYzU5OGI2OGFlZWM5OTBkMi4uYjZkZDM2MzdjYjdhMzg5NzhjZGM3NjM1NjI2NTBi
NTQ4YWYwNWQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qg
dGhhdCBjb3JyZWN0IHRpbWUgaXMgdXNlZCBpcyBpbiBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGxUZXN0LkFuaW1hdGlvbnNVc2VDb3JyZWN0VGltZQorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKENDSW5wdXRI
YW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRU
aWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6
c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JU
YXJnZXRBdmFpbGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bC5oOgorICAgICAgICAoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1Jl
Y3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRl
UGFnZVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1h
dGVMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxlQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6aXNBbmltYXRpb25D
b21wbGV0ZUF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
cHJvZ3Jlc3NSYXRpb0ZvclRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmg6CisgICAgICAgIChDQ1BhZ2VTY2FsZUFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c3RhcnRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpkdXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZW5kVGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBv
c2l0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRp
b25PbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEy
LTAzLTA4ICBTY290dCBCeWVyICA8c2NvdHRieWVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBI
YXZlIFNjcm9sbEFuaW1hdG9yTm9uZSB1c2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDk4MGQwMWMzNzQwZGU3YzRmNTM3MzQwMzA2OWY2OWM4YjQ3
ZjliMDAuLmE0NWQyMDQ0MzMyZGZjOGI2ZDExNWRhYWNlZGJkYjhjZTQxOGIwZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDMtMDggIElhbiBWb2xs
aWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFbnN1cmUg
d2UgdXNlIHRoZSBjb3JyZWN0IHRpbWUgd2hlbiBub3RpZnlpbmcgYW5pbWF0aW9uIHN0YXJ0ZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAqIHNyYy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAgICAoV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGwpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAoV2ViS2l0
VGVzdHMpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpUZXN0SG9v
a3M6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdElt
cGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdENsaWVu
dDo6dXBkYXRlQW5pbWF0aW9ucyk6CisKIDIwMTItMDMtMDggIFNjb3R0IEJ5ZXIgIDxzY290dGJ5
ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0b3JOb25lIHVzZSBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCmluZGV4IDZjMDU1
OTk0YzU4ZWNhNDExMzE5YTljOTlkMTQzZjljMTdmM2UyYzIuLjMzNzIxZjFkZmM3MGM0NjU3MjQ3
ZDY3ODFmZTk2OWYxYTIwYjg5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaApAQCAtNzIs
OCArNzIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGFuY2hvclBvaW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBwYWdlU2NhbGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBzdGFydFRpbWVNcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGR1cmF0aW9uTXMpID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN0YXJ0VGltZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGR1cmF0aW9u
KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBDQ0lucHV0SGFuZGxlckNsaWVudCgpIHsgfQpAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NJbnB1dEhhbmRsZXIoKSB7IH0K
IAogICAgIHZpcnR1YWwgaW50IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxEcmF3KGRvdWJsZSBmcmFtZURpc3BsYXlUaW1lTXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbERyYXcoZG91YmxlIG1vbm90b25pY1RpbWUpID0gMDsKIAogcHJvdGVjdGVkOgog
ICAgIENDSW5wdXRIYW5kbGVyKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcAppbmRleCBlOGQ2YmM3ZWY3NWFjNDAzZDExY2E2
MTE1NDg4ZWNjNzFkNTYzNWQ1Li5iODQ0YjNjYjQ1MWZkZmZhZjY3NzZhNmRmMGExOWZiOWU0NTNl
NjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbC5jcHAKQEAgLTQ5LDE1ICs0OSwxNSBAQCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGw6On5DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwoKQogewogfQogCi12b2lkIEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRp
bWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQordm9pZCBDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJs
ZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewotICAg
IHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayhmcmFtZUJlZ2luVGltZVNlY3MsIGV2
ZW50cyk7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZShmcmFtZUJlZ2lu
VGltZVNlY3MsIGV2ZW50cyk7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2
YWlsYWJpbGl0eShmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7Ci0gICAgcmVzb2x2ZUNvbmZs
aWN0cyhmcmFtZUJlZ2luVGltZVNlY3MpOwotICAgIHRpY2tBbmltYXRpb25zKGZyYW1lQmVnaW5U
aW1lU2Vjcyk7CisgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKG1vbm90b25p
Y1RpbWUsIHdhbGxDbG9ja1RpbWUsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRpb25zV2FpdGlu
Z0ZvclN0YXJ0VGltZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lLCBldmVudHMpOworICAg
IHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkobW9ub3RvbmljVGlt
ZSwgd2FsbENsb2NrVGltZSwgZXZlbnRzKTsKKyAgICByZXNvbHZlQ29uZmxpY3RzKG1vbm90b25p
Y1RpbWUpOworICAgIHRpY2tBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwogICAgIHB1cmdlRmlu
aXNoZWRBbmltYXRpb25zKGV2ZW50cyk7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRh
cmdldEF2YWlsYWJpbGl0eShmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7CisgICAgc3RhcnRB
bmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNUaW1lLCB3YWxs
Q2xvY2tUaW1lLCBldmVudHMpOwogfQogCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6YWRkKFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW0pCkBAIC04MywyOCAr
ODMsMjggQEAgYm9vbCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6Omhhc0FjdGl2ZUFu
aW1hdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGRv
dWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCit2b2lkIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNr
KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25F
dmVudHNWZWN0b3ImIGV2ZW50cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0
aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRp
b25zW2ldLT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yTmV4dFRp
Y2spIHsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NB
Y3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnNldFN0YXJ0VGltZShub3cpOwotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKKyAg
ICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmlt
YXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgbV9hY3RpdmVBbmlt
YXRpb25zW2ldLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICBldmVu
dHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCks
IHdhbGxDbG9ja1RpbWUpKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUo
ZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKK3ZvaWQgQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRU
aW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRp
b25FdmVudHNWZWN0b3ImIGV2ZW50cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
YWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9hY3RpdmVBbmlt
YXRpb25zW2ldLT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yU3Rh
cnRUaW1lICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkgPD0gbm93KSB7Ci0g
ICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5p
bWF0aW9uOjpSdW5uaW5nLCBub3cpOwotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1h
dGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKKyAgICAgICAg
aWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlv
bjo6V2FpdGluZ0ZvclN0YXJ0VGltZSAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0VGlt
ZSgpIDw9IG1vbm90b25pY1RpbWUpIHsKKyAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUp
OworICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3Jl
YXRlKG1fY2xpZW50LT5pZCgpLCB3YWxsQ2xvY2tUaW1lKSk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3Rh
cnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbW9ub3Rvbmlj
VGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVu
dHMpCiB7CiAgICAgLy8gRmlyc3QgY29sbGVjdCBydW5uaW5nIHByb3BlcnRpZXMuCiAgICAgVGFy
Z2V0UHJvcGVydGllcyBibG9ja2VkUHJvcGVydGllczsKQEAgLTEzNCwxMyArMTM0LDEzIEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5n
Rm9yVGFyZ2V0QXZhaWxhYmlsaXR5CiAKICAgICAgICAgICAgIC8vIElmIHRoZSBpbnRlcnNlY3Rp
b24gaXMgbnVsbCwgdGhlbiB3ZSBhcmUgZnJlZSB0byBzdGFydCB0aGUgYW5pbWF0aW9ucyBpbiB0
aGUgZ3JvdXAuCiAgICAgICAgICAgICBpZiAobnVsbEludGVyc2VjdGlvbikgewotICAgICAgICAg
ICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRp
b246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ld
LT5zZXRTdGFydFRpbWUobm93KTsKLSAgICAgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5p
bWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG5vdykpOworICAgICAg
ICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmlt
YXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgICAgIG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAg
ICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVu
dC0+aWQoKSwgd2FsbENsb2NrVGltZSkpOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGog
PSBpICsgMTsgaiA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraikgewogICAgICAgICAg
ICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpID09IG1fYWN0aXZl
QW5pbWF0aW9uc1tqXS0+Z3JvdXAoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywg
bm93KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0
U3RhcnRUaW1lKG5vdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlv
bnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNU
aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0
U3RhcnRUaW1lKG1vbm90b25pY1RpbWUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0
QXZhaWxhYmlsaXR5CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbm93KQordm9pZCBDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGw6OnJlc29sdmVDb25mbGljdHMoZG91YmxlIG1vbm90b25pY1RpbWUpCiB7
CiAgICAgLy8gRmluZCBhbnkgYW5pbWF0aW9ucyB0aGF0IGFyZSBhbmltYXRpbmcgdGhlIHNhbWUg
cHJvcGVydHkgYW5kIHJlc29sdmUgdGhlCiAgICAgLy8gY29uZmljdC4gV2UgY291bGQgZXZlbnR1
YWxseSBibGVuZCwgYnV0IGZvciBub3cgd2UnbGwganVzdCBhYm9ydCB0aGUKQEAgLTE2MCw5ICsx
NjAsOSBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZs
aWN0cyhkb3VibGUgbm93KQogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwg
bV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1f
YWN0aXZlQW5pbWF0aW9uc1tqXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVu
bmluZyAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkgPT0gbV9hY3Rp
dmVBbmltYXRpb25zW2pdLT50YXJnZXRQcm9wZXJ0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0VGltZSgpID4gbV9hY3RpdmVBbmltYXRp
b25zW2pdLT5zdGFydFRpbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5p
bWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIG5vdyk7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0
YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpBYm9ydGVkLCBtb25vdG9uaWNUaW1lKTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRp
b25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbm93KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUo
Q0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIG1vbm90b25pY1RpbWUpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTk0LDE5ICsxOTQsMTkgQEAgdm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnB1cmdlRmluaXNoZWRBbmltYXRpb25z
KENDQW5pbWF0aW9uRXZlbnRzVmUKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUgbm93KQordm9pZCBDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1l
KQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkg
PT0gQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcpIHsKLSAgICAgICAgICAgIGRvdWJsZSB0cmlt
bWVkID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT50cmltVGltZVRvQ3VycmVudEl0ZXJhdGlvbihu
b3cpOworICAgICAgICAgICAgZG91YmxlIHRyaW1tZWQgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9uKG1vbm90b25pY1RpbWUpOwogCiAgICAgICAgICAg
ICBzd2l0Y2ggKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSkgewogCiAg
ICAgICAgICAgICBjYXNlIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm06IHsKICAgICAgICAg
ICAgICAgICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiB0cmFuc2Zvcm1BbmltYXRp
b25DdXJ2ZSA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y3VydmUoKS0+dG9UcmFuc2Zvcm1Bbmlt
YXRpb25DdXJ2ZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IG1hdHJpeCA9IHRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLT5nZXRWYWx1ZSh0cmltbWVkLCBtX2Ns
aWVudC0+Ym91bmRzKCkpOwotICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPmlzRmluaXNoZWRBdChub3cpKQotICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwgbm93KTsK
KyAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQo
bW9ub3RvbmljVGltZSkpCisgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVkLCBtb25vdG9uaWNUaW1l
KTsKIAogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTIxNSw4ICsyMTUsOCBAQCB2b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMoZG91YmxlIG5vdykKICAgICAgICAg
ICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHk6IHsKICAgICAgICAgICAgICAgICBj
b25zdCBDQ0Zsb2F0QW5pbWF0aW9uQ3VydmUqIGZsb2F0QW5pbWF0aW9uQ3VydmUgPSBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPmN1cnZlKCktPnRvRmxvYXRBbmltYXRpb25DdXJ2ZSgpOwogICAgICAg
ICAgICAgICAgIGNvbnN0IGZsb2F0IG9wYWNpdHkgPSBmbG9hdEFuaW1hdGlvbkN1cnZlLT5nZXRW
YWx1ZSh0cmltbWVkKTsKLSAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ld
LT5pc0ZpbmlzaGVkQXQobm93KSkKLSAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRp
b25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6RmluaXNoZWQsIG5vdyk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+aXNGaW5pc2hlZEF0KG1v
bm90b25pY1RpbWUpKQorICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwgbW9ub3RvbmljVGltZSk7
CiAKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2V0T3BhY2l0eShvcGFjaXR5KTsKICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsLmgKaW5kZXggMzU0MDA0OWIwMzYxZmRlNjIzOTVhYmMwZTRlMTUxNzA0
MmQ0NDhiMC4uOGQwZThkMTQwYjY2OTQwZDFiMGE0NDdmNjgwYzFmOWIwZmU5YWY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgKQEAg
LTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsKCk7CiAKLSAgICB2b2lkIGFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1l
U2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKKyAgICB2b2lkIGFuaW1hdGUoZG91Ymxl
IG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3RvciYpOwogCiAgICAgdm9pZCBhZGQoUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4pOwog
CkBAIC03OCwxMyArNzgsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgYW5pbWF0b3IgaXMgb3du
ZWQgYnkgdGhlIGxheWVyLgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQqKTsKIAotICAgIHZvaWQg
c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGRvdWJsZSBub3csIENDQW5pbWF0aW9u
RXZlbnRzVmVjdG9yJik7Ci0gICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRU
aW1lKGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7Ci0gICAgdm9pZCBzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBub3csIENDQW5p
bWF0aW9uRXZlbnRzVmVjdG9yJik7Ci0gICAgdm9pZCByZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBu
b3cpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGRvdWJsZSBt
b25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0
b3ImKTsKKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUoZG91Ymxl
IG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3RvciYpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJp
bGl0eShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0
aW9uRXZlbnRzVmVjdG9yJik7CisgICAgdm9pZCByZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKICAgICB2b2lkIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKENDQW5pbWF0aW9u
RXZlbnRzVmVjdG9yJik7CiAKLSAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cpOwor
ICAgIHZvaWQgdGlja0FuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogCiAgICAgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAgICBWZWN0b3I8
T3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiA+IG1fYWN0aXZlQW5pbWF0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggOTI1YzhjYzRjMDY2MTJkNDE1MmYw
OTlhZDcyNjA4YTM3ODIwYzgwYS4uZjIzYWViOTY1OWI3NzRiZDU5NjJiMDQ1MTlhOTE2OWE4ODNh
MjUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTk3LDEz
ICs5NywxMyBAQCBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGV4
dCgpCiAgICAgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlciA/IG1fbGF5ZXJSZW5kZXJlci0+Y29udGV4
dCgpIDogMDsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKGRvdWJsZSBm
cmFtZUJlZ2luVGltZU1zKQordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKGRvdWJs
ZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKLSAgICBhbmltYXRlUGFn
ZVNjYWxlKGZyYW1lQmVnaW5UaW1lTXMpOwotICAgIGFuaW1hdGVMYXllcnMoZnJhbWVCZWdpblRp
bWVNcyk7CisgICAgYW5pbWF0ZVBhZ2VTY2FsZShtb25vdG9uaWNUaW1lKTsKKyAgICBhbmltYXRl
TGF5ZXJzKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdl
dFBvc2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBzdGFy
dFRpbWVNcywgZG91YmxlIGR1cmF0aW9uTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29s
IGFuY2hvclBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBk
dXJhdGlvbikKIHsKICAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJbXBsKQogICAgICAgICByZXR1cm47
CkBAIC0xMTQsMTUgKzExNCwxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLAogICAgIEludFNp
emUgc2NhbGVkQ29udGVudFNpemUgPSBjb250ZW50U2l6ZSgpOwogICAgIHNjYWxlZENvbnRlbnRT
aXplLnNjYWxlKG1fcGFnZVNjYWxlRGVsdGEpOwogCi0gICAgbV9wYWdlU2NhbGVBbmltYXRpb24g
PSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Y3JlYXRlKHNjcm9sbFRvdGFsLCBzY2FsZVRvdGFsLCBt
X3ZpZXdwb3J0U2l6ZSwgc2NhbGVkQ29udGVudFNpemUsIHN0YXJ0VGltZU1zKTsKKyAgICBtX3Bh
Z2VTY2FsZUFuaW1hdGlvbiA9IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoc2Nyb2xsVG90
YWwsIHNjYWxlVG90YWwsIG1fdmlld3BvcnRTaXplLCBzY2FsZWRDb250ZW50U2l6ZSwgc3RhcnRU
aW1lKTsKIAogICAgIGlmIChhbmNob3JQb2ludCkgewogICAgICAgICBJbnRTaXplIHdpbmRvd0Fu
Y2hvcih0YXJnZXRQb3NpdGlvbik7CiAgICAgICAgIHdpbmRvd0FuY2hvci5zY2FsZShzY2FsZVRv
dGFsIC8gcGFnZVNjYWxlKTsKICAgICAgICAgd2luZG93QW5jaG9yIC09IHNjcm9sbFRvdGFsOwot
ICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9vbVdpdGhBbmNob3Iod2luZG93QW5jaG9y
LCBwYWdlU2NhbGUsIGR1cmF0aW9uTXMpOworICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+
em9vbVdpdGhBbmNob3Iod2luZG93QW5jaG9yLCBwYWdlU2NhbGUsIGR1cmF0aW9uKTsKICAgICB9
IGVsc2UKLSAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24tPnpvb21Ubyh0YXJnZXRQb3NpdGlv
biwgcGFnZVNjYWxlLCBkdXJhdGlvbk1zKTsKKyAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24t
Pnpvb21Ubyh0YXJnZXRQb3NpdGlvbiwgcGFnZVNjYWxlLCBkdXJhdGlvbik7CiAKICAgICBtX2Ns
aWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKICAgICBtX2NsaWVudC0+c2V0TmVl
ZHNDb21taXRPbkltcGxUaHJlYWQoKTsKQEAgLTI0NywxNCArMjQ3LDE0IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6b3B0aW1pemVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFz
c2VzKQogICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJl
cjQucGl4ZWxPdmVyZHJhd0N1bGxlZCIsIHN0YXRpY19jYXN0PGludD4obm9ybWFsaXphdGlvbiAq
IG92ZXJkcmF3Q291bnRzLm1fcGl4ZWxzQ3VsbGVkKSwgMTAwLCAxMDAwMDAwLCA1MCk7CiB9CiAK
LXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVy
SW1wbCogY3VycmVudCwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImIGV2ZW50cywgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNBbmltYXRlTGF5
ZXJzKQordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzUmVjdXJzaXZlKEND
TGF5ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9j
a1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMsIGJvb2wmIGRpZEFuaW1hdGUs
IGJvb2wmIG5lZWRzQW5pbWF0ZUxheWVycykKIHsKICAgICBib29sIHN1YnRyZWVOZWVkc0FuaW1h
dGVMYXllcnMgPSBmYWxzZTsKIAogICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCog
Y3VycmVudENvbnRyb2xsZXIgPSBjdXJyZW50LT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKTsK
IAogICAgIGJvb2wgaGFkQWN0aXZlQW5pbWF0aW9uID0gY3VycmVudENvbnRyb2xsZXItPmhhc0Fj
dGl2ZUFuaW1hdGlvbigpOwotICAgIGN1cnJlbnRDb250cm9sbGVyLT5hbmltYXRlKGZyYW1lQmVn
aW5UaW1lU2VjcywgZXZlbnRzKTsKKyAgICBjdXJyZW50Q29udHJvbGxlci0+YW5pbWF0ZShtb25v
dG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lLCBldmVudHMpOwogICAgIGJvb2wgc3RhcnRlZEFuaW1h
dGlvbiA9IGV2ZW50cy5zaXplKCkgPiAwOwogCiAgICAgLy8gV2UgYW5pbWF0ZWQgaWYgd2UgZWl0
aGVyIHRpY2tlZCBhIHJ1bm5pbmcgYW5pbWF0aW9uLCBvciBzdGFydGVkIGEgbmV3IGFuaW1hdGlv
bi4KQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVM
YXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwqIGN1cnJlbnQsIGRvdWJsZSBmcgogCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjdXJyZW50LT5jaGlsZHJlbigpLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGJvb2wgY2hpbGROZWVkc0FuaW1hdGVMYXllcnMgPSBmYWxzZTsKLSAgICAgICAgYW5p
bWF0ZUxheWVyc1JlY3Vyc2l2ZShjdXJyZW50LT5jaGlsZHJlbigpW2ldLmdldCgpLCBmcmFtZUJl
Z2luVGltZVNlY3MsIGV2ZW50cywgZGlkQW5pbWF0ZSwgY2hpbGROZWVkc0FuaW1hdGVMYXllcnMp
OworICAgICAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKGN1cnJlbnQtPmNoaWxkcmVuKClbaV0u
Z2V0KCksIG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsIGV2ZW50cywgZGlkQW5pbWF0ZSwg
Y2hpbGROZWVkc0FuaW1hdGVMYXllcnMpOwogICAgICAgICBpZiAoY2hpbGROZWVkc0FuaW1hdGVM
YXllcnMpCiAgICAgICAgICAgICBzdWJ0cmVlTmVlZHNBbmltYXRlTGF5ZXJzID0gdHJ1ZTsKICAg
ICB9CkBAIC02NzUsMjYgKzY3NSwyNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldEZ1
bGxSb290TGF5ZXJEYW1hZ2UoKQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjphbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQordm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjphbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewog
ICAgIGlmICghbV9wYWdlU2NhbGVBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIElu
dFNpemUgc2Nyb2xsVG90YWwgPSB0b1NpemUobV9zY3JvbGxMYXllckltcGwtPnNjcm9sbFBvc2l0
aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7CiAKLSAgICBzZXRQYWdl
U2NhbGVEZWx0YShtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+cGFnZVNjYWxlQXRUaW1lKGZyYW1lQmVn
aW5UaW1lTXMpIC8gbV9wYWdlU2NhbGUpOwotICAgIEludFNpemUgbmV4dFNjcm9sbCA9IG1fcGFn
ZVNjYWxlQW5pbWF0aW9uLT5zY3JvbGxPZmZzZXRBdFRpbWUoZnJhbWVCZWdpblRpbWVNcyk7Cisg
ICAgc2V0UGFnZVNjYWxlRGVsdGEobV9wYWdlU2NhbGVBbmltYXRpb24tPnBhZ2VTY2FsZUF0VGlt
ZShtb25vdG9uaWNUaW1lKSAvIG1fcGFnZVNjYWxlKTsKKyAgICBJbnRTaXplIG5leHRTY3JvbGwg
PSBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+c2Nyb2xsT2Zmc2V0QXRUaW1lKG1vbm90b25pY1RpbWUp
OwogICAgIG5leHRTY3JvbGwuc2NhbGUoMSAvIG1fcGFnZVNjYWxlRGVsdGEpOwogICAgIG1fc2Ny
b2xsTGF5ZXJJbXBsLT5zY3JvbGxCeShuZXh0U2Nyb2xsIC0gc2Nyb2xsVG90YWwpOwogICAgIG1f
Y2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogCi0gICAgaWYgKG1fcGFnZVNj
YWxlQW5pbWF0aW9uLT5pc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGZyYW1lQmVnaW5UaW1lTXMp
KSB7CisgICAgaWYgKG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5pc0FuaW1hdGlvbkNvbXBsZXRlQXRU
aW1lKG1vbm90b25pY1RpbWUpKSB7CiAgICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLmNsZWFy
KCk7CiAgICAgICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogICAg
IH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBm
cmFtZUJlZ2luVGltZU1zKQordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJz
KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBpZiAo
IW1fc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkIHx8ICFtX25lZWRzQW5pbWF0ZUxh
eWVycyB8fCAhbV9yb290TGF5ZXJJbXBsKQogICAgICAgICByZXR1cm47CkBAIC03MDQsNyArNzA0
LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFt
ZUJlZ2luVGltZU1zKQogICAgIE93blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRz
KGFkb3B0UHRyKG5ldyBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvcikpOwogCiAgICAgYm9vbCBkaWRB
bmltYXRlID0gZmFsc2U7Ci0gICAgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShtX3Jvb3RMYXllcklt
cGwuZ2V0KCksIGZyYW1lQmVnaW5UaW1lTXMgLyAxMDAwLCAqZXZlbnRzLCBkaWRBbmltYXRlLCBt
X25lZWRzQW5pbWF0ZUxheWVycyk7CisgICAgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShtX3Jvb3RM
YXllckltcGwuZ2V0KCksIG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUsICpldmVudHMsIGRp
ZEFuaW1hdGUsIG1fbmVlZHNBbmltYXRlTGF5ZXJzKTsKIAogICAgIGlmICghZXZlbnRzLT5pc0Vt
cHR5KCkpCiAgICAgICAgIG1fY2xpZW50LT5wb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFk
T25JbXBsVGhyZWFkKGV2ZW50cy5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCmluZGV4IGEwYjM1ZjJkYzk4OGVkODliYmE1OWM4YmEyODRiMDRlZGE0MDNkMDMu
LmZkNjkzZTlkMjMzMzZhZjE3YWRhODVlODE2MjEyNjQ3ODVhN2MyYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTY5LDEyICs2OSwxMiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUJlZ2luKCk7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNo
R2VzdHVyZVVwZGF0ZShmbG9hdCwgY29uc3QgSW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cGluY2hHZXN0dXJlRW5kKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9h
dCBwYWdlU2NhbGUsIGRvdWJsZSBzdGFydFRpbWVNcywgZG91YmxlIGR1cmF0aW9uTXMpOworICAg
IHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJn
ZXRQb3NpdGlvbiwgYm9vbCBhbmNob3JQb2ludCwgZmxvYXQgcGFnZVNjYWxlLCBkb3VibGUgc3Rh
cnRUaW1lLCBkb3VibGUgZHVyYXRpb24pOwogCiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4K
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
Q29tcGxldGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgZnJhbWVEaXNwbGF5
VGltZU1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwg
ZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7CiAK
ICAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24KQEAgLTEz
MiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBDQ0xheWVyVHJlZUhvc3RJ
bXBsKGNvbnN0IENDU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAKLSAg
ICB2b2lkIGFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpOworICAgIHZv
aWQgYW5pbWF0ZVBhZ2VTY2FsZShkb3VibGUgbW9ub3RvbmljVGltZSk7CiAKICAgICAvLyBWaXJ0
dWFsIGZvciB0ZXN0aW5nLgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBm
cmFtZUJlZ2luVGltZU1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhkb3VibGUg
bW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogCiAgICAgQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fc291cmNlRnJhbWVOdW1iZXI7CkBA
IC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyYWNrRGFtYWdlRm9yQWxsU3Vy
ZmFjZXMoQ0NMYXllckltcGwqIHJvb3REcmF3TGF5ZXIsIGNvbnN0IENDTGF5ZXJMaXN0JiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICB2b2lkIGNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1Jl
bmRlclBhc3NMaXN0JiwgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAg
IHZvaWQgb3B0aW1pemVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYpOwotICAgIHZvaWQg
YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiwgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYg
bmVlZHNBbmltYXRlTGF5ZXJzKTsKKyAgICB2b2lkIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NM
YXllckltcGwqLCBkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yJiwgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNBbmlt
YXRlTGF5ZXJzKTsKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZW5kRGlkTG9zZUNvbnRleHRSZWN1cnNpdmUoQ0NMYXllckltcGwqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVB
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uY3BwCmluZGV4IDMzYjZmMjJmYmVkZjUzZTFiYTRiNjI5
NDQ5MTQ4N2Y2MDhhZDUwOGIuLjQ5YTEyNWQyM2MzODc3NDViZmM1MDkxMjg3MmNhYWYyZmYzODhk
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKQEAgLTIyLDcg
KzIyLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAt
MzYsMTMgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1Bh
Z2VTY2FsZUFuaW1hdGlvbj4gQ0NQYWdlU2NhbGVBbmltYXRpb246OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdp
bmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lTXMp
CitQYXNzT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwg
Y29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRv
dWJsZSBzdGFydFRpbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1BhZ2VTY2FsZUFu
aW1hdGlvbihzY3JvbGxTdGFydCwgcGFnZVNjYWxlU3RhcnQsIHdpbmRvd1NpemUsIGNvbnRlbnRT
aXplLCBzdGFydFRpbWVNcykpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NQYWdlU2NhbGVB
bmltYXRpb24oc2Nyb2xsU3RhcnQsIHBhZ2VTY2FsZVN0YXJ0LCB3aW5kb3dTaXplLCBjb250ZW50
U2l6ZSwgc3RhcnRUaW1lKSk7CiB9CiAKIAotQ0NQYWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNj
YWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVT
dGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNp
emUsIGRvdWJsZSBzdGFydFRpbWVNcykKK0NDUGFnZVNjYWxlQW5pbWF0aW9uOjpDQ1BhZ2VTY2Fs
ZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3Rh
cnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXpl
LCBkb3VibGUgc3RhcnRUaW1lKQogICAgIDogbV9zY3JvbGxTdGFydChzY3JvbGxTdGFydCkKICAg
ICAsIG1fcGFnZVNjYWxlU3RhcnQocGFnZVNjYWxlU3RhcnQpCiAgICAgLCBtX3dpbmRvd1NpemUo
d2luZG93U2l6ZSkKQEAgLTUwLDExICs1MCwxMSBAQCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZwog
ICAgICwgbV9hbmNob3JNb2RlKGZhbHNlKQogICAgICwgbV9zY3JvbGxFbmQoc2Nyb2xsU3RhcnQp
CiAgICAgLCBtX3BhZ2VTY2FsZUVuZChwYWdlU2NhbGVTdGFydCkKLSAgICAsIG1fc3RhcnRUaW1l
TXMoc3RhcnRUaW1lTXMpCisgICAgLCBtX3N0YXJ0VGltZShzdGFydFRpbWUpCiB7CiB9CiAKLXZv
aWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9s
bCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKQordm9pZCBDQ1BhZ2VT
Y2FsZUFuaW1hdGlvbjo6em9vbVRvKGNvbnN0IEludFNpemUmIGZpbmFsU2Nyb2xsLCBmbG9hdCBm
aW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIGlmIChtX3BhZ2VTY2FsZVN0
YXJ0ICE9IGZpbmFsUGFnZVNjYWxlKSB7CiAgICAgICAgIC8vIEZvciB1bmlmb3JtLWxvb2tpbmcg
em9vbWluZywgaW5mZXIgdGhlIGFuY2hvciAocG9pbnQgdGhhdCByZW1haW5zIGluCkBAIC03OCwx
OCArNzgsMTggQEAgdm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVRvKGNvbnN0IEludFNp
emUmIGZpbmFsU2Nyb2xsLCBmbG9hdCBmaW5hbFBhZ2VTY2EKICAgICAgICAgZmxvYXQgcmF0aW9Z
ID0gKHN0YXJ0UmVjdC55KCkgLSBlbmRSZWN0LnkoKSkgLyAoZW5kUmVjdC5oZWlnaHQoKSAtIHN0
YXJ0UmVjdC5oZWlnaHQoKSk7CiAKICAgICAgICAgSW50U2l6ZSBhbmNob3IobV93aW5kb3dTaXpl
LndpZHRoKCkgKiByYXRpb1gsIG1fd2luZG93U2l6ZS5oZWlnaHQoKSAqIHJhdGlvWSk7Ci0gICAg
ICAgIHpvb21XaXRoQW5jaG9yKGFuY2hvciwgZmluYWxQYWdlU2NhbGUsIGR1cmF0aW9uTXMpOwor
ICAgICAgICB6b29tV2l0aEFuY2hvcihhbmNob3IsIGZpbmFsUGFnZVNjYWxlLCBkdXJhdGlvbik7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHB1cmUgdHJhbnNsYXRpb24s
IHRoZW4gdGhlcmUgZXhpc3RzIG5vIGFuY2hvci4gTGluZWFybHkKICAgICAgICAgLy8gaW50ZXJw
b2xhdGUgdGhlIHNjcm9sbCBvZmZzZXQgaW5zdGVhZC4KICAgICAgICAgbV9zY3JvbGxFbmQgPSBm
aW5hbFNjcm9sbDsKICAgICAgICAgbV9wYWdlU2NhbGVFbmQgPSBmaW5hbFBhZ2VTY2FsZTsKLSAg
ICAgICAgbV9kdXJhdGlvbk1zID0gZHVyYXRpb25NczsKKyAgICAgICAgbV9kdXJhdGlvbiA9IGR1
cmF0aW9uOwogICAgICAgICBtX2FuY2hvck1vZGUgPSBmYWxzZTsKICAgICB9CiB9CiAKLXZvaWQg
Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hv
ciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKQordm9pZCBDQ1BhZ2VT
Y2FsZUFuaW1hdGlvbjo6em9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9h
dCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIG1fc2Nyb2xsRW5kID0g
bV9zY3JvbGxTdGFydCArIGFuY2hvcjsKICAgICBtX3Njcm9sbEVuZC5zY2FsZShmaW5hbFBhZ2VT
Y2FsZSAvIG1fcGFnZVNjYWxlU3RhcnQpOwpAQCAtMTAzLDMxICsxMDMsMzEgQEAgdm9pZCBDQ1Bh
Z2VTY2FsZUFuaW1hdGlvbjo6em9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBm
bG9hdCBmaW5hbFBhZ2UKIAogICAgIG1fYW5jaG9yID0gYW5jaG9yOwogICAgIG1fcGFnZVNjYWxl
RW5kID0gZmluYWxQYWdlU2NhbGU7Ci0gICAgbV9kdXJhdGlvbk1zID0gZHVyYXRpb25NczsKKyAg
ICBtX2R1cmF0aW9uID0gZHVyYXRpb247CiAgICAgbV9hbmNob3JNb2RlID0gdHJ1ZTsKIH0KIAot
SW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRUaW1lKGRvdWJsZSB0
aW1lTXMpIGNvbnN0CitJbnRTaXplIENDUGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRB
dFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNjcm9sbE9mZnNldEF0UmF0
aW8ocHJvZ3Jlc3NSYXRpb0ZvclRpbWUodGltZU1zKSk7CisgICAgcmV0dXJuIHNjcm9sbE9mZnNl
dEF0UmF0aW8ocHJvZ3Jlc3NSYXRpb0ZvclRpbWUodGltZSkpOwogfQogCi1mbG9hdCBDQ1BhZ2VT
Y2FsZUFuaW1hdGlvbjo6cGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0CitmbG9h
dCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0aW1lKSBjb25z
dAogewotICAgIHJldHVybiBwYWdlU2NhbGVBdFJhdGlvKHByb2dyZXNzUmF0aW9Gb3JUaW1lKHRp
bWVNcykpOworICAgIHJldHVybiBwYWdlU2NhbGVBdFJhdGlvKHByb2dyZXNzUmF0aW9Gb3JUaW1l
KHRpbWUpKTsKIH0KIAotYm9vbCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6aXNBbmltYXRpb25Db21w
bGV0ZUF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdAorYm9vbCBDQ1BhZ2VTY2FsZUFuaW1hdGlv
bjo6aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZShkb3VibGUgdGltZSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gdGltZU1zID49IGVuZFRpbWVNcygpOworICAgIHJldHVybiB0aW1lID49IGVuZFRpbWUo
KTsKIH0KIAotZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246OnByb2dyZXNzUmF0aW9Gb3JUaW1l
KGRvdWJsZSB0aW1lTXMpIGNvbnN0CitmbG9hdCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jl
c3NSYXRpb0ZvclRpbWUoZG91YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQW5pbWF0aW9u
Q29tcGxldGVBdFRpbWUodGltZU1zKSkKKyAgICBpZiAoaXNBbmltYXRpb25Db21wbGV0ZUF0VGlt
ZSh0aW1lKSkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICByZXR1cm4gKHRpbWVNcyAtIG1fc3Rh
cnRUaW1lTXMpIC8gbV9kdXJhdGlvbk1zOworICAgIHJldHVybiAodGltZSAtIG1fc3RhcnRUaW1l
KSAvIG1fZHVyYXRpb247CiB9CiAKIEludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9s
bE9mZnNldEF0UmF0aW8oZmxvYXQgcmF0aW8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2Nh
bGVBbmltYXRpb24uaAppbmRleCBmNGIxYmY0N2E5YTk3Njc4YzM2ZWY2MmFiY2I0Y2RlMDVjODRk
ZTg5Li5kOWFjYjQ5MTFkYmMyNTZmZjllYmY5ZWE3ZTJkM2VjMzNlNmZmMDdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2Fs
ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgKQEAgLTM5LDM5ICszOSwzOSBAQCBwdWJsaWM6
CiAgICAgLy8gQ29uc3RydWN0IHdpdGggdGhlIHN0YXJ0aW5nIHBhZ2Ugc2NhbGUgYW5kIHNjcm9s
bCBvZmZzZXQgKHdoaWNoIGlzIGluCiAgICAgLy8gcGFnZVNjYWxlU3RhcnQgc3BhY2UpLiBUaGUg
d2luZG93IHNpemUgaXMgdGhlIHVzZXItdmlld2FibGUgYXJlYQogICAgIC8vIGluIHBpeGVscy4K
LSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1BhZ2VTY2FsZUFuaW1hdGlvbj4gY3JlYXRlKGNvbnN0
IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6
ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRvdWJsZSBzdGFydFRp
bWVNcyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IGNyZWF0
ZShjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0
IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUg
c3RhcnRUaW1lKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbml0aWFsaXplIHRo
ZSBhbmltYXRpb24uIENhbGwgb25lIG9mIHRoZW0KICAgICAvLyBpbW1lZGlhdGVseSBhZnRlciBj
b25zdHJ1Y3Rpb24gdG8gc2V0IHRoZSBmaW5hbCBzY3JvbGwgYW5kIHBhZ2Ugc2NhbGUuCiAKICAg
ICAvLyBab29tIHdoaWxlIGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGUgdG9wLWxlZnQgc2Nyb2xs
IHBvc2l0aW9uLiBUaGUKICAgICAvLyBzY3JvbGwgb2Zmc2V0IGlzIGluIGZpbmFsUGFnZVNjYWxl
IGNvb3JkaW5hdGVzLgotICAgIHZvaWQgem9vbVRvKGNvbnN0IEludFNpemUmIGZpbmFsU2Nyb2xs
LCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpOworICAgIHZvaWQgem9v
bVRvKGNvbnN0IEludFNpemUmIGZpbmFsU2Nyb2xsLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91
YmxlIGR1cmF0aW9uKTsKIAogICAgIC8vIFpvb20gYmFzZWQgb24gYSBzcGVjaWZpZWQgb25zY3Jl
ZW4gYW5jaG9yLCB3aGljaCB3aWxsIHJlbWFpbiBhdCB0aGUgc2FtZQogICAgIC8vIHBvc2l0aW9u
IG9uIHRoZSBzY3JlZW4gdGhyb3VnaG91dCB0aGUgYW5pbWF0aW9uLiBUaGUgYW5jaG9yIGlzIGlu
IGxvY2FsCiAgICAgLy8gc3BhY2UgcmVsYXRpdmUgdG8gc2Nyb2xsU3RhcnQuCi0gICAgdm9pZCB6
b29tV2l0aEFuY2hvcihjb25zdCBJbnRTaXplJiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxl
LCBkb3VibGUgZHVyYXRpb25Ncyk7CisgICAgdm9pZCB6b29tV2l0aEFuY2hvcihjb25zdCBJbnRT
aXplJiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pOwogCiAg
ICAgLy8gQ2FsbCB0aGVzZSBmdW5jdGlvbnMgd2hpbGUgdGhlIGFuaW1hdGlvbiBpcyBpbiBwcm9n
cmVzcyB0byBvdXRwdXQgdGhlCiAgICAgLy8gY3VycmVudCBzdGF0ZS4KLSAgICBJbnRTaXplIHNj
cm9sbE9mZnNldEF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdDsKLSAgICBmbG9hdCBwYWdlU2Nh
bGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3Q7Ci0gICAgYm9vbCBpc0FuaW1hdGlvbkNvbXBs
ZXRlQXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OworICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0
QXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKKyAgICBmbG9hdCBwYWdlU2NhbGVBdFRpbWUoZG91
YmxlIHRpbWUpIGNvbnN0OworICAgIGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZUF0VGltZShkb3Vi
bGUgdGltZSkgY29uc3Q7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgcmV0dXJuIHN0
YXRlIHdoaWNoIGlzIGludmFyaWFudCB0aHJvdWdob3V0IHRoZQogICAgIC8vIGNvdXJzZSBvZiB0
aGUgYW5pbWF0aW9uLgotICAgIGRvdWJsZSBzdGFydFRpbWVNcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRUaW1lTXM7IH0KLSAgICBkb3VibGUgZHVyYXRpb25NcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZHVyYXRpb25NczsgfQotICAgIGRvdWJsZSBlbmRUaW1lTXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0VGltZU1zICsgbV9kdXJhdGlvbk1zOyB9CisgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9CisgICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIGRvdWJsZSBlbmRUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9zdGFydFRpbWUgKyBtX2R1cmF0aW9uOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgZmluYWxTY3Jv
bGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbEVuZDsgfQogICAgIGZsb2F0IGZpbmFs
UGFnZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU2NhbGVFbmQ7IH0KIAogcHJvdGVjdGVk
OgotICAgIENDUGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBm
bG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50
U2l6ZSYgY29udGVudFNpemUsIGRvdWJsZSBzdGFydFRpbWVNcyk7CisgICAgQ0NQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0
LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwg
ZG91YmxlIHN0YXJ0VGltZSk7CiAKIHByaXZhdGU6Ci0gICAgZmxvYXQgcHJvZ3Jlc3NSYXRpb0Zv
clRpbWUoZG91YmxlIHRpbWVNcykgY29uc3Q7CisgICAgZmxvYXQgcHJvZ3Jlc3NSYXRpb0ZvclRp
bWUoZG91YmxlIHRpbWUpIGNvbnN0OwogICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0QXRSYXRpbyhm
bG9hdCByYXRpbykgY29uc3Q7CiAgICAgZmxvYXQgcGFnZVNjYWxlQXRSYXRpbyhmbG9hdCByYXRp
bykgY29uc3Q7CiAKQEAgLTg1LDggKzg1LDggQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1fc2Ny
b2xsRW5kOwogICAgIGZsb2F0IG1fcGFnZVNjYWxlRW5kOwogCi0gICAgZG91YmxlIG1fc3RhcnRU
aW1lTXM7Ci0gICAgZG91YmxlIG1fZHVyYXRpb25NczsKKyAgICBkb3VibGUgbV9zdGFydFRpbWU7
CisgICAgZG91YmxlIG1fZHVyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDQwZjAzYjJkNmRiMWFi
YjljOWQ1ODY3MTE5YWI1MTA1ZDU1NmM2NmUuLjEyYzljYjllMDRjMDU2YjhkNzkzNTFkMmQxZjQx
ZTIzMzhkM2NmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBA
IC04OSw5ICs4OSw5IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVh
ZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24o
Y29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2Fs
ZSwgZG91YmxlIGR1cmF0aW9uU2VjKQordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VB
bmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pCiB7Ci0gICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hv
ciwgc2NhbGUsIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wLCBkdXJhdGlv
blNlYyAqIDEwMDAuMCk7CisgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVB
bmltYXRpb24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpLCBkdXJhdGlvbik7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEKiBDQ1Np
bmdsZVRocmVhZFByb3h5Ojpjb250ZXh0KCkKQEAgLTI5Miw4ICsyOTIsMTAgQEAgYm9vbCBDQ1Np
bmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSgpCiAgICAgQVNTRVJUKCFtX2NvbnRleHRMb3N0
KTsKICAgICB7CiAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICAgIGRv
dWJsZSBmcmFtZURpc3BsYXlUaW1lTXMgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAq
IDEwMDAuMDsKLSAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUoZnJhbWVEaXNwbGF5
VGltZU1zKTsKKyAgICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7CisgICAgICBkb3VibGUgd2FsbENsb2NrVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisKKyAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2Fs
bENsb2NrVGltZSk7CiAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggMmQyOGQwMTY5
ZDMwODhiOGMzMmFiZGNlNzNiM2Q3NDFjNWY0MmExZS4uMDVjNjM2MTNlYzIxNzRjNWE4OWQxNmMy
ZjFlNDQ1MTZkMWJiNTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ1Byb3h5IGltcGxlbWVudGF0aW9u
CiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29u
c3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihj
b25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxl
LCBkb3VibGUgZHVyYXRpb25TZWMpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZs
b2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pOwogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAg
ICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAppbmRleCAzZDY1OTZkMDRlMTY0NzQ2OWRiMWE4ZDFkNzBhMjk2MjdhOWI3MmQxLi5kMzZk
YWQ3Yjk5MTkwYjM2MTUzZDY2ZmQxMDY5NzFkNWRkN2I5YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcApAQCAtMTM0LDE3ICsxMzQsMTcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1
ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0KiByZXF1ZXN0KQogICAgIG1f
c2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0ZvcmNlZFJlZHJhdygpOwogfQogCi12b2lk
IENDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRh
cmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlv
blNlYykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91
YmxlIGR1cmF0aW9uKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0g
ICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRo
cmVhZCwgdGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIGR1cmF0aW9uU2VjKSk7Cisg
ICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRo
cmVhZCwgdGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIGR1cmF0aW9uKSk7CiB9CiAK
LXZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBs
VGhyZWFkKEludFNpemUgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2Fs
ZSwgZG91YmxlIGR1cmF0aW9uU2VjKQordm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQ
YWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQoSW50U2l6ZSB0YXJnZXRQb3NpdGlvbiwgYm9v
bCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgQVNTRVJU
KENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbCkK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24odGFy
Z2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpICogMTAwMC4wLCBkdXJhdGlvblNlYyAqIDEwMDAuMCk7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNo
b3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgZHVyYXRpb24pOwogfQog
CiBHcmFwaGljc0NvbnRleHQzRCogQ0NUaHJlYWRQcm94eTo6Y29udGV4dCgpCkBAIC01NjYsMTAg
KzU2NiwxMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IGNvbXB1dGUgdGhlIGZyYW1lIGRp
c3BsYXkgdGltZSBtb3JlIGludGVsbGlnZW50bHkKLSAgICBkb3VibGUgZnJhbWVEaXNwbGF5VGlt
ZU1zID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7CisgICAgZG91Ymxl
IG1vbm90b25pY1RpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBkb3Vi
bGUgd2FsbENsb2NrVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKLSAgICBtX2lucHV0SGFuZGxlck9u
SW1wbFRocmVhZC0+d2lsbERyYXcoZnJhbWVEaXNwbGF5VGltZU1zKTsKLSAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1lRGlzcGxheVRpbWVNcyk7CisgICAgbV9pbnB1dEhhbmRs
ZXJPbkltcGxUaHJlYWQtPndpbGxEcmF3KG1vbm90b25pY1RpbWUpOworICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVu
ZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCA0
ZWFmODQwZjZiNTdkNTVjMDczYmZhNTY4ZjQwYWYwNmI4YjA4NjJlLi44MzA4ZTliNzQ3NTgzZjEy
OWYyYzUwNjZkZGRlNjY2YjI4YTdhODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENDUHJveHkgaW1wbGVtZW50YXRpb24KICAg
ICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRv
dWJsZSBkdXJhdGlvblNlYyk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQg
c2NhbGUsIGRvdWJsZSBkdXJhdGlvbik7CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5k
ZXggMzk3MzA4YjUyOWNjNDE3NDcxODdjN2Y4NjdkMTIxYjliMjNmY2FlZS4uYzJkYmVlM2I0NzJk
ZjY2NjE2ZjQyMTU4NmNiNWZiNzA3NzdkNjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApA
QCAtMjA2LDcgKzIwNiw3IEBAIGludCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aWRl
bnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6d2lsbERyYXcoZG91YmxlIGZyYW1lQmVnaW5UaW1l
TXMpCit2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp3aWxsRHJhdyhkb3VibGUg
bW9ub3RvbmljVGltZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKaW5kZXggYTJmMTMwMjVk
OWYxN2JmZDE4YzE0NGY5MzE3ZDgyYTZlYTEwOWVjNS4uODNiNGJkNTQ2MWFjMzRhNTE2YmNlZGZl
YzQyNGVhMWY0Y2MzMDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyIGltcGxlbWVudGF0aW9u
CiAgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB3
aWxsRHJhdyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcyk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxE
cmF3KGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbChXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdC5jcHAKaW5kZXggZTFhZWNjYzUzOWE1
ZDUxZGZmMThhMmJlN2M0MmVlYmExNDU3ZWZiZC4uODQyOWZlNDAwMzJmN2RiZDQ0MzI4NWM0NzVj
OWE0MmY3M2JkYWQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRlc3QuY3BwCkBA
IC01MywxMCArNTMsMTAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0
LCBUcml2aWFsVHJhbnNpdGlvbikKICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRk
KGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigx
LCAwLCAxKSksIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKICAgICBjb250cm9s
bGVyLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpl
dmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQ
RUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9F
USgwLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICBFWFBFQ1Rf
RVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFz
QWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtNzIsMTMgKzcyLDEzIEBAIFRFU1QoQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgVHJpdmlhbFF1ZXVpbmcpCiAgICAgY29udHJvbGxl
ci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNp
dGlvbigxLCAwLCAxKSksIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgY29u
dHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0
VHJhbnNpdGlvbigxLCAxLCAwLjVmKSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7
CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsICpldmVudHMpOworICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFz
QWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwot
ICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5p
bWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3Rp
dmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRl
KDIsIDIsICpldmVudHMpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwog
ICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBA
IC05MSw3ICs5MSw3IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwg
SW50ZXJydXB0KQogICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw+IGNv
bnRyb2xsZXIoCiAgICAgICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6Y3JlYXRl
KCZkdW1teSkpOwogICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRv
cHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1h
dGlvbjo6T3BhY2l0eSkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShj
b250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15
Lm9wYWNpdHkoKSk7CiAKQEAgLTk5LDEwICs5OSwxMCBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbFRlc3QsIEludGVycnVwdCkKICAgICB0b0FkZC0+c2V0UnVuU3RhdGUoQ0NB
Y3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JOZXh0VGljaywgMCk7CiAgICAgY29udHJvbGxlci0+
YWRkKHRvQWRkLnJlbGVhc2UoKSk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDAuNSwgKmV2
ZW50cyk7IC8vIHNlY29uZCBhbmltIHN0YXJ0cyBOT1cuCisgICAgY29udHJvbGxlci0+YW5pbWF0
ZSgwLjUsIDAuNSwgKmV2ZW50cyk7IC8vIHNlY29uZCBhbmltIHN0YXJ0cyBOT1cuCiAgICAgRVhQ
RUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9F
USgxLCBkdW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS41LCAqZXZl
bnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNSwgMS41LCAqZXZlbnRzKTsKICAgICBF
WFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJv
bGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtMTE5LDE1ICsxMTksMTUgQEAgVEVT
VChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBTY2hlZHVsZVRvZ2V0aGVyV2hl
bkFQcm9wZXJ0eUlzQmxvY2tlZCkKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5p
bWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlVHJhbnNmb3JtVHJhbnNpdGlvbigxKSksIDIsIENDQWN0
aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0pKTsKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0
aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwg
MiwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1h
dGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsK
ICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgx
LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsIDEsICpldmVudHMpOwogICAg
IC8vIFNob3VsZCBub3QgaGF2ZSBzdGFydGVkIHRoZSBmbG9hdCB0cmFuc2l0aW9uIHlldC4KICAg
ICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQ
RUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgLy8gVGhlIHRoZSBmbG9hdCBhbmltYXRp
b24gc2hvdWxkIGhhdmUgc3RhcnRlZCBhdCB0aW1lIDEgYW5kIHNob3VsZCBiZSBkb25lLgotICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0
ZSgyLCAyLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKICAg
ICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAt
MTQ3LDIwICsxNDcsMjAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0
LCBTY2hlZHVsZVRvZ2V0aGVyV2l0aEFuQW5pbVdhaXRpbmcpCiAgICAgY29udHJvbGxlci0+YWRk
KGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigx
LCAxLCAwLjVmKSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKICAgICAvLyBB
bmltcyB3aXRoIGlkIDEgc2hvdWxkIGJvdGggc3RhcnQgbm93LgotICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRz
KTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAg
ICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAgICAgLy8gVGhlIG9wYWNpdHkgYW5p
bWF0aW9uIHNob3VsZCBoYXZlIGZpbmlzaGVkIGF0IHRpbWUgMSwgYnV0IHRoZSBncm91cAogICAg
IC8vIG9mIGFuaW1hdGlvbnMgd2l0aCBpZCAxIGRvbid0IGZpbmlzaCB1bnRpbCB0aW1lIDIgYmVj
YXVzZSBvZiB0aGUgbGVuZ3RoCiAgICAgLy8gb2YgdGhlIHRyYW5zZm9ybSBhbmltYXRpb24uCi0g
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDIsIDIsICpldmVudHMpOwogICAgIC8vIFNob3VsZCBub3QgaGF2ZSBzdGFydGVkIHRoZSBm
bG9hdCB0cmFuc2l0aW9uIHlldC4KICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3Rp
dmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiAKICAg
ICAvLyBUaGUgdGhlIHNlY29uZCBvcGFjaXR5IGFuaW1hdGlvbiBzaG91bGQgc3RhcnQgYXQgdGlt
ZSAyIGFuZCBzaG91bGQgYmUKICAgICAvLyBkb25lIGJ5IHRpbWUgMwotICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMywgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAzLCAqZXZl
bnRzKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1Rf
RkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAtMTc4LDEzICsx
NzgsMTMgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0LCBTY2hlZHVs
ZUFuaW1hdGlvbikKICAgICB0b0FkZC0+c2V0U3RhcnRUaW1lKDEpOwogICAgIGNvbnRyb2xsZXIt
PmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZl
bnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAgIEVYUEVD
VF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEo
MCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMp
OworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RS
VUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBk
dW1teS5vcGFjaXR5KCkpOwotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7Cisg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgyLCAyLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMSwg
ZHVtbXkub3BhY2l0eSgpKTsKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwogfQpAQCAtMjA1LDE2ICsyMDUsMTYgQEAgVEVTVChDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckltcGxUZXN0LCBTY2hlZHVsZWRBbmltYXRpb25JbnRlcnJ1cHRzUnVubmlu
Z0FuaW0KICAgICBjb250cm9sbGVyLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKIAogICAgIC8vIEZp
cnN0IDJzIG9wYWNpdHkgdHJhbnNpdGlvbiBzaG91bGQgc3RhcnQgaW1tZWRpYXRlbHkuCi0gICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRl
KDAsIDAsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDAuNSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgw
LjUsIDAuNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAg
ICBjb250cm9sbGVyLT5hbmltYXRlKDEsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1h
dGUoMSwgMSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwotICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0
ZSgyLCAyLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKICAg
ICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQpAQCAt
MjM4LDIwICsyMzgsMjAgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxUZXN0
LCBTY2hlZHVsZWRBbmltYXRpb25JbnRlcnJ1cHRzUnVubmluZ0FuaW0KICAgICBjb250cm9sbGVy
LT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0
aW9uKDEsIDAsIDAuNzVmKSksIDMsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKICAg
ICAvLyBGaXJzdCAycyBvcGFjaXR5IHRyYW5zaXRpb24gc2hvdWxkIHN0YXJ0IGltbWVkaWF0ZWx5
LgotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+
YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNB
Y3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0g
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFu
aW1hdGUoMC41LCAwLjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhh
c0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC4yNWYsIGR1bW15Lm9wYWNpdHko
KSk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwot
ICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5p
bWF0ZSgxLCAxLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3Rp
dmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAuNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0g
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgzLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDMsIDMsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2
ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBj
b250cm9sbGVyLT5hbmltYXRlKDQsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
NCwgNCwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0VRKDAuNzVmLCBkdW1teS5vcGFjaXR5KCkpOwog
ICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CkBA
IC0yNjgsMjcgKzI2OCwyNyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbFRl
c3QsIFRyaXZpYWxMb29waW5nKQogICAgIHRvQWRkLT5zZXRJdGVyYXRpb25zKDMpOwogICAgIGNv
bnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0
ZSgwLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwog
ICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBF
WFBFQ1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEu
MjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS4yNSwgMS4yNSwgKmV2ZW50
cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwog
ICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5h
bmltYXRlKDEuNzUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMS43NSwgMS43
NSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDIuMjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
Mi4yNSwgMi4yNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0
aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjI1ZiwgZHVtbXkub3BhY2l0eSgpKTsK
LSAgICBjb250cm9sbGVyLT5hbmltYXRlKDIuNzUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMi43NSwgMi43NSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxl
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3Bh
Y2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDMsICpldmVudHMpOworICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMywgMywgKmV2ZW50cyk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xs
ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0
eSgpKTsKIAogICAgIC8vIEp1c3QgYmUgZXh0cmEgc3VyZS4KLSAgICBjb250cm9sbGVyLT5hbmlt
YXRlKDQsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoNCwgNCwgKmV2ZW50cyk7
CiAgICAgRVhQRUNUX0VRKDEsIGR1bW15Lm9wYWNpdHkoKSk7CiB9CiAKQEAgLTMwNSwyMCArMzA1
LDIwIEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgSW5maW5pdGVM
b29waW5nKQogICAgIHRvQWRkLT5zZXRJdGVyYXRpb25zKC0xKTsKICAgICBjb250cm9sbGVyLT5h
ZGQodG9BZGQucmVsZWFzZSgpKTsKIAotICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50
cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1Rf
VFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAs
IGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjI1LCAqZXZlbnRz
KTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuMjUsIDEuMjUsICpldmVudHMpOwogICAgIEVY
UEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1Rf
RVEoMC4yNWYsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgxLjc1
LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDEuNzUsIDEuNzUsICpldmVudHMp
OwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAg
ICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7CiAKLSAgICBjb250cm9sbGVyLT5h
bmltYXRlKDEwNzM3NDE4MjQuMjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUo
MTA3Mzc0MTgyNC4yNSwgMTA3Mzc0MTgyNC4yNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUo
Y29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjI1Ziwg
ZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwNzM3NDE4MjQuNzUs
ICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTA3Mzc0MTgyNC43NSwgMTA3Mzc0
MTgyNC43NSwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLjc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKIApA
QCAtMzM5LDI3ICszMzksMjcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxU
ZXN0LCBQYXVzZVJlc3VtZSkKICAgICBjb25zdCBpbnQgaWQgPSAxOwogICAgIGNvbnRyb2xsZXIt
PmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRp
b24oMSwgMCwgMSkpLCBpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKIAotICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgw
LCAwLCAqZXZlbnRzKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmlt
YXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7Ci0gICAgY29udHJv
bGxlci0+YW5pbWF0ZSgwLjUsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMC41
LCAwLjUsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC41ZiwgZHVtbXkub3BhY2l0eSgpKTsKIAogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVB
bmltYXRpb246Ok9wYWNpdHkpKTsKICAgICBjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24o
aWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmlt
YXRpb246OlBhdXNlZCwgMC41Zik7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwMjQsICpl
dmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMTAyNCwgMTAyNCwgKmV2ZW50cyk7CiAg
ICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVY
UEVDVF9FUSgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX1RSVUUoY29udHJv
bGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkp
OwogICAgIGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVBbmltYXRp
b246Ok9wYWNpdHkpLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgMTAy
NCk7CiAKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwMjQuMjUsICpldmVudHMpOworICAgIGNv
bnRyb2xsZXItPmFuaW1hdGUoMTAyNC4yNSwgMTAyNC4yNSwgKmV2ZW50cyk7CiAgICAgRVhQRUNU
X1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgw
Ljc1ZiwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEwMjQuNSwg
KmV2ZW50cyk7CisgICAgY29udHJvbGxlci0+YW5pbWF0ZSgxMDI0LjUsIDEwMjQuNSwgKmV2ZW50
cyk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
ICAgICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKIH0KQEAgLTM3NiwyMSArMzc2LDU0
IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgQWJvcnRBR3JvdXBl
ZEFuaW1hdGlvbikKICAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFk
b3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDIsIDAsIDEpKSwgaWQsIENDQWN0aXZlQW5p
bWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1h
dGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAxLCAwLjc1ZikpLCAyLCBD
Q0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCi0gICAgY29udHJvbGxlci0+YW5pbWF0ZSgw
LCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDAsICpldmVudHMpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKICAgICBFWFBF
Q1RfRVEoMCwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250cm9sbGVyLT5hbmltYXRlKDEsICpl
dmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMSwgMSwgKmV2ZW50cyk7CiAgICAgRVhQ
RUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9F
USgwLjVmLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+
Z2V0QWN0aXZlQW5pbWF0aW9uKGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogICAg
IGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1hdGlvbihpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9w
YWNpdHkpLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgMSk7Ci0gICAg
Y29udHJvbGxlci0+YW5pbWF0ZSgxLCAqZXZlbnRzKTsKKyAgICBjb250cm9sbGVyLT5hbmltYXRl
KDEsIDEsICpldmVudHMpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMSwgZHVtbXkub3BhY2l0eSgpKTsKLSAgICBjb250
cm9sbGVyLT5hbmltYXRlKDIsICpldmVudHMpOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMiwg
MiwgKmV2ZW50cyk7CiAgICAgRVhQRUNUX1RSVUUoIWNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1h
dGlvbigpKTsKICAgICBFWFBFQ1RfRVEoMC43NWYsIGR1bW15Lm9wYWNpdHkoKSk7CiB9CiAKK1RF
U1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsVGVzdCwgQW5pbWF0aW9uc1VzZUNvcnJl
Y3RUaW1lKQoreworICAgIE93blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKGFk
b3B0UHRyKG5ldyBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvcikpOworICAgIEZha2VMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJJbXBsQ2xpZW50IGR1bW15OworICAgIE93blB0cjxDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckltcGw+IGNvbnRyb2xsZXIoCisgICAgICAgIENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbDo6Y3JlYXRlKCZkdW1teSkpOworCisgICAgY29uc3QgaW50IGlkID0gMTsK
KyAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBG
YWtlRmxvYXRUcmFuc2l0aW9uKDIsIDAsIDEpKSwgaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFj
aXR5KSk7CisKKyAgICAvLyBBbmltYXRpb24gc3RhcnRlZCBldmVudHMgc2hvdWxkIGJlIGV4cHJl
c3NlZCBpbiB0ZXJtcyBvZiB0aGUgd2FsbCBjbG9jayB0aW1lLgorICAgIGRvdWJsZSBtb25vdG9u
aWNUaW1lID0gMDsKKyAgICBkb3VibGUgd2FsbENsb2NrVGltZSA9IDQyOworICAgIGNvbnRyb2xs
ZXItPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSwgKmV2ZW50cyk7CisgICAg
RVhQRUNUX0ZBTFNFKGV2ZW50cy0+aXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NBbmltYXRp
b25FdmVudDo6U3RhcnRlZCwgKCpldmVudHMpWzBdLT50eXBlKCkpOworICAgIGNvbnN0IENDQW5p
bWF0aW9uU3RhcnRlZEV2ZW50KiBhbmltYXRpb25TdGFydGVkRXZlbnQgPSAoKmV2ZW50cylbMF0t
PnRvQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdhbGxDbG9j
a1RpbWUsIGFuaW1hdGlvblN0YXJ0ZWRFdmVudC0+c3RhcnRUaW1lKCkpOworCisgICAgZXZlbnRz
LT5jbGVhcigpOworCisgICAgLy8gV2Ugc2hvdWxkIGJlIHRpY2tpbmcgd2l0aCB0aGUgbW9ub3Rv
bmljIHRpbWUuIFRoZSBhbmltYXRpb24gaXMgMiBzZWNvbmRzIGxvbmcsIHNvIGlmCisgICAgLy8g
d2UgYXJlIG1pc3Rha2VubHkgdXNpbmcgdGhlIHdhbGwgY2xvY2sgdGltZSBmb3IgdGlja2luZywg
d2Ugc2hvdWxkIG5vdCBzZWUgYW4gYW5pbWF0aW9uCisgICAgLy8gZmluaXNoLiBJZiB3ZSBhcmUg
dXNpbmcgbW9ub3RvbmljIHRpbWUgKGFzIHdlIHNob3VsZCkgdGhlIG9wYWNpdHkgYW5pbWF0aW9u
IHNob3VsZAorICAgIC8vIGhhdmUgZW5kZWQuCisgICAgbW9ub3RvbmljVGltZSA9IDM7CisgICAg
d2FsbENsb2NrVGltZSA9IDQzOworICAgIGNvbnRyb2xsZXItPmFuaW1hdGUobW9ub3RvbmljVGlt
ZSwgd2FsbENsb2NrVGltZSwgKmV2ZW50cyk7CisgICAgRVhQRUNUX0ZBTFNFKGV2ZW50cy0+aXNF
bXB0eSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NBbmltYXRpb25FdmVudDo6RmluaXNoZWQsICgqZXZl
bnRzKVswXS0+dHlwZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRl
c3QuY3BwCmluZGV4IGM0ZjEwM2EzY2FmZTQ2OGU0YjhlNzk3ODZkMmIyMTg3ZTQ1ZDdlYTEuLjhh
NjI3ZmEwZjY1OWQ4MWQzODc1Y2UxMmFjYWNhNmYwYjI2ZDczZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyVGVzdC5jcHAKQEAgLTIwMSw4ICsyMDEsOCBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyVGVzdCwgc3luY0NvbXBsZXRlZEFuaW1hdGlvbikKIAogICAgIC8vIFN0ZXAgdGhy
b3VnaCB0aGUgYW5pbWF0aW9uIHVudGlsIGl0IGlzIGZpbmlzaGVkLiBBdCB0aGUgbmV4dCBzeW5j
LCB0aGUgbWFpbiB0aHJlYWQncyBhbmltYXRpb24gc2hvdWxkIGJlIGNsZWFyZWQuCiAgICAgT3du
UHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiBldmVudHMoYWRvcHRQdHIobmV3IENDQW5pbWF0
aW9uRXZlbnRzVmVjdG9yKSk7Ci0gICAgY29udHJvbGxlckltcGwtPmFuaW1hdGUoMCwgKmV2ZW50
cyk7Ci0gICAgY29udHJvbGxlckltcGwtPmFuaW1hdGUoMiwgKmV2ZW50cyk7CisgICAgY29udHJv
bGxlckltcGwtPmFuaW1hdGUoMCwgMCwgKmV2ZW50cyk7CisgICAgY29udHJvbGxlckltcGwtPmFu
aW1hdGUoMiwgMiwgKmV2ZW50cyk7CiAKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlckltcGwt
PmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKaW5kZXggYzNiNGVhYjA4MGY0OTllNTEwNmI1ODc2ZTQxYjNhZGZlZjEwNzMzZS4uOGYy
NmRhYmNkMGY2ZjcyY2UyZDYyZDA5ZDVmNDkyMjhjZDcxOWYxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAK
QEAgLTM1MCw4ICszNTAsMTAgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdl
U2NhbGVBbmltYXRpb24pCiAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKIAogICAgIGNvbnN0IGZs
b2F0IG1pblBhZ2VTY2FsZSA9IDAuNSwgbWF4UGFnZVNjYWxlID0gNDsKLSAgICBjb25zdCBkb3Vi
bGUgc3RhcnRUaW1lTXMgPSAxMDAwOwotICAgIGNvbnN0IGRvdWJsZSBkdXJhdGlvbk1zID0gMTAw
OworICAgIGNvbnN0IGRvdWJsZSBzdGFydFRpbWUgPSAxOworICAgIGNvbnN0IGRvdWJsZSBkdXJh
dGlvbiA9IDAuMTsKKyAgICBjb25zdCBkb3VibGUgaGFsZndheVRocm91Z2hBbmltYXRpb24gPSBz
dGFydFRpbWUgKyBkdXJhdGlvbiAvIDI7CisgICAgY29uc3QgZG91YmxlIGVuZFRpbWUgPSBzdGFy
dFRpbWUgKyBkdXJhdGlvbjsKIAogICAgIC8vIE5vbi1hbmNob3Igem9vbS1pbgogICAgIHsKQEAg
LTM1OSwxMCArMzYxLDEwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNj
YWxlQW5pbWF0aW9uKQogICAgICAgICBzY3JvbGxMYXllci0+c2V0UGFnZVNjYWxlRGVsdGEoMSk7
CiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCg1MCwgNTAp
KTsKIAotICAgICAgICBtX2hvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRTaXpl
KDAsIDApLCBmYWxzZSwgMiwgc3RhcnRUaW1lTXMsIGR1cmF0aW9uTXMpOwotICAgICAgICBtX2hv
c3RJbXBsLT5hbmltYXRlKHN0YXJ0VGltZU1zICsgZHVyYXRpb25NcyAvIDIpOworICAgICAgICBt
X2hvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRTaXplKDAsIDApLCBmYWxzZSwg
Miwgc3RhcnRUaW1lLCBkdXJhdGlvbik7CisgICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoaGFs
ZndheVRocm91Z2hBbmltYXRpb24sIGhhbGZ3YXlUaHJvdWdoQW5pbWF0aW9uKTsKICAgICAgICAg
RVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3KTsKLSAgICAgICAgbV9ob3N0SW1wbC0+YW5p
bWF0ZShzdGFydFRpbWVNcyArIGR1cmF0aW9uTXMpOworICAgICAgICBtX2hvc3RJbXBsLT5hbmlt
YXRlKGVuZFRpbWUsIGVuZFRpbWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RD
b21taXQpOwogCiAgICAgICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZv
ID0gbV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwpAQCAtMzc2LDggKzM3OCw4IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNjYWxlQW5pbWF0aW9uKQogICAg
ICAgICBzY3JvbGxMYXllci0+c2V0UGFnZVNjYWxlRGVsdGEoMSk7CiAgICAgICAgIHNjcm9sbExh
eWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCg1MCwgNTApKTsKIAotICAgICAgICBtX2hv
c3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRTaXplKDI1LCAyNSksIHRydWUsIG1p
blBhZ2VTY2FsZSwgc3RhcnRUaW1lTXMsIGR1cmF0aW9uTXMpOwotICAgICAgICBtX2hvc3RJbXBs
LT5hbmltYXRlKHN0YXJ0VGltZU1zICsgZHVyYXRpb25Ncyk7CisgICAgICAgIG1faG9zdEltcGwt
PnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKEludFNpemUoMjUsIDI1KSwgdHJ1ZSwgbWluUGFnZVNj
YWxlLCBzdGFydFRpbWUsIGR1cmF0aW9uKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShl
bmRUaW1lLCBlbmRUaW1lKTsKICAgICAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3
KTsKICAgICAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0Q29tbWl0KTsKIApAQCAtODQ3LDcg
Kzg0OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdmlzaWJpbGl0eUNoYW5n
ZVJlc2V0c0RhbWFnZSkKICAgICAvLyBGaXJzdCBmcmFtZTogaWdub3JlLgogICAgIGxheWVyVHJl
ZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZm
ZXJzKCk7Ci0gCisKICAgICAvLyBTZWNvbmQgZnJhbWU6IG5vdGhpbmcgaGFzIGNoYW5nZWQgLS0t
IHNvIHdlIHNvdWxkbid0IHB1c2ggYW55dGhpbmcgd2l0aCBwYXJ0aWFsIHN3YXAuCiAgICAgbGF5
ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dh
cEJ1ZmZlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDEyOGJkMGIwYzIzODM5NWNkMGM2NjNjMTA1ZjAxZmY4
NzY0MGE3OGMuLjI5ZjZhNDU5YTg4YmUxMDAwZjMwMTNhNmEwZmFjMTE3MTUyOTZiMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXll
cnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
YW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYsIGZsb2F0KSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3Jl
YXRlQ29udGV4dChib29sIHN1Y2NlZGVkKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCkgeyB9CkBAIC0xMDQsOSArMTA0LDkgQEAgcHVibGljOgogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJl
Z2luVGltZU1zKQorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9u
aWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKICAgICB7Ci0gICAgICAgIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZnJhbWVCZWdpblRpbWVNcyk7CisgICAgICAgIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGlt
ZSk7CiAgICAgICAgIG1fdGVzdEhvb2tzLT5hbmltYXRlTGF5ZXJzKHRoaXMpOwogICAgIH0KIApA
QCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBN
b2NrTGF5ZXJUcmVlSG9zdENsaWVudCh0ZXN0SG9va3MpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgewotICAg
ICAgICBtX3Rlc3RIb29rcy0+dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7CisgICAg
ICAgIG1fdGVzdEhvb2tzLT51cGRhdGVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130898</attachid>
            <date>2012-03-08 13:54:42 -0800</date>
            <delta_ts>2012-03-08 15:13:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120308165440.patch</filename>
            <type>text/plain</type>
            <size>59003</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5OTUyM2Y1OTQwMzY3
ODcxNTEwMTBkYzU5OGI2OGFlZWM5OTBkMi4uMThhNDdiNDk1NTBhNjc2YjZhYzY0NjI1YjFlMjM4
YjY4MzhmZTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rl
ZCBpbiBDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnNldEFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpDQ0FuaW1h
dGlvblN0YXJ0ZWRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBbmltYXRpb25FdmVudHMuaDoKKyAgICAgICAgKENDQW5pbWF0aW9uRXZlbnQpOgorICAg
ICAgICAoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmg6CisgICAgICAgIChDQ0lucHV0SGFuZGxl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0
QXZhaWxhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaDoK
KyAgICAgICAgKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZVBhZ2VTY2FsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6
CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KToKKyAgICAgICAgKENDTGF5ZXJU
cmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGFnZVNjYWxlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5p
bWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
OkNDUGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5p
bWF0aW9uOjp6b29tVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
Onpvb21XaXRoQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9u
OjpzY3JvbGxPZmZzZXRBdFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmlt
YXRpb246OnBhZ2VTY2FsZUF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFu
aW1hdGlvbjo6aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0ZvclRpbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmg6CisgICAg
ICAgIChDQ1BhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2Fs
ZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5p
bWF0aW9uOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlv
bjo6ZW5kVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFBy
b3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5Lmg6CisgICAgICAgIChDQ1NpbmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1w
bFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9u
RXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQ
cm94eSk6CisKIDIwMTItMDMtMDggIFNjb3R0IEJ5ZXIgIDxzY290dGJ5ZXJAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0b3JOb25lIHVzZSByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTgwZDAxYzM3NDBkZTdjNGY1Mzcz
NDAzMDY5ZjY5YzhiNDdmOWIwMC4uNWI1MjE3M2U2MWJjN2NhMWU0OTY3MGY1NjFhOTQ2MWNlMTY2
NGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0w
My0wOCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEVuc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3QgdGltZSB3aGVuIG5vdGlmeWluZyBhbmlt
YXRpb24gc3RhcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzk1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp3aWxsRHJhdyk6CisgICAgICAg
ICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgIChXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdDo6
cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6
CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6YW5pbWF0ZUxheWVycyk6CisgICAgICAgIChXVEY6
OlRlc3RIb29rczo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRy
ZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVI
b3N0Q2xpZW50Ojp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdEFkZEFuaW1hdGlvbjo6Q0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbik6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb246OmFuaW1hdGVMYXll
cnMpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpub3Rp
ZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmlt
YXRpb24pOgorCiAyMDEyLTAzLTA4ICBTY290dCBCeWVyICA8c2NvdHRieWVyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBIYXZlIFNjcm9sbEFuaW1hdG9yTm9uZSB1c2UgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDIzOTg4OTBjNWFhNGY1NGVhZGY2NDI5
OGVhMTNmYTVlMTk5MWNhY2IuLjJkZWVjOWFkNDBiNWNhZWJiOTAxMTExMGZkZjM3YmQ3ZGU3ODA3
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0xNDQsMTMgKzE0NCwxMiBAQCBib29sIExh
eWVyQ2hyb21pdW06Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKTsKIH0KIAotdm9pZCBM
YXllckNocm9taXVtOjpzZXRBbmltYXRpb25FdmVudChjb25zdCBDQ0FuaW1hdGlvbkV2ZW50JiBl
dmVudCkKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmlt
YXRpb25FdmVudCYgZXZlbnQsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIHN3aXRjaCAo
ZXZlbnQudHlwZSgpKSB7CiAKICAgICBjYXNlIENDQW5pbWF0aW9uRXZlbnQ6OlN0YXJ0ZWQ6IHsK
LSAgICAgICAgY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQqIHN0YXJ0ZWRFdmVudCA9IGV2
ZW50LnRvQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCk7Ci0gICAgICAgIG1fbGF5ZXJBbmltYXRpb25E
ZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChzdGFydGVkRXZlbnQtPnN0YXJ0VGltZSgp
KTsKKyAgICAgICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHdhbGxDbG9ja1RpbWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uaAppbmRleCAwY2UzYmEwZmExOTY0MTU2NDEzNmMxY2FiODg0MjdiYWIxODhkMzc3Li5kZDU1
Y2RjZDkxNmFmNmJmYTJjODY0OTBmY2E3YjZjYmY1YjFmYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5o
CkBAIC0yMjUsNyArMjI1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNBY3RpdmVBbmltYXRp
b24oKSBjb25zdDsKIAotICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRp
b25FdmVudCYpOworICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRpb25F
dmVudCYsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBj
bGFzcyBDQ0xheWVySW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcAppbmRl
eCBkMGQ3MDVkZTA1MjAwMjc0NjdkNWZlYjRkZDUwMzg5NjE0NmRmMjQ0Li45ZjQxODQ0Y2EwNWQx
MzdhYzFlZDdkOGYyYTcxMThmNDQ0MDY2ODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25F
dmVudHMuY3BwCkBAIC01MSwxNCArNTEsMTMgQEAgY29uc3QgQ0NBbmltYXRpb25GaW5pc2hlZEV2
ZW50KiBDQ0FuaW1hdGlvbkV2ZW50Ojp0b0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQoKSBjb24KICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50Kj4odGhp
cyk7CiB9CiAKLVBhc3NPd25QdHI8Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ+IENDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50OjpjcmVhdGUoaW50IGxheWVySWQsIGRvdWJsZSBzdGFydFRpbWUpCitQYXNz
T3duUHRyPENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6
Y3JlYXRlKGludCBsYXllcklkKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQobGF5ZXJJZCwgc3RhcnRUaW1lKSk7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChsYXllcklkKSk7CiB9CiAKLUNDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50OjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChpbnQgbGF5ZXJJZCwgZG91Ymxl
IHN0YXJ0VGltZSkKK0NDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudChpbnQgbGF5ZXJJZCkKICAgICA6IENDQW5pbWF0aW9uRXZlbnQobGF5ZXJJZCkKLSAgICAs
IG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZl
bnRzLmgKaW5kZXggZmRhYTVkMjM5Y2Q5YjViMThiM2JkODA1MjQ0ZmFkNDAyOTU5OTM4Zi4uZTlh
NWU1MDdhZjBiOWExNWI1MGRlZWNiYmYyZGUyNDA3MmNiYzVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fu
aW1hdGlvbkV2ZW50cy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ0Fu
aW1hdGlvbkZpbmlzaGVkRXZlbnQqIHRvQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6Ci0gICAgQ0NBbmltYXRpb25FdmVudChpbnQgbGF5ZXJJZCk7CisgICAgZXhw
bGljaXQgQ0NBbmltYXRpb25FdmVudChpbnQgbGF5ZXJJZCk7CiAKIHByaXZhdGU6CiAgICAgaW50
IG1fbGF5ZXJJZDsKQEAgLTU2LDE4ICs1NiwxNCBAQCBwcml2YXRlOgogLy8gSW5kaWNhdGVzIHRo
YXQgYW4gYW5pbWF0aW9uIGhhcyBzdGFydGVkIG9uIGEgcGFydGljdWxhciBsYXllci4KIGNsYXNz
IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50IDogcHVibGljIENDQW5pbWF0aW9uRXZlbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBjcmVh
dGUoaW50IGxheWVySWQsIGRvdWJsZSBzdGFydFRpbWUpOworICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBjcmVhdGUoaW50IGxheWVySWQpOwogCiAgICAgdmly
dHVhbCB+Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoKTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3Q7CiAKLSAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFy
dFRpbWU7IH0KLQogcHJpdmF0ZToKLSAgICBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChpbnQgbGF5
ZXJJZCwgZG91YmxlIHN0YXJ0VGltZSk7Ci0KLSAgICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAg
Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySWQpOwogfTsKIAogLy8gSW5kaWNhdGVz
IHRoYXQgYW4gYW5pbWF0aW9uIGhhcyBzdGFydGVkIG9uIGEgcGFydGljdWxhciBsYXllci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lucHV0SGFuZGxlci5oCmluZGV4IDZjMDU1OTk0YzU4ZWNhNDExMzE5YTljOTlkMTQz
ZjljMTdmM2UyYzIuLjMzNzIxZjFkZmM3MGM0NjU3MjQ3ZDY3ODFmZTk2OWYxYTIwYjg5ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdl
dFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGFuY2hvclBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBwYWdlU2NhbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSBzdGFydFRpbWVNcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlIGR1cmF0aW9uTXMpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlIHN0YXJ0VGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlIGR1cmF0aW9uKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICBDQ0lucHV0SGFuZGxlckNsaWVudCgpIHsgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q0NJbnB1dEhhbmRsZXIoKSB7IH0KIAogICAgIHZpcnR1YWwgaW50IGlkZW50
aWZpZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KGRvdWJsZSBmcmFt
ZURpc3BsYXlUaW1lTXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoZG91YmxlIG1v
bm90b25pY1RpbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIENDSW5wdXRIYW5kbGVyKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBs
LmNwcAppbmRleCBlOGQ2YmM3ZWY3NWFjNDAzZDExY2E2MTE1NDg4ZWNjNzFkNTYzNWQ1Li5mMDlk
Y2ZhZTA2NDI1ZGE4M2RlZTZmYTBmOTY2M2Y3MDIzMGMwYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKQEAgLTQ5LDE1ICs0
OSwxNSBAQCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6On5DQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGwoKQogewogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3RvciYgZXZlbnRzKQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OmFu
aW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVu
dHMpCiB7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGZyYW1lQmVnaW5U
aW1lU2VjcywgZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1l
KGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5n
Rm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzKTsKLSAgICBy
ZXNvbHZlQ29uZmxpY3RzKGZyYW1lQmVnaW5UaW1lU2Vjcyk7Ci0gICAgdGlja0FuaW1hdGlvbnMo
ZnJhbWVCZWdpblRpbWVTZWNzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRp
Y2sobW9ub3RvbmljVGltZSwgZXZlbnRzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
U3RhcnRUaW1lKG1vbm90b25pY1RpbWUsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNUaW1lLCBldmVudHMpOworICAgIHJl
c29sdmVDb25mbGljdHMobW9ub3RvbmljVGltZSk7CisgICAgdGlja0FuaW1hdGlvbnMobW9ub3Rv
bmljVGltZSk7CiAgICAgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoZXZlbnRzKTsKLSAgICBzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGZyYW1lQmVnaW5UaW1lU2Vj
cywgZXZlbnRzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmls
aXR5KG1vbm90b25pY1RpbWUsIGV2ZW50cyk7CiB9CiAKIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsOjphZGQoUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gYW5pbSkKQEAg
LTgzLDI4ICs4MywyOCBAQCBib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6aGFz
QWN0aXZlQW5pbWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4
dFRpY2soZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKK3ZvaWQg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
TmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBl
dmVudHMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3Rh
dGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0Zvck5leHRUaWNrKSB7Ci0gICAgICAg
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9u
OjpSdW5uaW5nLCBub3cpOwotICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRT
dGFydFRpbWUobm93KTsKLSAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFy
dGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbm93KSk7CisgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5n
LCBtb25vdG9uaWNUaW1lKTsKKyAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0
U3RhcnRUaW1lKG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFu
aW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3Rh
cnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NB
bmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5n
Rm9yU3RhcnRUaW1lICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkgPD0gbm93
KSB7Ci0gICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0
aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBub3cpOwotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKKyAg
ICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFu
aW1hdGlvbjo6V2FpdGluZ0ZvclN0YXJ0VGltZSAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0
YXJ0VGltZSgpIDw9IG1vbm90b25pY1RpbWUpIHsKKyAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25p
Y1RpbWUpOworICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpKSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
VGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBl
dmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NB
bmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKIHsKICAgICAvLyBGaXJzdCBjb2xsZWN0IHJ1
bm5pbmcgcHJvcGVydGllcy4KICAgICBUYXJnZXRQcm9wZXJ0aWVzIGJsb2NrZWRQcm9wZXJ0aWVz
OwpAQCAtMTM0LDEzICsxMzQsMTMgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcklt
cGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkKIAogICAgICAg
ICAgICAgLy8gSWYgdGhlIGludGVyc2VjdGlvbiBpcyBudWxsLCB0aGVuIHdlIGFyZSBmcmVlIHRv
IHN0YXJ0IHRoZSBhbmltYXRpb25zIGluIHRoZSBncm91cC4KICAgICAgICAgICAgIGlmIChudWxs
SW50ZXJzZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5z
ZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAg
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShub3cpOwotICAgICAgICAg
ICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2Ns
aWVudC0+aWQoKSwgbm93KSk7CisgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ld
LT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7
CisgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobW9u
b3RvbmljVGltZSk7CisgICAgICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpKSk7CiAgICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IGkgKyAxOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytqKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCkg
PT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5ncm91cCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9u
OjpSdW5uaW5nLCBub3cpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRp
b25zW2pdLT5zZXRTdGFydFRpbWUobm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0
aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcs
IG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRp
b25zW2pdLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNDgsNyArMTQ4LDcgQEAg
dm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpCit2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbW9ub3Rv
bmljVGltZSkKIHsKICAgICAvLyBGaW5kIGFueSBhbmltYXRpb25zIHRoYXQgYXJlIGFuaW1hdGlu
ZyB0aGUgc2FtZSBwcm9wZXJ0eSBhbmQgcmVzb2x2ZSB0aGUKICAgICAvLyBjb25maWN0LiBXZSBj
b3VsZCBldmVudHVhbGx5IGJsZW5kLCBidXQgZm9yIG5vdyB3ZSdsbCBqdXN0IGFib3J0IHRoZQpA
QCAtMTYwLDkgKzE2MCw5IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpy
ZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0g
aSArIDE7IGogPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAg
ICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2pdLT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5p
bWF0aW9uOjpSdW5uaW5nICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHko
KSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnRhcmdldFByb3BlcnR5KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkgPiBtX2Fj
dGl2ZUFuaW1hdGlvbnNbal0tPnN0YXJ0VGltZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bV9hY3RpdmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJv
cnRlZCwgbm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tq
XS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIG1vbm90b25pY1RpbWUp
OwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpBYm9ydGVk
LCBub3cpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5z
ZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbW9ub3RvbmljVGltZSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTQsMTkgKzE5
NCwxOSBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cHVyZ2VGaW5pc2hl
ZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cpCit2b2lk
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMoZG91YmxlIG1v
bm90b25pY1RpbWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1h
dGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZykgewotICAgICAgICAgICAg
ZG91YmxlIHRyaW1tZWQgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9DdXJyZW50
SXRlcmF0aW9uKG5vdyk7CisgICAgICAgICAgICBkb3VibGUgdHJpbW1lZCA9IG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+dHJpbVRpbWVUb0N1cnJlbnRJdGVyYXRpb24obW9ub3RvbmljVGltZSk7CiAK
ICAgICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0
eSgpKSB7CiAKICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybTog
ewogICAgICAgICAgICAgICAgIGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIHRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT5jdXJ2ZSgpLT50b1Ry
YW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbWF0cml4ID0gdHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUtPmdldFZhbHVlKHRy
aW1tZWQsIG1fY2xpZW50LT5ib3VuZHMoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+aXNGaW5pc2hlZEF0KG5vdykpCi0gICAgICAgICAgICAgICAgICAgIG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlz
aGVkLCBub3cpOworICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmlz
RmluaXNoZWRBdChtb25vdG9uaWNUaW1lKSkKKyAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVB
bmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6RmluaXNoZWQsIG1v
bm90b25pY1RpbWUpOwogCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNldFRyYW5zZm9ybSht
YXRyaXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE1LDggKzIxNSw4IEBAIHZvaWQg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUgbm93
KQogICAgICAgICAgICAgY2FzZSBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eTogewogICAgICAg
ICAgICAgICAgIGNvbnN0IENDRmxvYXRBbmltYXRpb25DdXJ2ZSogZmxvYXRBbmltYXRpb25DdXJ2
ZSA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y3VydmUoKS0+dG9GbG9hdEFuaW1hdGlvbkN1cnZl
KCk7CiAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgb3BhY2l0eSA9IGZsb2F0QW5pbWF0aW9u
Q3VydmUtPmdldFZhbHVlKHRyaW1tZWQpOwotICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPmlzRmluaXNoZWRBdChub3cpKQotICAgICAgICAgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hl
ZCwgbm93KTsKKyAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5pc0Zp
bmlzaGVkQXQobW9ub3RvbmljVGltZSkpCisgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVkLCBtb25v
dG9uaWNUaW1lKTsKIAogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZXRPcGFjaXR5KG9wYWNp
dHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaAppbmRleCAzNTQwMDQ5YjAzNjFmZGU2MjM5NWFi
YzBlNGUxNTE3MDQyZDQ0OGIwLi42YWMwMGU3YWUxNzhjNTc3MzY2MzdiMjJiZGEyYzkyOTIyMWRh
NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGwoKTsKIAotICAgIHZvaWQgYW5pbWF0ZShkb3VibGUgZnJh
bWVCZWdpblRpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZvaWQgYW5p
bWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKIAog
ICAgIHZvaWQgYWRkKFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+KTsKIApAQCAtNzgsMTMg
Kzc4LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIGFuaW1hdG9yIGlzIG93bmVkIGJ5IHRoZSBs
YXllci4KICAgICBleHBsaWNpdCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwoQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsQ2xpZW50Kik7CiAKLSAgICB2b2lkIHN0YXJ0QW5pbWF0
aW9uc1dhaXRpbmdGb3JOZXh0VGljayhkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rv
ciYpOwotICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUg
bm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwotICAgIHZvaWQgc3RhcnRBbmltYXRpb25z
V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3RvciYpOwotICAgIHZvaWQgcmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbm93KTsKKyAgICB2
b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayhkb3VibGUgbW9ub3RvbmljVGlt
ZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dh
aXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJik7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxh
YmlsaXR5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwor
ICAgIHZvaWQgcmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbW9ub3RvbmljVGltZSk7CiAgICAgdm9p
ZCBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwogCi0g
ICAgdm9pZCB0aWNrQW5pbWF0aW9ucyhkb3VibGUgbm93KTsKKyAgICB2b2lkIHRpY2tBbmltYXRp
b25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbENsaWVudCogbV9jbGllbnQ7CiAgICAgVmVjdG9yPE93blB0cjxDQ0FjdGl2ZUFuaW1h
dGlvbj4gPiBtX2FjdGl2ZUFuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAppbmRleCA4YjM0YjFjYWZmMWRiMTYzZWRlM2U4YjRhMTY2ZjZjMDA2ZDkzZmZjLi45OGMzMGY4
MjFhZTc3M2E5MzRhMzc4NjRiMTI3MDA5ODg5NGIwNzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAKQEAgLTMwMiwxMCArMzAyLDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpz
ZXROZWVkc1JlZHJhdygpCiAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwog
fQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8
Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cykKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpz
ZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZl
bnRzLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBBU1NFUlQoQ0NUaHJlYWRQcm94eTo6
aXNNYWluVGhyZWFkKCkpOwotICAgIHNldEFuaW1hdGlvbkV2ZW50c1JlY3Vyc2l2ZSgqZXZlbnRz
LCBtX3Jvb3RMYXllci5nZXQoKSk7CisgICAgc2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKCpl
dmVudHMsIG1fcm9vdExheWVyLmdldCgpLCB3YWxsQ2xvY2tUaW1lKTsKIH0KIAogdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RM
YXllcikKQEAgLTY0MCwxNSArNjQwLDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVU
ZXh0dXJlQWZ0ZXJDb21taXQoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyCiAgICAg
bV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0LmFwcGVuZCh0ZXh0dXJlKTsKIH0KIAotdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEFuaW1hdGlvbkV2ZW50c1JlY3Vyc2l2ZShjb25zdCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzLCBMYXllckNocm9taXVtKiBsYXllcikKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUoY29uc3QgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywgTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGRvdWJsZSB3
YWxsQ2xvY2tUaW1lKQogewogICAgIGZvciAoc2l6ZV90IGV2ZW50SW5kZXggPSAwOyBldmVudElu
ZGV4IDwgZXZlbnRzLnNpemUoKTsgKytldmVudEluZGV4KSB7CiAgICAgICAgIGlmIChsYXllci0+
aWQoKSA9PSBldmVudHNbZXZlbnRJbmRleF0tPmxheWVySWQoKSkKLSAgICAgICAgICAgIGxheWVy
LT5zZXRBbmltYXRpb25FdmVudCgqZXZlbnRzW2V2ZW50SW5kZXhdKTsKKyAgICAgICAgICAgIGxh
eWVyLT5zZXRBbmltYXRpb25FdmVudCgqZXZlbnRzW2V2ZW50SW5kZXhdLCB3YWxsQ2xvY2tUaW1l
KTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBjaGlsZEluZGV4ID0gMDsgY2hpbGRJbmRleCA8
IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytjaGlsZEluZGV4KQotICAgICAgICBzZXRBbmlt
YXRpb25FdmVudHNSZWN1cnNpdmUoZXZlbnRzLCBsYXllci0+Y2hpbGRyZW4oKVtjaGlsZEluZGV4
XS5nZXQoKSk7CisgICAgICAgIHNldEFuaW1hdGlvbkV2ZW50c1JlY3Vyc2l2ZShldmVudHMsIGxh
eWVyLT5jaGlsZHJlbigpW2NoaWxkSW5kZXhdLmdldCgpLCB3YWxsQ2xvY2tUaW1lKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA4
M2EwY2NlZTRkMTkyMWM2MmRkZTY5NGFjNTAxNzhkMGFmN2VjODZiLi5kNTI2MjI2MmQ0ZjJjY2E1
NDQ5NmNmYmJhN2E1NTBkYjkzMmJhNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtMTc2LDcgKzE3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21t
aXQoKTsKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAKLSAgICB2b2lkIHNldEFuaW1hdGlv
bkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPik7CisgICAgdm9pZCBz
ZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRv
dWJsZSB3YWxsQ2xvY2tUaW1lKTsKIAogICAgIExheWVyQ2hyb21pdW0qIHJvb3RMYXllcigpIHsg
cmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0KQEAgLTIyNSw3ICsy
MjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXJ2ZVRleHR1cmVzKCk7CiAgICAgdm9pZCBj
bGVhclBlbmRpbmdVcGRhdGUoKTsKIAotICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJz
aXZlKGNvbnN0IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiwgTGF5ZXJDaHJvbWl1bSopOworICAg
IHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKGNvbnN0IENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJiwgTGF5ZXJDaHJvbWl1bSosIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKIAogICAgIGlu
dCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCmluZGV4IDkyNWM4Y2M0YzA2NjEyZDQxNTJmMDk5YWQ3MjYwOGEzNzgyMGM4MGEu
LjYyMjQ0Yjk2OWY0ZGI5MDFlMWFkMTFmYThhMmFhOGI2YTcyMTg3ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC05NywxMyArOTcsMTMgQEAgR3JhcGhpY3ND
b250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQogICAgIHJldHVybiBtX2xh
eWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNvbnRleHQoKSA6IDA7CiB9CiAKLXZvaWQg
Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWVNcykKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91
YmxlIHdhbGxDbG9ja1RpbWUpCiB7Ci0gICAgYW5pbWF0ZVBhZ2VTY2FsZShmcmFtZUJlZ2luVGlt
ZU1zKTsKLSAgICBhbmltYXRlTGF5ZXJzKGZyYW1lQmVnaW5UaW1lTXMpOworICAgIGFuaW1hdGVQ
YWdlU2NhbGUobW9ub3RvbmljVGltZSk7CisgICAgYW5pbWF0ZUxheWVycyhtb25vdG9uaWNUaW1l
LCB3YWxsQ2xvY2tUaW1lKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCBhbmNo
b3JQb2ludCwgZmxvYXQgcGFnZVNjYWxlLCBkb3VibGUgc3RhcnRUaW1lTXMsIGRvdWJsZSBkdXJh
dGlvbk1zKQordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCBhbmNob3JQb2ludCwgZmxvYXQg
cGFnZVNjYWxlLCBkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgaWYg
KCFtX3Njcm9sbExheWVySW1wbCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE0LDE1ICsxMTQsMTUg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25z
dCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKICAgICBJbnRTaXplIHNjYWxlZENvbnRlbnRTaXpl
ID0gY29udGVudFNpemUoKTsKICAgICBzY2FsZWRDb250ZW50U2l6ZS5zY2FsZShtX3BhZ2VTY2Fs
ZURlbHRhKTsKIAotICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uID0gQ0NQYWdlU2NhbGVBbmltYXRp
b246OmNyZWF0ZShzY3JvbGxUb3RhbCwgc2NhbGVUb3RhbCwgbV92aWV3cG9ydFNpemUsIHNjYWxl
ZENvbnRlbnRTaXplLCBzdGFydFRpbWVNcyk7CisgICAgbV9wYWdlU2NhbGVBbmltYXRpb24gPSBD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6Y3JlYXRlKHNjcm9sbFRvdGFsLCBzY2FsZVRvdGFsLCBtX3Zp
ZXdwb3J0U2l6ZSwgc2NhbGVkQ29udGVudFNpemUsIHN0YXJ0VGltZSk7CiAKICAgICBpZiAoYW5j
aG9yUG9pbnQpIHsKICAgICAgICAgSW50U2l6ZSB3aW5kb3dBbmNob3IodGFyZ2V0UG9zaXRpb24p
OwogICAgICAgICB3aW5kb3dBbmNob3Iuc2NhbGUoc2NhbGVUb3RhbCAvIHBhZ2VTY2FsZSk7CiAg
ICAgICAgIHdpbmRvd0FuY2hvciAtPSBzY3JvbGxUb3RhbDsKLSAgICAgICAgbV9wYWdlU2NhbGVB
bmltYXRpb24tPnpvb21XaXRoQW5jaG9yKHdpbmRvd0FuY2hvciwgcGFnZVNjYWxlLCBkdXJhdGlv
bk1zKTsKKyAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24tPnpvb21XaXRoQW5jaG9yKHdpbmRv
d0FuY2hvciwgcGFnZVNjYWxlLCBkdXJhdGlvbik7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcGFn
ZVNjYWxlQW5pbWF0aW9uLT56b29tVG8odGFyZ2V0UG9zaXRpb24sIHBhZ2VTY2FsZSwgZHVyYXRp
b25Ncyk7CisgICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLT56b29tVG8odGFyZ2V0UG9zaXRp
b24sIHBhZ2VTY2FsZSwgZHVyYXRpb24pOwogCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCk7CiAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFk
KCk7CkBAIC0yNDcsMTQgKzI0NywxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6Om9wdGlt
aXplUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcykKICAgICBQbGF0Zm9ybVN1
cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LnBpeGVsT3ZlcmRyYXdDdWxs
ZWQiLCBzdGF0aWNfY2FzdDxpbnQ+KG5vcm1hbGl6YXRpb24gKiBvdmVyZHJhd0NvdW50cy5tX3Bp
eGVsc0N1bGxlZCksIDEwMCwgMTAwMDAwMCwgNTApOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwqIGN1cnJlbnQsIGRvdWJs
ZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMsIGJv
b2wmIGRpZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5pbWF0ZUxheWVycykKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVudCwg
ZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3RvciYgZXZlbnRzLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVM
YXllcnMpCiB7CiAgICAgYm9vbCBzdWJ0cmVlTmVlZHNBbmltYXRlTGF5ZXJzID0gZmFsc2U7CiAK
ICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwqIGN1cnJlbnRDb250cm9sbGVyID0g
Y3VycmVudC0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCk7CiAKICAgICBib29sIGhhZEFjdGl2
ZUFuaW1hdGlvbiA9IGN1cnJlbnRDb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKTsKLSAg
ICBjdXJyZW50Q29udHJvbGxlci0+YW5pbWF0ZShmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7
CisgICAgY3VycmVudENvbnRyb2xsZXItPmFuaW1hdGUobW9ub3RvbmljVGltZSwgZXZlbnRzKTsK
ICAgICBib29sIHN0YXJ0ZWRBbmltYXRpb24gPSBldmVudHMuc2l6ZSgpID4gMDsKIAogICAgIC8v
IFdlIGFuaW1hdGVkIGlmIHdlIGVpdGhlciB0aWNrZWQgYSBydW5uaW5nIGFuaW1hdGlvbiwgb3Ig
c3RhcnRlZCBhIG5ldyBhbmltYXRpb24uCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50
LCBkb3VibGUgZnIKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3VycmVudC0+Y2hpbGRy
ZW4oKS5zaXplKCk7ICsraSkgewogICAgICAgICBib29sIGNoaWxkTmVlZHNBbmltYXRlTGF5ZXJz
ID0gZmFsc2U7Ci0gICAgICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoY3VycmVudC0+Y2hpbGRy
ZW4oKVtpXS5nZXQoKSwgZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMsIGRpZEFuaW1hdGUsIGNo
aWxkTmVlZHNBbmltYXRlTGF5ZXJzKTsKKyAgICAgICAgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShj
dXJyZW50LT5jaGlsZHJlbigpW2ldLmdldCgpLCBtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1l
LCBldmVudHMsIGRpZEFuaW1hdGUsIGNoaWxkTmVlZHNBbmltYXRlTGF5ZXJzKTsKICAgICAgICAg
aWYgKGNoaWxkTmVlZHNBbmltYXRlTGF5ZXJzKQogICAgICAgICAgICAgc3VidHJlZU5lZWRzQW5p
bWF0ZUxheWVycyA9IHRydWU7CiAgICAgfQpAQCAtNjc1LDI2ICs2NzUsMjYgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkKICAgICB9CiB9CiAKLXZv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZVBhZ2VTY2FsZShkb3VibGUgZnJhbWVCZWdp
blRpbWVNcykKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZVBhZ2VTY2FsZShkb3Vi
bGUgbW9ub3RvbmljVGltZSkKIHsKICAgICBpZiAoIW1fcGFnZVNjYWxlQW5pbWF0aW9uKQogICAg
ICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gdG9TaXplKG1fc2Nyb2xs
TGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERl
bHRhKCkpOwogCi0gICAgc2V0UGFnZVNjYWxlRGVsdGEobV9wYWdlU2NhbGVBbmltYXRpb24tPnBh
Z2VTY2FsZUF0VGltZShmcmFtZUJlZ2luVGltZU1zKSAvIG1fcGFnZVNjYWxlKTsKLSAgICBJbnRT
aXplIG5leHRTY3JvbGwgPSBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+c2Nyb2xsT2Zmc2V0QXRUaW1l
KGZyYW1lQmVnaW5UaW1lTXMpOworICAgIHNldFBhZ2VTY2FsZURlbHRhKG1fcGFnZVNjYWxlQW5p
bWF0aW9uLT5wYWdlU2NhbGVBdFRpbWUobW9ub3RvbmljVGltZSkgLyBtX3BhZ2VTY2FsZSk7Cisg
ICAgSW50U2l6ZSBuZXh0U2Nyb2xsID0gbV9wYWdlU2NhbGVBbmltYXRpb24tPnNjcm9sbE9mZnNl
dEF0VGltZShtb25vdG9uaWNUaW1lKTsKICAgICBuZXh0U2Nyb2xsLnNjYWxlKDEgLyBtX3BhZ2VT
Y2FsZURlbHRhKTsKICAgICBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsQnkobmV4dFNjcm9sbCAt
IHNjcm9sbFRvdGFsKTsKICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQo
KTsKIAotICAgIGlmIChtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+aXNBbmltYXRpb25Db21wbGV0ZUF0
VGltZShmcmFtZUJlZ2luVGltZU1zKSkgeworICAgIGlmIChtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+
aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZShtb25vdG9uaWNUaW1lKSkgewogICAgICAgICBtX3Bh
Z2VTY2FsZUFuaW1hdGlvbi5jbGVhcigpOwogICAgICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21t
aXRPbkltcGxUaHJlYWQoKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
YW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcykKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6YW5pbWF0ZUxheWVycyhkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxD
bG9ja1RpbWUpCiB7CiAgICAgaWYgKCFtX3NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxl
ZCB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMgfHwgIW1fcm9vdExheWVySW1wbCkKICAgICAgICAg
cmV0dXJuOwpAQCAtNzA0LDEwICs3MDQsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjph
bmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQogICAgIE93blB0cjxDQ0FuaW1h
dGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKGFkb3B0UHRyKG5ldyBDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3RvcikpOwogCiAgICAgYm9vbCBkaWRBbmltYXRlID0gZmFsc2U7Ci0gICAgYW5pbWF0ZUxheWVy
c1JlY3Vyc2l2ZShtX3Jvb3RMYXllckltcGwuZ2V0KCksIGZyYW1lQmVnaW5UaW1lTXMgLyAxMDAw
LCAqZXZlbnRzLCBkaWRBbmltYXRlLCBtX25lZWRzQW5pbWF0ZUxheWVycyk7CisgICAgYW5pbWF0
ZUxheWVyc1JlY3Vyc2l2ZShtX3Jvb3RMYXllckltcGwuZ2V0KCksIG1vbm90b25pY1RpbWUsIHdh
bGxDbG9ja1RpbWUsICpldmVudHMsIGRpZEFuaW1hdGUsIG1fbmVlZHNBbmltYXRlTGF5ZXJzKTsK
IAogICAgIGlmICghZXZlbnRzLT5pc0VtcHR5KCkpCi0gICAgICAgIG1fY2xpZW50LT5wb3N0QW5p
bWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKGV2ZW50cy5yZWxlYXNlKCkpOwor
ICAgICAgICBtX2NsaWVudC0+cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRo
cmVhZChldmVudHMucmVsZWFzZSgpLCB3YWxsQ2xvY2tUaW1lKTsKIAogICAgIGlmIChkaWRBbmlt
YXRlKQogICAgICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBhMGIzNWYyZGM5ODhlZDg5YmJh
NTljOGJhMjg0YjA0ZWRhNDAzZDAzLi45ZjRiMjQ2MjMzNDc2MWNmYjc5NTVhMjU2NzcwMzBjMWU3
MTliY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25J
bXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRo
cmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRP
bkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVh
ZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1Rp
bWUpID0gMDsKIH07CiAKIC8vIENDTGF5ZXJUcmVlSG9zdEltcGwgb3ducyB0aGUgQ0NMYXllcklt
cGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVuZGVyaW5nIHN0YXRlCkBAIC02OSwxMiAr
NjksMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpOwog
ICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0IEludFBvaW50
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwotICAgIHZpcnR1YWwgdm9p
ZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwg
Ym9vbCBhbmNob3JQb2ludCwgZmxvYXQgcGFnZVNjYWxlLCBkb3VibGUgc3RhcnRUaW1lTXMsIGRv
dWJsZSBkdXJhdGlvbk1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRp
b24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0
IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGR1cmF0aW9uKTsKIAogICAgIC8v
IFZpcnR1YWwgZm9yIHRlc3RpbmcuCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0KCk7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1h
dGUoZG91YmxlIGZyYW1lRGlzcGxheVRpbWVNcyk7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUo
ZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xheWVycygpOwogCiAgICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50
IGltcGxlbWVudGF0aW9uCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCopOwogCi0gICAgdm9pZCBhbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBmcmFt
ZUJlZ2luVGltZU1zKTsKKyAgICB2b2lkIGFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIG1vbm90b25p
Y1RpbWUpOwogCiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KLSAgICB2aXJ0dWFsIHZvaWQg
YW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcyk7CisgICAgdmlydHVhbCB2b2lk
IGFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1l
KTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBt
X3NvdXJjZUZyYW1lTnVtYmVyOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB0cmFja0RhbWFnZUZvckFsbFN1cmZhY2VzKENDTGF5ZXJJbXBsKiByb290RHJhd0xheWVyLCBj
b25zdCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgdm9pZCBjYWxj
dWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYsIENDTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKICAgICB2b2lkIG9wdGltaXplUmVuZGVyUGFzc2VzKENDUmVuZGVy
UGFzc0xpc3QmKTsKLSAgICB2b2lkIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwq
LCBkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYsIGJv
b2wmIGRpZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5pbWF0ZUxheWVycyk7CisgICAgdm9pZCBhbmlt
YXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiwgZG91YmxlIG1vbm90b25pY1RpbWUsIGRv
dWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYsIGJvb2wmIGRpZEFu
aW1hdGUsIGJvb2wmIG5lZWRzQW5pbWF0ZUxheWVycyk7CiAgICAgSW50U2l6ZSBjb250ZW50U2l6
ZSgpIGNvbnN0OwogICAgIHZvaWQgc2VuZERpZExvc2VDb250ZXh0UmVjdXJzaXZlKENDTGF5ZXJJ
bXBsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcAppbmRleCAz
M2I2ZjIyZmJlZGY1M2UxYmE0YjYyOTQ0OTE0ODdmNjA4YWQ1MDhiLi40OWExMjVkMjNjMzg3NzQ1
YmZjNTA5MTI4NzJjYWFmMmZmMzg4ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVB
bmltYXRpb24uY3BwCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKQEAgLTM2LDEzICszNiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IENDUGFnZVNjYWxlQW5pbWF0
aW9uOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0
YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6
ZSwgZG91YmxlIHN0YXJ0VGltZU1zKQorUGFzc093blB0cjxDQ1BhZ2VTY2FsZUFuaW1hdGlvbj4g
Q0NQYWdlU2NhbGVBbmltYXRpb246OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwg
ZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IElu
dFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lKQogewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ0NQYWdlU2NhbGVBbmltYXRpb24oc2Nyb2xsU3RhcnQsIHBhZ2VTY2FsZVN0YXJ0
LCB3aW5kb3dTaXplLCBjb250ZW50U2l6ZSwgc3RhcnRUaW1lTXMpKTsKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDUGFnZVNjYWxlQW5pbWF0aW9uKHNjcm9sbFN0YXJ0LCBwYWdlU2NhbGVTdGFy
dCwgd2luZG93U2l6ZSwgY29udGVudFNpemUsIHN0YXJ0VGltZSkpOwogfQogCiAKLUNDUGFnZVNj
YWxlQW5pbWF0aW9uOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxT
dGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNv
bnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lTXMpCitDQ1BhZ2VTY2Fs
ZUFuaW1hdGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3Rh
cnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25z
dCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZSkKICAgICA6IG1fc2Nyb2xs
U3RhcnQoc2Nyb2xsU3RhcnQpCiAgICAgLCBtX3BhZ2VTY2FsZVN0YXJ0KHBhZ2VTY2FsZVN0YXJ0
KQogICAgICwgbV93aW5kb3dTaXplKHdpbmRvd1NpemUpCkBAIC01MCwxMSArNTAsMTEgQEAgQ0NQ
YWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNj
cm9sbFN0YXJ0LCBmbG9hdCBwYWcKICAgICAsIG1fYW5jaG9yTW9kZShmYWxzZSkKICAgICAsIG1f
c2Nyb2xsRW5kKHNjcm9sbFN0YXJ0KQogICAgICwgbV9wYWdlU2NhbGVFbmQocGFnZVNjYWxlU3Rh
cnQpCi0gICAgLCBtX3N0YXJ0VGltZU1zKHN0YXJ0VGltZU1zKQorICAgICwgbV9zdGFydFRpbWUo
c3RhcnRUaW1lKQogewogfQogCi12b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8oY29u
c3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVy
YXRpb25NcykKK3ZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21Ubyhjb25zdCBJbnRTaXpl
JiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsK
ICAgICBpZiAobV9wYWdlU2NhbGVTdGFydCAhPSBmaW5hbFBhZ2VTY2FsZSkgewogICAgICAgICAv
LyBGb3IgdW5pZm9ybS1sb29raW5nIHpvb21pbmcsIGluZmVyIHRoZSBhbmNob3IgKHBvaW50IHRo
YXQgcmVtYWlucyBpbgpAQCAtNzgsMTggKzc4LDE4IEBAIHZvaWQgQ0NQYWdlU2NhbGVBbmltYXRp
b246Onpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2Nh
CiAgICAgICAgIGZsb2F0IHJhdGlvWSA9IChzdGFydFJlY3QueSgpIC0gZW5kUmVjdC55KCkpIC8g
KGVuZFJlY3QuaGVpZ2h0KCkgLSBzdGFydFJlY3QuaGVpZ2h0KCkpOwogCiAgICAgICAgIEludFNp
emUgYW5jaG9yKG1fd2luZG93U2l6ZS53aWR0aCgpICogcmF0aW9YLCBtX3dpbmRvd1NpemUuaGVp
Z2h0KCkgKiByYXRpb1kpOwotICAgICAgICB6b29tV2l0aEFuY2hvcihhbmNob3IsIGZpbmFsUGFn
ZVNjYWxlLCBkdXJhdGlvbk1zKTsKKyAgICAgICAgem9vbVdpdGhBbmNob3IoYW5jaG9yLCBmaW5h
bFBhZ2VTY2FsZSwgZHVyYXRpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIElmIHRoaXMg
aXMgYSBwdXJlIHRyYW5zbGF0aW9uLCB0aGVuIHRoZXJlIGV4aXN0cyBubyBhbmNob3IuIExpbmVh
cmx5CiAgICAgICAgIC8vIGludGVycG9sYXRlIHRoZSBzY3JvbGwgb2Zmc2V0IGluc3RlYWQuCiAg
ICAgICAgIG1fc2Nyb2xsRW5kID0gZmluYWxTY3JvbGw7CiAgICAgICAgIG1fcGFnZVNjYWxlRW5k
ID0gZmluYWxQYWdlU2NhbGU7Ci0gICAgICAgIG1fZHVyYXRpb25NcyA9IGR1cmF0aW9uTXM7Cisg
ICAgICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKICAgICAgICAgbV9hbmNob3JNb2RlID0gZmFs
c2U7CiAgICAgfQogfQogCi12b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hv
cihjb25zdCBJbnRTaXplJiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVy
YXRpb25NcykKK3ZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKGNvbnN0
IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbikK
IHsKICAgICBtX3Njcm9sbEVuZCA9IG1fc2Nyb2xsU3RhcnQgKyBhbmNob3I7CiAgICAgbV9zY3Jv
bGxFbmQuc2NhbGUoZmluYWxQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZVN0YXJ0KTsKQEAgLTEwMywz
MSArMTAzLDMxIEBAIHZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKGNv
bnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdlCiAKICAgICBtX2FuY2hvciA9IGFu
Y2hvcjsKICAgICBtX3BhZ2VTY2FsZUVuZCA9IGZpbmFsUGFnZVNjYWxlOwotICAgIG1fZHVyYXRp
b25NcyA9IGR1cmF0aW9uTXM7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOwogICAgIG1fYW5j
aG9yTW9kZSA9IHRydWU7CiB9CiAKLUludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9s
bE9mZnNldEF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdAorSW50U2l6ZSBDQ1BhZ2VTY2FsZUFu
aW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIHJl
dHVybiBzY3JvbGxPZmZzZXRBdFJhdGlvKHByb2dyZXNzUmF0aW9Gb3JUaW1lKHRpbWVNcykpOwor
ICAgIHJldHVybiBzY3JvbGxPZmZzZXRBdFJhdGlvKHByb2dyZXNzUmF0aW9Gb3JUaW1lKHRpbWUp
KTsKIH0KIAotZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZShkb3Vi
bGUgdGltZU1zKSBjb25zdAorZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0
VGltZShkb3VibGUgdGltZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFnZVNjYWxlQXRSYXRpbyhw
cm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lTXMpKTsKKyAgICByZXR1cm4gcGFnZVNjYWxlQXRSYXRp
byhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lKSk7CiB9CiAKLWJvb2wgQ0NQYWdlU2NhbGVBbmlt
YXRpb246OmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK2Jv
b2wgQ0NQYWdlU2NhbGVBbmltYXRpb246OmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUoZG91Ymxl
IHRpbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRpbWVNcyA+PSBlbmRUaW1lTXMoKTsKKyAgICBy
ZXR1cm4gdGltZSA+PSBlbmRUaW1lKCk7CiB9CiAKLWZsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9u
Ojpwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZU1zKSBjb25zdAorZmxvYXQgQ0NQYWdl
U2NhbGVBbmltYXRpb246OnByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAog
ewotICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKHRpbWVNcykpCisgICAgaWYgKGlz
QW5pbWF0aW9uQ29tcGxldGVBdFRpbWUodGltZSkpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAg
cmV0dXJuICh0aW1lTXMgLSBtX3N0YXJ0VGltZU1zKSAvIG1fZHVyYXRpb25NczsKKyAgICByZXR1
cm4gKHRpbWUgLSBtX3N0YXJ0VGltZSkgLyBtX2R1cmF0aW9uOwogfQogCiBJbnRTaXplIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQYWdlU2NhbGVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgKaW5kZXggZjRiMWJmNDdhOWE5NzY3
OGMzNmVmNjJhYmNiNGNkZTA1Yzg0ZGU4OS4uZDlhY2I0OTExZGJjMjU2ZmY5ZWJmOWVhN2UyZDNl
YzMzZTZmZjA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oCkBAIC0z
OSwzOSArMzksMzkgQEAgcHVibGljOgogICAgIC8vIENvbnN0cnVjdCB3aXRoIHRoZSBzdGFydGlu
ZyBwYWdlIHNjYWxlIGFuZCBzY3JvbGwgb2Zmc2V0ICh3aGljaCBpcyBpbgogICAgIC8vIHBhZ2VT
Y2FsZVN0YXJ0IHNwYWNlKS4gVGhlIHdpbmRvdyBzaXplIGlzIHRoZSB1c2VyLXZpZXdhYmxlIGFy
ZWEKICAgICAvLyBpbiBwaXhlbHMuCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQYWdlU2NhbGVB
bmltYXRpb24+IGNyZWF0ZShjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNj
YWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRl
bnRTaXplLCBkb3VibGUgc3RhcnRUaW1lTXMpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUGFn
ZVNjYWxlQW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0
IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXpl
JiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZSk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5n
IG1ldGhvZHMgaW5pdGlhbGl6ZSB0aGUgYW5pbWF0aW9uLiBDYWxsIG9uZSBvZiB0aGVtCiAgICAg
Ly8gaW1tZWRpYXRlbHkgYWZ0ZXIgY29uc3RydWN0aW9uIHRvIHNldCB0aGUgZmluYWwgc2Nyb2xs
IGFuZCBwYWdlIHNjYWxlLgogCiAgICAgLy8gWm9vbSB3aGlsZSBleHBsaWNpdGx5IHNwZWNpZnlp
bmcgdGhlIHRvcC1sZWZ0IHNjcm9sbCBwb3NpdGlvbi4gVGhlCiAgICAgLy8gc2Nyb2xsIG9mZnNl
dCBpcyBpbiBmaW5hbFBhZ2VTY2FsZSBjb29yZGluYXRlcy4KLSAgICB2b2lkIHpvb21Ubyhjb25z
dCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJh
dGlvbk1zKTsKKyAgICB2b2lkIHpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxv
YXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbik7CiAKICAgICAvLyBab29tIGJhc2Vk
IG9uIGEgc3BlY2lmaWVkIG9uc2NyZWVuIGFuY2hvciwgd2hpY2ggd2lsbCByZW1haW4gYXQgdGhl
IHNhbWUKICAgICAvLyBwb3NpdGlvbiBvbiB0aGUgc2NyZWVuIHRocm91Z2hvdXQgdGhlIGFuaW1h
dGlvbi4gVGhlIGFuY2hvciBpcyBpbiBsb2NhbAogICAgIC8vIHNwYWNlIHJlbGF0aXZlIHRvIHNj
cm9sbFN0YXJ0LgotICAgIHZvaWQgem9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9y
LCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpOworICAgIHZvaWQgem9v
bVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwg
ZG91YmxlIGR1cmF0aW9uKTsKIAogICAgIC8vIENhbGwgdGhlc2UgZnVuY3Rpb25zIHdoaWxlIHRo
ZSBhbmltYXRpb24gaXMgaW4gcHJvZ3Jlc3MgdG8gb3V0cHV0IHRoZQogICAgIC8vIGN1cnJlbnQg
c3RhdGUuCi0gICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRBdFRpbWUoZG91YmxlIHRpbWVNcykgY29u
c3Q7Ci0gICAgZmxvYXQgcGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OwotICAg
IGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZUF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdDsKKyAg
ICBJbnRTaXplIHNjcm9sbE9mZnNldEF0VGltZShkb3VibGUgdGltZSkgY29uc3Q7CisgICAgZmxv
YXQgcGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKKyAgICBib29sIGlzQW5pbWF0
aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0OwogCiAgICAgLy8gVGhlIGZvbGxv
d2luZyBtZXRob2RzIHJldHVybiBzdGF0ZSB3aGljaCBpcyBpbnZhcmlhbnQgdGhyb3VnaG91dCB0
aGUKICAgICAvLyBjb3Vyc2Ugb2YgdGhlIGFuaW1hdGlvbi4KLSAgICBkb3VibGUgc3RhcnRUaW1l
TXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGltZU1zOyB9Ci0gICAgZG91YmxlIGR1cmF0aW9u
TXMoKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uTXM7IH0KLSAgICBkb3VibGUgZW5kVGltZU1z
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWVNcyArIG1fZHVyYXRpb25NczsgfQorICAgIGRv
dWJsZSBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGltZTsgfQorICAgIGRvdWJs
ZSBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICBkb3VibGUgZW5k
VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lICsgbV9kdXJhdGlvbjsgfQogICAgIGNv
bnN0IEludFNpemUmIGZpbmFsU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxF
bmQ7IH0KICAgICBmbG9hdCBmaW5hbFBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNj
YWxlRW5kOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJ
bnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUm
IHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1l
TXMpOworICAgIENDUGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0
LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3Qg
SW50U2l6ZSYgY29udGVudFNpemUsIGRvdWJsZSBzdGFydFRpbWUpOwogCiBwcml2YXRlOgotICAg
IGZsb2F0IHByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OworICAgIGZs
b2F0IHByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKICAgICBJbnRTaXpl
IHNjcm9sbE9mZnNldEF0UmF0aW8oZmxvYXQgcmF0aW8pIGNvbnN0OwogICAgIGZsb2F0IHBhZ2VT
Y2FsZUF0UmF0aW8oZmxvYXQgcmF0aW8pIGNvbnN0OwogCkBAIC04NSw4ICs4NSw4IEBAIHByaXZh
dGU6CiAgICAgSW50U2l6ZSBtX3Njcm9sbEVuZDsKICAgICBmbG9hdCBtX3BhZ2VTY2FsZUVuZDsK
IAotICAgIGRvdWJsZSBtX3N0YXJ0VGltZU1zOwotICAgIGRvdWJsZSBtX2R1cmF0aW9uTXM7Cisg
ICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRvdWJsZSBtX2R1cmF0aW9uOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cAppbmRleCA0MGYwM2IyZDZkYjFhYmI5YzlkNTg2NzExOWFiNTEwNWQ1NTZjNjZlLi43NWVmZTYz
MzgyZjY1MGUzNzFhM2M0MDc1YWMwZTgwZWIzZWI0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcApAQCAtODksOSArODksOSBAQCBib29sIENDU2luZ2xlVGhyZWFk
UHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYg
cmVjdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29s
IHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3ZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFy
Z2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9u
KQogewotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRh
cmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSAqIDEwMDAuMCwgZHVyYXRpb25TZWMgKiAxMDAwLjApOworICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3Is
IHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgZHVyYXRpb24pOwogfQogCiBH
cmFwaGljc0NvbnRleHQzRCogQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29udGV4dCgpCkBAIC0yNTcs
MTEgKzI1NywxMSBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogICAgIG1fbGF5
ZXJUcmVlSG9zdCA9IDA7CiB9CiAKLXZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cG9zdEFuaW1h
dGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9u
RXZlbnRzVmVjdG9yPiBldmVudHMpCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnBvc3RBbmlt
YXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4gZXZlbnRzLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVh
ZCBtYWluOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cyk7
CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRBbmltYXRpb25FdmVudHMoZXZlbnRzLCB3YWxsQ2xv
Y2tUaW1lKTsKIH0KIAogLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChl
LmcuIHdoZXJlIHJlbmRlcl93aWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZykKQEAgLTI5Miw4ICsy
OTIsMTAgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSgpCiAgICAgQVNT
RVJUKCFtX2NvbnRleHRMb3N0KTsKICAgICB7CiAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbDsKLSAgICAgIGRvdWJsZSBmcmFtZURpc3BsYXlUaW1lTXMgPSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMDsKLSAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFu
aW1hdGUoZnJhbWVEaXNwbGF5VGltZU1zKTsKKyAgICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgICBkb3VibGUgd2FsbENsb2NrVGlt
ZSA9IGN1cnJlbnRUaW1lKCk7CisKKyAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUo
bW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBs
LT5kcmF3TGF5ZXJzKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgKaW5kZXggMmQyOGQwMTY5ZDMwODhiOGMzMmFiZGNlNzNiM2Q3NDFjNWY0MmExZS4uZWJiZDk2
ZTJjMzg4MjIxODlkMmI5MGIyMWU2ZDk3NmEzNjdjMGU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ1By
b3h5IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNr
KHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VB
bmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOworICAgIHZpcnR1YWwgdm9p
ZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwg
Ym9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pOwogICAgIHZpcnR1
YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
QWxsUmVuZGVyaW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0OwpAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21w
bGV0ZU9uSW1wbFRocmVhZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0
TmVlZHNDb21taXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRo
cmVhZCgpIHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093
blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4pOworICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5p
bWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRp
b25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAKICAgICAvLyBDYWxsZWQg
YnkgdGhlIGxlZ2FjeSBwYXRoIHdoZXJlIFJlbmRlcldpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5n
LgogICAgIHZvaWQgY29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKaW5kZXggM2Q2NTk2ZDA0ZTE2NDc0NjlkYjFhOGQxZDcwYTI5NjI3YTliNzJkMS4uOGMw
ODk4ZGJmNjRmNDNlNzNmMDc4NWM0ODgxZDgwNTE4MzI5MTVlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKQEAgLTEzNCwxNyArMTM0LDE3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVx
dWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCogcmVxdWVzdCkKICAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIH0KIAotdm9p
ZCBDQ1RocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0
YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRp
b25TZWMpCit2b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRv
dWJsZSBkdXJhdGlvbikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwot
ICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxU
aHJlYWQsIHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvblNlYykpOwor
ICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxU
aHJlYWQsIHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvbikpOwogfQog
Ci12b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1w
bFRocmVhZChJbnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2Nh
bGUsIGRvdWJsZSBkdXJhdGlvblNlYykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0
UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zaXRpb24sIGJv
b2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwp
Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRh
cmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSAqIDEwMDAuMCwgZHVyYXRpb25TZWMgKiAxMDAwLjApOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5j
aG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0K
IAogR3JhcGhpY3NDb250ZXh0M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQpAQCAtMzAwLDEx
ICszMDAsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVh
ZCgpCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzQ29tbWl0KCk7CiB9CiAK
LXZvaWQgQ0NUaHJlYWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1w
bFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiBldmVudHMpCit2b2lk
IENDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJl
YWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzLCBkb3VibGUgd2Fs
bENsb2NrVGltZSkKIHsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBs
VGhyZWFkIiwgdGhpcywgMCk7Ci0gICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0
ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzLCBl
dmVudHMpKTsKKyAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMsIGV2ZW50cywgd2Fs
bENsb2NrVGltZSkpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkK
QEAgLTU2NiwxMCArNTY2LDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXAoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogY29tcHV0ZSB0
aGUgZnJhbWUgZGlzcGxheSB0aW1lIG1vcmUgaW50ZWxsaWdlbnRseQotICAgIGRvdWJsZSBmcmFt
ZURpc3BsYXlUaW1lTXMgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAuMDsK
KyAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OworICAgIGRvdWJsZSB3YWxsQ2xvY2tUaW1lID0gY3VycmVudFRpbWUoKTsKIAotICAgIG1faW5w
dXRIYW5kbGVyT25JbXBsVGhyZWFkLT53aWxsRHJhdyhmcmFtZURpc3BsYXlUaW1lTXMpOwotICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUoZnJhbWVEaXNwbGF5VGltZU1zKTsKKyAgICBt
X2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+d2lsbERyYXcobW9ub3RvbmljVGltZSk7CisgICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1l
KTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAKICAgICAvLyBDaGVj
ayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNrLgpAQCAtNjEyLDEzICs2MTMsMTMg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkKICAgICBtX2xh
eWVyVHJlZUhvc3QtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsKIH0KIAotdm9pZCBDQ1RocmVh
ZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3Rvcj4gZXZlbnRzKQordm9pZCBDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMoUGFz
c093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzLCBkb3VibGUgd2FsbENsb2Nr
VGltZSkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNldEFuaW1h
dGlvbkV2ZW50cyIpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2xh
eWVyVHJlZUhvc3QpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFu
aW1hdGlvbkV2ZW50cyhldmVudHMpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9u
RXZlbnRzKGV2ZW50cywgd2FsbENsb2NrVGltZSk7CiB9CiAKIGNsYXNzIENDVGhyZWFkUHJveHlD
b250ZXh0UmVjcmVhdGlvblRpbWVyIDogcHVibGljIENDVGltZXIsIENDVGltZXJDbGllbnQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDRlYWY4NDBmNmI1N2Q1NWMwNzNiZmE1NjhmNDBh
ZjA2YjhiMDg2MmUuLjA1NzY5MTIxM2VlNGY3YjMwMjRhY2VmZDJkMmU4M2M0ZDI1OTE3NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRS
ZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJv
b2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9z
aXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKTsKICAg
ICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25z
dDsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZm
ZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRy
YXdPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVh
ZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPik7CisgICAg
dmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQo
UGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1l
KTsKIAogICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVh
bCBib29sIGNhbkRyYXcoKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJl
Z2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRp
bWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7Ci0gICAg
dm9pZCBzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rv
cj4pOworICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25F
dmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAgICAgdm9pZCBiZWdpbkNvbnRl
eHRSZWNyZWF0aW9uKCk7CiAgICAgdm9pZCB0cnlUb1JlY3JlYXRlQ29udGV4dCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5jcHAKaW5kZXggMzk3MzA4YjUyOWNjNDE3NDcxODdjN2Y4NjdkMTIxYjli
MjNmY2FlZS4uYzJkYmVlM2I0NzJkZjY2NjE2ZjQyMTU4NmNiNWZiNzA3NzdkNjJlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIGludCBXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbDo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1faWRlbnRp
ZmllcjsKIH0KIAotdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6d2lsbERyYXco
ZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOjp3aWxsRHJhdyhkb3VibGUgbW9ub3RvbmljVGltZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmgKaW5kZXggYTJmMTMwMjVkOWYxN2JmZDE4YzE0NGY5MzE3ZDgyYTZlYTEwOWVjNS4uODNi
NGJkNTQ2MWFjMzRhNTE2YmNlZGZlYzQyNGVhMWY0Y2MzMDZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OkNDSW5wdXRI
YW5kbGVyIGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcyk7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbChXZWJDb3JlOjpD
Q0lucHV0SGFuZGxlckNsaWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBjM2I0ZWFiMDgwZjQ5
OWU1MTA2YjU4NzZlNDFiM2FkZmVmMTA3MzNlLi5kNzVjMTI4OTA3NjU4OWViNjEzNDM2ZWE3NjNi
NjdiODBjMGIwOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9kaWRS
ZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9u
SW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0Q29tbWl0ID0gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25Q
dHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdEFu
aW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0
aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpIHsgfQogCiAgICAgc3RhdGlj
IHZvaWQgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogbGF5
ZXIpCiAgICAgewpAQCAtMzUwLDggKzM1MCwxMCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwogCiAg
ICAgY29uc3QgZmxvYXQgbWluUGFnZVNjYWxlID0gMC41LCBtYXhQYWdlU2NhbGUgPSA0OwotICAg
IGNvbnN0IGRvdWJsZSBzdGFydFRpbWVNcyA9IDEwMDA7Ci0gICAgY29uc3QgZG91YmxlIGR1cmF0
aW9uTXMgPSAxMDA7CisgICAgY29uc3QgZG91YmxlIHN0YXJ0VGltZSA9IDE7CisgICAgY29uc3Qg
ZG91YmxlIGR1cmF0aW9uID0gMC4xOworICAgIGNvbnN0IGRvdWJsZSBoYWxmd2F5VGhyb3VnaEFu
aW1hdGlvbiA9IHN0YXJ0VGltZSArIGR1cmF0aW9uIC8gMjsKKyAgICBjb25zdCBkb3VibGUgZW5k
VGltZSA9IHN0YXJ0VGltZSArIGR1cmF0aW9uOwogCiAgICAgLy8gTm9uLWFuY2hvciB6b29tLWlu
CiAgICAgewpAQCAtMzU5LDEwICszNjEsMTAgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQYWdlU2Nh
bGVEZWx0YSgxKTsKICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKEludFBv
aW50KDUwLCA1MCkpOwogCi0gICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKEludFNpemUoMCwgMCksIGZhbHNlLCAyLCBzdGFydFRpbWVNcywgZHVyYXRpb25Ncyk7Ci0g
ICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoc3RhcnRUaW1lTXMgKyBkdXJhdGlvbk1zIC8gMik7
CisgICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKEludFNpemUoMCwg
MCksIGZhbHNlLCAyLCBzdGFydFRpbWUsIGR1cmF0aW9uKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+
YW5pbWF0ZShoYWxmd2F5VGhyb3VnaEFuaW1hdGlvbiwgaGFsZndheVRocm91Z2hBbmltYXRpb24p
OwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgICAgICBtX2hv
c3RJbXBsLT5hbmltYXRlKHN0YXJ0VGltZU1zICsgZHVyYXRpb25Ncyk7CisgICAgICAgIG1faG9z
dEltcGwtPmFuaW1hdGUoZW5kVGltZSwgZW5kVGltZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1f
ZGlkUmVxdWVzdENvbW1pdCk7CiAKICAgICAgICAgT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+
IHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CkBAIC0zNzYs
OCArMzc4LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmlt
YXRpb24pCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQYWdlU2NhbGVEZWx0YSgxKTsKICAgICAg
ICAgc2Nyb2xsTGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDUwLCA1MCkpOwogCi0g
ICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKEludFNpemUoMjUsIDI1
KSwgdHJ1ZSwgbWluUGFnZVNjYWxlLCBzdGFydFRpbWVNcywgZHVyYXRpb25Ncyk7Ci0gICAgICAg
IG1faG9zdEltcGwtPmFuaW1hdGUoc3RhcnRUaW1lTXMgKyBkdXJhdGlvbk1zKTsKKyAgICAgICAg
bV9ob3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZSgyNSwgMjUpLCB0cnVl
LCBtaW5QYWdlU2NhbGUsIHN0YXJ0VGltZSwgZHVyYXRpb24pOworICAgICAgICBtX2hvc3RJbXBs
LT5hbmltYXRlKGVuZFRpbWUsIGVuZFRpbWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJl
cXVlc3RSZWRyYXcpOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RDb21taXQpOwog
CkBAIC04NDcsNyArODQ5LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aXNp
YmlsaXR5Q2hhbmdlUmVzZXRzRGFtYWdlKQogICAgIC8vIEZpcnN0IGZyYW1lOiBpZ25vcmUuCiAg
ICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBsYXllclRyZWVIb3N0SW1w
bC0+c3dhcEJ1ZmZlcnMoKTsKLSAKKwogICAgIC8vIFNlY29uZCBmcmFtZTogbm90aGluZyBoYXMg
Y2hhbmdlZCAtLS0gc28gd2Ugc291bGRuJ3QgcHVzaCBhbnl0aGluZyB3aXRoIHBhcnRpYWwgc3dh
cC4KICAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIGxheWVyVHJlZUhv
c3RJbXBsLT5zd2FwQnVmZmVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMTI4YmQwYjBjMjM4Mzk1Y2QwYzY2
M2MxMDVmMDFmZjg3NjQwYTc4Yy4uYjA2MmY2ODRkZDE1MDk2YWUzMDgzNGNmOTk4MDZiYmYwY2Jk
OTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCkBAIC02NSw5ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVl
SG9zdEltcGwqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJl
ZUhvc3RJbXBsKiwgZG91YmxlIG1vbm90b25pY1RpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBh
cHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmLCBmbG9hdCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0
ZUNvbnRleHQoYm9vbCBzdWNjZWRlZCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFu
ZERyYXdGcmFtZSgpIHsgfQpAQCAtMTA0LDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJl
Z2luVGltZU1zKQorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9u
aWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKICAgICB7Ci0gICAgICAgIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZnJhbWVCZWdpblRpbWVNcyk7Ci0gICAgICAgIG1fdGVz
dEhvb2tzLT5hbmltYXRlTGF5ZXJzKHRoaXMpOworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBs
OjphbmltYXRlTGF5ZXJzKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOworICAgICAgICBt
X3Rlc3RIb29rcy0+YW5pbWF0ZUxheWVycyh0aGlzLCBtb25vdG9uaWNUaW1lKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50KHRlc3RIb29rcykpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkK
ICAgICB7Ci0gICAgICAgIG1fdGVzdEhvb2tzLT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5U
aW1lKTsKKyAgICAgICAgbV90ZXN0SG9va3MtPnVwZGF0ZUFuaW1hdGlvbnMobW9ub3RvbmljVGlt
ZSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpCkBAIC04NDAsNiArODQwLDgg
QEAgcHVibGljOgogICAgICAgICA6IG1fbnVtQW5pbWF0ZXMoMCkKICAgICAgICAgLCBtX3JlY2Vp
dmVkQW5pbWF0aW9uU3RhcnRlZE5vdGlmaWNhdGlvbihmYWxzZSkKICAgICAgICAgLCBtX3JlY2Vp
dmVkQW5pbWF0aW9uRmluaXNoZWROb3RpZmljYXRpb24oZmFsc2UpCisgICAgICAgICwgbV9zdGFy
dFRpbWUoMCkKKyAgICAgICAgLCBtX2ZpcnN0TW9ub3RvbmljVGltZSgwKQogICAgIHsKICAgICB9
CiAKQEAgLTg0OCwyMyArODUwLDI4IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdEFkZEFuaW1hdGlv
blRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJz
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQorICAgIHZpcnR1YWwgdm9p
ZCBhbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBk
b3VibGUgbW9ub3RvbmljVGltZSkKICAgICB7CiAgICAgICAgIGlmICghbV9udW1BbmltYXRlcykg
ewogICAgICAgICAgICAgLy8gVGhlIGFuaW1hdGlvbiBoYWQgemVybyBkdXJhdGlvbiBzbyBsYXll
clRyZWVIb3N0SW1wbCBzaG91bGQgbm8KICAgICAgICAgICAgIC8vIGxvbmdlciBuZWVkIHRvIGFu
aW1hdGUgaXRzIGxheWVycy4KICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShsYXllclRyZWVIb3N0
SW1wbC0+bmVlZHNBbmltYXRlTGF5ZXJzKCkpOwogICAgICAgICAgICAgbV9udW1BbmltYXRlcysr
OworICAgICAgICAgICAgbV9maXJzdE1vbm90b25pY1RpbWUgPSBtb25vdG9uaWNUaW1lOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIEVYUEVDVF9MVCgwLCBtX3N0YXJ0
VGltZSk7CisgICAgICAgIEVYUEVDVF9MVCgwLCBtX2ZpcnN0TW9ub3RvbmljVGltZSk7CisgICAg
ICAgIEVYUEVDVF9ORShtX3N0YXJ0VGltZSwgbV9maXJzdE1vbm90b25pY1RpbWUpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShtX3JlY2VpdmVkQW5pbWF0aW9uU3RhcnRlZE5vdGlmaWNhdGlvbik7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKG1fcmVjZWl2ZWRBbmltYXRpb25GaW5pc2hlZE5vdGlmaWNhdGlv
bik7CiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
QW5pbWF0aW9uU3RhcnRlZChkb3VibGUpCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlv
blN0YXJ0ZWQoZG91YmxlIHdhbGxDbG9ja1RpbWUpCiAgICAgewogICAgICAgICBtX3JlY2VpdmVk
QW5pbWF0aW9uU3RhcnRlZE5vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgICAgIG1fc3RhcnRUaW1l
ID0gd2FsbENsb2NrVGltZTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0
aW9uRmluaXNoZWQoaW50KQpAQCAtODgwLDYgKzg4Nyw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
bnVtQW5pbWF0ZXM7CiAgICAgYm9vbCBtX3JlY2VpdmVkQW5pbWF0aW9uU3RhcnRlZE5vdGlmaWNh
dGlvbjsKICAgICBib29sIG1fcmVjZWl2ZWRBbmltYXRpb25GaW5pc2hlZE5vdGlmaWNhdGlvbjsK
KyAgICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAgZG91YmxlIG1fZmlyc3RNb25vdG9uaWNUaW1l
OwogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb24sIHJ1bk11bHRp
VGhyZWFkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130915</attachid>
            <date>2012-03-08 15:13:44 -0800</date>
            <delta_ts>2012-03-09 07:59:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120308181343.patch</filename>
            <type>text/plain</type>
            <size>58788</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5OTUyM2Y1OTQwMzY3
ODcxNTEwMTBkYzU5OGI2OGFlZWM5OTBkMi4uMThhNDdiNDk1NTBhNjc2YjZhYzY0NjI1YjFlMjM4
YjY4MzhmZTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rl
ZCBpbiBDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnNldEFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpDQ0FuaW1h
dGlvblN0YXJ0ZWRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBbmltYXRpb25FdmVudHMuaDoKKyAgICAgICAgKENDQW5pbWF0aW9uRXZlbnQpOgorICAg
ICAgICAoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmg6CisgICAgICAgIChDQ0lucHV0SGFuZGxl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0
QXZhaWxhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaDoK
KyAgICAgICAgKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZVBhZ2VTY2FsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6
CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KToKKyAgICAgICAgKENDTGF5ZXJU
cmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGFnZVNjYWxlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5p
bWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
OkNDUGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5p
bWF0aW9uOjp6b29tVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
Onpvb21XaXRoQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9u
OjpzY3JvbGxPZmZzZXRBdFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmlt
YXRpb246OnBhZ2VTY2FsZUF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFu
aW1hdGlvbjo6aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0ZvclRpbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmg6CisgICAg
ICAgIChDQ1BhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2Fs
ZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5p
bWF0aW9uOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlv
bjo6ZW5kVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFBy
b3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5Lmg6CisgICAgICAgIChDQ1NpbmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1w
bFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9u
RXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQ
cm94eSk6CisKIDIwMTItMDMtMDggIFNjb3R0IEJ5ZXIgIDxzY290dGJ5ZXJAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0b3JOb25lIHVzZSByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTgwZDAxYzM3NDBkZTdjNGY1Mzcz
NDAzMDY5ZjY5YzhiNDdmOWIwMC4uNWI1MjE3M2U2MWJjN2NhMWU0OTY3MGY1NjFhOTQ2MWNlMTY2
NGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0w
My0wOCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEVuc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3QgdGltZSB3aGVuIG5vdGlmeWluZyBhbmlt
YXRpb24gc3RhcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzk1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp3aWxsRHJhdyk6CisgICAgICAg
ICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgIChXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdDo6
cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6
CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6YW5pbWF0ZUxheWVycyk6CisgICAgICAgIChXVEY6
OlRlc3RIb29rczo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRy
ZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVI
b3N0Q2xpZW50Ojp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdEFkZEFuaW1hdGlvbjo6Q0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbik6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb246OmFuaW1hdGVMYXll
cnMpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpub3Rp
ZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmlt
YXRpb24pOgorCiAyMDEyLTAzLTA4ICBTY290dCBCeWVyICA8c2NvdHRieWVyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBIYXZlIFNjcm9sbEFuaW1hdG9yTm9uZSB1c2UgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDIzOTg4OTBjNWFhNGY1NGVhZGY2NDI5
OGVhMTNmYTVlMTk5MWNhY2IuLjJkZWVjOWFkNDBiNWNhZWJiOTAxMTExMGZkZjM3YmQ3ZGU3ODA3
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0xNDQsMTMgKzE0NCwxMiBAQCBib29sIExh
eWVyQ2hyb21pdW06Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKTsKIH0KIAotdm9pZCBM
YXllckNocm9taXVtOjpzZXRBbmltYXRpb25FdmVudChjb25zdCBDQ0FuaW1hdGlvbkV2ZW50JiBl
dmVudCkKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmlt
YXRpb25FdmVudCYgZXZlbnQsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIHN3aXRjaCAo
ZXZlbnQudHlwZSgpKSB7CiAKICAgICBjYXNlIENDQW5pbWF0aW9uRXZlbnQ6OlN0YXJ0ZWQ6IHsK
LSAgICAgICAgY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQqIHN0YXJ0ZWRFdmVudCA9IGV2
ZW50LnRvQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCk7Ci0gICAgICAgIG1fbGF5ZXJBbmltYXRpb25E
ZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChzdGFydGVkRXZlbnQtPnN0YXJ0VGltZSgp
KTsKKyAgICAgICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHdhbGxDbG9ja1RpbWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uaAppbmRleCAwY2UzYmEwZmExOTY0MTU2NDEzNmMxY2FiODg0MjdiYWIxODhkMzc3Li5kZDU1
Y2RjZDkxNmFmNmJmYTJjODY0OTBmY2E3YjZjYmY1YjFmYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5o
CkBAIC0yMjUsNyArMjI1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNBY3RpdmVBbmltYXRp
b24oKSBjb25zdDsKIAotICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRp
b25FdmVudCYpOworICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRpb25F
dmVudCYsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBj
bGFzcyBDQ0xheWVySW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcAppbmRl
eCBkMGQ3MDVkZTA1MjAwMjc0NjdkNWZlYjRkZDUwMzg5NjE0NmRmMjQ0Li45ZjQxODQ0Y2EwNWQx
MzdhYzFlZDdkOGYyYTcxMThmNDQ0MDY2ODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25F
dmVudHMuY3BwCkBAIC01MSwxNCArNTEsMTMgQEAgY29uc3QgQ0NBbmltYXRpb25GaW5pc2hlZEV2
ZW50KiBDQ0FuaW1hdGlvbkV2ZW50Ojp0b0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQoKSBjb24KICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50Kj4odGhp
cyk7CiB9CiAKLVBhc3NPd25QdHI8Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ+IENDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50OjpjcmVhdGUoaW50IGxheWVySWQsIGRvdWJsZSBzdGFydFRpbWUpCitQYXNz
T3duUHRyPENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6
Y3JlYXRlKGludCBsYXllcklkKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQobGF5ZXJJZCwgc3RhcnRUaW1lKSk7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChsYXllcklkKSk7CiB9CiAKLUNDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50OjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChpbnQgbGF5ZXJJZCwgZG91Ymxl
IHN0YXJ0VGltZSkKK0NDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudChpbnQgbGF5ZXJJZCkKICAgICA6IENDQW5pbWF0aW9uRXZlbnQobGF5ZXJJZCkKLSAgICAs
IG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZl
bnRzLmgKaW5kZXggZmRhYTVkMjM5Y2Q5YjViMThiM2JkODA1MjQ0ZmFkNDAyOTU5OTM4Zi4uZGE5
NGUxZTI3ZDEzODg0NWI4OTNkNTYwOGZiODZjNjRhYmY5YTI3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fu
aW1hdGlvbkV2ZW50cy5oCkBAIC01NiwxOCArNTYsMTQgQEAgcHJpdmF0ZToKIC8vIEluZGljYXRl
cyB0aGF0IGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZCBvbiBhIHBhcnRpY3VsYXIgbGF5ZXIuCiBj
bGFzcyBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCA6IHB1YmxpYyBDQ0FuaW1hdGlvbkV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudD4g
Y3JlYXRlKGludCBsYXllcklkLCBkb3VibGUgc3RhcnRUaW1lKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudD4gY3JlYXRlKGludCBsYXllcklkKTsKIAogICAg
IHZpcnR1YWwgfkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCk7CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0OwogCi0gICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRUaW1lOyB9Ci0KIHByaXZhdGU6Ci0gICAgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50
IGxheWVySWQsIGRvdWJsZSBzdGFydFRpbWUpOwotCi0gICAgZG91YmxlIG1fc3RhcnRUaW1lOwor
ICAgIGV4cGxpY2l0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KGludCBsYXllcklkKTsKIH07CiAK
IC8vIEluZGljYXRlcyB0aGF0IGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZCBvbiBhIHBhcnRpY3Vs
YXIgbGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCA2YzA1NTk5NGM1OGVjYTQx
MTMxOWE5Yzk5ZDE0M2Y5YzE3ZjNlMmMyLi4zMzcyMWYxZGZjNzBjNDY1NzI0N2Q2NzgxZmU5Njlm
MWEyMGI4OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAgLTcyLDggKzcyLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJ
bnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcGFnZVNjYWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgc3RhcnRUaW1lTXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkdXJhdGlvbk1zKSA9IDA7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBzdGFydFRpbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkdXJhdGlvbikgPSAwOwogCiBw
cm90ZWN0ZWQ6CiAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KQEAgLTg3LDcgKzg3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDSW5wdXRIYW5kbGVyKCkgeyB9CiAKICAgICB2aXJ0
dWFsIGludCBpZGVudGlmaWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJh
dyhkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxE
cmF3KGRvdWJsZSBtb25vdG9uaWNUaW1lKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBDQ0lucHV0
SGFuZGxlcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbC5jcHAKaW5kZXggZThkNmJjN2VmNzVhYzQwM2QxMWNhNjExNTQ4OGVjYzcx
ZDU2MzVkNS4uZjA5ZGNmYWUwNjQyNWRhODNkZWU2ZmEwZjk2NjNmNzAyMzBjMGFlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3Bw
CkBAIC00OSwxNSArNDksMTUgQEAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp+Q0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKCkKIHsKIH0KIAotdm9pZCBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckltcGw6OmFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NB
bmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3RvciYgZXZlbnRzKQogewotICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGlj
ayhmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGlu
Z0ZvclN0YXJ0VGltZShmcmFtZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7Ci0gICAgc3RhcnRBbmlt
YXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShmcmFtZUJlZ2luVGltZVNlY3MsIGV2
ZW50cyk7Ci0gICAgcmVzb2x2ZUNvbmZsaWN0cyhmcmFtZUJlZ2luVGltZVNlY3MpOwotICAgIHRp
Y2tBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lU2Vjcyk7CisgICAgc3RhcnRBbmltYXRpb25zV2Fp
dGluZ0Zvck5leHRUaWNrKG1vbm90b25pY1RpbWUsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclN0YXJ0VGltZShtb25vdG9uaWNUaW1lLCBldmVudHMpOworICAgIHN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkobW9ub3RvbmljVGltZSwgZXZl
bnRzKTsKKyAgICByZXNvbHZlQ29uZmxpY3RzKG1vbm90b25pY1RpbWUpOworICAgIHRpY2tBbmlt
YXRpb25zKG1vbm90b25pY1RpbWUpOwogICAgIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKGV2ZW50
cyk7Ci0gICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShmcmFt
ZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7CisgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRh
cmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNUaW1lLCBldmVudHMpOwogfQogCiB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YWRkKFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRp
b24+IGFuaW0pCkBAIC04MywyOCArODMsMjggQEAgYm9vbCBDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlckltcGw6Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25z
V2FpdGluZ0Zvck5leHRUaWNrKGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBl
dmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRp
b25zV2FpdGluZ0Zvck5leHRUaWNrKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3Rp
dmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JOZXh0VGlj
aykgewotICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0Fj
dGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG5vdyk7Ci0gICAgICAgICAgICBldmVudHMuYXBwZW5kKEND
QW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG5vdykpOworICAg
ICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1h
dGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsKKyAgICAgICAgICAgIGV2ZW50
cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSkp
OwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbm93LCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90
b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1h
dGlvbjo6V2FpdGluZ0ZvclN0YXJ0VGltZSAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0
VGltZSgpIDw9IG5vdykgewotICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRS
dW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAgIGV2
ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQo
KSwgbm93KSk7CisgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkg
PT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JTdGFydFRpbWUgJiYgbV9hY3RpdmVBbmlt
YXRpb25zW2ldLT5zdGFydFRpbWUoKSA8PSBtb25vdG9uaWNUaW1lKSB7CisgICAgICAgICAgICBt
X2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5u
aW5nLCBtb25vdG9uaWNUaW1lKTsKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSkpOwogICAgICAgICB9CiAgICAg
fQogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3RvciYgZXZlbnRzKQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6
OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG1vbm90
b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMpCiB7CiAgICAgLy8gRmly
c3QgY29sbGVjdCBydW5uaW5nIHByb3BlcnRpZXMuCiAgICAgVGFyZ2V0UHJvcGVydGllcyBibG9j
a2VkUHJvcGVydGllczsKQEAgLTEzNCwxMyArMTM0LDEzIEBAIHZvaWQgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmls
aXR5CiAKICAgICAgICAgICAgIC8vIElmIHRoZSBpbnRlcnNlY3Rpb24gaXMgbnVsbCwgdGhlbiB3
ZSBhcmUgZnJlZSB0byBzdGFydCB0aGUgYW5pbWF0aW9ucyBpbiB0aGUgZ3JvdXAuCiAgICAgICAg
ICAgICBpZiAobnVsbEludGVyc2VjdGlvbikgewotICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7
Ci0gICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobm93
KTsKLSAgICAgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50
OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG5vdykpOworICAgICAgICAgICAgICAgIG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1v
bm90b25pY1RpbWUpOworICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0
U3RhcnRUaW1lKG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQo
Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSkpOwogICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IG1fYWN0aXZlQW5pbWF0aW9ucy5z
aXplKCk7ICsraikgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25z
W2ldLT5ncm91cCgpID09IG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+Z3JvdXAoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0Fj
dGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
YWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0U3RhcnRUaW1lKG5vdyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0
aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
YWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0U3RhcnRUaW1lKG1vbm90b25pY1RpbWUpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTQ4
LDcgKzE0OCw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFu
aW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5CiAgICAgfQogfQogCi12b2lkIEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbm93
KQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnJlc29sdmVDb25mbGljdHMo
ZG91YmxlIG1vbm90b25pY1RpbWUpCiB7CiAgICAgLy8gRmluZCBhbnkgYW5pbWF0aW9ucyB0aGF0
IGFyZSBhbmltYXRpbmcgdGhlIHNhbWUgcHJvcGVydHkgYW5kIHJlc29sdmUgdGhlCiAgICAgLy8g
Y29uZmljdC4gV2UgY291bGQgZXZlbnR1YWxseSBibGVuZCwgYnV0IGZvciBub3cgd2UnbGwganVz
dCBhYm9ydCB0aGUKQEAgLTE2MCw5ICsxNjAsOSBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVySW1wbDo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbm93KQogICAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IGkgKyAxOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytqKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+cnVuU3RhdGUoKSA9
PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZyAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRh
cmdldFByb3BlcnR5KCkgPT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT50YXJnZXRQcm9wZXJ0eSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0
VGltZSgpID4gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5zdGFydFRpbWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVB
bmltYXRpb246OkFib3J0ZWQsIG5vdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2
ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpBYm9ydGVkLCBt
b25vdG9uaWNUaW1lKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1h
dGlvbjo6QWJvcnRlZCwgbm93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0ZWQsIG1vbm90
b25pY1RpbWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTk0LDE5ICsxOTQsMTkgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6
OnB1cmdlRmluaXNoZWRBbmltYXRpb25zKENDQW5pbWF0aW9uRXZlbnRzVmUKICAgICB9CiB9CiAK
LXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3Vi
bGUgbm93KQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRp
b25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcpIHsK
LSAgICAgICAgICAgIGRvdWJsZSB0cmltbWVkID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT50cmlt
VGltZVRvQ3VycmVudEl0ZXJhdGlvbihub3cpOworICAgICAgICAgICAgZG91YmxlIHRyaW1tZWQg
PSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9uKG1vbm90
b25pY1RpbWUpOwogCiAgICAgICAgICAgICBzd2l0Y2ggKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
dGFyZ2V0UHJvcGVydHkoKSkgewogCiAgICAgICAgICAgICBjYXNlIENDQWN0aXZlQW5pbWF0aW9u
OjpUcmFuc2Zvcm06IHsKICAgICAgICAgICAgICAgICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlv
bkN1cnZlKiB0cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
Y3VydmUoKS0+dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpOwogICAgICAgICAgICAgICAgIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9IHRyYW5zZm9ybUFuaW1hdGlvbkN1cnZl
LT5nZXRWYWx1ZSh0cmltbWVkLCBtX2NsaWVudC0+Ym91bmRzKCkpOwotICAgICAgICAgICAgICAg
IGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmlzRmluaXNoZWRBdChub3cpKQotICAgICAgICAg
ICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5p
bWF0aW9uOjpGaW5pc2hlZCwgbm93KTsKKyAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmlt
YXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQobW9ub3RvbmljVGltZSkpCisgICAgICAgICAgICAgICAg
ICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246
OkZpbmlzaGVkLCBtb25vdG9uaWNUaW1lKTsKIAogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5z
ZXRUcmFuc2Zvcm0obWF0cml4KTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIxNSw4ICsy
MTUsOCBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlv
bnMoZG91YmxlIG5vdykKICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNp
dHk6IHsKICAgICAgICAgICAgICAgICBjb25zdCBDQ0Zsb2F0QW5pbWF0aW9uQ3VydmUqIGZsb2F0
QW5pbWF0aW9uQ3VydmUgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmN1cnZlKCktPnRvRmxvYXRB
bmltYXRpb25DdXJ2ZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IG9wYWNpdHkgPSBm
bG9hdEFuaW1hdGlvbkN1cnZlLT5nZXRWYWx1ZSh0cmltbWVkKTsKLSAgICAgICAgICAgICAgICBp
ZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQobm93KSkKLSAgICAgICAgICAg
ICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1h
dGlvbjo6RmluaXNoZWQsIG5vdyk7CisgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+aXNGaW5pc2hlZEF0KG1vbm90b25pY1RpbWUpKQorICAgICAgICAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpG
aW5pc2hlZCwgbW9ub3RvbmljVGltZSk7CiAKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2V0
T3BhY2l0eShvcGFjaXR5KTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgKaW5kZXggMzU0MDA0OWIw
MzYxZmRlNjIzOTVhYmMwZTRlMTUxNzA0MmQ0NDhiMC4uNmFjMDBlN2FlMTc4YzU3NzM2NjM3YjIy
YmRhMmM5MjkyMjFkYTZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJJbXBsLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB+Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKCk7CiAKLSAgICB2b2lkIGFuaW1h
dGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsK
KyAgICB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yJik7CiAKICAgICB2b2lkIGFkZChQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPik7
CiAKQEAgLTc4LDEzICs3OCwxMyBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBhbmltYXRvciBpcyBv
d25lZCBieSB0aGUgbGF5ZXIuCiAgICAgZXhwbGljaXQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbENsaWVudCopOwogCi0gICAgdm9p
ZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91YmxlIG5vdywgQ0NBbmltYXRp
b25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFy
dFRpbWUoZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHN0
YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG5vdywgQ0NB
bmltYXRpb25FdmVudHNWZWN0b3ImKTsKLSAgICB2b2lkIHJlc29sdmVDb25mbGljdHMoZG91Ymxl
IG5vdyk7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91Ymxl
IG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CisgICAgdm9pZCBzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zv
clRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImKTsKKyAgICB2b2lkIHJlc29sdmVDb25mbGljdHMoZG91YmxlIG1vbm90b25pY1Rp
bWUpOwogICAgIHZvaWQgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNW
ZWN0b3ImKTsKIAotICAgIHZvaWQgdGlja0FuaW1hdGlvbnMoZG91YmxlIG5vdyk7CisgICAgdm9p
ZCB0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSk7CiAKICAgICBDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3RvcjxPd25QdHI8
Q0NBY3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKaW5kZXggOGIzNGIxY2FmZjFkYjE2M2VkZTNlOGI0YTE2NmY2YzAwNmQ5
M2ZmYy4uOThjMzBmODIxYWU3NzNhOTM0YTM3ODY0YjEyNzAwOTg4OTRiMDc3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zMDIsMTAgKzMwMiwxMCBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXcoKQogICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVD
b21wb3NpdGUoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEFuaW1hdGlvbkV2ZW50
cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiBldmVudHMpCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVu
dHNWZWN0b3I+IGV2ZW50cywgZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgQVNTRVJUKEND
VGhyZWFkUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICBzZXRBbmltYXRpb25FdmVudHNSZWN1
cnNpdmUoKmV2ZW50cywgbV9yb290TGF5ZXIuZ2V0KCkpOworICAgIHNldEFuaW1hdGlvbkV2ZW50
c1JlY3Vyc2l2ZSgqZXZlbnRzLCBtX3Jvb3RMYXllci5nZXQoKSwgd2FsbENsb2NrVGltZSk7CiB9
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNo
cm9taXVtPiByb290TGF5ZXIpCkBAIC02NDAsMTUgKzY0MCwxNSBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
IHRleHR1cgogICAgIG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0TGlzdC5hcHBlbmQodGV4dHVy
ZSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHNSZWN1cnNp
dmUoY29uc3QgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywgTGF5ZXJDaHJvbWl1bSog
bGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZl
KGNvbnN0IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMsIExheWVyQ2hyb21pdW0qIGxh
eWVyLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBmb3IgKHNpemVfdCBldmVudEluZGV4
ID0gMDsgZXZlbnRJbmRleCA8IGV2ZW50cy5zaXplKCk7ICsrZXZlbnRJbmRleCkgewogICAgICAg
ICBpZiAobGF5ZXItPmlkKCkgPT0gZXZlbnRzW2V2ZW50SW5kZXhdLT5sYXllcklkKCkpCi0gICAg
ICAgICAgICBsYXllci0+c2V0QW5pbWF0aW9uRXZlbnQoKmV2ZW50c1tldmVudEluZGV4XSk7Cisg
ICAgICAgICAgICBsYXllci0+c2V0QW5pbWF0aW9uRXZlbnQoKmV2ZW50c1tldmVudEluZGV4XSwg
d2FsbENsb2NrVGltZSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgY2hpbGRJbmRleCA9IDA7
IGNoaWxkSW5kZXggPCBsYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsrY2hpbGRJbmRleCkKLSAg
ICAgICAgc2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKGV2ZW50cywgbGF5ZXItPmNoaWxkcmVu
KClbY2hpbGRJbmRleF0uZ2V0KCkpOworICAgICAgICBzZXRBbmltYXRpb25FdmVudHNSZWN1cnNp
dmUoZXZlbnRzLCBsYXllci0+Y2hpbGRyZW4oKVtjaGlsZEluZGV4XS5nZXQoKSwgd2FsbENsb2Nr
VGltZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggODNhMGNjZWU0ZDE5MjFjNjJkZGU2OTRhYzUwMTc4ZDBhZjdlYzg2Yi4uZDUy
NjIyNjJkNGYyY2NhNTQ0OTZjZmJiYTdhNTUwZGI5MzJiYTRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzQ29tbWl0KCk7CiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOwogCi0gICAgdm9p
ZCBzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4p
OworICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVu
dHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAKICAgICBMYXllckNocm9taXVtKiBy
b290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQogICAgIGNvbnN0IExheWVy
Q2hyb21pdW0qIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9
CkBAIC0yMjUsNyArMjI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2VydmVUZXh0dXJlcygp
OwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKLSAgICB2b2lkIHNldEFuaW1hdGlv
bkV2ZW50c1JlY3Vyc2l2ZShjb25zdCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYsIExheWVyQ2hy
b21pdW0qKTsKKyAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50c1JlY3Vyc2l2ZShjb25zdCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciYsIExheWVyQ2hyb21pdW0qLCBkb3VibGUgd2FsbENsb2NrVGlt
ZSk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA5MjVjOGNjNGMwNjYxMmQ0MTUyZjA5OWFkNzI2
MDhhMzc4MjBjODBhLi42MjI0NGI5NjlmNGRiOTAxZTFhZDExZmE4YTJhYThiNmE3MjE4N2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtOTcsMTMgKzk3LDEz
IEBAIEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZXh0KCkKICAg
ICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXllclJlbmRlcmVyLT5jb250ZXh0KCkgOiAw
OwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIGZyYW1lQmVn
aW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90
b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewotICAgIGFuaW1hdGVQYWdlU2NhbGUo
ZnJhbWVCZWdpblRpbWVNcyk7Ci0gICAgYW5pbWF0ZUxheWVycyhmcmFtZUJlZ2luVGltZU1zKTsK
KyAgICBhbmltYXRlUGFnZVNjYWxlKG1vbm90b25pY1RpbWUpOworICAgIGFuaW1hdGVMYXllcnMo
bW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRp
b24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZU1z
LCBkb3VibGUgZHVyYXRpb25NcykKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9y
UG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGR1cmF0aW9u
KQogewogICAgIGlmICghbV9zY3JvbGxMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKQEAgLTEx
NCwxNSArMTE0LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgSW50U2l6ZSBzY2Fs
ZWRDb250ZW50U2l6ZSA9IGNvbnRlbnRTaXplKCk7CiAgICAgc2NhbGVkQ29udGVudFNpemUuc2Nh
bGUobV9wYWdlU2NhbGVEZWx0YSk7CiAKLSAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbiA9IENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoc2Nyb2xsVG90YWwsIHNjYWxlVG90YWwsIG1fdmlld3Bv
cnRTaXplLCBzY2FsZWRDb250ZW50U2l6ZSwgc3RhcnRUaW1lTXMpOworICAgIG1fcGFnZVNjYWxl
QW5pbWF0aW9uID0gQ0NQYWdlU2NhbGVBbmltYXRpb246OmNyZWF0ZShzY3JvbGxUb3RhbCwgc2Nh
bGVUb3RhbCwgbV92aWV3cG9ydFNpemUsIHNjYWxlZENvbnRlbnRTaXplLCBzdGFydFRpbWUpOwog
CiAgICAgaWYgKGFuY2hvclBvaW50KSB7CiAgICAgICAgIEludFNpemUgd2luZG93QW5jaG9yKHRh
cmdldFBvc2l0aW9uKTsKICAgICAgICAgd2luZG93QW5jaG9yLnNjYWxlKHNjYWxlVG90YWwgLyBw
YWdlU2NhbGUpOwogICAgICAgICB3aW5kb3dBbmNob3IgLT0gc2Nyb2xsVG90YWw7Ci0gICAgICAg
IG1fcGFnZVNjYWxlQW5pbWF0aW9uLT56b29tV2l0aEFuY2hvcih3aW5kb3dBbmNob3IsIHBhZ2VT
Y2FsZSwgZHVyYXRpb25Ncyk7CisgICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLT56b29tV2l0
aEFuY2hvcih3aW5kb3dBbmNob3IsIHBhZ2VTY2FsZSwgZHVyYXRpb24pOwogICAgIH0gZWxzZQot
ICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9vbVRvKHRhcmdldFBvc2l0aW9uLCBwYWdl
U2NhbGUsIGR1cmF0aW9uTXMpOworICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9vbVRv
KHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0aW9uKTsKIAogICAgIG1fY2xpZW50LT5z
ZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1p
dE9uSW1wbFRocmVhZCgpOwpAQCAtMjQ3LDE0ICsyNDcsMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpvcHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMpCiAg
ICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5waXhl
bE92ZXJkcmF3Q3VsbGVkIiwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemF0aW9uICogb3ZlcmRy
YXdDb3VudHMubV9waXhlbHNDdWxsZWQpLCAxMDAsIDEwMDAwMDAsIDUwKTsKIH0KIAotdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBj
dXJyZW50LCBkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rv
ciYgZXZlbnRzLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpCit2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NMYXllcklt
cGwqIGN1cnJlbnQsIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwg
Q0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYg
bmVlZHNBbmltYXRlTGF5ZXJzKQogewogICAgIGJvb2wgc3VidHJlZU5lZWRzQW5pbWF0ZUxheWVy
cyA9IGZhbHNlOwogCiAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKiBjdXJyZW50
Q29udHJvbGxlciA9IGN1cnJlbnQtPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpOwogCiAgICAg
Ym9vbCBoYWRBY3RpdmVBbmltYXRpb24gPSBjdXJyZW50Q29udHJvbGxlci0+aGFzQWN0aXZlQW5p
bWF0aW9uKCk7Ci0gICAgY3VycmVudENvbnRyb2xsZXItPmFuaW1hdGUoZnJhbWVCZWdpblRpbWVT
ZWNzLCBldmVudHMpOworICAgIGN1cnJlbnRDb250cm9sbGVyLT5hbmltYXRlKG1vbm90b25pY1Rp
bWUsIGV2ZW50cyk7CiAgICAgYm9vbCBzdGFydGVkQW5pbWF0aW9uID0gZXZlbnRzLnNpemUoKSA+
IDA7CiAKICAgICAvLyBXZSBhbmltYXRlZCBpZiB3ZSBlaXRoZXIgdGlja2VkIGEgcnVubmluZyBh
bmltYXRpb24sIG9yIHN0YXJ0ZWQgYSBuZXcgYW5pbWF0aW9uLgpAQCAtMjY3LDcgKzI2Nyw3IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVy
SW1wbCogY3VycmVudCwgZG91YmxlIGZyCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1
cnJlbnQtPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYm9vbCBjaGlsZE5lZWRz
QW5pbWF0ZUxheWVycyA9IGZhbHNlOwotICAgICAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKGN1
cnJlbnQtPmNoaWxkcmVuKClbaV0uZ2V0KCksIGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzLCBk
aWRBbmltYXRlLCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyk7CisgICAgICAgIGFuaW1hdGVMYXll
cnNSZWN1cnNpdmUoY3VycmVudC0+Y2hpbGRyZW4oKVtpXS5nZXQoKSwgbW9ub3RvbmljVGltZSwg
d2FsbENsb2NrVGltZSwgZXZlbnRzLCBkaWRBbmltYXRlLCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVy
cyk7CiAgICAgICAgIGlmIChjaGlsZE5lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgICAgIHN1
YnRyZWVOZWVkc0FuaW1hdGVMYXllcnMgPSB0cnVlOwogICAgIH0KQEAgLTY3NSwyNiArNjc1LDI2
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0RnVsbFJvb3RMYXllckRhbWFnZSgpCiAg
ICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91
YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQ
YWdlU2NhbGUoZG91YmxlIG1vbm90b25pY1RpbWUpCiB7CiAgICAgaWYgKCFtX3BhZ2VTY2FsZUFu
aW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IHRv
U2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJ
bXBsLT5zY3JvbGxEZWx0YSgpKTsKIAotICAgIHNldFBhZ2VTY2FsZURlbHRhKG1fcGFnZVNjYWxl
QW5pbWF0aW9uLT5wYWdlU2NhbGVBdFRpbWUoZnJhbWVCZWdpblRpbWVNcykgLyBtX3BhZ2VTY2Fs
ZSk7Ci0gICAgSW50U2l6ZSBuZXh0U2Nyb2xsID0gbV9wYWdlU2NhbGVBbmltYXRpb24tPnNjcm9s
bE9mZnNldEF0VGltZShmcmFtZUJlZ2luVGltZU1zKTsKKyAgICBzZXRQYWdlU2NhbGVEZWx0YSht
X3BhZ2VTY2FsZUFuaW1hdGlvbi0+cGFnZVNjYWxlQXRUaW1lKG1vbm90b25pY1RpbWUpIC8gbV9w
YWdlU2NhbGUpOworICAgIEludFNpemUgbmV4dFNjcm9sbCA9IG1fcGFnZVNjYWxlQW5pbWF0aW9u
LT5zY3JvbGxPZmZzZXRBdFRpbWUobW9ub3RvbmljVGltZSk7CiAgICAgbmV4dFNjcm9sbC5zY2Fs
ZSgxIC8gbV9wYWdlU2NhbGVEZWx0YSk7CiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbEJ5
KG5leHRTY3JvbGwgLSBzY3JvbGxUb3RhbCk7CiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCk7CiAKLSAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5pbWF0
aW9uQ29tcGxldGVBdFRpbWUoZnJhbWVCZWdpblRpbWVNcykpIHsKKyAgICBpZiAobV9wYWdlU2Nh
bGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUobW9ub3RvbmljVGltZSkpIHsK
ICAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24uY2xlYXIoKTsKICAgICAgICAgbV9jbGllbnQt
PnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUs
IGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIGlmICghbV9zZXR0aW5ncy50aHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQgfHwgIW1fbmVlZHNBbmltYXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXllcklt
cGwpCiAgICAgICAgIHJldHVybjsKQEAgLTcwNCwxMCArNzA0LDEwIEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcykKICAgICBP
d25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cyhhZG9wdFB0cihuZXcgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3IpKTsKIAogICAgIGJvb2wgZGlkQW5pbWF0ZSA9IGZhbHNlOwotICAg
IGFuaW1hdGVMYXllcnNSZWN1cnNpdmUobV9yb290TGF5ZXJJbXBsLmdldCgpLCBmcmFtZUJlZ2lu
VGltZU1zIC8gMTAwMCwgKmV2ZW50cywgZGlkQW5pbWF0ZSwgbV9uZWVkc0FuaW1hdGVMYXllcnMp
OworICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUobV9yb290TGF5ZXJJbXBsLmdldCgpLCBtb25v
dG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lLCAqZXZlbnRzLCBkaWRBbmltYXRlLCBtX25lZWRzQW5p
bWF0ZUxheWVycyk7CiAKICAgICBpZiAoIWV2ZW50cy0+aXNFbXB0eSgpKQotICAgICAgICBtX2Ns
aWVudC0+cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChldmVudHMu
cmVsZWFzZSgpKTsKKyAgICAgICAgbV9jbGllbnQtPnBvc3RBbmltYXRpb25FdmVudHNUb01haW5U
aHJlYWRPbkltcGxUaHJlYWQoZXZlbnRzLnJlbGVhc2UoKSwgd2FsbENsb2NrVGltZSk7CiAKICAg
ICBpZiAoZGlkQW5pbWF0ZSkKICAgICAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYTBiMzVm
MmRjOTg4ZWQ4OWJiYTU5YzhiYTI4NGIwNGVkYTQwM2QwMy4uOWY0YjI0NjIzMzQ3NjFjZmI3OTU1
YTI1Njc3MDMwYzFlNzE5YmNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZl
cnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNS
ZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0
T25JbXBsVGhyZWFkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRz
VG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0
b3I+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJl
YWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJs
ZSB3YWxsQ2xvY2tUaW1lKSA9IDA7CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMg
dGhlIENDTGF5ZXJJbXBsIHRyZWUgYXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0
ZQpAQCAtNjksMTIgKzY5LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0
dXJlQmVnaW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0LCBj
b25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVFbmQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFy
Z2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0
YXJ0VGltZU1zLCBkb3VibGUgZHVyYXRpb25Ncyk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIGFuY2hv
clBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBkdXJhdGlv
bik7CiAKICAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5nLgogICAgIHZpcnR1YWwgdm9pZCBiZWdp
bkNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZSgpOwotICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBmcmFtZURpc3BsYXlUaW1lTXMpOworICAgIHZpcnR1YWwg
dm9pZCBhbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnMoKTsKIAogICAgIC8vIExheWVyUmVuZGVyZXJD
aHJvbWl1bUNsaWVudCBpbXBsZW1lbnRhdGlvbgpAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYs
IENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKIAotICAgIHZvaWQgYW5pbWF0ZVBhZ2VTY2Fs
ZShkb3VibGUgZnJhbWVCZWdpblRpbWVNcyk7CisgICAgdm9pZCBhbmltYXRlUGFnZVNjYWxlKGRv
dWJsZSBtb25vdG9uaWNUaW1lKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCi0gICAg
dmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpOworICAg
IHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUg
d2FsbENsb2NrVGltZSk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBtX2NsaWVu
dDsKICAgICBpbnQgbV9zb3VyY2VGcmFtZU51bWJlcjsKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9v
dERyYXdMYXllciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwog
ICAgIHZvaWQgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmLCBDQ0xheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgdm9pZCBvcHRpbWl6ZVJlbmRlclBh
c3NlcyhDQ1JlbmRlclBhc3NMaXN0Jik7Ci0gICAgdm9pZCBhbmltYXRlTGF5ZXJzUmVjdXJzaXZl
KENDTGF5ZXJJbXBsKiwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwor
ICAgIHZvaWQgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRvdWJsZSBtb25v
dG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3Im
LCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwogICAgIEludFNp
emUgY29udGVudFNpemUoKSBjb25zdDsKICAgICB2b2lkIHNlbmREaWRMb3NlQ29udGV4dFJlY3Vy
c2l2ZShDQ0xheWVySW1wbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlv
bi5jcHAKaW5kZXggMzNiNmYyMmZiZWRmNTNlMWJhNGI2Mjk0NDkxNDg3ZjYwOGFkNTA4Yi4uNDlh
MTI1ZDIzYzM4Nzc0NWJmYzUwOTEyODcyY2FhZjJmZjM4OGQ1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcApAQCAtMjIsNyArMjIsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0zNiwxMyArMzYsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBDQ1Bh
Z2VTY2FsZUFuaW1hdGlvbjo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9h
dCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6
ZSYgY29udGVudFNpemUsIGRvdWJsZSBzdGFydFRpbWVNcykKK1Bhc3NPd25QdHI8Q0NQYWdlU2Nh
bGVBbmltYXRpb24+IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dT
aXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDUGFnZVNjYWxlQW5pbWF0aW9uKHNjcm9sbFN0YXJ0LCBw
YWdlU2NhbGVTdGFydCwgd2luZG93U2l6ZSwgY29udGVudFNpemUsIHN0YXJ0VGltZU1zKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihzY3JvbGxTdGFydCwg
cGFnZVNjYWxlU3RhcnQsIHdpbmRvd1NpemUsIGNvbnRlbnRTaXplLCBzdGFydFRpbWUpKTsKIH0K
IAogCi1DQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50
U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3
aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZU1z
KQorQ0NQYWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNp
emUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2lu
ZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRvdWJsZSBzdGFydFRpbWUpCiAg
ICAgOiBtX3Njcm9sbFN0YXJ0KHNjcm9sbFN0YXJ0KQogICAgICwgbV9wYWdlU2NhbGVTdGFydChw
YWdlU2NhbGVTdGFydCkKICAgICAsIG1fd2luZG93U2l6ZSh3aW5kb3dTaXplKQpAQCAtNTAsMTEg
KzUwLDExIEBAIENDUGFnZVNjYWxlQW5pbWF0aW9uOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25z
dCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnCiAgICAgLCBtX2FuY2hvck1vZGUoZmFs
c2UpCiAgICAgLCBtX3Njcm9sbEVuZChzY3JvbGxTdGFydCkKICAgICAsIG1fcGFnZVNjYWxlRW5k
KHBhZ2VTY2FsZVN0YXJ0KQotICAgICwgbV9zdGFydFRpbWVNcyhzdGFydFRpbWVNcykKKyAgICAs
IG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKIHsKIH0KIAotdm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlv
bjo6em9vbVRvKGNvbnN0IEludFNpemUmIGZpbmFsU2Nyb2xsLCBmbG9hdCBmaW5hbFBhZ2VTY2Fs
ZSwgZG91YmxlIGR1cmF0aW9uTXMpCit2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8o
Y29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUg
ZHVyYXRpb24pCiB7CiAgICAgaWYgKG1fcGFnZVNjYWxlU3RhcnQgIT0gZmluYWxQYWdlU2NhbGUp
IHsKICAgICAgICAgLy8gRm9yIHVuaWZvcm0tbG9va2luZyB6b29taW5nLCBpbmZlciB0aGUgYW5j
aG9yIChwb2ludCB0aGF0IHJlbWFpbnMgaW4KQEAgLTc4LDE4ICs3OCwxOCBAQCB2b2lkIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0
IGZpbmFsUGFnZVNjYQogICAgICAgICBmbG9hdCByYXRpb1kgPSAoc3RhcnRSZWN0LnkoKSAtIGVu
ZFJlY3QueSgpKSAvIChlbmRSZWN0LmhlaWdodCgpIC0gc3RhcnRSZWN0LmhlaWdodCgpKTsKIAog
ICAgICAgICBJbnRTaXplIGFuY2hvcihtX3dpbmRvd1NpemUud2lkdGgoKSAqIHJhdGlvWCwgbV93
aW5kb3dTaXplLmhlaWdodCgpICogcmF0aW9ZKTsKLSAgICAgICAgem9vbVdpdGhBbmNob3IoYW5j
aG9yLCBmaW5hbFBhZ2VTY2FsZSwgZHVyYXRpb25Ncyk7CisgICAgICAgIHpvb21XaXRoQW5jaG9y
KGFuY2hvciwgZmluYWxQYWdlU2NhbGUsIGR1cmF0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBJZiB0aGlzIGlzIGEgcHVyZSB0cmFuc2xhdGlvbiwgdGhlbiB0aGVyZSBleGlzdHMgbm8g
YW5jaG9yLiBMaW5lYXJseQogICAgICAgICAvLyBpbnRlcnBvbGF0ZSB0aGUgc2Nyb2xsIG9mZnNl
dCBpbnN0ZWFkLgogICAgICAgICBtX3Njcm9sbEVuZCA9IGZpbmFsU2Nyb2xsOwogICAgICAgICBt
X3BhZ2VTY2FsZUVuZCA9IGZpbmFsUGFnZVNjYWxlOwotICAgICAgICBtX2R1cmF0aW9uTXMgPSBk
dXJhdGlvbk1zOworICAgICAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CiAgICAgICAgIG1fYW5j
aG9yTW9kZSA9IGZhbHNlOwogICAgIH0KIH0KIAotdm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
em9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2Fs
ZSwgZG91YmxlIGR1cmF0aW9uTXMpCit2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0
aEFuY2hvcihjb25zdCBJbnRTaXplJiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3Vi
bGUgZHVyYXRpb24pCiB7CiAgICAgbV9zY3JvbGxFbmQgPSBtX3Njcm9sbFN0YXJ0ICsgYW5jaG9y
OwogICAgIG1fc2Nyb2xsRW5kLnNjYWxlKGZpbmFsUGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFy
dCk7CkBAIC0xMDMsMzEgKzEwMywzMSBAQCB2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29t
V2l0aEFuY2hvcihjb25zdCBJbnRTaXplJiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZQogCiAgICAg
bV9hbmNob3IgPSBhbmNob3I7CiAgICAgbV9wYWdlU2NhbGVFbmQgPSBmaW5hbFBhZ2VTY2FsZTsK
LSAgICBtX2R1cmF0aW9uTXMgPSBkdXJhdGlvbk1zOworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlv
bjsKICAgICBtX2FuY2hvck1vZGUgPSB0cnVlOwogfQogCi1JbnRTaXplIENDUGFnZVNjYWxlQW5p
bWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK0ludFNpemUg
Q0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0VGltZShkb3VibGUgdGltZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0QXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGlt
ZSh0aW1lTXMpKTsKKyAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0QXRSYXRpbyhwcm9ncmVzc1JhdGlv
Rm9yVGltZSh0aW1lKSk7CiB9CiAKLWZsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwYWdlU2Nh
bGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9u
OjpwYWdlU2NhbGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2VT
Y2FsZUF0UmF0aW8ocHJvZ3Jlc3NSYXRpb0ZvclRpbWUodGltZU1zKSk7CisgICAgcmV0dXJuIHBh
Z2VTY2FsZUF0UmF0aW8ocHJvZ3Jlc3NSYXRpb0ZvclRpbWUodGltZSkpOwogfQogCi1ib29sIEND
UGFnZVNjYWxlQW5pbWF0aW9uOjppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1l
TXMpIGNvbnN0Citib29sIENDUGFnZVNjYWxlQW5pbWF0aW9uOjppc0FuaW1hdGlvbkNvbXBsZXRl
QXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIHJldHVybiB0aW1lTXMgPj0gZW5kVGlt
ZU1zKCk7CisgICAgcmV0dXJuIHRpbWUgPj0gZW5kVGltZSgpOwogfQogCi1mbG9hdCBDQ1BhZ2VT
Y2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0ZvclRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QK
K2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUg
dGltZSkgY29uc3QKIHsKLSAgICBpZiAoaXNBbmltYXRpb25Db21wbGV0ZUF0VGltZSh0aW1lTXMp
KQorICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKHRpbWUpKQogICAgICAgICByZXR1
cm4gMTsKIAotICAgIHJldHVybiAodGltZU1zIC0gbV9zdGFydFRpbWVNcykgLyBtX2R1cmF0aW9u
TXM7CisgICAgcmV0dXJuICh0aW1lIC0gbV9zdGFydFRpbWUpIC8gbV9kdXJhdGlvbjsKIH0KIAog
SW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRSYXRpbyhmbG9hdCBy
YXRpbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oCmluZGV4IGY0
YjFiZjQ3YTlhOTc2NzhjMzZlZjYyYWJjYjRjZGUwNWM4NGRlODkuLmQ5YWNiNDkxMWRiYzI1NmZm
OWViZjllYTdlMmQzZWMzM2U2ZmYwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmlt
YXRpb24uaApAQCAtMzksMzkgKzM5LDM5IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3Qgd2l0
aCB0aGUgc3RhcnRpbmcgcGFnZSBzY2FsZSBhbmQgc2Nyb2xsIG9mZnNldCAod2hpY2ggaXMgaW4K
ICAgICAvLyBwYWdlU2NhbGVTdGFydCBzcGFjZSkuIFRoZSB3aW5kb3cgc2l6ZSBpcyB0aGUgdXNl
ci12aWV3YWJsZSBhcmVhCiAgICAgLy8gaW4gcGl4ZWxzLgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDUGFnZVNjYWxlQW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQs
IGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJ
bnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZU1zKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1BhZ2VTY2FsZUFuaW1hdGlvbj4gY3JlYXRlKGNvbnN0IEludFNpemUmIHNjcm9s
bFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwg
Y29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRvdWJsZSBzdGFydFRpbWUpOwogCiAgICAgLy8g
VGhlIGZvbGxvd2luZyBtZXRob2RzIGluaXRpYWxpemUgdGhlIGFuaW1hdGlvbi4gQ2FsbCBvbmUg
b2YgdGhlbQogICAgIC8vIGltbWVkaWF0ZWx5IGFmdGVyIGNvbnN0cnVjdGlvbiB0byBzZXQgdGhl
IGZpbmFsIHNjcm9sbCBhbmQgcGFnZSBzY2FsZS4KIAogICAgIC8vIFpvb20gd2hpbGUgZXhwbGlj
aXRseSBzcGVjaWZ5aW5nIHRoZSB0b3AtbGVmdCBzY3JvbGwgcG9zaXRpb24uIFRoZQogICAgIC8v
IHNjcm9sbCBvZmZzZXQgaXMgaW4gZmluYWxQYWdlU2NhbGUgY29vcmRpbmF0ZXMuCi0gICAgdm9p
ZCB6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxl
LCBkb3VibGUgZHVyYXRpb25Ncyk7CisgICAgdm9pZCB6b29tVG8oY29uc3QgSW50U2l6ZSYgZmlu
YWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pOwogCiAgICAg
Ly8gWm9vbSBiYXNlZCBvbiBhIHNwZWNpZmllZCBvbnNjcmVlbiBhbmNob3IsIHdoaWNoIHdpbGwg
cmVtYWluIGF0IHRoZSBzYW1lCiAgICAgLy8gcG9zaXRpb24gb24gdGhlIHNjcmVlbiB0aHJvdWdo
b3V0IHRoZSBhbmltYXRpb24uIFRoZSBhbmNob3IgaXMgaW4gbG9jYWwKICAgICAvLyBzcGFjZSBy
ZWxhdGl2ZSB0byBzY3JvbGxTdGFydC4KLSAgICB2b2lkIHpvb21XaXRoQW5jaG9yKGNvbnN0IElu
dFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsK
KyAgICB2b2lkIHpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmlu
YWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbik7CiAKICAgICAvLyBDYWxsIHRoZXNlIGZ1bmN0
aW9ucyB3aGlsZSB0aGUgYW5pbWF0aW9uIGlzIGluIHByb2dyZXNzIHRvIG91dHB1dCB0aGUKICAg
ICAvLyBjdXJyZW50IHN0YXRlLgotICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0QXRUaW1lKGRvdWJs
ZSB0aW1lTXMpIGNvbnN0OwotICAgIGZsb2F0IHBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGltZU1z
KSBjb25zdDsKLSAgICBib29sIGlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWVN
cykgY29uc3Q7CisgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRBdFRpbWUoZG91YmxlIHRpbWUpIGNv
bnN0OworICAgIGZsb2F0IHBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGltZSkgY29uc3Q7CisgICAg
Ym9vbCBpc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKIAogICAg
IC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyByZXR1cm4gc3RhdGUgd2hpY2ggaXMgaW52YXJpYW50
IHRocm91Z2hvdXQgdGhlCiAgICAgLy8gY291cnNlIG9mIHRoZSBhbmltYXRpb24uCi0gICAgZG91
YmxlIHN0YXJ0VGltZU1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWVNczsgfQotICAgIGRv
dWJsZSBkdXJhdGlvbk1zKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbk1zOyB9Ci0gICAgZG91
YmxlIGVuZFRpbWVNcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lTXMgKyBtX2R1cmF0aW9u
TXM7IH0KKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7
IH0KKyAgICBkb3VibGUgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9Cisg
ICAgZG91YmxlIGVuZFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGltZSArIG1fZHVyYXRp
b247IH0KICAgICBjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsRW5kOyB9CiAgICAgZmxvYXQgZmluYWxQYWdlU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VTY2FsZUVuZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NQYWdlU2NhbGVBbmlt
YXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBj
b25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91
YmxlIHN0YXJ0VGltZU1zKTsKKyAgICBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRv
d1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lKTsKIAog
cHJpdmF0ZToKLSAgICBmbG9hdCBwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZU1zKSBj
b25zdDsKKyAgICBmbG9hdCBwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZSkgY29uc3Q7
CiAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdDsKICAg
ICBmbG9hdCBwYWdlU2NhbGVBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdDsKIApAQCAtODUsOCAr
ODUsOCBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9zY3JvbGxFbmQ7CiAgICAgZmxvYXQgbV9w
YWdlU2NhbGVFbmQ7CiAKLSAgICBkb3VibGUgbV9zdGFydFRpbWVNczsKLSAgICBkb3VibGUgbV9k
dXJhdGlvbk1zOworICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKyAgICBkb3VibGUgbV9kdXJhdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggNDBmMDNiMmQ2ZGIxYWJiOWM5ZDU4NjcxMTlhYjUxMDVkNTU2
YzY2ZS4uNzVlZmU2MzM4MmY2NTBlMzcxYTNjNDA3NWFjMGU4MGViM2ViNDBlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTg5LDkgKzg5LDkgQEAgYm9vbCBD
Q1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNv
bnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQ
b3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMp
Cit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRv
dWJsZSBkdXJhdGlvbikKIHsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjAsIGR1cmF0aW9uU2VjICogMTAwMC4wKTsKKyAgICBt
X2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlv
biwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0
aW9uKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0QqIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRl
eHQoKQpAQCAtMjU3LDExICsyNTcsMTEgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9w
KCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJv
eHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0
cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKQordm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25Q
dHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cywgZG91YmxlIHdhbGxDbG9ja1RpbWUp
CiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBEZWJ1Z1Njb3Bl
ZFNldE1haW5UaHJlYWQgbWFpbjsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGlvbkV2
ZW50cyhldmVudHMpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2
ZW50cywgd2FsbENsb2NrVGltZSk7CiB9CiAKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVk
dWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcp
CkBAIC0yOTIsOCArMjkyLDEwIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21wb3Np
dGUoKQogICAgIEFTU0VSVCghbV9jb250ZXh0TG9zdCk7CiAgICAgewogICAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgICBkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7Ci0gICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1lRGlzcGxheVRpbWVNcyk7CisgICAgICBkb3VibGUgbW9u
b3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgICAgZG91Ymxl
IHdhbGxDbG9ja1RpbWUgPSBjdXJyZW50VGltZSgpOworCisgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5hbmltYXRlKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCmluZGV4IDJkMjhkMDE2OWQzMDg4YjhjMzJhYmRjZTczYjNkNzQxYzVm
NDJhMWUuLmViYmQ5NmUyYzM4ODIyMTg5ZDJiOTBiMjFlNmQ5NzZhMzY3YzBlOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3Np
dGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRp
b24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFy
Z2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9u
KTsKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQo
KSBjb25zdDsKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN3
YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgeyBtX2xheWVy
VHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHND
b21taXRPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBs
VGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3du
UHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogCiAg
ICAgLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgcGF0aCB3aGVyZSBSZW5kZXJXaWRnZXQgZG9lcyB0
aGUgc2NoZWR1bGluZy4KICAgICB2b2lkIGNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDNkNjU5NmQwNGUxNjQ3NDY5ZGIxYThkMWQ3MGEyOTYy
N2E5YjcyZDEuLjhjMDg5OGRiZjY0ZjQzZTczZjA3ODVjNDg4MWQ4MDUxODMyOTE1ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0xMzQsMTcgKzEzNCwxNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqIHJl
cXVlc3QpCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzRm9yY2VkUmVkcmF3
KCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwg
ZG91YmxlIGR1cmF0aW9uU2VjKQordm9pZCBDQ1RocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZs
b2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFp
blRocmVhZCgpKTsKLSAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUND
VGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uT25JbXBsVGhyZWFkLCB0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVy
YXRpb25TZWMpKTsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUND
VGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uT25JbXBsVGhyZWFkLCB0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVy
YXRpb24pKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVB
bmltYXRpb25PbkltcGxUaHJlYWQoSW50U2l6ZSB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNo
b3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCit2b2lkIENDVGhyZWFkUHJveHk6
OnJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdl
dFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikK
IHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIGlmIChtX2xheWVy
VHJlZUhvc3RJbXBsKQotICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjAsIGR1cmF0aW9uU2VjICogMTAwMC4wKTsKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24odGFyZ2V0UG9z
aXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCBk
dXJhdGlvbik7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEKiBDQ1RocmVhZFByb3h5Ojpjb250ZXh0
KCkKQEAgLTMwMCwxMSArMzAwLDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21t
aXRPbkltcGxUaHJlYWQoKQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0Nv
bW1pdCgpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01h
aW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4g
ZXZlbnRzKQordm9pZCBDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50
cywgZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
ICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFp
blRocmVhZE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwotICAgIG1fbWFpblRocmVhZFByb3h5LT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldEFuaW1h
dGlvbkV2ZW50cywgZXZlbnRzKSk7CisgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRz
LCBldmVudHMsIHdhbGxDbG9ja1RpbWUpKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRO
ZWVkc1JlZHJhdygpCkBAIC01NjYsMTAgKzU2NiwxMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklY
TUU6IGNvbXB1dGUgdGhlIGZyYW1lIGRpc3BsYXkgdGltZSBtb3JlIGludGVsbGlnZW50bHkKLSAg
ICBkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgKiAxMDAwLjA7CisgICAgZG91YmxlIG1vbm90b25pY1RpbWUgPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsKKyAgICBkb3VibGUgd2FsbENsb2NrVGltZSA9IGN1cnJlbnRUaW1lKCk7
CiAKLSAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+d2lsbERyYXcoZnJhbWVEaXNwbGF5
VGltZU1zKTsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1lRGlzcGxheVRp
bWVNcyk7CisgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPndpbGxEcmF3KG1vbm90b25p
Y1RpbWUpOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwg
d2FsbENsb2NrVGltZSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwog
CiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KQEAgLTYx
MiwxMyArNjEzLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpCiAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiB9CiAK
LXZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmlt
YXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0
aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cywgZG91
YmxlIHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFBy
b3h5OjpzZXRBbmltYXRpb25FdmVudHMiKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIGlmICghbV9sYXllclRyZWVIb3N0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRBbmltYXRpb25FdmVudHMoZXZlbnRzKTsKKyAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMsIHdhbGxDbG9ja1RpbWUpOwogfQogCiBjbGFzcyBD
Q1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lciA6IHB1YmxpYyBDQ1RpbWVyLCBDQ1Rp
bWVyQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCA0ZWFmODQwZjZiNTdkNTVj
MDczYmZhNTY4ZjQwYWYwNmI4YjA4NjJlLi4wNTc2OTEyMTNlZTRmN2IzMDI0YWNlZmQyZDJlODNj
NGQyNTkxNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIENDUHJveHkgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wg
Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdl
dFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNl
Yyk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNp
emUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBk
dXJhdGlvbik7CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNT
dGFydGVkKCkgY29uc3Q7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
Q29tbWl0T25JbXBsVGhyZWFkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVu
dHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3Rvcj4pOworICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFk
T25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUg
d2FsbENsb2NrVGltZSk7CiAKICAgICAvLyBDQ1NjaGVkdWxlckNsaWVudCBpbXBsZW1lbnRhdGlv
bgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91Ymxl
IGZyYW1lQmVnaW5UaW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2
b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVm
ZmVycygpOwotICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRp
b25FdmVudHNWZWN0b3I+KTsKKyAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRy
PENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogICAgIHZv
aWQgYmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwogICAgIHZvaWQgdHJ5VG9SZWNyZWF0ZUNvbnRl
eHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCmluZGV4IDM5NzMwOGI1MjljYzQxNzQ3MTg3
YzdmODY3ZDEyMWI5YjIzZmNhZWUuLmMyZGJlZTNiNDcyZGY2NjYxNmY0MjE1ODZjYjVmYjcwNzc3
ZDYyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBpbnQg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmlkZW50aWZpZXIoKSBjb25zdAogICAgIHJl
dHVybiBtX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OndpbGxEcmF3KGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQordm9pZCBXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbDo6d2lsbERyYXcoZG91YmxlIG1vbm90b25pY1RpbWUpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbC5oCmluZGV4IGEyZjEzMDI1ZDlmMTdiZmQxOGMxNDRmOTMxN2Q4MmE2
ZWExMDllYzUuLjgzYjRiZDU0NjFhYzM0YTUxNmJjZWRmZWM0MjRlYTFmNGNjMzA2YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJD
b3JlOjpDQ0lucHV0SGFuZGxlciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgaW50IGlkZW50
aWZpZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoZG91YmxlIGZyYW1lQmVn
aW5UaW1lTXMpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUgbW9ub3RvbmljVGlt
ZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
YzNiNGVhYjA4MGY0OTllNTEwNmI1ODc2ZTQxYjNhZGZlZjEwNzMzZS4uZDc1YzEyODkwNzY1ODll
YjYxMzQzNmVhNzYzYjY3YjgwYzBiMDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbklt
cGxUaHJlYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJl
YWQoKSB7IG1fZGlkUmVxdWVzdFJlZHJhdyA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSB7IG1fZGlkUmVxdWVzdENvbW1pdCA9IHRydWU7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRo
cmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093
blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSB7IH0K
IAogICAgIHN0YXRpYyB2b2lkIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNpdmUoQ0NM
YXllckltcGwqIGxheWVyKQogICAgIHsKQEAgLTM1MCw4ICszNTAsMTAgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiAgICAgQVNTRVJUKHNjcm9s
bExheWVyKTsKIAogICAgIGNvbnN0IGZsb2F0IG1pblBhZ2VTY2FsZSA9IDAuNSwgbWF4UGFnZVNj
YWxlID0gNDsKLSAgICBjb25zdCBkb3VibGUgc3RhcnRUaW1lTXMgPSAxMDAwOwotICAgIGNvbnN0
IGRvdWJsZSBkdXJhdGlvbk1zID0gMTAwOworICAgIGNvbnN0IGRvdWJsZSBzdGFydFRpbWUgPSAx
OworICAgIGNvbnN0IGRvdWJsZSBkdXJhdGlvbiA9IDAuMTsKKyAgICBjb25zdCBkb3VibGUgaGFs
ZndheVRocm91Z2hBbmltYXRpb24gPSBzdGFydFRpbWUgKyBkdXJhdGlvbiAvIDI7CisgICAgY29u
c3QgZG91YmxlIGVuZFRpbWUgPSBzdGFydFRpbWUgKyBkdXJhdGlvbjsKIAogICAgIC8vIE5vbi1h
bmNob3Igem9vbS1pbgogICAgIHsKQEAgLTM1OSwxMCArMzYxLDEwIEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNjYWxlQW5pbWF0aW9uKQogICAgICAgICBzY3JvbGxMYXll
ci0+c2V0UGFnZVNjYWxlRGVsdGEoMSk7CiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRTY3JvbGxQ
b3NpdGlvbihJbnRQb2ludCg1MCwgNTApKTsKIAotICAgICAgICBtX2hvc3RJbXBsLT5zdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbihJbnRTaXplKDAsIDApLCBmYWxzZSwgMiwgc3RhcnRUaW1lTXMsIGR1
cmF0aW9uTXMpOwotICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKHN0YXJ0VGltZU1zICsgZHVy
YXRpb25NcyAvIDIpOworICAgICAgICBtX2hvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihJbnRTaXplKDAsIDApLCBmYWxzZSwgMiwgc3RhcnRUaW1lLCBkdXJhdGlvbik7CisgICAgICAg
IG1faG9zdEltcGwtPmFuaW1hdGUoaGFsZndheVRocm91Z2hBbmltYXRpb24sIGhhbGZ3YXlUaHJv
dWdoQW5pbWF0aW9uKTsKICAgICAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3KTsK
LSAgICAgICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShzdGFydFRpbWVNcyArIGR1cmF0aW9uTXMpOwor
ICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKGVuZFRpbWUsIGVuZFRpbWUpOwogICAgICAgICBF
WFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RDb21taXQpOwogCiAgICAgICAgIE93blB0cjxDQ1Njcm9s
bEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvID0gbV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRh
cygpOwpAQCAtMzc2LDggKzM3OCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
cGFnZVNjYWxlQW5pbWF0aW9uKQogICAgICAgICBzY3JvbGxMYXllci0+c2V0UGFnZVNjYWxlRGVs
dGEoMSk7CiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCg1
MCwgNTApKTsKIAotICAgICAgICBtX2hvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJ
bnRTaXplKDI1LCAyNSksIHRydWUsIG1pblBhZ2VTY2FsZSwgc3RhcnRUaW1lTXMsIGR1cmF0aW9u
TXMpOwotICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKHN0YXJ0VGltZU1zICsgZHVyYXRpb25N
cyk7CisgICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKEludFNpemUo
MjUsIDI1KSwgdHJ1ZSwgbWluUGFnZVNjYWxlLCBzdGFydFRpbWUsIGR1cmF0aW9uKTsKKyAgICAg
ICAgbV9ob3N0SW1wbC0+YW5pbWF0ZShlbmRUaW1lLCBlbmRUaW1lKTsKICAgICAgICAgRVhQRUNU
X1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3KTsKICAgICAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1
ZXN0Q29tbWl0KTsKIApAQCAtODQ3LDcgKzg0OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgdmlzaWJpbGl0eUNoYW5nZVJlc2V0c0RhbWFnZSkKICAgICAvLyBGaXJzdCBmcmFt
ZTogaWdub3JlLgogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgbGF5
ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7Ci0gCisKICAgICAvLyBTZWNvbmQgZnJhbWU6
IG5vdGhpbmcgaGFzIGNoYW5nZWQgLS0tIHNvIHdlIHNvdWxkbid0IHB1c2ggYW55dGhpbmcgd2l0
aCBwYXJ0aWFsIHN3YXAuCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAg
ICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDEyOGJkMGIw
YzIzODM5NWNkMGM2NjNjMTA1ZjAxZmY4NzY0MGE3OGMuLmIwNjJmNjg0ZGQxNTA5NmFlMzA4MzRj
Zjk5ODA2YmJmMGNiZDk0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtNjUsOSArNjUsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBs
KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVy
VHJlZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVy
cyhDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXll
cnMoQ0NMYXllclRyZWVIb3N0SW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiwgZmxvYXQpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25p
Y1RpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VkZWQpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IH0KQEAgLTEwNCwxMCArMTA0LDEwIEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhk
b3VibGUgZnJhbWVCZWdpblRpbWVNcykKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhk
b3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUpCiAgICAgewotICAgICAg
ICBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGZyYW1lQmVnaW5UaW1lTXMpOwot
ICAgICAgICBtX3Rlc3RIb29rcy0+YW5pbWF0ZUxheWVycyh0aGlzKTsKKyAgICAgICAgQ0NMYXll
clRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyhtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1l
KTsKKyAgICAgICAgbV90ZXN0SG9va3MtPmFuaW1hdGVMYXllcnModGhpcywgbW9ub3RvbmljVGlt
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdENsaWVudCh0ZXN0SG9va3Mp
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJh
bWVCZWdpblRpbWUpCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1v
bm90b25pY1RpbWUpCiAgICAgewotICAgICAgICBtX3Rlc3RIb29rcy0+dXBkYXRlQW5pbWF0aW9u
cyhmcmFtZUJlZ2luVGltZSk7CisgICAgICAgIG1fdGVzdEhvb2tzLT51cGRhdGVBbmltYXRpb25z
KG1vbm90b25pY1RpbWUpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQpAQCAt
ODQwLDYgKzg0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX251bUFuaW1hdGVzKDApCiAgICAg
ICAgICwgbV9yZWNlaXZlZEFuaW1hdGlvblN0YXJ0ZWROb3RpZmljYXRpb24oZmFsc2UpCiAgICAg
ICAgICwgbV9yZWNlaXZlZEFuaW1hdGlvbkZpbmlzaGVkTm90aWZpY2F0aW9uKGZhbHNlKQorICAg
ICAgICAsIG1fc3RhcnRUaW1lKDApCisgICAgICAgICwgbV9maXJzdE1vbm90b25pY1RpbWUoMCkK
ICAgICB7CiAgICAgfQogCkBAIC04NDgsMjMgKzg1MCwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHBv
c3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKKyAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCwgZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgewogICAgICAgICBpZiAoIW1f
bnVtQW5pbWF0ZXMpIHsKICAgICAgICAgICAgIC8vIFRoZSBhbmltYXRpb24gaGFkIHplcm8gZHVy
YXRpb24gc28gbGF5ZXJUcmVlSG9zdEltcGwgc2hvdWxkIG5vCiAgICAgICAgICAgICAvLyBsb25n
ZXIgbmVlZCB0byBhbmltYXRlIGl0cyBsYXllcnMuCiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
bGF5ZXJUcmVlSG9zdEltcGwtPm5lZWRzQW5pbWF0ZUxheWVycygpKTsKICAgICAgICAgICAgIG1f
bnVtQW5pbWF0ZXMrKzsKKyAgICAgICAgICAgIG1fZmlyc3RNb25vdG9uaWNUaW1lID0gbW9ub3Rv
bmljVGltZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBFWFBFQ1Rf
TFQoMCwgbV9zdGFydFRpbWUpOworICAgICAgICBFWFBFQ1RfTFQoMCwgbV9maXJzdE1vbm90b25p
Y1RpbWUpOworICAgICAgICBFWFBFQ1RfTkUobV9zdGFydFRpbWUsIG1fZmlyc3RNb25vdG9uaWNU
aW1lKTsKICAgICAgICAgRVhQRUNUX1RSVUUobV9yZWNlaXZlZEFuaW1hdGlvblN0YXJ0ZWROb3Rp
ZmljYXRpb24pOwogICAgICAgICBFWFBFQ1RfVFJVRShtX3JlY2VpdmVkQW5pbWF0aW9uRmluaXNo
ZWROb3RpZmljYXRpb24pOwogICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlKQorICAgIHZpcnR1YWwgdm9pZCBu
b3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogICAgIHsKICAgICAg
ICAgbV9yZWNlaXZlZEFuaW1hdGlvblN0YXJ0ZWROb3RpZmljYXRpb24gPSB0cnVlOworICAgICAg
ICBtX3N0YXJ0VGltZSA9IHdhbGxDbG9ja1RpbWU7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGludCkKQEAgLTg4MCw2ICs4ODcsOCBAQCBwcml2YXRl
OgogICAgIGludCBtX251bUFuaW1hdGVzOwogICAgIGJvb2wgbV9yZWNlaXZlZEFuaW1hdGlvblN0
YXJ0ZWROb3RpZmljYXRpb247CiAgICAgYm9vbCBtX3JlY2VpdmVkQW5pbWF0aW9uRmluaXNoZWRO
b3RpZmljYXRpb247CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRvdWJsZSBtX2ZpcnN0
TW9ub3RvbmljVGltZTsKIH07CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0
aW9uLCBydW5NdWx0aVRocmVhZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131039</attachid>
            <date>2012-03-09 08:00:09 -0800</date>
            <delta_ts>2012-03-09 08:49:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79537-20120309110007.patch</filename>
            <type>text/plain</type>
            <size>64797</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA2NGUwMDIwYmUxMmYw
ZTFkODM5NDI3NmUzNzJlNTI2OTc0ZGNhNi4uMTEwYzkyZTUyMTQxZjhkNzBjMGVlNTMyZjJiZjZm
NGVlODJkZTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTAzLTA4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHdlIHVzZSB0aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFy
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uCisKKyAgICAgICAgVGVzdGVk
IGluIENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb24KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bTo6c2V0QW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZl
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OkNDQW5pbWF0
aW9uU3RhcnRlZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0FuaW1hdGlvbkV2ZW50cy5oOgorICAgICAgICAoQ0NBbmltYXRpb25FdmVudCk6CisgICAg
ICAgIChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKENDSW5wdXRIYW5kbGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRB
bmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRB
dmFpbGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oOgor
ICAgICAgICAoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
OgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlUGFnZVNjYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoK
KyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQpOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
YWdlU2NhbGVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmlt
YXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
Q0NQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmlt
YXRpb246Onpvb21Ubyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
em9vbVdpdGhBbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
OnNjcm9sbE9mZnNldEF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1h
dGlvbjo6cGFnZVNjYWxlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5p
bWF0aW9uOjppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UGFnZVNjYWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaDoKKyAgICAg
ICAgKENDUGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxl
QW5pbWF0aW9uOjpzdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmlt
YXRpb246OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9u
OjplbmRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21wb3NpdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKENDU2luZ2xlVGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBs
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25F
dmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXApOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFBy
b3h5KToKKwogMjAxMi0wMy0wOSAgWm9sdGFuIEhlcmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFkZCBTVkdSZW5kZXJpbmdDb250ZXh0IGFuZCBtb3ZlIHRoZXJlIHRoZSBj
b250ZXh0IHJlbGF0ZWQgY29kZSBmcm9tIFNWR1JlbmRlclN1cHBvcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggMTM5ZjU1NjMzNzU2MDY4NGJhMzhjMWRhODRlZGVlNGJlMjI5Nzk3My4u
YWE0M2UyMGIyMGI4NGVlMGFmOTE1ZTdkYTQwZmEzZjgyNzFmOTNmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wMy0wOCAgSWFuIFZvbGxpY2sgIDx2
b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSB3ZSB1c2Ug
dGhlIGNvcnJlY3QgdGltZSB3aGVuIG5vdGlmeWluZyBhbmltYXRpb24gc3RhcnRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1MzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbgorCisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
KToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9N
YWluVGhyZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAg
ICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VGVzdEhv
b2tzOjphbmltYXRlTGF5ZXJzKToKKyAgICAgICAgKFdURjo6VGVzdEhvb2tzOjp1cGRhdGVBbmlt
YXRpb25zKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5
ZXJzKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyVHJlZUhvc3RDbGllbnQ6OnVwZGF0ZUFuaW1h
dGlvbnMpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpD
Q0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdEFkZEFuaW1hdGlvbjo6YW5pbWF0ZUxheWVycyk6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb246Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbik6CisKIDIwMTItMDMtMDkg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTAxOTEsIHIxMTAyMDIsIGFuZCByMTEwMjc5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcAppbmRleCAzOTA2ZTQ5YjQzMTE1ZGQzNTUxZjgyMzdkMzUwMWYwMTMy
NDA0MGQ2Li5mOTczODgwZmQxNzViMWE0OTM2YTJlZmY0MTc2ZjRjYmYxZTdjOWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcApAQCAtMTQyLDEzICsxNDIsMTIgQEAgYm9vbCBMYXllckNocm9taXVt
OjpoYXNBY3RpdmVBbmltYXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyQW5pbWF0aW9u
Q29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1
bTo6c2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYgZXZlbnQpCit2b2lk
IExheWVyQ2hyb21pdW06OnNldEFuaW1hdGlvbkV2ZW50KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQm
IGV2ZW50LCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUo
KSkgewogCiAgICAgY2FzZSBDQ0FuaW1hdGlvbkV2ZW50OjpTdGFydGVkOiB7Ci0gICAgICAgIGNv
bnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KiBzdGFydGVkRXZlbnQgPSBldmVudC50b0FuaW1h
dGlvblN0YXJ0ZWRFdmVudCgpOwotICAgICAgICBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUtPm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQoc3RhcnRlZEV2ZW50LT5zdGFydFRpbWUoKSk7CisgICAgICAg
IG1fbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh3YWxsQ2xv
Y2tUaW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXgg
MGNlM2JhMGZhMTk2NDE1NjQxMzZjMWNhYjg4NDI3YmFiMTg4ZDM3Ny4uZGQ1NWNkY2Q5MTZhZjZi
ZmEyYzg2NDkwZmNhN2I2Y2JmNWIxZmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjI1LDcg
KzIyNSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmKTsK
KyAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmLCBkb3Vi
bGUgd2FsbENsb2NrVGltZSk7CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgQ0NMYXll
ckltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5jcHAKaW5kZXggZDBkNzA1ZGUw
NTIwMDI3NDY3ZDVmZWI0ZGQ1MDM4OTYxNDZkZjI0NC4uOWY0MTg0NGNhMDVkMTM3YWMxZWQ3ZDhm
MmE3MTE4ZjQ0NDA2NjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcApA
QCAtNTEsMTQgKzUxLDEzIEBAIGNvbnN0IENDQW5pbWF0aW9uRmluaXNoZWRFdmVudCogQ0NBbmlt
YXRpb25FdmVudDo6dG9BbmltYXRpb25GaW5pc2hlZEV2ZW50KCkgY29uCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IENDQW5pbWF0aW9uRmluaXNoZWRFdmVudCo+KHRoaXMpOwogfQogCi1Q
YXNzT3duUHRyPENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dDo6Y3JlYXRlKGludCBsYXllcklkLCBkb3VibGUgc3RhcnRUaW1lKQorUGFzc093blB0cjxDQ0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudD4gQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShpbnQg
bGF5ZXJJZCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDQW5pbWF0aW9uU3RhcnRlZEV2
ZW50KGxheWVySWQsIHN0YXJ0VGltZSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NBbmlt
YXRpb25TdGFydGVkRXZlbnQobGF5ZXJJZCkpOwogfQogCi1DQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySWQsIGRvdWJsZSBzdGFydFRpbWUp
CitDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxh
eWVySWQpCiAgICAgOiBDQ0FuaW1hdGlvbkV2ZW50KGxheWVySWQpCi0gICAgLCBtX3N0YXJ0VGlt
ZShzdGFydFRpbWUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oCmluZGV4
IGZkYWE1ZDIzOWNkOWI1YjE4YjNiZDgwNTI0NGZhZDQwMjk1OTkzOGYuLmRhOTRlMWUyN2QxMzg4
NDViODkzZDU2MDhmYjg2YzY0YWJmOWEyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVu
dHMuaApAQCAtNTYsMTggKzU2LDE0IEBAIHByaXZhdGU6CiAvLyBJbmRpY2F0ZXMgdGhhdCBhbiBh
bmltYXRpb24gaGFzIHN0YXJ0ZWQgb24gYSBwYXJ0aWN1bGFyIGxheWVyLgogY2xhc3MgQ0NBbmlt
YXRpb25TdGFydGVkRXZlbnQgOiBwdWJsaWMgQ0NBbmltYXRpb25FdmVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ+IGNyZWF0ZShpbnQg
bGF5ZXJJZCwgZG91YmxlIHN0YXJ0VGltZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NBbmlt
YXRpb25TdGFydGVkRXZlbnQ+IGNyZWF0ZShpbnQgbGF5ZXJJZCk7CiAKICAgICB2aXJ0dWFsIH5D
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudCgpOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25z
dDsKIAotICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGltZTsg
fQotCiBwcml2YXRlOgotICAgIENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KGludCBsYXllcklkLCBk
b3VibGUgc3RhcnRUaW1lKTsKLQotICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKyAgICBleHBsaWNp
dCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChpbnQgbGF5ZXJJZCk7CiB9OwogCiAvLyBJbmRpY2F0
ZXMgdGhhdCBhbiBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgb24gYSBwYXJ0aWN1bGFyIGxheWVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NJbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggNmMwNTU5OTRjNThlY2E0MTEzMTlhOWM5OWQx
NDNmOWMxN2YzZTJjMi4uMzM3MjFmMWRmYzcwYzQ2NTcyNDdkNjc4MWZlOTY5ZjFhMjBiODlkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NJbnB1dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFy
Z2V0UG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgYW5jaG9yUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHBhZ2VTY2FsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIHN0YXJ0VGltZU1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb3VibGUgZHVyYXRpb25NcykgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgc3RhcnRUaW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVyYXRpb24pID0gMDsKIAogcHJvdGVjdGVkOgog
ICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DQ0lucHV0SGFuZGxlcigpIHsgfQogCiAgICAgdmlydHVhbCBpbnQgaWRl
bnRpZmllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoZG91YmxlIGZy
YW1lRGlzcGxheVRpbWVNcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUg
bW9ub3RvbmljVGltZSkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ0NJbnB1dEhhbmRsZXIoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcklt
cGwuY3BwCmluZGV4IGU4ZDZiYzdlZjc1YWM0MDNkMTFjYTYxMTU0ODhlY2M3MWQ1NjM1ZDUuLmYw
OWRjZmFlMDY0MjVkYTgzZGVlNmZhMGY5NjYzZjcwMjMwYzBhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApAQCAtNDksMTUg
KzQ5LDE1IEBAIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6fkNDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZl
bnRzVmVjdG9yJiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6
YW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2
ZW50cykKIHsKLSAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZnJhbWVCZWdp
blRpbWVTZWNzLCBldmVudHMpOwotICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRp
bWUoZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMpOwotICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMpOwotICAg
IHJlc29sdmVDb25mbGljdHMoZnJhbWVCZWdpblRpbWVTZWNzKTsKLSAgICB0aWNrQW5pbWF0aW9u
cyhmcmFtZUJlZ2luVGltZVNlY3MpOworICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0
VGljayhtb25vdG9uaWNUaW1lLCBldmVudHMpOworICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdG
b3JTdGFydFRpbWUobW9ub3RvbmljVGltZSwgZXZlbnRzKTsKKyAgICBzdGFydEFuaW1hdGlvbnNX
YWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KG1vbm90b25pY1RpbWUsIGV2ZW50cyk7CisgICAg
cmVzb2x2ZUNvbmZsaWN0cyhtb25vdG9uaWNUaW1lKTsKKyAgICB0aWNrQW5pbWF0aW9ucyhtb25v
dG9uaWNUaW1lKTsKICAgICBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhldmVudHMpOwotICAgIHN0
YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZnJhbWVCZWdpblRpbWVT
ZWNzLCBldmVudHMpOworICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFi
aWxpdHkobW9ub3RvbmljVGltZSwgZXZlbnRzKTsKIH0KIAogdm9pZCBDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGw6OmFkZChQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiBhbmltKQpA
QCAtODMsMjggKzgzLDI4IEBAIGJvb2wgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpo
YXNBY3RpdmVBbmltYXRpb24oKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JO
ZXh0VGljayhkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQordm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdG
b3JOZXh0VGljayhkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3Im
IGV2ZW50cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9u
cy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ydW5T
dGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yTmV4dFRpY2spIHsKLSAgICAg
ICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRp
b246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNl
dFN0YXJ0VGltZShub3cpOwotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKKyAgICAgICAgICAgIG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5p
bmcsIG1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5z
ZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICBldmVudHMuYXBwZW5kKEND
QW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCkpKTsKICAgICAgICAg
fQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImIGV2ZW50cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpz
dGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRp
bmdGb3JTdGFydFRpbWUgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zdGFydFRpbWUoKSA8PSBu
b3cpIHsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NB
Y3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICBldmVudHMuYXBwZW5k
KENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG5vdykpOwor
ICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ydW5TdGF0ZSgpID09IENDQWN0aXZl
QW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
c3RhcnRUaW1lKCkgPD0gbW9ub3RvbmljVGltZSkgeworICAgICAgICAgICAgbV9hY3RpdmVBbmlt
YXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3Rv
bmljVGltZSk7CisgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2
ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCkpKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdG
b3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG5vdywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3Im
IGV2ZW50cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1h
dGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzKQogewogICAgIC8vIEZpcnN0IGNvbGxlY3Qg
cnVubmluZyBwcm9wZXJ0aWVzLgogICAgIFRhcmdldFByb3BlcnRpZXMgYmxvY2tlZFByb3BlcnRp
ZXM7CkBAIC0xMzQsMTMgKzEzNCwxMyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eQogCiAgICAg
ICAgICAgICAvLyBJZiB0aGUgaW50ZXJzZWN0aW9uIGlzIG51bGwsIHRoZW4gd2UgYXJlIGZyZWUg
dG8gc3RhcnQgdGhlIGFuaW1hdGlvbnMgaW4gdGhlIGdyb3VwLgogICAgICAgICAgICAgaWYgKG51
bGxJbnRlcnNlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBub3cpOwotICAgICAgICAg
ICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG5vdyk7Ci0gICAgICAg
ICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1f
Y2xpZW50LT5pZCgpLCBub3cpKTsKKyAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1l
KTsKKyAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZSht
b25vdG9uaWNUaW1lKTsKKyAgICAgICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCkpKTsKICAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2op
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAo
KSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPmdyb3VwKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRp
b246OlJ1bm5pbmcsIG5vdyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbal0tPnNldFN0YXJ0VGltZShub3cpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9h
Y3RpdmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmlu
ZywgbW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbal0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE0OCw3ICsxNDgsNyBA
QCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2Fp
dGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlckltcGw6OnJlc29sdmVDb25mbGljdHMoZG91YmxlIG5vdykKK3ZvaWQgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBtb25v
dG9uaWNUaW1lKQogewogICAgIC8vIEZpbmQgYW55IGFuaW1hdGlvbnMgdGhhdCBhcmUgYW5pbWF0
aW5nIHRoZSBzYW1lIHByb3BlcnR5IGFuZCByZXNvbHZlIHRoZQogICAgIC8vIGNvbmZpY3QuIFdl
IGNvdWxkIGV2ZW50dWFsbHkgYmxlbmQsIGJ1dCBmb3Igbm93IHdlJ2xsIGp1c3QgYWJvcnQgdGhl
CkBAIC0xNjAsOSArMTYwLDkgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6
OnJlc29sdmVDb25mbGljdHMoZG91YmxlIG5vdykKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGog
PSBpICsgMTsgaiA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraikgewogICAgICAgICAg
ICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVB
bmltYXRpb246OlJ1bm5pbmcgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0
eSgpID09IG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+dGFyZ2V0UHJvcGVydHkoKSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5zdGFydFRpbWUoKSA+IG1f
YWN0aXZlQW5pbWF0aW9uc1tqXS0+c3RhcnRUaW1lKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpB
Ym9ydGVkLCBub3cpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25z
W2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6QWJvcnRlZCwgbW9ub3RvbmljVGlt
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkFib3J0
ZWQsIG5vdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpBYm9ydGVkLCBtb25vdG9uaWNUaW1lKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE5NCwxOSAr
MTk0LDE5IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpwdXJnZUZpbmlz
aGVkQW5pbWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50c1ZlCiAgICAgfQogfQogCi12b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6dGlja0FuaW1hdGlvbnMoZG91YmxlIG5vdykKK3Zv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUg
bW9ub3RvbmljVGltZSkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5p
bWF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ld
LT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nKSB7Ci0gICAgICAgICAg
ICBkb3VibGUgdHJpbW1lZCA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dHJpbVRpbWVUb0N1cnJl
bnRJdGVyYXRpb24obm93KTsKKyAgICAgICAgICAgIGRvdWJsZSB0cmltbWVkID0gbV9hY3RpdmVB
bmltYXRpb25zW2ldLT50cmltVGltZVRvQ3VycmVudEl0ZXJhdGlvbihtb25vdG9uaWNUaW1lKTsK
IAogICAgICAgICAgICAgc3dpdGNoIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3Bl
cnR5KCkpIHsKIAogICAgICAgICAgICAgY2FzZSBDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3Jt
OiB7CiAgICAgICAgICAgICAgICAgY29uc3QgQ0NUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSogdHJh
bnNmb3JtQW5pbWF0aW9uQ3VydmUgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmN1cnZlKCktPnRv
VHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtYXRyaXggPSB0cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZS0+Z2V0VmFsdWUo
dHJpbW1lZCwgbV9jbGllbnQtPmJvdW5kcygpKTsKLSAgICAgICAgICAgICAgICBpZiAobV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQobm93KSkKLSAgICAgICAgICAgICAgICAgICAg
bV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6Rmlu
aXNoZWQsIG5vdyk7CisgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
aXNGaW5pc2hlZEF0KG1vbm90b25pY1RpbWUpKQorICAgICAgICAgICAgICAgICAgICBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpGaW5pc2hlZCwg
bW9ub3RvbmljVGltZSk7CiAKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2V0VHJhbnNmb3Jt
KG1hdHJpeCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTUsOCArMjE1LDggQEAgdm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBu
b3cpCiAgICAgICAgICAgICBjYXNlIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5OiB7CiAgICAg
ICAgICAgICAgICAgY29uc3QgQ0NGbG9hdEFuaW1hdGlvbkN1cnZlKiBmbG9hdEFuaW1hdGlvbkN1
cnZlID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT5jdXJ2ZSgpLT50b0Zsb2F0QW5pbWF0aW9uQ3Vy
dmUoKTsKICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBvcGFjaXR5ID0gZmxvYXRBbmltYXRp
b25DdXJ2ZS0+Z2V0VmFsdWUodHJpbW1lZCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+aXNGaW5pc2hlZEF0KG5vdykpCi0gICAgICAgICAgICAgICAgICAgIG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlz
aGVkLCBub3cpOworICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmlz
RmluaXNoZWRBdChtb25vdG9uaWNUaW1lKSkKKyAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVB
bmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6RmluaXNoZWQsIG1v
bm90b25pY1RpbWUpOwogCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNldE9wYWNpdHkob3Bh
Y2l0eSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oCmluZGV4IDM1NDAwNDliMDM2MWZkZTYyMzk1
YWJjMGU0ZTE1MTcwNDJkNDQ4YjAuLjZhYzAwZTdhZTE3OGM1NzczNjYzN2IyMmJkYTJjOTI5MjIx
ZGE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCgpOwogCi0gICAgdm9pZCBhbmltYXRlKGRvdWJsZSBm
cmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CisgICAgdm9pZCBh
bmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwog
CiAgICAgdm9pZCBhZGQoUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4pOwogCkBAIC03OCwx
MyArNzgsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgYW5pbWF0b3IgaXMgb3duZWQgYnkgdGhl
IGxheWVyLgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbChDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGxDbGllbnQqKTsKIAotICAgIHZvaWQgc3RhcnRBbmlt
YXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVj
dG9yJik7Ci0gICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJs
ZSBub3csIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7Ci0gICAgdm9pZCBzdGFydEFuaW1hdGlv
bnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBub3csIENDQW5pbWF0aW9uRXZl
bnRzVmVjdG9yJik7Ci0gICAgdm9pZCByZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBub3cpOworICAg
IHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKGRvdWJsZSBtb25vdG9uaWNU
aW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOworICAgIHZvaWQgc3RhcnRBbmltYXRpb25z
V2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImKTsKKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFp
bGFiaWxpdHkoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7
CisgICAgdm9pZCByZXNvbHZlQ29uZmxpY3RzKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKICAgICB2
b2lkIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJik7CiAK
LSAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cpOworICAgIHZvaWQgdGlja0FuaW1h
dGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogCiAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAgICBWZWN0b3I8T3duUHRyPENDQWN0aXZlQW5p
bWF0aW9uPiA+IG1fYWN0aXZlQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IDg2MmVkMzk0NzEyYzRmNmM2ODU1ZjM3Mjc0NWYxNDZmNjk2MTg5ZDMuLjE0ZTI4
MjgwZDUxZGE5ODM0YzlkYTEyMmQ2MjkxZmE5YjA2YzAyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtMzAyLDEwICszMDIsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnNldE5lZWRzUmVkcmF3KCkKICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29tcG9zaXRlKCk7
CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0
cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiBl
dmVudHMsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIEFTU0VSVChDQ1RocmVhZFByb3h5
Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgc2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKCpldmVu
dHMsIG1fcm9vdExheWVyLmdldCgpKTsKKyAgICBzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUo
KmV2ZW50cywgbV9yb290TGF5ZXIuZ2V0KCksIHdhbGxDbG9ja1RpbWUpOwogfQogCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9v
dExheWVyKQpAQCAtNjQwLDE1ICs2NDAsMTUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0
ZVRleHR1cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXIKICAg
ICBtX2RlbGV0ZVRleHR1cmVBZnRlckNvbW1pdExpc3QuYXBwZW5kKHRleHR1cmUpOwogfQogCi12
b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKGNvbnN0IEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMsIExheWVyQ2hyb21pdW0qIGxheWVyKQordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEFuaW1hdGlvbkV2ZW50c1JlY3Vyc2l2ZShjb25zdCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzLCBMYXllckNocm9taXVtKiBsYXllciwgZG91Ymxl
IHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgZm9yIChzaXplX3QgZXZlbnRJbmRleCA9IDA7IGV2ZW50
SW5kZXggPCBldmVudHMuc2l6ZSgpOyArK2V2ZW50SW5kZXgpIHsKICAgICAgICAgaWYgKGxheWVy
LT5pZCgpID09IGV2ZW50c1tldmVudEluZGV4XS0+bGF5ZXJJZCgpKQotICAgICAgICAgICAgbGF5
ZXItPnNldEFuaW1hdGlvbkV2ZW50KCpldmVudHNbZXZlbnRJbmRleF0pOworICAgICAgICAgICAg
bGF5ZXItPnNldEFuaW1hdGlvbkV2ZW50KCpldmVudHNbZXZlbnRJbmRleF0sIHdhbGxDbG9ja1Rp
bWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4
IDwgbGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2NoaWxkSW5kZXgpCi0gICAgICAgIHNldEFu
aW1hdGlvbkV2ZW50c1JlY3Vyc2l2ZShldmVudHMsIGxheWVyLT5jaGlsZHJlbigpW2NoaWxkSW5k
ZXhdLmdldCgpKTsKKyAgICAgICAgc2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKGV2ZW50cywg
bGF5ZXItPmNoaWxkcmVuKClbY2hpbGRJbmRleF0uZ2V0KCksIHdhbGxDbG9ja1RpbWUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDgzYTBjY2VlNGQxOTIxYzYyZGRlNjk0YWM1MDE3OGQwYWY3ZWM4NmIuLmQ1MjYyMjYyZDRmMmNj
YTU0NDk2Y2ZiYmE3YTU1MGRiOTMyYmE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Nv
bW1pdCgpOwogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAotICAgIHZvaWQgc2V0QW5pbWF0
aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+KTsKKyAgICB2b2lk
IHNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwg
ZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogCiAgICAgTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKCkg
eyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXllckNocm9taXVtKiBy
b290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQpAQCAtMjI1LDcg
KzIyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNlcnZlVGV4dHVyZXMoKTsKICAgICB2b2lk
IGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCi0gICAgdm9pZCBzZXRBbmltYXRpb25FdmVudHNSZWN1
cnNpdmUoY29uc3QgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImLCBMYXllckNocm9taXVtKik7Cisg
ICAgdm9pZCBzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUoY29uc3QgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImLCBMYXllckNocm9taXVtKiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogCiAgICAg
aW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKaW5kZXggNGFjMmZiMzJjM2EyZTMzZDVhNTUzNDM0MmI0MjE0MDgzYzNhNDI2
Ni4uZmE5ZjNkYzRmNjBlYTFhZDNhMjM2YmM1ZTkyNTBmN2FjYmZhMzJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIG9uVGltZXJUaWNrKCkKICAgICB7Ci0gICAgICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAw
LjApOworICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpLCBjdXJyZW50VGltZSgpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEFj
dGl2ZShib29sIGFjdGl2ZSkKQEAgLTEzOSwxMyArMTM5LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNE
KiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZXh0KCkKICAgICByZXR1cm4gbV9sYXllclJlbmRl
cmVyID8gbV9sYXllclJlbmRlcmVyLT5jb250ZXh0KCkgOiAwOwogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxs
Q2xvY2tUaW1lKQogewotICAgIGFuaW1hdGVQYWdlU2NhbGUoZnJhbWVCZWdpblRpbWVNcyk7Ci0g
ICAgYW5pbWF0ZUxheWVycyhmcmFtZUJlZ2luVGltZU1zKTsKKyAgICBhbmltYXRlUGFnZVNjYWxl
KG1vbm90b25pY1RpbWUpOworICAgIGFuaW1hdGVMYXllcnMobW9ub3RvbmljVGltZSwgd2FsbENs
b2NrVGltZSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQs
IGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZU1zLCBkb3VibGUgZHVyYXRpb25NcykK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2Fs
ZSwgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIGlmICghbV9zY3Jv
bGxMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKQEAgLTE1NiwxNSArMTU2LDE1IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6
ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgSW50U2l6ZSBzY2FsZWRDb250ZW50U2l6ZSA9IGNvbnRl
bnRTaXplKCk7CiAgICAgc2NhbGVkQ29udGVudFNpemUuc2NhbGUobV9wYWdlU2NhbGVEZWx0YSk7
CiAKLSAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbiA9IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpjcmVh
dGUoc2Nyb2xsVG90YWwsIHNjYWxlVG90YWwsIG1fdmlld3BvcnRTaXplLCBzY2FsZWRDb250ZW50
U2l6ZSwgc3RhcnRUaW1lTXMpOworICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uID0gQ0NQYWdlU2Nh
bGVBbmltYXRpb246OmNyZWF0ZShzY3JvbGxUb3RhbCwgc2NhbGVUb3RhbCwgbV92aWV3cG9ydFNp
emUsIHNjYWxlZENvbnRlbnRTaXplLCBzdGFydFRpbWUpOwogCiAgICAgaWYgKGFuY2hvclBvaW50
KSB7CiAgICAgICAgIEludFNpemUgd2luZG93QW5jaG9yKHRhcmdldFBvc2l0aW9uKTsKICAgICAg
ICAgd2luZG93QW5jaG9yLnNjYWxlKHNjYWxlVG90YWwgLyBwYWdlU2NhbGUpOwogICAgICAgICB3
aW5kb3dBbmNob3IgLT0gc2Nyb2xsVG90YWw7Ci0gICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9u
LT56b29tV2l0aEFuY2hvcih3aW5kb3dBbmNob3IsIHBhZ2VTY2FsZSwgZHVyYXRpb25Ncyk7Cisg
ICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLT56b29tV2l0aEFuY2hvcih3aW5kb3dBbmNob3Is
IHBhZ2VTY2FsZSwgZHVyYXRpb24pOwogICAgIH0gZWxzZQotICAgICAgICBtX3BhZ2VTY2FsZUFu
aW1hdGlvbi0+em9vbVRvKHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0aW9uTXMpOwor
ICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9vbVRvKHRhcmdldFBvc2l0aW9uLCBwYWdl
U2NhbGUsIGR1cmF0aW9uKTsKIAogICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRo
cmVhZCgpOwogICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwpAQCAt
Mjg5LDE0ICsyODksMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpvcHRpbWl6ZVJlbmRl
clBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMpCiAgICAgUGxhdGZvcm1TdXBwb3J0Ojpo
aXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5waXhlbE92ZXJkcmF3Q3VsbGVkIiwgc3Rh
dGljX2Nhc3Q8aW50Pihub3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNDdWxs
ZWQpLCAxMDAsIDEwMDAwMDAsIDUwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjph
bmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgZnJhbWVC
ZWdpblRpbWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzLCBib29sJiBkaWRB
bmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwqIGN1cnJlbnQsIGRvdWJsZSBt
b25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0
b3ImIGV2ZW50cywgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNBbmltYXRlTGF5ZXJzKQog
ewogICAgIGJvb2wgc3VidHJlZU5lZWRzQW5pbWF0ZUxheWVycyA9IGZhbHNlOwogCiAgICAgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKiBjdXJyZW50Q29udHJvbGxlciA9IGN1cnJlbnQt
PmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpOwogCiAgICAgYm9vbCBoYWRBY3RpdmVBbmltYXRp
b24gPSBjdXJyZW50Q29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci0gICAgY3VycmVu
dENvbnRyb2xsZXItPmFuaW1hdGUoZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMpOworICAgIGN1
cnJlbnRDb250cm9sbGVyLT5hbmltYXRlKG1vbm90b25pY1RpbWUsIGV2ZW50cyk7CiAgICAgYm9v
bCBzdGFydGVkQW5pbWF0aW9uID0gZXZlbnRzLnNpemUoKSA+IDA7CiAKICAgICAvLyBXZSBhbmlt
YXRlZCBpZiB3ZSBlaXRoZXIgdGlja2VkIGEgcnVubmluZyBhbmltYXRpb24sIG9yIHN0YXJ0ZWQg
YSBuZXcgYW5pbWF0aW9uLgpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVudCwgZG91Ymxl
IGZyCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnQtPmNoaWxkcmVuKCkuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgYm9vbCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyA9IGZhbHNl
OwotICAgICAgICBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKGN1cnJlbnQtPmNoaWxkcmVuKClbaV0u
Z2V0KCksIGZyYW1lQmVnaW5UaW1lU2VjcywgZXZlbnRzLCBkaWRBbmltYXRlLCBjaGlsZE5lZWRz
QW5pbWF0ZUxheWVycyk7CisgICAgICAgIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoY3VycmVudC0+
Y2hpbGRyZW4oKVtpXS5nZXQoKSwgbW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSwgZXZlbnRz
LCBkaWRBbmltYXRlLCBjaGlsZE5lZWRzQW5pbWF0ZUxheWVycyk7CiAgICAgICAgIGlmIChjaGls
ZE5lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgICAgIHN1YnRyZWVOZWVkc0FuaW1hdGVMYXll
cnMgPSB0cnVlOwogICAgIH0KQEAgLTcyNiwyNiArNzI2LDI2IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2V0RnVsbFJvb3RMYXllckRhbWFnZSgpCiAgICAgfQogfQogCi12b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMp
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIG1vbm90
b25pY1RpbWUpCiB7CiAgICAgaWYgKCFtX3BhZ2VTY2FsZUFuaW1hdGlvbikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IHRvU2l6ZShtX3Njcm9sbExheWVySW1w
bC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsK
IAotICAgIHNldFBhZ2VTY2FsZURlbHRhKG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5wYWdlU2NhbGVB
dFRpbWUoZnJhbWVCZWdpblRpbWVNcykgLyBtX3BhZ2VTY2FsZSk7Ci0gICAgSW50U2l6ZSBuZXh0
U2Nyb2xsID0gbV9wYWdlU2NhbGVBbmltYXRpb24tPnNjcm9sbE9mZnNldEF0VGltZShmcmFtZUJl
Z2luVGltZU1zKTsKKyAgICBzZXRQYWdlU2NhbGVEZWx0YShtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+
cGFnZVNjYWxlQXRUaW1lKG1vbm90b25pY1RpbWUpIC8gbV9wYWdlU2NhbGUpOworICAgIEludFNp
emUgbmV4dFNjcm9sbCA9IG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5zY3JvbGxPZmZzZXRBdFRpbWUo
bW9ub3RvbmljVGltZSk7CiAgICAgbmV4dFNjcm9sbC5zY2FsZSgxIC8gbV9wYWdlU2NhbGVEZWx0
YSk7CiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KG5leHRTY3JvbGwgLSBzY3JvbGxU
b3RhbCk7CiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiAKLSAg
ICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUoZnJh
bWVCZWdpblRpbWVNcykpIHsKKyAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5pbWF0
aW9uQ29tcGxldGVBdFRpbWUobW9ub3RvbmljVGltZSkpIHsKICAgICAgICAgbV9wYWdlU2NhbGVB
bmltYXRpb24uY2xlYXIoKTsKICAgICAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25JbXBs
VGhyZWFkKCk7CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVM
YXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1l
KQogewogICAgIGlmICghbV9zZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwgIW1f
bmVlZHNBbmltYXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXllckltcGwpCiAgICAgICAgIHJldHVybjsK
QEAgLTc1NSwxMCArNzU1LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxh
eWVycyhkb3VibGUgZnJhbWVCZWdpblRpbWVNcykKICAgICBPd25QdHI8Q0NBbmltYXRpb25FdmVu
dHNWZWN0b3I+IGV2ZW50cyhhZG9wdFB0cihuZXcgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IpKTsK
IAogICAgIGJvb2wgZGlkQW5pbWF0ZSA9IGZhbHNlOwotICAgIGFuaW1hdGVMYXllcnNSZWN1cnNp
dmUobV9yb290TGF5ZXJJbXBsLmdldCgpLCBmcmFtZUJlZ2luVGltZU1zIC8gMTAwMCwgKmV2ZW50
cywgZGlkQW5pbWF0ZSwgbV9uZWVkc0FuaW1hdGVMYXllcnMpOworICAgIGFuaW1hdGVMYXllcnNS
ZWN1cnNpdmUobV9yb290TGF5ZXJJbXBsLmdldCgpLCBtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tU
aW1lLCAqZXZlbnRzLCBkaWRBbmltYXRlLCBtX25lZWRzQW5pbWF0ZUxheWVycyk7CiAKICAgICBp
ZiAoIWV2ZW50cy0+aXNFbXB0eSgpKQotICAgICAgICBtX2NsaWVudC0+cG9zdEFuaW1hdGlvbkV2
ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChldmVudHMucmVsZWFzZSgpKTsKKyAgICAgICAg
bV9jbGllbnQtPnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoZXZl
bnRzLnJlbGVhc2UoKSwgd2FsbENsb2NrVGltZSk7CiAKICAgICBpZiAoZGlkQW5pbWF0ZSkKICAg
ICAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZTM0NzExYjNhZDQzZDY5Y2ViN2FlMDU4ZmJj
OGU5ODI4OWFmN2MwNy4uMWNmZDBmYjY3NjYwMzAzNzI4YzFhOTYxMzNlZTNjODQwOGI4NzZjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTMsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVh
ZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhy
ZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093
blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSA9IDA7
CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUg
YXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQpAQCAtNzEsMTIgKzcxLDEyIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0LCBjb25zdCBJbnRQb2ludCYpOwogICAg
IHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVFbmQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5j
aG9yUG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIHN0YXJ0VGltZU1zLCBkb3VibGUgZHVy
YXRpb25Ncyk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9hdCBwYWdlU2Nh
bGUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBkdXJhdGlvbik7CiAKICAgICAvLyBWaXJ0dWFs
IGZvciB0ZXN0aW5nLgogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpOwogICAgIHZpcnR1
YWwgdm9pZCBjb21taXRDb21wbGV0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSBmcmFtZURpc3BsYXlUaW1lTXMpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBt
b25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdMYXllcnMoKTsKIAogICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCBpbXBsZW1l
bnRhdGlvbgpAQCAtMTM0LDEwICsxMzQsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEND
TGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQqKTsKIAotICAgIHZvaWQgYW5pbWF0ZVBhZ2VTY2FsZShkb3VibGUgZnJhbWVCZWdpblRp
bWVNcyk7CisgICAgdm9pZCBhbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsK
IAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVM
YXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRl
TGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAKICAg
ICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9zb3VyY2VG
cmFtZU51bWJlcjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tE
YW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9vdERyYXdMYXllciwgY29uc3QgQ0NM
YXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIHZvaWQgY2FsY3VsYXRlUmVu
ZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmLCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CiAgICAgdm9pZCBvcHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
Jik7Ci0gICAgdm9pZCBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiwgZG91Ymxl
IGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImLCBib29sJiBkaWRB
bmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOworICAgIHZvaWQgYW5pbWF0ZUxheWVy
c1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2Fs
bENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImLCBib29sJiBkaWRBbmltYXRlLCBi
b29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwogICAgIEludFNpemUgY29udGVudFNpemUoKSBjb25z
dDsKICAgICB2b2lkIHNlbmREaWRMb3NlQ29udGV4dFJlY3Vyc2l2ZShDQ0xheWVySW1wbCopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKaW5kZXggMzNiNmYyMmZi
ZWRmNTNlMWJhNGI2Mjk0NDkxNDg3ZjYwOGFkNTA4Yi4uNDlhMTI1ZDIzYzM4Nzc0NWJmYzUwOTEy
ODcyY2FhZjJmZjM4OGQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9u
LmNwcApAQCAtMjIsNyArMjIsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCkBAIC0zNiwxMyArMzYsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Y3Jl
YXRlKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwgY29u
c3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRvdWJs
ZSBzdGFydFRpbWVNcykKK1Bhc3NPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IENDUGFnZVNj
YWxlQW5pbWF0aW9uOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBh
Z2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBj
b250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENDUGFnZVNjYWxlQW5pbWF0aW9uKHNjcm9sbFN0YXJ0LCBwYWdlU2NhbGVTdGFydCwgd2luZG93
U2l6ZSwgY29udGVudFNpemUsIHN0YXJ0VGltZU1zKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihzY3JvbGxTdGFydCwgcGFnZVNjYWxlU3RhcnQsIHdpbmRv
d1NpemUsIGNvbnRlbnRTaXplLCBzdGFydFRpbWUpKTsKIH0KIAogCi1DQ1BhZ2VTY2FsZUFuaW1h
dGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZs
b2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRT
aXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZU1zKQorQ0NQYWdlU2NhbGVBbmltYXRp
b246OkNDUGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9h
dCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6
ZSYgY29udGVudFNpemUsIGRvdWJsZSBzdGFydFRpbWUpCiAgICAgOiBtX3Njcm9sbFN0YXJ0KHNj
cm9sbFN0YXJ0KQogICAgICwgbV9wYWdlU2NhbGVTdGFydChwYWdlU2NhbGVTdGFydCkKICAgICAs
IG1fd2luZG93U2l6ZSh3aW5kb3dTaXplKQpAQCAtNTAsMTEgKzUwLDExIEBAIENDUGFnZVNjYWxl
QW5pbWF0aW9uOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFy
dCwgZmxvYXQgcGFnCiAgICAgLCBtX2FuY2hvck1vZGUoZmFsc2UpCiAgICAgLCBtX3Njcm9sbEVu
ZChzY3JvbGxTdGFydCkKICAgICAsIG1fcGFnZVNjYWxlRW5kKHBhZ2VTY2FsZVN0YXJ0KQotICAg
ICwgbV9zdGFydFRpbWVNcyhzdGFydFRpbWVNcykKKyAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0VGlt
ZSkKIHsKIH0KIAotdm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVRvKGNvbnN0IEludFNp
emUmIGZpbmFsU2Nyb2xsLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMp
Cit2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxT
Y3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgaWYg
KG1fcGFnZVNjYWxlU3RhcnQgIT0gZmluYWxQYWdlU2NhbGUpIHsKICAgICAgICAgLy8gRm9yIHVu
aWZvcm0tbG9va2luZyB6b29taW5nLCBpbmZlciB0aGUgYW5jaG9yIChwb2ludCB0aGF0IHJlbWFp
bnMgaW4KQEAgLTc4LDE4ICs3OCwxOCBAQCB2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29t
VG8oY29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYQogICAgICAg
ICBmbG9hdCByYXRpb1kgPSAoc3RhcnRSZWN0LnkoKSAtIGVuZFJlY3QueSgpKSAvIChlbmRSZWN0
LmhlaWdodCgpIC0gc3RhcnRSZWN0LmhlaWdodCgpKTsKIAogICAgICAgICBJbnRTaXplIGFuY2hv
cihtX3dpbmRvd1NpemUud2lkdGgoKSAqIHJhdGlvWCwgbV93aW5kb3dTaXplLmhlaWdodCgpICog
cmF0aW9ZKTsKLSAgICAgICAgem9vbVdpdGhBbmNob3IoYW5jaG9yLCBmaW5hbFBhZ2VTY2FsZSwg
ZHVyYXRpb25Ncyk7CisgICAgICAgIHpvb21XaXRoQW5jaG9yKGFuY2hvciwgZmluYWxQYWdlU2Nh
bGUsIGR1cmF0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHVy
ZSB0cmFuc2xhdGlvbiwgdGhlbiB0aGVyZSBleGlzdHMgbm8gYW5jaG9yLiBMaW5lYXJseQogICAg
ICAgICAvLyBpbnRlcnBvbGF0ZSB0aGUgc2Nyb2xsIG9mZnNldCBpbnN0ZWFkLgogICAgICAgICBt
X3Njcm9sbEVuZCA9IGZpbmFsU2Nyb2xsOwogICAgICAgICBtX3BhZ2VTY2FsZUVuZCA9IGZpbmFs
UGFnZVNjYWxlOwotICAgICAgICBtX2R1cmF0aW9uTXMgPSBkdXJhdGlvbk1zOworICAgICAgICBt
X2R1cmF0aW9uID0gZHVyYXRpb247CiAgICAgICAgIG1fYW5jaG9yTW9kZSA9IGZhbHNlOwogICAg
IH0KIH0KIAotdm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVdpdGhBbmNob3IoY29uc3Qg
SW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMp
Cit2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25zdCBJbnRTaXpl
JiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pCiB7CiAgICAg
bV9zY3JvbGxFbmQgPSBtX3Njcm9sbFN0YXJ0ICsgYW5jaG9yOwogICAgIG1fc2Nyb2xsRW5kLnNj
YWxlKGZpbmFsUGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFydCk7CkBAIC0xMDMsMzEgKzEwMywz
MSBAQCB2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25zdCBJbnRT
aXplJiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZQogCiAgICAgbV9hbmNob3IgPSBhbmNob3I7CiAg
ICAgbV9wYWdlU2NhbGVFbmQgPSBmaW5hbFBhZ2VTY2FsZTsKLSAgICBtX2R1cmF0aW9uTXMgPSBk
dXJhdGlvbk1zOworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKICAgICBtX2FuY2hvck1vZGUg
PSB0cnVlOwogfQogCi1JbnRTaXplIENDUGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRB
dFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK0ludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246
OnNjcm9sbE9mZnNldEF0VGltZShkb3VibGUgdGltZSkgY29uc3QKIHsKLSAgICByZXR1cm4gc2Ny
b2xsT2Zmc2V0QXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lTXMpKTsKKyAgICByZXR1
cm4gc2Nyb2xsT2Zmc2V0QXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lKSk7CiB9CiAK
LWZsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwYWdlU2NhbGVBdFRpbWUoZG91YmxlIHRpbWVN
cykgY29uc3QKK2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwYWdlU2NhbGVBdFRpbWUoZG91
YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2VTY2FsZUF0UmF0aW8ocHJvZ3Jlc3NS
YXRpb0ZvclRpbWUodGltZU1zKSk7CisgICAgcmV0dXJuIHBhZ2VTY2FsZUF0UmF0aW8ocHJvZ3Jl
c3NSYXRpb0ZvclRpbWUodGltZSkpOwogfQogCi1ib29sIENDUGFnZVNjYWxlQW5pbWF0aW9uOjpp
c0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0Citib29sIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lKSBj
b25zdAogewotICAgIHJldHVybiB0aW1lTXMgPj0gZW5kVGltZU1zKCk7CisgICAgcmV0dXJuIHRp
bWUgPj0gZW5kVGltZSgpOwogfQogCi1mbG9hdCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jl
c3NSYXRpb0ZvclRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK2Zsb2F0IENDUGFnZVNjYWxlQW5p
bWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZSkgY29uc3QKIHsKLSAgICBp
ZiAoaXNBbmltYXRpb25Db21wbGV0ZUF0VGltZSh0aW1lTXMpKQorICAgIGlmIChpc0FuaW1hdGlv
bkNvbXBsZXRlQXRUaW1lKHRpbWUpKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIHJldHVybiAo
dGltZU1zIC0gbV9zdGFydFRpbWVNcykgLyBtX2R1cmF0aW9uTXM7CisgICAgcmV0dXJuICh0aW1l
IC0gbV9zdGFydFRpbWUpIC8gbV9kdXJhdGlvbjsKIH0KIAogSW50U2l6ZSBDQ1BhZ2VTY2FsZUFu
aW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRSYXRpbyhmbG9hdCByYXRpbykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNj
YWxlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oCmluZGV4IGY0YjFiZjQ3YTlhOTc2NzhjMzZlZjYy
YWJjYjRjZGUwNWM4NGRlODkuLmQ5YWNiNDkxMWRiYzI1NmZmOWViZjllYTdlMmQzZWMzM2U2ZmYw
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaApAQCAtMzksMzkgKzM5
LDM5IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3Qgd2l0aCB0aGUgc3RhcnRpbmcgcGFnZSBz
Y2FsZSBhbmQgc2Nyb2xsIG9mZnNldCAod2hpY2ggaXMgaW4KICAgICAvLyBwYWdlU2NhbGVTdGFy
dCBzcGFjZSkuIFRoZSB3aW5kb3cgc2l6ZSBpcyB0aGUgdXNlci12aWV3YWJsZSBhcmVhCiAgICAg
Ly8gaW4gcGl4ZWxzLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9u
PiBjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0
LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwg
ZG91YmxlIHN0YXJ0VGltZU1zKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1BhZ2VTY2FsZUFu
aW1hdGlvbj4gY3JlYXRlKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2Nh
bGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVu
dFNpemUsIGRvdWJsZSBzdGFydFRpbWUpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2Rz
IGluaXRpYWxpemUgdGhlIGFuaW1hdGlvbi4gQ2FsbCBvbmUgb2YgdGhlbQogICAgIC8vIGltbWVk
aWF0ZWx5IGFmdGVyIGNvbnN0cnVjdGlvbiB0byBzZXQgdGhlIGZpbmFsIHNjcm9sbCBhbmQgcGFn
ZSBzY2FsZS4KIAogICAgIC8vIFpvb20gd2hpbGUgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSB0
b3AtbGVmdCBzY3JvbGwgcG9zaXRpb24uIFRoZQogICAgIC8vIHNjcm9sbCBvZmZzZXQgaXMgaW4g
ZmluYWxQYWdlU2NhbGUgY29vcmRpbmF0ZXMuCi0gICAgdm9pZCB6b29tVG8oY29uc3QgSW50U2l6
ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25Ncyk7
CisgICAgdm9pZCB6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFs
UGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pOwogCiAgICAgLy8gWm9vbSBiYXNlZCBvbiBhIHNw
ZWNpZmllZCBvbnNjcmVlbiBhbmNob3IsIHdoaWNoIHdpbGwgcmVtYWluIGF0IHRoZSBzYW1lCiAg
ICAgLy8gcG9zaXRpb24gb24gdGhlIHNjcmVlbiB0aHJvdWdob3V0IHRoZSBhbmltYXRpb24uIFRo
ZSBhbmNob3IgaXMgaW4gbG9jYWwKICAgICAvLyBzcGFjZSByZWxhdGl2ZSB0byBzY3JvbGxTdGFy
dC4KLSAgICB2b2lkIHpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQg
ZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsKKyAgICB2b2lkIHpvb21XaXRoQW5j
aG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBk
dXJhdGlvbik7CiAKICAgICAvLyBDYWxsIHRoZXNlIGZ1bmN0aW9ucyB3aGlsZSB0aGUgYW5pbWF0
aW9uIGlzIGluIHByb2dyZXNzIHRvIG91dHB1dCB0aGUKICAgICAvLyBjdXJyZW50IHN0YXRlLgot
ICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0QXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OwotICAg
IGZsb2F0IHBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdDsKLSAgICBib29sIGlz
QW5pbWF0aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3Q7CisgICAgSW50U2l6
ZSBzY3JvbGxPZmZzZXRBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0OworICAgIGZsb2F0IHBhZ2VT
Y2FsZUF0VGltZShkb3VibGUgdGltZSkgY29uc3Q7CisgICAgYm9vbCBpc0FuaW1hdGlvbkNvbXBs
ZXRlQXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0
aG9kcyByZXR1cm4gc3RhdGUgd2hpY2ggaXMgaW52YXJpYW50IHRocm91Z2hvdXQgdGhlCiAgICAg
Ly8gY291cnNlIG9mIHRoZSBhbmltYXRpb24uCi0gICAgZG91YmxlIHN0YXJ0VGltZU1zKCkgY29u
c3QgeyByZXR1cm4gbV9zdGFydFRpbWVNczsgfQotICAgIGRvdWJsZSBkdXJhdGlvbk1zKCkgY29u
c3QgeyByZXR1cm4gbV9kdXJhdGlvbk1zOyB9Ci0gICAgZG91YmxlIGVuZFRpbWVNcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhcnRUaW1lTXMgKyBtX2R1cmF0aW9uTXM7IH0KKyAgICBkb3VibGUgc3Rh
cnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KKyAgICBkb3VibGUgZHVyYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgZG91YmxlIGVuZFRpbWUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0VGltZSArIG1fZHVyYXRpb247IH0KICAgICBjb25zdCBJbnRT
aXplJiBmaW5hbFNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsRW5kOyB9CiAg
ICAgZmxvYXQgZmluYWxQYWdlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUVuZDsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYg
c2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dT
aXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZU1zKTsKKyAg
ICBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQg
cGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUm
IGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCBw
cm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZU1zKSBjb25zdDsKKyAgICBmbG9hdCBwcm9n
cmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZSkgY29uc3Q7CiAgICAgSW50U2l6ZSBzY3JvbGxP
ZmZzZXRBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdDsKICAgICBmbG9hdCBwYWdlU2NhbGVBdFJh
dGlvKGZsb2F0IHJhdGlvKSBjb25zdDsKIApAQCAtODUsOCArODUsOCBAQCBwcml2YXRlOgogICAg
IEludFNpemUgbV9zY3JvbGxFbmQ7CiAgICAgZmxvYXQgbV9wYWdlU2NhbGVFbmQ7CiAKLSAgICBk
b3VibGUgbV9zdGFydFRpbWVNczsKLSAgICBkb3VibGUgbV9kdXJhdGlvbk1zOworICAgIGRvdWJs
ZSBtX3N0YXJ0VGltZTsKKyAgICBkb3VibGUgbV9kdXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXgg
ZTA5OGU2YTU2MjQ2MmY2NTE2NzdiODIzYjkwNDcxZjJhMjNjMjg0Yi4uYjZmYzc2YjUyZThiZGY0
ZmVhOTc1NTBhMjE2ZWYxMzJmZjdiNWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKQEAgLTg5LDkgKzg5LDkgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpj
b21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNo
b3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCit2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0
aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3Np
dGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAx
MDAwLjAsIGR1cmF0aW9uU2VjICogMTAwMC4wKTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5z
dGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwg
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGR1cmF0aW9uKTsKIH0KIAogR3JhcGhpY3ND
b250ZXh0M0QqIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRleHQoKQpAQCAtMjU5LDExICsyNTks
MTEgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhv
c3QgPSAwOwogfQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVu
dHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3Rvcj4gZXZlbnRzKQordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZl
bnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNW
ZWN0b3I+IGV2ZW50cywgZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQgbWFpbjsK
LSAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMpOworICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cywgd2FsbENsb2NrVGltZSk7
CiB9CiAKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVy
ZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcpCkBAIC0yOTQsOCArMjk0LDEwIEBA
IGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21wb3NpdGUoKQogICAgIEFTU0VSVCghbV9j
b250ZXh0TG9zdCk7CiAgICAgewogICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7
Ci0gICAgICBkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zID0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCkgKiAxMDAwLjA7Ci0gICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKGZy
YW1lRGlzcGxheVRpbWVNcyk7CisgICAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgICAgZG91YmxlIHdhbGxDbG9ja1RpbWUgPSBjdXJy
ZW50VGltZSgpOworCisgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1vbm90b25p
Y1RpbWUsIHdhbGxDbG9ja1RpbWUpOwogICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xh
eWVycygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4
IDJkMjhkMDE2OWQzMDg4YjhjMzJhYmRjZTczYjNkNzQxYzVmNDJhMWUuLmViYmQ5NmUyYzM4ODIy
MTg5ZDJiOTBiMjFlNmQ5NzZhMzY3YzBlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NQcm94eSBpbXBs
ZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpw
aXhlbHMsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNl
QW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uKTsKICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRl
cmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbklt
cGxUaHJlYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgeyBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29t
bWl0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSB7
IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBw
b3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NB
bmltYXRpb25FdmVudHNWZWN0b3I+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2
ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBs
ZWdhY3kgcGF0aCB3aGVyZSBSZW5kZXJXaWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZy4KICAgICB2
b2lkIGNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmlu
ZGV4IDNkNjU5NmQwNGUxNjQ3NDY5ZGIxYThkMWQ3MGEyOTYyN2E5YjcyZDEuLjg0NTRlMjFmZjA4
NzEzMDE2NzViMDUwMzZlYjE3OTY4NWU5YWZjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCkBAIC0xMzQsMTcgKzEzNCwxNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RSZWFk
YmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqIHJlcXVlc3QpCiAgICAgbV9zY2hlZHVs
ZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiB9CiAKLXZvaWQgQ0NUaHJl
YWRQcm94eTo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9z
aXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKQor
dm9pZCBDQ1RocmVhZFByb3h5OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVy
YXRpb24pCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICBDQ1By
b3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkLCB0
YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25TZWMpKTsKKyAgICBDQ1By
b3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6cmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkLCB0
YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb24pKTsKIH0KIAotdm9pZCBD
Q1RocmVhZFByb3h5OjpyZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQo
SW50U2l6ZSB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3Vi
bGUgZHVyYXRpb25TZWMpCit2b2lkIENDVGhyZWFkUHJveHk6OnJlcXVlc3RTdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFu
Y2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsKQotICAgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3Np
dGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAx
MDAwLjAsIGR1cmF0aW9uU2VjICogMTAwMC4wKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2Nh
bGUsIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCBkdXJhdGlvbik7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dDNEKiBDQ1RocmVhZFByb3h5Ojpjb250ZXh0KCkKQEAgLTMwMCwxMSArMzAwLDEx
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKQogICAg
IG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0NvbW1pdCgpOwogfQogCi12b2lkIEND
VGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQo
UGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKQordm9pZCBDQ1RocmVh
ZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NP
d25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cywgZG91YmxlIHdhbGxDbG9ja1Rp
bWUpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZCIs
IHRoaXMsIDApOwotICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cywgZXZlbnRzKSk7
CisgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlz
LCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzLCBldmVudHMsIHdhbGxDbG9ja1Rp
bWUpKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdygpCkBAIC01NjYs
MTggKzU2NiwxOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRT
d2FwKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IGNvbXB1dGUgdGhlIGZyYW1l
IGRpc3BsYXkgdGltZSBtb3JlIGludGVsbGlnZW50bHkKLSAgICBkb3VibGUgZnJhbWVEaXNwbGF5
VGltZU1zID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7CisgICAgZG91
YmxlIG1vbm90b25pY1RpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBk
b3VibGUgd2FsbENsb2NrVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKLSAgICBtX2lucHV0SGFuZGxl
ck9uSW1wbFRocmVhZC0+d2lsbERyYXcoZnJhbWVEaXNwbGF5VGltZU1zKTsKLSAgICBtX2xheWVy
VHJlZUhvc3RJbXBsLT5hbmltYXRlKGZyYW1lRGlzcGxheVRpbWVNcyk7CisgICAgbV9pbnB1dEhh
bmRsZXJPbkltcGxUaHJlYWQtPndpbGxEcmF3KG1vbm90b25pY1RpbWUpOworICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGEg
cGVuZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RP
bkltcGxUaHJlYWQpIHsKLSAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVh
ZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBs
VGhyZWFkLT5yZWN0KTsKLSAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5zdWNj
ZXNzID0gIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKTsKLSAgICAgIG1fcmVh
ZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5jb21wbGV0aW9uLnNpZ25hbCgpOwotICAgICAgbV9y
ZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQgPSAwOworICAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5yZWFkYmFjayhtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cGl4ZWxzLCBtX3Jl
YWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cmVjdCk7CisgICAgICAgIG1fcmVhZGJhY2tSZXF1
ZXN0T25JbXBsVGhyZWFkLT5zdWNjZXNzID0gIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4
dExvc3QoKTsKKyAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPmNvbXBsZXRp
b24uc2lnbmFsKCk7CisgICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0gMDsK
ICAgICB9CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwpAQCAtNjEy
LDEzICs2MTMsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJz
KCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsKIH0KIAot
dm9pZCBDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1h
dGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKQordm9pZCBDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRp
b25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzLCBkb3Vi
bGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJv
eHk6OnNldEFuaW1hdGlvbkV2ZW50cyIpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cywgd2FsbENsb2NrVGltZSk7CiB9CiAKIGNsYXNzIEND
VGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyIDogcHVibGljIENDVGltZXIsIENDVGlt
ZXJDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDRlYWY4NDBmNmI1N2Q1NWMw
NzNiZmE1NjhmNDBhZjA2YjhiMDg2MmUuLjA1NzY5MTIxM2VlNGY3YjMwMjRhY2VmZDJkMmU4M2M0
ZDI1OTE3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gQ0NQcm94eSBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBj
b21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0
UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2Vj
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6
ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1
cmF0aW9uKTsKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAg
dmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0
YXJ0ZWQoKSBjb25zdDsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHND
b21taXRPbkltcGxUaHJlYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50
c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVj
dG9yPik7CisgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRP
bkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3
YWxsQ2xvY2tUaW1lKTsKIAogICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVudGF0aW9u
CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZv
aWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZm
ZXJzKCk7Ci0gICAgdm9pZCBzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4pOworICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8
Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAgICAgdm9p
ZCBiZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7CiAgICAgdm9pZCB0cnlUb1JlY3JlYXRlQ29udGV4
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggMzk3MzA4YjUyOWNjNDE3NDcxODdj
N2Y4NjdkMTIxYjliMjNmY2FlZS4uYzJkYmVlM2I0NzJkZjY2NjE2ZjQyMTU4NmNiNWZiNzA3Nzdk
NjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIGludCBX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0
dXJuIG1faWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bDo6d2lsbERyYXcoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCit2b2lkIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjp3aWxsRHJhdyhkb3VibGUgbW9ub3RvbmljVGltZSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmgKaW5kZXggYTJmMTMwMjVkOWYxN2JmZDE4YzE0NGY5MzE3ZDgyYTZl
YTEwOWVjNS4uODNiNGJkNTQ2MWFjMzRhNTE2YmNlZGZlYzQyNGVhMWY0Y2MzMDZiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNv
cmU6OkNDSW5wdXRIYW5kbGVyIGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBpbnQgaWRlbnRp
ZmllcigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhkb3VibGUgZnJhbWVCZWdp
blRpbWVNcyk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KGRvdWJsZSBtb25vdG9uaWNUaW1l
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bChXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBj
M2I0ZWFiMDgwZjQ5OWU1MTA2YjU4NzZlNDFiM2FkZmVmMTA3MzNlLi5kNzVjMTI4OTA3NjU4OWVi
NjEzNDM2ZWE3NjNiNjdiODBjMGIwOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1w
bFRocmVhZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVh
ZCgpIHsgbV9kaWRSZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0Q29tbWl0ID0gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhy
ZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+KSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3du
UHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpIHsgfQog
CiAgICAgc3RhdGljIHZvaWQgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShDQ0xh
eWVySW1wbCogbGF5ZXIpCiAgICAgewpAQCAtMzUwLDggKzM1MCwxMCBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKICAgICBBU1NFUlQoc2Nyb2xs
TGF5ZXIpOwogCiAgICAgY29uc3QgZmxvYXQgbWluUGFnZVNjYWxlID0gMC41LCBtYXhQYWdlU2Nh
bGUgPSA0OwotICAgIGNvbnN0IGRvdWJsZSBzdGFydFRpbWVNcyA9IDEwMDA7Ci0gICAgY29uc3Qg
ZG91YmxlIGR1cmF0aW9uTXMgPSAxMDA7CisgICAgY29uc3QgZG91YmxlIHN0YXJ0VGltZSA9IDE7
CisgICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0gMC4xOworICAgIGNvbnN0IGRvdWJsZSBoYWxm
d2F5VGhyb3VnaEFuaW1hdGlvbiA9IHN0YXJ0VGltZSArIGR1cmF0aW9uIC8gMjsKKyAgICBjb25z
dCBkb3VibGUgZW5kVGltZSA9IHN0YXJ0VGltZSArIGR1cmF0aW9uOwogCiAgICAgLy8gTm9uLWFu
Y2hvciB6b29tLWluCiAgICAgewpAQCAtMzU5LDEwICszNjEsMTAgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiAgICAgICAgIHNjcm9sbExheWVy
LT5zZXRQYWdlU2NhbGVEZWx0YSgxKTsKICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFNjcm9sbFBv
c2l0aW9uKEludFBvaW50KDUwLCA1MCkpOwogCi0gICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uKEludFNpemUoMCwgMCksIGZhbHNlLCAyLCBzdGFydFRpbWVNcywgZHVy
YXRpb25Ncyk7Ci0gICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoc3RhcnRUaW1lTXMgKyBkdXJh
dGlvbk1zIC8gMik7CisgICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KEludFNpemUoMCwgMCksIGZhbHNlLCAyLCBzdGFydFRpbWUsIGR1cmF0aW9uKTsKKyAgICAgICAg
bV9ob3N0SW1wbC0+YW5pbWF0ZShoYWxmd2F5VGhyb3VnaEFuaW1hdGlvbiwgaGFsZndheVRocm91
Z2hBbmltYXRpb24pOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwot
ICAgICAgICBtX2hvc3RJbXBsLT5hbmltYXRlKHN0YXJ0VGltZU1zICsgZHVyYXRpb25Ncyk7Cisg
ICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoZW5kVGltZSwgZW5kVGltZSk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7CiAKICAgICAgICAgT3duUHRyPENDU2Nyb2xs
QW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFz
KCk7CkBAIC0zNzYsOCArMzc4LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBw
YWdlU2NhbGVBbmltYXRpb24pCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQYWdlU2NhbGVEZWx0
YSgxKTsKICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDUw
LCA1MCkpOwogCi0gICAgICAgIG1faG9zdEltcGwtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKElu
dFNpemUoMjUsIDI1KSwgdHJ1ZSwgbWluUGFnZVNjYWxlLCBzdGFydFRpbWVNcywgZHVyYXRpb25N
cyk7Ci0gICAgICAgIG1faG9zdEltcGwtPmFuaW1hdGUoc3RhcnRUaW1lTXMgKyBkdXJhdGlvbk1z
KTsKKyAgICAgICAgbV9ob3N0SW1wbC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZSgy
NSwgMjUpLCB0cnVlLCBtaW5QYWdlU2NhbGUsIHN0YXJ0VGltZSwgZHVyYXRpb24pOworICAgICAg
ICBtX2hvc3RJbXBsLT5hbmltYXRlKGVuZFRpbWUsIGVuZFRpbWUpOwogICAgICAgICBFWFBFQ1Rf
VFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVl
c3RDb21taXQpOwogCkBAIC04NDcsNyArODQ5LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCB2aXNpYmlsaXR5Q2hhbmdlUmVzZXRzRGFtYWdlKQogICAgIC8vIEZpcnN0IGZyYW1l
OiBpZ25vcmUuCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBsYXll
clRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKLSAKKwogICAgIC8vIFNlY29uZCBmcmFtZTog
bm90aGluZyBoYXMgY2hhbmdlZCAtLS0gc28gd2Ugc291bGRuJ3QgcHVzaCBhbnl0aGluZyB3aXRo
IHBhcnRpYWwgc3dhcC4KICAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAg
IGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZmE3NWRlYzBj
NzVjMTBhY2JiYjE4NmQ0ODJlMWViOGNjMjk4YjViNS4uMmM0ZTdjZTU5Y2NmZDIyZWQyY2RhODRl
ZWVlMDY4YzVmNjAzNTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC02NSw5ICs2NSw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQo
Q0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJz
KENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVy
cyhDQ0xheWVyVHJlZUhvc3RJbXBsKiwgZG91YmxlIG1vbm90b25pY1RpbWUpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmLCBmbG9hdCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1l
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rvbmlj
VGltZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZWRlZCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgfQpAQCAtMTA0LDEwICsxMDQsMTAgQEAgcHVibGlj
OgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRv
dWJsZSBmcmFtZUJlZ2luVGltZU1zKQorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKGRv
dWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKICAgICB7Ci0gICAgICAg
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZnJhbWVCZWdpblRpbWVNcyk7Ci0g
ICAgICAgIG1fdGVzdEhvb2tzLT5hbmltYXRlTGF5ZXJzKHRoaXMpOworICAgICAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKG1vbm90b25pY1RpbWUsIHdhbGxDbG9ja1RpbWUp
OworICAgICAgICBtX3Rlc3RIb29rcy0+YW5pbWF0ZUxheWVycyh0aGlzLCBtb25vdG9uaWNUaW1l
KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50KHRlc3RIb29rcykp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFt
ZUJlZ2luVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9u
b3RvbmljVGltZSkKICAgICB7Ci0gICAgICAgIG1fdGVzdEhvb2tzLT51cGRhdGVBbmltYXRpb25z
KGZyYW1lQmVnaW5UaW1lKTsKKyAgICAgICAgbV90ZXN0SG9va3MtPnVwZGF0ZUFuaW1hdGlvbnMo
bW9ub3RvbmljVGltZSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpCkBAIC0z
NDUsNzYgKzM0NSw3NiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNl
dE5lZWRzQW5pbWF0ZSh2b2lkKiBzZWxmKQogICAgIHsKLSAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NM
YXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwotICAgICAgQVNTRVJUKHRlc3QpOwotICAgICAgaWYg
KHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3Qt
PnNldE5lZWRzQW5pbWF0ZSgpOworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVI
b3N0VGVzdCo+KHNlbGYpOworICAgICAgICBBU1NFUlQodGVzdCk7CisgICAgICAgIGlmICh0ZXN0
LT5tX2xheWVyVHJlZUhvc3QpCisgICAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnNl
dE5lZWRzQW5pbWF0ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWRkSW5z
dGFudEFuaW1hdGlvbih2b2lkKiBzZWxmKQogICAgIHsKLSAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NM
YXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwotICAgICAgQVNTRVJUKHRlc3QpOwotICAgICAgaWYg
KHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCAmJiB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnJvb3RMYXll
cigpKQotICAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcigqdGVzdC0+bV9sYXll
clRyZWVIb3N0LT5yb290TGF5ZXIoKSwgMCwgMCwgMSk7CisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNfY2Fz
dDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CisgICAgICAgIEFTU0VSVCh0ZXN0KTsKKyAg
ICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCAmJiB0ZXN0LT5tX2xheWVyVHJlZUhvc3Qt
PnJvb3RMYXllcigpKQorICAgICAgICAgICAgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKCp0
ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLCAwLCAwLCAxKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgdm9pZCBkaXNwYXRjaEFkZEFuaW1hdGlvbih2b2lkKiBzZWxmKQogICAgIHsKLSAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0
ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwotICAgICAgQVNT
RVJUKHRlc3QpOwotICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCAmJiB0ZXN0LT5tX2xh
eWVyVHJlZUhvc3QtPnJvb3RMYXllcigpKQotICAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9u
VG9MYXllcigqdGVzdC0+bV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSwgMTAwMDAsIDAsIDEp
OworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBDQ0xheWVyVHJlZUhv
c3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwor
ICAgICAgICBBU1NFUlQodGVzdCk7CisgICAgICAgIGlmICh0ZXN0LT5tX2xheWVyVHJlZUhvc3Qg
JiYgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSkKKyAgICAgICAgICAgIGFkZE9w
YWNpdHlUcmFuc2l0aW9uVG9MYXllcigqdGVzdC0+bV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIo
KSwgMTAsIDAsIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNB
bmltYXRlQW5kQ29tbWl0KHZvaWQqIHNlbGYpCiAgICAgewotICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxD
Q0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7Ci0gICAgICBBU1NFUlQodGVzdCk7Ci0gICAgICBp
ZiAodGVzdC0+bV9sYXllclRyZWVIb3N0KSB7Ci0gICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVI
b3N0LT5zZXROZWVkc0FuaW1hdGUoKTsKLSAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3Qt
PnNldE5lZWRzQ29tbWl0KCk7Ci0gICAgICB9CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDQ0xh
eWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CisgICAgICAgIEFTU0VSVCh0ZXN0KTsKKyAgICAgICAg
aWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICAgICAgdGVzdC0+bV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0FuaW1hdGUoKTsKKyAgICAgICAgICAgIHRlc3QtPm1fbGF5ZXJUcmVl
SG9zdC0+c2V0TmVlZHNDb21taXQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHN0YXRpYyB2
b2lkIGRpc3BhdGNoU2V0TmVlZHNDb21taXQodm9pZCogc2VsZikKICAgICB7Ci0gICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCA9IHN0
YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3QqPihzZWxmKTsKLSAgICAgIEFTU0VSVF9UUlVF
KHRlc3QpOwotICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgICB0ZXN0
LT5tX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7CisgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNf
Y2FzdDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CisgICAgICAgIEFTU0VSVF9UUlVFKHRl
c3QpOworICAgICAgICBpZiAodGVzdC0+bV9sYXllclRyZWVIb3N0KQorICAgICAgICAgICAgdGVz
dC0+bV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOwogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNSZWRyYXcodm9pZCogc2VsZikKICAgICB7Ci0gICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCA9
IHN0YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3QqPihzZWxmKTsKLSAgICAgIEFTU0VSVF9U
UlVFKHRlc3QpOwotICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgICB0
ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzUmVkcmF3KCk7CisgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0
aWNfY2FzdDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CisgICAgICAgIEFTU0VSVF9UUlVF
KHRlc3QpOworICAgICAgICBpZiAodGVzdC0+bV9sYXllclRyZWVIb3N0KQorICAgICAgICAgICAg
dGVzdC0+bV9sYXllclRyZWVIb3N0LT5zZXROZWVkc1JlZHJhdygpOwogICAgIH0KIAogICAgIHN0
YXRpYyB2b2lkIGRpc3BhdGNoU2V0VmlzaWJsZSh2b2lkKiBzZWxmKQogICAgIHsKLSAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0g
c3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwotICAgICAgQVNTRVJUKHRl
c3QpOwotICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgICB0ZXN0LT5t
X2xheWVyVHJlZUhvc3QtPnNldFZpc2libGUodHJ1ZSk7CisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNfY2Fz
dDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CisgICAgICAgIEFTU0VSVCh0ZXN0KTsKKyAg
ICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgICAgIHRlc3QtPm1fbGF5
ZXJUcmVlSG9zdC0+c2V0VmlzaWJsZSh0cnVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBk
aXNwYXRjaFNldEludmlzaWJsZSh2b2lkKiBzZWxmKQogICAgIHsKLSAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nh
c3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwotICAgICAgQVNTRVJUKHRlc3QpOwotICAg
ICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJl
ZUhvc3QtPnNldFZpc2libGUoZmFsc2UpOworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXll
clRyZWVIb3N0VGVzdCo+KHNlbGYpOworICAgICAgICBBU1NFUlQodGVzdCk7CisgICAgICAgIGlm
ICh0ZXN0LT5tX2xheWVyVHJlZUhvc3QpCisgICAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhv
c3QtPnNldFZpc2libGUoZmFsc2UpOwogICAgIH0KIAogICAgIGNsYXNzIFRpbWVvdXRUYXNrIDog
cHVibGljIFdlYlRocmVhZDo6VGFzayB7CkBAIC04NTQsNiArODU0LDggQEAgcHVibGljOgogICAg
ICAgICA6IG1fbnVtQW5pbWF0ZXMoMCkKICAgICAgICAgLCBtX3JlY2VpdmVkQW5pbWF0aW9uU3Rh
cnRlZE5vdGlmaWNhdGlvbihmYWxzZSkKICAgICAgICAgLCBtX3JlY2VpdmVkQW5pbWF0aW9uRmlu
aXNoZWROb3RpZmljYXRpb24oZmFsc2UpCisgICAgICAgICwgbV9zdGFydFRpbWUoMCkKKyAgICAg
ICAgLCBtX2ZpcnN0TW9ub3RvbmljVGltZSgwKQogICAgIHsKICAgICB9CiAKQEAgLTg2MiwyMyAr
ODY0LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01haW5U
aHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVy
VHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0
ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgZG91YmxlIG1v
bm90b25pY1RpbWUpCiAgICAgewogICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBhbmltYXRpb24gaGFkIHplcm8gZHVyYXRpb24gc28gbGF5ZXJUcmVlSG9z
dEltcGwgc2hvdWxkIG5vCiAgICAgICAgICAgICAvLyBsb25nZXIgbmVlZCB0byBhbmltYXRlIGl0
cyBsYXllcnMuCiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJUcmVlSG9zdEltcGwtPm5l
ZWRzQW5pbWF0ZUxheWVycygpKTsKICAgICAgICAgICAgIG1fbnVtQW5pbWF0ZXMrKzsKKyAgICAg
ICAgICAgIG1fZmlyc3RNb25vdG9uaWNUaW1lID0gbW9ub3RvbmljVGltZTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorICAgICAgICBFWFBFQ1RfTFQoMCwgbV9zdGFydFRpbWUpOwor
ICAgICAgICBFWFBFQ1RfTFQoMCwgbV9maXJzdE1vbm90b25pY1RpbWUpOworICAgICAgICBFWFBF
Q1RfTkUobV9zdGFydFRpbWUsIG1fZmlyc3RNb25vdG9uaWNUaW1lKTsKICAgICAgICAgRVhQRUNU
X1RSVUUobV9yZWNlaXZlZEFuaW1hdGlvblN0YXJ0ZWROb3RpZmljYXRpb24pOwogICAgICAgICBF
WFBFQ1RfVFJVRShtX3JlY2VpdmVkQW5pbWF0aW9uRmluaXNoZWROb3RpZmljYXRpb24pOwogICAg
ICAgICBlbmRUZXN0KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlv
blN0YXJ0ZWQoZG91YmxlKQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVk
KGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogICAgIHsKICAgICAgICAgbV9yZWNlaXZlZEFuaW1hdGlv
blN0YXJ0ZWROb3RpZmljYXRpb24gPSB0cnVlOworICAgICAgICBtX3N0YXJ0VGltZSA9IHdhbGxD
bG9ja1RpbWU7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlz
aGVkKGludCkKQEAgLTg5NCw2ICs5MDEsOCBAQCBwcml2YXRlOgogICAgIGludCBtX251bUFuaW1h
dGVzOwogICAgIGJvb2wgbV9yZWNlaXZlZEFuaW1hdGlvblN0YXJ0ZWROb3RpZmljYXRpb247CiAg
ICAgYm9vbCBtX3JlY2VpdmVkQW5pbWF0aW9uRmluaXNoZWROb3RpZmljYXRpb247CisgICAgZG91
YmxlIG1fc3RhcnRUaW1lOworICAgIGRvdWJsZSBtX2ZpcnN0TW9ub3RvbmljVGltZTsKIH07CiAK
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uLCBydW5NdWx0aVRocmVhZCkK
QEAgLTkxNCw3ICs5MjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01h
aW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgZG91Ymxl
IG1vbm90b25pY1RpbWUpCiAgICAgewogICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKICAg
ICAgICAgICAgIC8vIFdlIGhhdmUgYSBsb25nIGFuaW1hdGlvbiBydW5uaW5nLiBJdCBzaG91bGQg
Y29udGludWUgdG8gdGljayBldmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>