<?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>140893</bug_id>
          
          <creation_ts>2015-01-26 11:28:36 -0800</creation_ts>
          <short_desc>Prevent crash when accessing WebAVPlayerController.delegate.</short_desc>
          <delta_ts>2015-02-26 13:42:40 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064202</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-01-26 11:28:36 -0800</bug_when>
    <thetext>Prevent crash when accessing WebAVPlayerController.delegate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064213</commentid>
    <comment_count>1</comment_count>
      <attachid>245363</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-01-26 11:52:55 -0800</bug_when>
    <thetext>Created attachment 245363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064608</commentid>
    <comment_count>2</comment_count>
      <attachid>245363</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-27 12:30:13 -0800</bug_when>
    <thetext>Comment on attachment 245363
Patch

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

It’s a bit of a shame to do extra method calls, by getting the delegate property twice, once to check it for null and a second time to use it.

A lot of this patch seems to change from using property assignment syntax to use method call syntax. And then other parts continue to use property assignment. Why the change to explicit method calls?

&gt; Source/WebCore/ChangeLog:44
&gt; +        (WebVideoFullscreenInterfaceAVKit::cleanupFullscreenInternal): consoldiated cleanup code from invalidate()

Typo here.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:641
&gt; +    m_playerController = adoptNS([[WebAVPlayerController alloc] init]);

Why use assignment instead of initialization syntax?

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:653
&gt; +            if (strongThis-&gt;m_videoFullscreenModel)
&gt; +                [strongThis-&gt;m_playerController setDelegate:strongThis-&gt;m_videoFullscreenModel];

I don’t think the null check here is needed. Seems no harm in calling setDelegate on nil.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:687
&gt; +            playerController.contentDuration = 0;
&gt; +            playerController.maxTime = 0;
&gt; +            playerController.contentDurationWithinEndTimes = 0;
&gt; +            playerController.loadedTimeRanges = @[];
&gt; +            
&gt; +            playerController.canPlay = NO;
&gt; +            playerController.canPause = NO;
&gt; +            playerController.canTogglePlayback = NO;
&gt; +            playerController.hasEnabledAudio = NO;
&gt; +            playerController.canSeek = NO;
&gt; +            playerController.minTime = 0;
&gt; +            playerController.status = AVPlayerControllerStatusUnknown;
&gt; +
&gt; +            playerController.timing = nil;
&gt; +            playerController.rate = 0;
&gt; +
&gt; +            playerController.hasEnabledVideo = NO;
&gt; +            playerController.contentDimensions = CGSizeMake(0, 0);
&gt; +            
&gt; +            RetainPtr&lt;NSMutableArray&gt; seekableRanges = adoptNS([[NSMutableArray alloc] init]);
&gt; +            playerController.seekableTimeRanges = seekableRanges.get();
&gt; +            
&gt; +            playerController.canScanBackward = NO;
&gt; +
&gt; +            playerController.audioMediaSelectionOptions = nil;
&gt; +            playerController.currentAudioMediaSelectionOption = nil;
&gt; +
&gt; +            playerController.legibleMediaSelectionOptions = nil;
&gt; +            playerController.currentLegibleMediaSelectionOption = nil;

This seems like a hard-to-do-correctly coding style. It’s easy for us to forget one of these; I have no idea if we covered everything or missed something! It seems this should be a  method on WebAVPlayerController, so someone modifying that class will notice that it needs to be updated when they add something.

There’s no need for the local variable, seekableRanges:

    playerController.seekableTimeRanges = adoptNS([[NSMutableArray alloc] init]).get();

Or if the autorelease overhead is considered acceptable:

    playerController.seekableTimeRanges = [NSMutableArray array];

Or even:

    playerController.seekableTimeRanges = [@[] mutableCopy];

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModelVideoElement.mm:71
&gt; +    if (m_videoFullscreenInterface)
&gt; +        m_videoFullscreenInterface-&gt;resetMediaState();

Is it OK that the media state won’t be reset until later? What prevents a race condition? I think the name of the function should make it clear that it doesn’t actually do anything, just schedules a reset that will happen in the future.

&gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.messages.in:25
&gt; +    ResetMediaState()

Is this calling an already-existing function? I don’t see the new message handling code in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065024</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-01-28 13:52:44 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 245363 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245363&amp;action=review
&gt; 
&gt; It’s a bit of a shame to do extra method calls, by getting the delegate
&gt; property twice, once to check it for null and a second time to use it.

A language with optionals would make this a lot more elegant.

&gt; 
&gt; A lot of this patch seems to change from using property assignment syntax to
&gt; use method call syntax. And then other parts continue to use property
&gt; assignment. Why the change to explicit method calls?

These changes go from using a function that returns an objc pointer to using a RetainPtr. Keeping property syntax would require adding .get(), where method call syntax gets automatically unwrapped.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:44
&gt; &gt; +        (WebVideoFullscreenInterfaceAVKit::cleanupFullscreenInternal): consoldiated cleanup code from invalidate()
&gt; 
&gt; Typo here.

fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:641
&gt; &gt; +    m_playerController = adoptNS([[WebAVPlayerController alloc] init]);
&gt; 
&gt; Why use assignment instead of initialization syntax?

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:653
&gt; &gt; +            if (strongThis-&gt;m_videoFullscreenModel)
&gt; &gt; +                [strongThis-&gt;m_playerController setDelegate:strongThis-&gt;m_videoFullscreenModel];
&gt; 
&gt; I don’t think the null check here is needed. Seems no harm in calling
&gt; setDelegate on nil.
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:687
&gt; &gt; +            playerController.contentDuration = 0;
&gt; &gt; +            playerController.maxTime = 0;
&gt; &gt; +            playerController.contentDurationWithinEndTimes = 0;
&gt; &gt; +            playerController.loadedTimeRanges = @[];
&gt; &gt; +            
&gt; &gt; +            playerController.canPlay = NO;
&gt; &gt; +            playerController.canPause = NO;
&gt; &gt; +            playerController.canTogglePlayback = NO;
&gt; &gt; +            playerController.hasEnabledAudio = NO;
&gt; &gt; +            playerController.canSeek = NO;
&gt; &gt; +            playerController.minTime = 0;
&gt; &gt; +            playerController.status = AVPlayerControllerStatusUnknown;
&gt; &gt; +
&gt; &gt; +            playerController.timing = nil;
&gt; &gt; +            playerController.rate = 0;
&gt; &gt; +
&gt; &gt; +            playerController.hasEnabledVideo = NO;
&gt; &gt; +            playerController.contentDimensions = CGSizeMake(0, 0);
&gt; &gt; +            
&gt; &gt; +            RetainPtr&lt;NSMutableArray&gt; seekableRanges = adoptNS([[NSMutableArray alloc] init]);
&gt; &gt; +            playerController.seekableTimeRanges = seekableRanges.get();
&gt; &gt; +            
&gt; &gt; +            playerController.canScanBackward = NO;
&gt; &gt; +
&gt; &gt; +            playerController.audioMediaSelectionOptions = nil;
&gt; &gt; +            playerController.currentAudioMediaSelectionOption = nil;
&gt; &gt; +
&gt; &gt; +            playerController.legibleMediaSelectionOptions = nil;
&gt; &gt; +            playerController.currentLegibleMediaSelectionOption = nil;
&gt; 
&gt; This seems like a hard-to-do-correctly coding style. It’s easy for us to
&gt; forget one of these; I have no idea if we covered everything or missed
&gt; something! It seems this should be a  method on WebAVPlayerController, so
&gt; someone modifying that class will notice that it needs to be updated when
&gt; they add something.

Refactored into -[WebAVPlayerController resetState]

&gt; 
&gt; There’s no need for the local variable, seekableRanges:
&gt; 
&gt;     playerController.seekableTimeRanges = adoptNS([[NSMutableArray alloc]
&gt; init]).get();
&gt; 
&gt; Or if the autorelease overhead is considered acceptable:
&gt; 
&gt;     playerController.seekableTimeRanges = [NSMutableArray array];
&gt; 
&gt; Or even:
&gt; 
&gt;     playerController.seekableTimeRanges = [@[] mutableCopy];

Changed to [NSMutableArray array]

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModelVideoElement.mm:71
&gt; &gt; +    if (m_videoFullscreenInterface)
&gt; &gt; +        m_videoFullscreenInterface-&gt;resetMediaState();
&gt; 
&gt; Is it OK that the media state won’t be reset until later? What prevents a
&gt; race condition? I think the name of the function should make it clear that
&gt; it doesn’t actually do anything, just schedules a reset that will happen in
&gt; the future.

Yes it is OK. There are a few reasons for this.
1) The interaction between Model and Interface is always async in WebKit2 due to IPC.
2) The model only pushes properties onto the interface, never reads them back, so there is no expectation that property changes are immediately available to read back.
3) All property changes are scheduled this way. Compare with WebVideoFullscreenInterfaceAVKit::setCanPlayFastReverse()

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.messages.in:25
&gt; &gt; +    ResetMediaState()
&gt; 
&gt; Is this calling an already-existing function? I don’t see the new message
&gt; handling code in the patch.

This is implemented by the new function WebVideoFullscreenInterfaceAVKit::resetMediaState(). WebVideoFullscreenManagerProxy inherits this implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065026</commentid>
    <comment_count>4</comment_count>
      <attachid>245570</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-01-28 13:58:54 -0800</bug_when>
    <thetext>Created attachment 245570
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065028</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-01-28 13:59:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 245363 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245363&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:653
&gt; &gt; +            if (strongThis-&gt;m_videoFullscreenModel)
&gt; &gt; +                [strongThis-&gt;m_playerController setDelegate:strongThis-&gt;m_videoFullscreenModel];
&gt; 
&gt; I don’t think the null check here is needed. Seems no harm in calling
&gt; setDelegate on nil.
&gt; 

Removed this check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065313</commentid>
    <comment_count>6</comment_count>
      <attachid>245570</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-29 12:41:23 -0800</bug_when>
    <thetext>Comment on attachment 245570
Patch for landing.

Rejecting attachment 245570 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 245570, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/5754805968437248</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065835</commentid>
    <comment_count>7</comment_count>
      <attachid>245786</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-01-31 10:39:09 -0800</bug_when>
    <thetext>Created attachment 245786
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065836</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-01-31 10:41:06 -0800</bug_when>
    <thetext>rdar://problem/18408265</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066164</commentid>
    <comment_count>9</comment_count>
      <attachid>245786</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-02 11:40:52 -0800</bug_when>
    <thetext>Comment on attachment 245786
Patch for landing.

Clearing flags on attachment: 245786

Committed r179480: &lt;http://trac.webkit.org/changeset/179480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072476</commentid>
    <comment_count>10</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-02-26 13:42:40 -0800</bug_when>
    <thetext>*** Bug 134895 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245363</attachid>
            <date>2015-01-26 11:52:55 -0800</date>
            <delta_ts>2015-01-27 12:30:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140893-20150126115257.patch</filename>
            <type>text/plain</type>
            <size>29210</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIxYzdkMGFmZTVlMTI4
Mzk3NDg2NWVmMWZhYzZhYjYwZDJlN2YxYi4uZDM0MWE4YTcxMzc5ZTM0ZTdhNmM1ZDE3MjNmOThi
NmI0OGFlMzExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE1LTAxLTI2ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBQcmV2ZW50IGNyYXNoIHdo
ZW4gYWNjZXNzaW5nIFdlYkFWUGxheWVyQ29udHJvbGxlci5kZWxlZ2F0ZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDg5MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWltcyB0byBw
cmV2ZW50IGEgbnVsbCBkZWxlZ2F0ZSBhY2Nlc3MgZHVyaW5nIGludmFsaWRhdGlvbiBieSBhZGRp
bmcgbnVsbCBjaGVja3MgYmVmb3JlIGFjY2Vzc2luZyB0aGUgZGVsZWdhdGUsIGJ5IG1ha2luZyBl
eHBsaWNpdCB0aGUgcmVjcmVhdGlvbiBvZiBtX3BsYXllckNvbnRyb2xsZXIsIGFuZCBieSBjb25z
b2xpZGF0aW5nIGFuZCBjb3JyZWN0aW5nIHRoZSB0ZWFyZG93biBzZXF1ZW5jZS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UuaDogYWRkIHJlc2V0TWVkaWFTdGF0ZSgpCisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6IGRpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBsYXllclZpZXdDb250cm9sbGVyOnNob3Vs
ZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpdKTogQ2hlY2sgZm9yIG51bGwgYmVmb3JlIGFjY2Vz
c2luZyBkZWxlZ2F0ZS4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBsYXk6XSk6
IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6IGRpdHRv
LgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgdG9nZ2xlUGxheWJhY2s6XSk6IGRp
dHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxheWluZzpdKTogZGl0
dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBiZWdpblNjcnViYmluZzpdKTog
ZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY3J1YmJpbmc6XSk6
IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vla1RvVGltZTpdKTog
ZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBiZWdpblNjYW5uaW5nRm9y
d2FyZDpdKTogZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY2Fu
bmluZ0ZvcndhcmQ6XSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
YmVnaW5TY2FubmluZ0JhY2t3YXJkOl0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJD
b250cm9sbGVyIGVuZFNjYW5uaW5nQmFja3dhcmQ6XSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJB
VlBsYXllckNvbnRyb2xsZXIgc2Vla1RvQmVnaW5uaW5nOl0pOiBkaXR0by4KKyAgICAgICAgKC1b
V2ViQVZQbGF5ZXJDb250cm9sbGVyIHNlZWtUb0VuZDpdKTogZGl0dG8uCisgICAgICAgICgtW1dl
YkFWUGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpd
KTogZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOl0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGxheW91dFN1YmxheWVyc09mTGF5ZXI6XSk6IGRpdHRvLgorICAgICAgICAo
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KTogaW5pdGlhbGl6ZSBtX3BsYXllckNvbnRyb2xsZXIKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlhU3RhdGUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbik6IHJl
bW92ZSBwbGF5ZXJDb250cm9sbGVyKCkKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUpOiBkaXR0by4KKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBkaXR0by4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdl
cyk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dENhblBsYXlGYXN0UmV2ZXJzZSk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogZGl0dG8uCisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFsUGxheWJhY2spOiBkaXR0by4KKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW5JbnRlcm5hbCk6IGRp
dHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVs
bHNjcmVlblN0YW5kYXJkKTogZGl0dG8uCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW5JbnRlcm5hbCk6IGNvbnNvbGRpYXRlZCBjbGVh
bnVwIGNvZGUgZnJvbSBpbnZhbGlkYXRlKCkKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjppbnZhbGlkYXRlKTogY29uc29saWRhdGUgY2xlYW51cCBjb2RlLgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBsYXllckNvbnRyb2xsZXIp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpzZXRWaWRlb0VsZW1lbnQpOiBjYWxsIHJlc2V0TWVkaWFTdGF0ZSgpCisKIDIwMTUt
MDEtMTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjE3ODI1MCk6IH4yJSBQTFQgcmVncmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI5NWEyOWMz
NzFkNjY1NWViZDcwOGY3NTQzMDMwZGRkODc3Zjg3MGQuLjc0YjlkM2I1YTA2YmFmZTkxMmUwNjc0
ODI1ZTRlYjVhYzg1NGUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wMS0y
NiAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBj
cmFzaCB3aGVuIGFjY2Vzc2luZyBXZWJBVlBsYXllckNvbnRyb2xsZXIuZGVsZWdhdGUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbHVtYiBuZXcgcmVz
ZXRNZWRpYVN0YXRlKCkgdGhyb3VnaCBJUEMgaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUpOiByZW1vdmUgcmVkdW5kYW50IHNldCB0
byBudWxscHRyLgorICAgICAgICAqIFdlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXNl
dE1lZGlhU3RhdGUpOgorCiAyMDE1LTAxLTE5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVXNlIEMrKyBsYW1iZGEg
aW5zdGVhZCBvZiBXVEY6OmJpbmQoKSBpbiBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5l
U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiMDdhNzc5YTQyZmRlZDZkYzgyZWFiYjY3
ZTYwMzE1YmIxYjBkMTg0Li5iN2NmMzY1ZGFlMjc1MDQ1N2NmZmEwNDhiZTA1MWRlMjRmM2UxMDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzQ5OSw2ICszNDk5LDcgQEAgX19aTjdXZWJDb3Jl
MzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDExc2V0RHVyYXRpb25FZAogX19aTjdX
ZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE0ZXhpdEZ1bGxzY3JlZW5F
TlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0MTRzZXRDdXJyZW50VGltZUVkZAogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDE1ZW50ZXJGdWxsc2NyZWVuRXYKK19fWk43V2ViQ29yZTMyV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQxNXJlc2V0TWVkaWFTdGF0ZUV2CiBfX1pON1dlYkNvcmUz
MldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTVzZXR1cEZ1bGxzY3JlZW5FUjdDQUxh
eWVyTlNfN0ludFJlY3RFUDZVSVZpZXdqYgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDE3Y2xlYW51cEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMzJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE3c2V0U2Vla2FibGVSYW5nZXNFUktOU18xMFRp
bWVSYW5nZXNFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggZDQ1N2U0ZjFkODNlZDY4NDI3MjZkZTVh
NzJmNzc4YTRjNTZmODg3ZS4uNjRjODcxNmZiMjljNTdjMGY0MWM4MDRlN2NmZTRjNjk1ODEzMjY0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgZW51
bSBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB7IFRhcmdldFR5cGVOb25lLCBUYXJnZXRUeXBl
QWlyUGxheSwgVGFyZ2V0VHlwZVRWT3V0IH07CiAgICAgCiAgICAgdmlydHVhbCB+V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCByZXNldE1lZGlhU3Rh
dGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBh
bmNob3JUaW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcs
IGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRl
eCAzZjcxYmEyNWE1ZWZiMTcxY2JjMjE3ZjA0YTk0YmU4ZjhlZjI0MWVhLi5hZjk1MTQ3MzczN2I2
YjljM2E3ZDMyMzFhYjMyZTJjZjQ3YmNhYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
aApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCopOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsKICAgICAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGlt
ZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJy
aWRlOwpAQCAtOTUsNiArOTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXlBdXRvbWF0aWNhbGx5
U2hvd1ZpZGVvT3B0aW1pemVkKCk7CiAKIHByb3RlY3RlZDoKKyAgICB2b2lkIGJlZ2luU2Vzc2lv
bigpOwogICAgIHZvaWQgc2V0dXBGdWxsc2NyZWVuSW50ZXJuYWwoUGxhdGZvcm1MYXllciYsIElu
dFJlY3QgaW5pdGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50OjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlLCBib29sIGFsbG93T3B0aW1pemVkRnVsbHNjcmVlbik7CiAgICAgdm9pZCBlbnRl
ckZ1bGxzY3JlZW5PcHRpbWl6ZWQoKTsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlblN0YW5kYXJk
KCk7CkBAIC0xMTgsOCArMTIwLDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9leGl0Q29tcGxl
dGVkOwogICAgIGJvb2wgbV9lbnRlclJlcXVlc3RlZDsKIAotICAgIFdlYkFWUGxheWVyQ29udHJv
bGxlciAqcGxheWVyQ29udHJvbGxlcigpOwotICAgIAogICAgIHZvaWQgZG9FbnRlckZ1bGxzY3Jl
ZW4oKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCBhZWUxOWU3N2Ex
ZDExNGI2MDUyNDYxNThhOGVkNjkyNGY4OTdmYzNkLi5lMmE1YTI4ZjU4Yzg1NDlmYjExNjA2Yzgz
ODM0YmRkNjYyOWM1YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0xNjgs
OSArMTY4LDEyIEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmlu
aXRlLCBDTVRpbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBsYXllclZpZXdDb250cm9sbGVyKTsK
ICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7Cisg
ICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm4gWUVTOworICAgIAogICAgIGlm
IChyZWFzb24gPT0gQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVhc29uRG9u
ZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxs
U2NyZWVuUmVhc29uUmVtb3RlQ29udHJvbFN0b3BFdmVudFJlY2VpdmVkKQogICAgICAgICBzZWxm
LmRlbGVnYXRlLT5wYXVzZSgpOworICAgIAogICAgIHNlbGYuZGVsZWdhdGUtPnJlcXVlc3RFeGl0
RnVsbHNjcmVlbigpOwogICAgIHJldHVybiBOTzsKIH0KQEAgLTE3OCwyMSArMTgxLDI0IEBAIFNP
RlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCiAt
ICh2b2lkKXBsYXk6KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAg
IEFTU0VSVChzZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAg
IHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7CiB9CiAKIC0gKHZvaWQpcGF1c2U6
KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChzZWxm
LmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKICAg
ICBzZWxmLmRlbGVnYXRlLT5wYXVzZSgpOwogfQogCiAtICh2b2lkKXRvZ2dsZVBsYXliYWNrOihp
ZClzZW5kZXIKIHsKICAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBBU1NFUlQoc2VsZi5k
ZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CiAgICAg
c2VsZi5kZWxlZ2F0ZS0+dG9nZ2xlUGxheVN0YXRlKCk7CiB9CiAKQEAgLTIwMywxMiArMjA5LDEz
IEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRp
bWUpCiAKIC0gKHZvaWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5nCiB7Ci0gICAgQVNTRVJUKHNl
bGYuZGVsZWdhdGUpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChwbGF5aW5nKQogICAgICAgICBzZWxmLmRlbGVnYXRlLT5wbGF5KCk7CiAgICAgZWxz
ZQogICAgICAgICBzZWxmLmRlbGVnYXRlLT5wYXVzZSgpOwotICAgIH0KK30KIAogKyAoTlNTZXQg
KilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1BsYXlpbmcKIHsKQEAgLTIxOCwyMCArMjI1LDIz
IEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRp
bWUpCiAtICh2b2lkKWJlZ2luU2NydWJiaW5nOihpZClzZW5kZXIKIHsKICAgICBVTlVTRURfUEFS
QU0oc2VuZGVyKTsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRl
bGVnYXRlKQorICAgICAgICByZXR1cm47CiAgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY3J1YmJp
bmcoKTsKIH0KIAogLSAodm9pZCllbmRTY3J1YmJpbmc6KGlkKXNlbmRlcgogewogICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChzZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNl
bGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY3J1
YmJpbmcoKTsKIH0KIAogLSAodm9pZClzZWVrVG9UaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lCiB7
Ci0gICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAg
ICAgICAgcmV0dXJuOwogICAgIHNlbGYuZGVsZWdhdGUtPmZhc3RTZWVrKHRpbWUpOwogfQogCkBA
IC0yOTQsMjggKzMwNCwzMiBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1lZGlhLCBrQ01UaW1l
SW5kZWZpbml0ZSwgQ01UaW1lKQogLSAodm9pZCliZWdpblNjYW5uaW5nRm9yd2FyZDooaWQpc2Vu
ZGVyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgQVNTRVJUKHNlbGYuZGVsZWdh
dGUpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNlbGYu
ZGVsZWdhdGUtPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7CiB9CiAKIC0gKHZvaWQpZW5kU2Nhbm5p
bmdGb3J3YXJkOihpZClzZW5kZXIKIHsKICAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBB
U1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICBy
ZXR1cm47CiAgICAgc2VsZi5kZWxlZ2F0ZS0+ZW5kU2Nhbm5pbmcoKTsKIH0KIAogLSAodm9pZCli
ZWdpblNjYW5uaW5nQmFja3dhcmQ6KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5k
ZXIpOwotICAgIEFTU0VSVChzZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUp
CisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT5iZWdpblNjYW5uaW5nQmFja3dh
cmQoKTsKIH0KIAogLSAodm9pZCllbmRTY2FubmluZ0JhY2t3YXJkOihpZClzZW5kZXIKIHsKICAg
ICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAg
aWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CiAgICAgc2VsZi5kZWxlZ2F0ZS0+
ZW5kU2Nhbm5pbmcoKTsKIH0KIApAQCAtMzM3LDggKzM1MSw4IEBAIFNPRlRfTElOS19DT05TVEFO
VChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCiAtICh2b2lkKXNlZWtUb0Jl
Z2lubmluZzooaWQpc2VuZGVyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgQVNT
RVJUKHNlbGYuZGVsZWdhdGUpOwotCisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICBy
ZXR1cm47CiAgICAgc2VsZi5kZWxlZ2F0ZS0+c2Vla1RvVGltZSgtSU5GSU5JVFkpOwogfQogCkBA
IC0zNjUsOCArMzc5LDggQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUlu
ZGVmaW5pdGUsIENNVGltZSkKIC0gKHZvaWQpc2Vla1RvRW5kOihpZClzZW5kZXIKIHsKICAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7Ci0KKyAgICBp
ZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT5z
ZWVrVG9UaW1lKElORklOSVRZKTsKIH0KIApAQCAtNDE5LDcgKzQzMyw4IEBAIFNPRlRfTElOS19D
T05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCiAgICAgW19jdXJy
ZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiByZWxlYXNlXTsKICAgICBfY3VycmVudEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbb3B0aW9uIHJldGFpbl07CiAgICAgCi0gICAgQVNTRVJU
KHNlbGYuZGVsZWdhdGUpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIE5TSW50ZWdlciBpbmRleCA9IE5TTm90Rm91bmQ7CiAgICAgCkBAIC00NDIs
NyArNDU3LDggQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5p
dGUsIENNVGltZSkKICAgICBbX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gcmVs
ZWFzZV07CiAgICAgX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbb3B0aW9u
IHJldGFpbl07CiAgICAgCi0gICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUpOworICAgIGlmICghc2Vs
Zi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIAogICAgIE5TSW50ZWdlciBpbmRleCA9
IE5TTm90Rm91bmQ7CiAgICAgCkBAIC00NjUsNyArNDgxLDggQEAgU09GVF9MSU5LX0NPTlNUQU5U
KENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5pdGUsIENNVGltZSkKIC0gKHZvaWQpbGF5b3V0U3Vi
bGF5ZXJzT2ZMYXllcjooQ0FMYXllciAqKWxheWVyCiB7CiAgICAgQ0dSZWN0IGxheWVyQm91bmRz
ID0gW2xheWVyIGJvdW5kc107Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+c2V0VmlkZW9MYXllckZyYW1l
KENHUmVjdE1ha2UoMCwgMCwgQ0dSZWN0R2V0V2lkdGgobGF5ZXJCb3VuZHMpLCBDR1JlY3RHZXRI
ZWlnaHQobGF5ZXJCb3VuZHMpKSk7CisgICAgaWYgKHNlbGYuZGVsZWdhdGUpCisgICAgICAgIHNl
bGYuZGVsZWdhdGUtPnNldFZpZGVvTGF5ZXJGcmFtZShDR1JlY3RNYWtlKDAsIDAsIENHUmVjdEdl
dFdpZHRoKGxheWVyQm91bmRzKSwgQ0dSZWN0R2V0SGVpZ2h0KGxheWVyQm91bmRzKSkpOwogICAg
IAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBmb3IgKENBTGF5ZXIgKnN1YmxheWVy
IGluIFtsYXllciBzdWJsYXllcnNdKSB7CkBAIC02MjEsMjEgKzYzOCw1NyBAQCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQo
KQogICAgICwgbV9leGl0Q29tcGxldGVkKGZhbHNlKQogICAgICwgbV9lbnRlclJlcXVlc3RlZChm
YWxzZSkKIHsKKyAgICBtX3BsYXllckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJD
b250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRGdWxs
c2NyZWVuSW50ZXJmYWNlOnRoaXNdOwogfQogCi1XZWJBVlBsYXllckNvbnRyb2xsZXIgKldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiB7Ci0gICAg
aWYgKCFtX3BsYXllckNvbnRyb2xsZXIpCi0gICAgewotICAgICAgICBtX3BsYXllckNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAg
ICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICAgICAgW21fcGxheWVyQ29u
dHJvbGxlciBzZXREZWxlZ2F0ZTptX3ZpZGVvRnVsbHNjcmVlbk1vZGVsXTsKLSAgICAgICAgW21f
cGxheWVyQ29udHJvbGxlciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdOwotICAgIH0KLSAg
ICByZXR1cm4gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICAKKyAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpc10geworICAg
ICAgICBpZiAoIXN0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlcikgeworICAgICAgICAgICAg
c3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFWUGxheWVyQ29u
dHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgaWYgKHN0cm9uZ1RoaXMtPm1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgICAgICAgICAgW3N0cm9uZ1RoaXMtPm1fcGxheWVy
Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpzdHJvbmdUaGlzLT5tX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
XTsKKyAgICAgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0RnVsbHNj
cmVlbkludGVyZmFjZTpzdHJvbmdUaGlzLmdldCgpXTsKKyAgICAgICAgICAgIAorICAgICAgICB9
IGVsc2UgeworCisgICAgICAgICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSBzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CisgICAgICAgICAg
ICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbiA9IDA7CisgICAgICAgICAgICBwbGF5
ZXJDb250cm9sbGVyLm1heFRpbWUgPSAwOworICAgICAgICAgICAgcGxheWVyQ29udHJvbGxlci5j
b250ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lcyA9IDA7CisgICAgICAgICAgICBwbGF5ZXJDb250
cm9sbGVyLmxvYWRlZFRpbWVSYW5nZXMgPSBAW107CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHBsYXllckNvbnRyb2xsZXIuY2FuUGxheSA9IE5POworICAgICAgICAgICAgcGxheWVyQ29udHJv
bGxlci5jYW5QYXVzZSA9IE5POworICAgICAgICAgICAgcGxheWVyQ29udHJvbGxlci5jYW5Ub2dn
bGVQbGF5YmFjayA9IE5POworICAgICAgICAgICAgcGxheWVyQ29udHJvbGxlci5oYXNFbmFibGVk
QXVkaW8gPSBOTzsKKyAgICAgICAgICAgIHBsYXllckNvbnRyb2xsZXIuY2FuU2VlayA9IE5POwor
ICAgICAgICAgICAgcGxheWVyQ29udHJvbGxlci5taW5UaW1lID0gMDsKKyAgICAgICAgICAgIHBs
YXllckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzVW5rbm93bjsK
KworICAgICAgICAgICAgcGxheWVyQ29udHJvbGxlci50aW1pbmcgPSBuaWw7CisgICAgICAgICAg
ICBwbGF5ZXJDb250cm9sbGVyLnJhdGUgPSAwOworCisgICAgICAgICAgICBwbGF5ZXJDb250cm9s
bGVyLmhhc0VuYWJsZWRWaWRlbyA9IE5POworICAgICAgICAgICAgcGxheWVyQ29udHJvbGxlci5j
b250ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1ha2UoMCwgMCk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gc2Vla2FibGVSYW5nZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgIHBsYXllckNvbnRy
b2xsZXIuc2Vla2FibGVUaW1lUmFuZ2VzID0gc2Vla2FibGVSYW5nZXMuZ2V0KCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIHBsYXllckNvbnRyb2xsZXIuY2FuU2NhbkJhY2t3YXJkID0gTk87
CisKKyAgICAgICAgICAgIHBsYXllckNvbnRyb2xsZXIuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnMgPSBuaWw7CisgICAgICAgICAgICBwbGF5ZXJDb250cm9sbGVyLmN1cnJlbnRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uID0gbmlsOworCisgICAgICAgICAgICBwbGF5ZXJDb250cm9sbGVyLmxl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgICAgICAgICBwbGF5ZXJDb250
cm9sbGVyLmN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7CisgICAgICAg
IH0KKyAgICB9KTsKIH0KIAotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbW9k
ZWwpCiB7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG1vZGVsOwpAQCAtNjUyLDcgKzcw
NSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9u
KGRvdWJsZSBkdXJhdGlvbikKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIGR1cmF0aW9uXSB7Ci0gICAgICAgIFdl
YkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IHN0cm9uZ1RoaXMtPnBsYXll
ckNvbnRyb2xsZXIoKTsKKyAgICAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250
cm9sbGVyID0gc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MDE3
IHVzZSBjb3JyZWN0IHZhbHVlcyBpbnN0ZWFkIG9mIGR1cmF0aW9uIGZvciBhbGwgdGhlc2UKICAg
ICAgICAgcGxheWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb24gPSBkdXJhdGlvbjsKQEAgLTY3
NiwxMCArNzI5LDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlCiAgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIAogICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBj
dXJyZW50VGltZSwgYW5jaG9yVGltZV0gewotICAgICAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JU
aW1lU3RhbXAgPSAhW3N0cm9uZ1RoaXMtPnBsYXllckNvbnRyb2xsZXIoKSByYXRlXSA/IE5BTiA6
IGFuY2hvclRpbWU7CisgICAgICAgIE5TVGltZUludGVydmFsIGFuY2hvclRpbWVTdGFtcCA9ICFb
c3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHJhdGVdID8gTkFOIDogYW5jaG9yVGltZTsK
ICAgICAgICAgQVZWYWx1ZVRpbWluZyAqdGltaW5nID0gW2dldEFWVmFsdWVUaW1pbmdDbGFzcygp
IHZhbHVlVGltaW5nV2l0aEFuY2hvclZhbHVlOmN1cnJlbnRUaW1lCiAgICAgICAgICAgICBhbmNo
b3JUaW1lU3RhbXA6YW5jaG9yVGltZVN0YW1wIHJhdGU6MF07Ci0gICAgICAgIHN0cm9uZ1RoaXMt
PnBsYXllckNvbnRyb2xsZXIoKS50aW1pbmcgPSB0aW1pbmc7CisgICAgICAgIFtzdHJvbmdUaGlz
LT5tX3BsYXllckNvbnRyb2xsZXIgc2V0VGltaW5nOnRpbWluZ107CiAgICAgfSk7CiB9CiAKQEAg
LTY4OCw3ICs3NDEsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdAogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAKICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywg
aXNQbGF5aW5nLCBwbGF5YmFja1JhdGVdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+cGxheWVyQ29u
dHJvbGxlcigpLnJhdGUgPSBpc1BsYXlpbmcgPyBwbGF5YmFja1JhdGUgOiAwLjsKKyAgICAgICAg
W3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciBzZXRSYXRlOmlzUGxheWluZyA/IHBsYXli
YWNrUmF0ZSA6IDAuXTsKICAgICB9KTsKIH0KIApAQCAtNjk3LDggKzc1MCw4IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhh
c1ZpZGVvLCBmbG9hdCB3CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBoYXNWaWRlbywgd2lkdGgsIGhlaWdodF0g
ewotICAgICAgICBzdHJvbmdUaGlzLT5wbGF5ZXJDb250cm9sbGVyKCkuaGFzRW5hYmxlZFZpZGVv
ID0gaGFzVmlkZW87Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnBsYXllckNvbnRyb2xsZXIoKS5jb250
ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCk7CisgICAgICAgIFtzdHJv
bmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsK
KyAgICAgICAgW3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciBzZXRDb250ZW50RGltZW5z
aW9uczpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKICAgICB9KTsKIH0KIApAQCAtNzE4LDcg
Kzc3MSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWth
YmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIAogICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBzZWVrYWJs
ZVJhbmdlc10gewotICAgICAgICBzdHJvbmdUaGlzLT5wbGF5ZXJDb250cm9sbGVyKCkuc2Vla2Fi
bGVUaW1lUmFuZ2VzID0gc2Vla2FibGVSYW5nZXMuZ2V0KCk7CisgICAgICAgIFtzdHJvbmdUaGlz
LT5tX3BsYXllckNvbnRyb2xsZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWthYmxlUmFuZ2Vz
LmdldCgpXTsKICAgICB9KTsKIH0KIApAQCAtNzI3LDcgKzc4MCw3IEBAIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBs
YXlGYXN0UmV2CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBz
dHJvbmdUaGlzKHRoaXMpOwogICAgIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKLSAgICAgICAg
c3Ryb25nVGhpcy0+cGxheWVyQ29udHJvbGxlcigpLmNhblNjYW5CYWNrd2FyZCA9IGNhblBsYXlG
YXN0UmV2ZXJzZTsKKyAgICAgICAgW3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciBzZXRD
YW5TY2FuQmFja3dhcmQ6Y2FuUGxheUZhc3RSZXZlcnNlXTsKICAgICB9KTsKIH0KIApAQCAtNzQ4
LDkgKzgwMSw5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvCiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIAogICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWJPcHRpb25zLCBzdHJv
bmdUaGlzLCBzZWxlY3RlZEluZGV4XSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnBsYXllckNvbnRy
b2xsZXIoKS5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IHdlYk9wdGlvbnMuZ2V0KCk7Cisg
ICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07CiAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4
IDwgW3dlYk9wdGlvbnMgY291bnRdKQotICAgICAgICAgICAgc3Ryb25nVGhpcy0+cGxheWVyQ29u
dHJvbGxlcigpLmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uID0gW3dlYk9wdGlvbnMg
b2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV07Cisg
ICAgICAgICAgICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5kZXg6c3RhdGljX2Nh
c3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsKICAgICB9KTsKIH0KIApAQCAtNzYwLDkg
KzgxMyw5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwogCiAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3dlYk9wdGlvbnMsIHN0cm9uZ1RoaXMs
IHNlbGVjdGVkSW5kZXhdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+cGxheWVyQ29udHJvbGxlcigp
LmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSB3ZWJPcHRpb25zLmdldCgpOworICAgICAg
ICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07CiAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwg
W3dlYk9wdGlvbnMgY291bnRdKQotICAgICAgICAgICAgc3Ryb25nVGhpcy0+cGxheWVyQ29udHJv
bGxlcigpLmN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBbd2ViT3B0aW9ucyBv
YmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXTsKKyAg
ICAgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0YXRpY19j
YXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07CiAgICAgfSk7CiB9CiAKQEAgLTc3Nyw3
ICs4MzAsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRl
cm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKIAogICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBlbmFibGVkLCBs
b2NhbGl6ZWREZXZpY2VOYW1lLCBleHRlcm5hbFBsYXliYWNrVHlwZV0gewotICAgICAgICBXZWJB
VlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBzdHJvbmdUaGlzLT5wbGF5ZXJD
b250cm9sbGVyKCk7CisgICAgICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJv
bGxlciA9IHN0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKICAgICAgICAgcGxh
eWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWlyUGxheURldmljZUxvY2FsaXplZE5hbWUg
PSBsb2NhbGl6ZWREZXZpY2VOYW1lOwogICAgICAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFs
UGxheWJhY2tUeXBlID0gZXh0ZXJuYWxQbGF5YmFja1R5cGU7CiAgICAgICAgIHBsYXllckNvbnRy
b2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSA9IGVuYWJsZWQ7CkBAIC04MjEsMTcgKzg3NCwx
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3Jl
ZW5JbnRlcm5hbChQbGF0Zm9ybUxheWVyJiB2aQogICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJv
bVN1cGVybGF5ZXJdOwogCiAgICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFWVmlkZW9M
YXllciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhpZGRlbjpw
bGF5ZXJDb250cm9sbGVyKCkuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV07CisgICAgW21fdmlkZW9M
YXllckNvbnRhaW5lciBzZXRIaWRkZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxh
eWJhY2tBY3RpdmVdXTsKICAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvU3VibGF5
ZXI6bV92aWRlb0xheWVyLmdldCgpXTsKIAotICAgIENHU2l6ZSB2aWRlb1NpemUgPSBwbGF5ZXJD
b250cm9sbGVyKCkuY29udGVudERpbWVuc2lvbnM7CisgICAgQ0dTaXplIHZpZGVvU2l6ZSA9IFtt
X3BsYXllckNvbnRyb2xsZXIgY29udGVudERpbWVuc2lvbnNdOwogICAgIENHUmVjdCB2aWRlb1Jl
Y3QgPSBDR1JlY3RNYWtlKDAsIDAsIHZpZGVvU2l6ZS53aWR0aCwgdmlkZW9TaXplLmhlaWdodCk7
CiAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRWaWRlb1JlY3Q6dmlkZW9SZWN0XTsKIAog
ICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0Nv
bnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoVmlkZW9MYXllcjptX3ZpZGVvTGF5ZXJDb250YWlu
ZXIuZ2V0KCldKTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNr
Q29udHJvbHM6Tk9dOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRy
b2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIoKV07Ci0gICAgW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6cGxheWVyQ29udHJvbGxlcigpXTsKKyAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNv
bnRyb2xsZXIgKiltX3BsYXllckNvbnRyb2xsZXIuZ2V0KCldOworICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldERlbGVnYXRlOm1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAgW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgc2V0QWxsb3dzT3B0aW1pemVkRnVsbHNjcmVlbjphbGxvd09w
dGltaXplZEZ1bGxzY3JlZW5dOwogCiAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRQbGF5
ZXJWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpXTsKQEAgLTEwMTAs
MTggKzEwNjMsMzEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xl
YW51cEZ1bGxzY3JlZW5JbnRlcm5hbCgpCiAgICAgICAgIGlmIChtX3BhcmVudFdpbmRvdykKICAg
ICAgICAgICAgIFtbZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9z
ZXRTdGF0dXNCYXJPcmllbnRhdGlvbjpbbV9wYXJlbnRXaW5kb3cgaW50ZXJmYWNlT3JpZW50YXRp
b25dXTsKICAgICB9CisgICAgCisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpu
aWxdOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RnVsbHNjcmVlbkludGVyZmFjZTpuaWxd
OworICAgIAogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Cisg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjpuaWxdOworICAg
IAorICAgIGlmIChtX21vZGUgJiBIVE1MTWVkaWFFbGVtZW50OjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
T3B0aW1pemVkKQorICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBjYW5jZWxPcHRpbWl6
ZWRGdWxsc2NyZWVuXTsKKyAgICBpZiAobV9tb2RlICYgSFRNTE1lZGlhRWxlbWVudDo6VmlkZW9G
dWxsc2NyZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBl
eGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgCiAg
ICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHJlbW92ZUZyb21TdXBlcnZpZXddOwog
ICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKQogICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdOwotICAgIFttX3BsYXllclZpZXdDb250
cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6bmlsXTsKLSAgICBtX3BsYXllclZpZXdDb250cm9s
bGVyID0gbmlsOworICAgIAogICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJd
OwotICAgIG1fdmlkZW9MYXllciA9IG5pbDsKICAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHJl
bW92ZUZyb21TdXBlcmxheWVyXTsKICAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldFBsYXll
clZpZXdDb250cm9sbGVyOm5pbF07Ci0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gbmlsOwog
ICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAK
KyAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CisgICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gbmls
OworICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgbV9wbGF5ZXJDb250cm9s
bGVyID0gbmlsOwogICAgIG1fdmlld0NvbnRyb2xsZXIgPSBuaWw7CiAgICAgbV93aW5kb3cgPSBu
aWw7CiAgICAgbV9wYXJlbnRWaWV3ID0gbmlsOwpAQCAtMTAzNywzMSArMTEwMywxMCBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbkludGVy
bmFsKCkKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6aW52YWxpZGF0
ZSgpCiB7Ci0gICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNdOwotICAgIFttX3dpbmRvdyBzZXRS
b290Vmlld0NvbnRyb2xsZXI6bmlsXTsKLSAgICBtX3dpbmRvdyA9IG5pbDsKICAgICBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsID0gbmlsOwotICAgIGlmIChtX21vZGUgJiBIVE1MTWVkaWFFbGVtZW50
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlT3B0aW1pemVkKQotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBjYW5jZWxPcHRpbWl6ZWRGdWxsc2NyZWVuXTsKLSAgICBpZiAobV9tb2RlICYgSFRN
TE1lZGlhRWxlbWVudDo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQotICAgICAgICBbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07Ci0gICAgbV9wbGF5ZXJDb250cm9sbGVyID0gbmlsOwotICAgIFttX3BsYXll
clZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW1ttX3BsYXllclZpZXdDb250
cm9sbGVyIHZpZXddIHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIGlmIChtX3ZpZXdDb250cm9s
bGVyKQotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmll
d0NvbnRyb2xsZXJdOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRy
b2xsZXI6bmlsXTsKLSAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOwotICAgIFttX3Zp
ZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIG1fdmlkZW9MYXllciA9IG5pbDsK
LSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBb
bV92aWRlb0xheWVyQ29udGFpbmVyIHNldFBsYXllclZpZXdDb250cm9sbGVyOm5pbF07Ci0gICAg
bV92aWRlb0xheWVyQ29udGFpbmVyID0gbmlsOwotICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3
XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEZ1bGxz
Y3JlZW5JbnRlcmZhY2U6bmlsXTsKLSAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwotICAgIG1f
cGFyZW50VmlldyA9IG5pbDsKLSAgICBtX3BhcmVudFdpbmRvdyA9IG5pbDsKKyAgICBtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlciA9IG5pbDsKKyAgICAKKyAgICBjbGVhbnVwRnVsbHNjcmVlbklu
dGVybmFsKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJl
cXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Lm1tCmluZGV4IGRiOWQ5NDY5ZjhhYTFjOGI0MGYyZGI0NmRiMDBkMDMyYjA5NGY4YjIuLjkw
MmM5MWIxNGFmMDUxZTE3ZTE2NzM4OTNkYjFiMzRkZDQ5ZjI4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTY3LDYgKzY3LDkgQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQq
IHZpZGUKICAgICBpZiAobV92aWRlb0VsZW1lbnQgPT0gdmlkZW9FbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpCisgICAgICAgIG1f
dmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKKyAgICAKICAgICBp
ZiAobV92aWRlb0VsZW1lbnQgJiYgbV9pc0xpc3RlbmluZykgewogICAgICAgICBmb3IgKGF1dG8g
ZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCiAgICAgICAgICAgICBtX3ZpZGVvRWxl
bWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTc4ZTBjMzc0Nzg5
NTRmOWY2MTEwMjFjZmQyNTZlMzA2ZDFkMTYwMy4uYjc2M2IwMzg3Mzk4NDY1ZWU1YzU3Mzc3NzY2
Y2Q2Mjc4NDhmZjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTIyLDYgKzIyLDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIG1lc3NhZ2VzIC0+
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSB7CisgICAgUmVzZXRNZWRpYVN0YXRlKCkK
ICAgICBTZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGltZSkK
ICAgICBTZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgdW5zaWduZWQgd2lkdGgsIHVu
c2lnbmVkIGhlaWdodCkKICAgICBTZXRTZWVrYWJsZVJhbmdlc1ZlY3RvcihWZWN0b3I8c3RkOjpw
YWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
aW5kZXggNTNkZGQwMTFkNTg5OTExODBhZGE1N2RjZDc2MmFiNjRhNjBiN2VkMi4uZmJhMjE0YTYy
ZDMxOTVjMDdiZmFiNzhlZDI1OGQzMjExZDRiYzU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KQEAgLTY4LDkgKzY4LDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmludmFsaWRhdGUoKQogewogICAgIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjppbnZhbGlkYXRlKCk7CiAKLSAgICBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChudWxscHRy
KTsKLSAgICBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihudWxscHRyKTsKLQog
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApp
bmRleCBlNzA5NWIwMDlhNDM4MmJhNDYwNTdjOGRkZmExMDYxNTRhNTJjZjY5Li40ZjUzNmE2NzQ5
MGJiYTdjZjFlNGEwNDE0YjY4ZmExOTVkNzQyNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC02
OCw2ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiByaHMpIG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CiAgICAgCiAgICAgLy8gRnVsbHNj
cmVlbkludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlp
bmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRl
eCBmZmIwNGJkNWUzYTRjNjJkOTRiNzE3ZmI0ODlhZTY0ZjA4MTY0NzRjLi5lZTdhYmQ0OGJhYjQw
NTllMmM2ZDkyZDdkYjQyZWI1NzYxNzAyOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTEx
OSw2ICsxMTksMTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9G
dWxsc2NyZWVuKCkKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY2xpZW50UmVjdEZvckVsZW1lbnQodmlkZW9F
bGVtZW50LmdldCgpKSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCit2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnJlc2V0TWVkaWFTdGF0ZSgpCit7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlJlc2V0TWVkaWFTdGF0ZSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKyAgICAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXREdXJhdGlvbihkdXJh
dGlvbiksIG1fcGFnZS0+cGFnZUlEKCkpOwo=
</data>
<flag name="review"
          id="270307"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245570</attachid>
            <date>2015-01-28 13:58:54 -0800</date>
            <delta_ts>2015-01-29 12:41:23 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-140893-20150128135859.patch</filename>
            <type>text/plain</type>
            <size>29394</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIxYzdkMGFmZTVlMTI4
Mzk3NDg2NWVmMWZhYzZhYjYwZDJlN2YxYi4uODM2NGY2NjEyOTI5NDY1NTVhZDczNjMzMDA1ODEy
NDI1MDI5OTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE1LTAxLTI2ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBQcmV2ZW50IGNyYXNoIHdo
ZW4gYWNjZXNzaW5nIFdlYkFWUGxheWVyQ29udHJvbGxlci5kZWxlZ2F0ZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDg5MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWltcyB0byBw
cmV2ZW50IGEgbnVsbCBkZWxlZ2F0ZSBhY2Nlc3MgZHVyaW5nIGludmFsaWRhdGlvbiBieSBhZGRp
bmcgbnVsbCBjaGVja3MgYmVmb3JlIGFjY2Vzc2luZyB0aGUgZGVsZWdhdGUsIGJ5IG1ha2luZyBl
eHBsaWNpdCB0aGUgcmVjcmVhdGlvbiBvZiBtX3BsYXllckNvbnRyb2xsZXIsIGFuZCBieSBjb25z
b2xpZGF0aW5nIGFuZCBjb3JyZWN0aW5nIHRoZSB0ZWFyZG93biBzZXF1ZW5jZS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UuaDogYWRkIHJlc2V0TWVkaWFTdGF0ZSgpCisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6IGRpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBsYXllclZpZXdDb250cm9sbGVyOnNob3Vs
ZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpdKTogQ2hlY2sgZm9yIG51bGwgYmVmb3JlIGFjY2Vz
c2luZyBkZWxlZ2F0ZS4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBsYXk6XSk6
IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6IGRpdHRv
LgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgdG9nZ2xlUGxheWJhY2s6XSk6IGRp
dHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxheWluZzpdKTogZGl0
dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBiZWdpblNjcnViYmluZzpdKTog
ZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY3J1YmJpbmc6XSk6
IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vla1RvVGltZTpdKTog
ZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBiZWdpblNjYW5uaW5nRm9y
d2FyZDpdKTogZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY2Fu
bmluZ0ZvcndhcmQ6XSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
YmVnaW5TY2FubmluZ0JhY2t3YXJkOl0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJD
b250cm9sbGVyIGVuZFNjYW5uaW5nQmFja3dhcmQ6XSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJB
VlBsYXllckNvbnRyb2xsZXIgc2Vla1RvQmVnaW5uaW5nOl0pOiBkaXR0by4KKyAgICAgICAgKC1b
V2ViQVZQbGF5ZXJDb250cm9sbGVyIHNlZWtUb0VuZDpdKTogZGl0dG8uCisgICAgICAgICgtW1dl
YkFWUGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpd
KTogZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOl0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGxheW91dFN1YmxheWVyc09mTGF5ZXI6XSk6IGRpdHRvLgorICAgICAgICAo
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KTogaW5pdGlhbGl6ZSBtX3BsYXllckNvbnRyb2xsZXIKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlhU3RhdGUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbik6IHJl
bW92ZSBwbGF5ZXJDb250cm9sbGVyKCkKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUpOiBkaXR0by4KKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBkaXR0by4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdl
cyk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dENhblBsYXlGYXN0UmV2ZXJzZSk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogZGl0dG8uCisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFsUGxheWJhY2spOiBkaXR0by4KKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW5JbnRlcm5hbCk6IGRp
dHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVs
bHNjcmVlblN0YW5kYXJkKTogZGl0dG8uCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW5JbnRlcm5hbCk6IGNvbnNvbGlkYXRlZCBjbGVh
bnVwIGNvZGUgZnJvbSBpbnZhbGlkYXRlKCkKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjppbnZhbGlkYXRlKTogY29uc29saWRhdGUgY2xlYW51cCBjb2RlLgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBsYXllckNvbnRyb2xsZXIp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpzZXRWaWRlb0VsZW1lbnQpOiBjYWxsIHJlc2V0TWVkaWFTdGF0ZSgpCisKIDIwMTUt
MDEtMTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjE3ODI1MCk6IH4yJSBQTFQgcmVncmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI5NWEyOWMz
NzFkNjY1NWViZDcwOGY3NTQzMDMwZGRkODc3Zjg3MGQuLjc0YjlkM2I1YTA2YmFmZTkxMmUwNjc0
ODI1ZTRlYjVhYzg1NGUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wMS0y
NiAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBj
cmFzaCB3aGVuIGFjY2Vzc2luZyBXZWJBVlBsYXllckNvbnRyb2xsZXIuZGVsZWdhdGUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbHVtYiBuZXcgcmVz
ZXRNZWRpYVN0YXRlKCkgdGhyb3VnaCBJUEMgaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUpOiByZW1vdmUgcmVkdW5kYW50IHNldCB0
byBudWxscHRyLgorICAgICAgICAqIFdlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXNl
dE1lZGlhU3RhdGUpOgorCiAyMDE1LTAxLTE5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVXNlIEMrKyBsYW1iZGEg
aW5zdGVhZCBvZiBXVEY6OmJpbmQoKSBpbiBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5l
U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiMDdhNzc5YTQyZmRlZDZkYzgyZWFiYjY3
ZTYwMzE1YmIxYjBkMTg0Li5iN2NmMzY1ZGFlMjc1MDQ1N2NmZmEwNDhiZTA1MWRlMjRmM2UxMDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzQ5OSw2ICszNDk5LDcgQEAgX19aTjdXZWJDb3Jl
MzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDExc2V0RHVyYXRpb25FZAogX19aTjdX
ZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE0ZXhpdEZ1bGxzY3JlZW5F
TlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0MTRzZXRDdXJyZW50VGltZUVkZAogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDE1ZW50ZXJGdWxsc2NyZWVuRXYKK19fWk43V2ViQ29yZTMyV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQxNXJlc2V0TWVkaWFTdGF0ZUV2CiBfX1pON1dlYkNvcmUz
MldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTVzZXR1cEZ1bGxzY3JlZW5FUjdDQUxh
eWVyTlNfN0ludFJlY3RFUDZVSVZpZXdqYgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDE3Y2xlYW51cEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMzJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE3c2V0U2Vla2FibGVSYW5nZXNFUktOU18xMFRp
bWVSYW5nZXNFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggZDQ1N2U0ZjFkODNlZDY4NDI3MjZkZTVh
NzJmNzc4YTRjNTZmODg3ZS4uNjRjODcxNmZiMjljNTdjMGY0MWM4MDRlN2NmZTRjNjk1ODEzMjY0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgZW51
bSBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB7IFRhcmdldFR5cGVOb25lLCBUYXJnZXRUeXBl
QWlyUGxheSwgVGFyZ2V0VHlwZVRWT3V0IH07CiAgICAgCiAgICAgdmlydHVhbCB+V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCByZXNldE1lZGlhU3Rh
dGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBh
bmNob3JUaW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcs
IGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRl
eCAzZjcxYmEyNWE1ZWZiMTcxY2JjMjE3ZjA0YTk0YmU4ZjhlZjI0MWVhLi5hZjk1MTQ3MzczN2I2
YjljM2E3ZDMyMzFhYjMyZTJjZjQ3YmNhYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
aApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCopOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsKICAgICAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGlt
ZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJy
aWRlOwpAQCAtOTUsNiArOTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXlBdXRvbWF0aWNhbGx5
U2hvd1ZpZGVvT3B0aW1pemVkKCk7CiAKIHByb3RlY3RlZDoKKyAgICB2b2lkIGJlZ2luU2Vzc2lv
bigpOwogICAgIHZvaWQgc2V0dXBGdWxsc2NyZWVuSW50ZXJuYWwoUGxhdGZvcm1MYXllciYsIElu
dFJlY3QgaW5pdGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50OjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlLCBib29sIGFsbG93T3B0aW1pemVkRnVsbHNjcmVlbik7CiAgICAgdm9pZCBlbnRl
ckZ1bGxzY3JlZW5PcHRpbWl6ZWQoKTsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlblN0YW5kYXJk
KCk7CkBAIC0xMTgsOCArMTIwLDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9leGl0Q29tcGxl
dGVkOwogICAgIGJvb2wgbV9lbnRlclJlcXVlc3RlZDsKIAotICAgIFdlYkFWUGxheWVyQ29udHJv
bGxlciAqcGxheWVyQ29udHJvbGxlcigpOwotICAgIAogICAgIHZvaWQgZG9FbnRlckZ1bGxzY3Jl
ZW4oKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCBhZWUxOWU3N2Ex
ZDExNGI2MDUyNDYxNThhOGVkNjkyNGY4OTdmYzNkLi45ZGViM2Y3ZmFjN2Q0ZGNkYzUwOTUzMTRh
NmY4OWRjYjU1MTVmZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC04Niw2
ICs4Niw4IEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRl
LCBDTVRpbWUpCiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb247CiB9CiAKKy0odm9pZClyZXNldFN0YXRlOworCiBAcHJvcGVy
dHkgKHJldGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CiBA
cHJvcGVydHkgKGFzc2lnbikgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIGRlbGVnYXRlOwogQHBy
b3BlcnR5IChhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBmdWxsc2Ny
ZWVuSW50ZXJmYWNlOwpAQCAtMTU0LDYgKzE1NiwzNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29y
ZU1lZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1lKQogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAorLSh2b2lkKXJlc2V0U3RhdGUgeworICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsK
KyAgICBzZWxmLm1heFRpbWUgPSAwOworICAgIHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5k
VGltZXMgPSAwOworICAgIHNlbGYubG9hZGVkVGltZVJhbmdlcyA9IEBbXTsKKyAgICAKKyAgICBz
ZWxmLmNhblBsYXkgPSBOTzsKKyAgICBzZWxmLmNhblBhdXNlID0gTk87CisgICAgc2VsZi5jYW5U
b2dnbGVQbGF5YmFjayA9IE5POworICAgIHNlbGYuaGFzRW5hYmxlZEF1ZGlvID0gTk87CisgICAg
c2VsZi5jYW5TZWVrID0gTk87CisgICAgc2VsZi5taW5UaW1lID0gMDsKKyAgICBzZWxmLnN0YXR1
cyA9IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1Vua25vd247CisgICAgCisgICAgc2VsZi50aW1p
bmcgPSBuaWw7CisgICAgc2VsZi5yYXRlID0gMDsKKyAgICAKKyAgICBzZWxmLmhhc0VuYWJsZWRW
aWRlbyA9IE5POworICAgIHNlbGYuY29udGVudERpbWVuc2lvbnMgPSBDR1NpemVNYWtlKDAsIDAp
OworICAgIAorICAgIHNlbGYuc2Vla2FibGVUaW1lUmFuZ2VzID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5XTsKKyAgICAKKyAgICBzZWxmLmNhblNjYW5CYWNrd2FyZCA9IE5POworICAgIAorICAgIHNl
bGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgc2VsZi5jdXJyZW50QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKKyAgICAKKyAgICBzZWxmLmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgc2VsZi5jdXJyZW50TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uID0gbmlsOworfQorCiAtIChBVlBsYXllciopIHBsYXllciB7CiAgICAgcmV0
dXJuIG5pbDsKIH0KQEAgLTE2OCw5ICsyMDEsMTIgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVN
ZWRpYSwga0NNVGltZUluZGVmaW5pdGUsIENNVGltZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocGxh
eWVyVmlld0NvbnRyb2xsZXIpOwogICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIEFTU0VS
VChzZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVy
biBZRVM7CisgICAgCiAgICAgaWYgKHJlYXNvbiA9PSBBVlBsYXllclZpZXdDb250cm9sbGVyRXhp
dEZ1bGxTY3JlZW5SZWFzb25Eb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBBVlBsYXllclZp
ZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25SZW1vdGVDb250cm9sU3RvcEV2ZW50UmVj
ZWl2ZWQpCiAgICAgICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7CisgICAgCiAgICAgc2VsZi5k
ZWxlZ2F0ZS0+cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgcmV0dXJuIE5POwogfQpAQCAt
MTc4LDIxICsyMTQsMjQgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUlu
ZGVmaW5pdGUsIENNVGltZSkKIC0gKHZvaWQpcGxheTooaWQpc2VuZGVyCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUpOworICAgIGlmICghc2Vs
Zi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNlbGYuZGVsZWdhdGUtPnBsYXkoKTsK
IH0KIAogLSAodm9pZClwYXVzZTooaWQpc2VuZGVyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlbmRl
cik7Ci0gICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkK
KyAgICAgICAgcmV0dXJuOwogICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7CiB9CiAKIC0gKHZv
aWQpdG9nZ2xlUGxheWJhY2s6KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIp
OwotICAgIEFTU0VSVChzZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisg
ICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT50b2dnbGVQbGF5U3RhdGUoKTsKIH0K
IApAQCAtMjAzLDEyICsyNDIsMTMgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NN
VGltZUluZGVmaW5pdGUsIENNVGltZSkKIAogLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlp
bmcKIHsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRl
KQorICAgICAgICByZXR1cm47CiAgICAgaWYgKHBsYXlpbmcpCiAgICAgICAgIHNlbGYuZGVsZWdh
dGUtPnBsYXkoKTsKICAgICBlbHNlCiAgICAgICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7Ci0g
ICAgfQorfQogCiArIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZwog
ewpAQCAtMjE4LDIwICsyNTgsMjMgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NN
VGltZUluZGVmaW5pdGUsIENNVGltZSkKIC0gKHZvaWQpYmVnaW5TY3J1YmJpbmc6KGlkKXNlbmRl
cgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChzZWxmLmRlbGVnYXRl
KTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRl
bGVnYXRlLT5iZWdpblNjcnViYmluZygpOwogfQogCiAtICh2b2lkKWVuZFNjcnViYmluZzooaWQp
c2VuZGVyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgQVNTRVJUKHNlbGYuZGVs
ZWdhdGUpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNl
bGYuZGVsZWdhdGUtPmVuZFNjcnViYmluZygpOwogfQogCiAtICh2b2lkKXNlZWtUb1RpbWU6KE5T
VGltZUludGVydmFsKXRpbWUKIHsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYg
KCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CiAgICAgc2VsZi5kZWxlZ2F0ZS0+ZmFz
dFNlZWsodGltZSk7CiB9CiAKQEAgLTI5NCwyOCArMzM3LDMyIEBAIFNPRlRfTElOS19DT05TVEFO
VChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCiAtICh2b2lkKWJlZ2luU2Nh
bm5pbmdGb3J3YXJkOihpZClzZW5kZXIKIHsKICAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAg
ICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAg
ICByZXR1cm47CiAgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsKIH0K
IAogLSAodm9pZCllbmRTY2FubmluZ0ZvcndhcmQ6KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChzZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYu
ZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY2Fubmlu
ZygpOwogfQogCiAtICh2b2lkKWJlZ2luU2Nhbm5pbmdCYWNrd2FyZDooaWQpc2VuZGVyCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUpOworICAg
IGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNlbGYuZGVsZWdhdGUt
PmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwogfQogCiAtICh2b2lkKWVuZFNjYW5uaW5nQmFja3dh
cmQ6KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChz
ZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsK
ICAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY2FubmluZygpOwogfQogCkBAIC0zMzcsOCArMzg0LDgg
QEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5pdGUsIENNVGlt
ZSkKIC0gKHZvaWQpc2Vla1RvQmVnaW5uaW5nOihpZClzZW5kZXIKIHsKICAgICBVTlVTRURfUEFS
QU0oc2VuZGVyKTsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7Ci0KKyAgICBpZiAoIXNlbGYu
ZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1l
KC1JTkZJTklUWSk7CiB9CiAKQEAgLTM2NSw4ICs0MTIsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQo
Q29yZU1lZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1lKQogLSAodm9pZClzZWVrVG9FbmQ6
KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChzZWxm
LmRlbGVnYXRlKTsKLQorICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIHNlbGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoSU5GSU5JVFkpOwogfQogCkBAIC00MTksNyAr
NDY2LDggQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5pdGUs
IENNVGltZSkKICAgICBbX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2Vd
OwogICAgIF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWlu
XTsKICAgICAKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVn
YXRlKQorICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RG
b3VuZDsKICAgICAKQEAgLTQ0Miw3ICs0OTAsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1l
ZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1lKQogICAgIFtfY3VycmVudExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbiByZWxlYXNlXTsKICAgICBfY3VycmVudExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWluXTsKICAgICAKLSAgICBBU1NFUlQoc2VsZi5kZWxl
Z2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKICAgICAKQEAgLTQ2NSw3ICs1MTQsOCBA
QCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1lZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1l
KQogLSAodm9pZClsYXlvdXRTdWJsYXllcnNPZkxheWVyOihDQUxheWVyICopbGF5ZXIKIHsKICAg
ICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBbbGF5ZXIgYm91bmRzXTsKLSAgICBzZWxmLmRlbGVnYXRl
LT5zZXRWaWRlb0xheWVyRnJhbWUoQ0dSZWN0TWFrZSgwLCAwLCBDR1JlY3RHZXRXaWR0aChsYXll
ckJvdW5kcyksIENHUmVjdEdldEhlaWdodChsYXllckJvdW5kcykpKTsKKyAgICBpZiAoc2VsZi5k
ZWxlZ2F0ZSkKKyAgICAgICAgc2VsZi5kZWxlZ2F0ZS0+c2V0VmlkZW9MYXllckZyYW1lKENHUmVj
dE1ha2UoMCwgMCwgQ0dSZWN0R2V0V2lkdGgobGF5ZXJCb3VuZHMpLCBDR1JlY3RHZXRIZWlnaHQo
bGF5ZXJCb3VuZHMpKSk7CiAgICAgCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIGZv
ciAoQ0FMYXllciAqc3VibGF5ZXIgaW4gW2xheWVyIHN1YmxheWVyc10pIHsKQEAgLTYxNCwyOCAr
NjY0LDMyIEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRl
LCBDTVRpbWUpCiBAZW5kCiAKIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCi0gICAgOiBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsKG51bGxwdHIpCisgICAgOiBtX3BsYXllckNvbnRyb2xsZXIoYWRvcHROUyhbW1dlYkFWUGxh
eWVyQ29udHJvbGxlciBhbGxvY10gaW5pdF0pKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bChudWxscHRyKQogICAgICwgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIobnVsbHB0cikKICAg
ICAsIG1fbW9kZShIVE1MTWVkaWFFbGVtZW50OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKICAg
ICAsIG1fZXhpdFJlcXVlc3RlZChmYWxzZSkKICAgICAsIG1fZXhpdENvbXBsZXRlZChmYWxzZSkK
ICAgICAsIG1fZW50ZXJSZXF1ZXN0ZWQoZmFsc2UpCiB7CisgICAgW21fcGxheWVyQ29udHJvbGxl
ciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdOwogfQogCi1XZWJBVlBsYXllckNvbnRyb2xs
ZXIgKldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkK
K3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlc2V0TWVkaWFTdGF0ZSgp
CiB7Ci0gICAgaWYgKCFtX3BsYXllckNvbnRyb2xsZXIpCi0gICAgewotICAgICAgICBtX3BsYXll
ckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0
XSk7Ci0gICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICAgICAgW21f
cGxheWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3ZpZGVvRnVsbHNjcmVlbk1vZGVsXTsKLSAg
ICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdOwot
ICAgIH0KLSAgICByZXR1cm4gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICAK
KyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
c10geworICAgICAgICBpZiAoIXN0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlcikgeworICAg
ICAgICAgICAgc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFW
UGxheWVyQ29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgW3N0cm9uZ1RoaXMt
Pm1fcGxheWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpzdHJvbmdUaGlzLT5tX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsXTsKKyAgICAgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIg
c2V0RnVsbHNjcmVlbkludGVyZmFjZTpzdHJvbmdUaGlzLmdldCgpXTsKKyAgICAgICAgICAgIAor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xs
ZXIgcmVzZXRTdGF0ZV07CisgICAgfSk7CiB9CiAKLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwqIG1vZGVsKQogewogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsK
QEAgLTY1Miw3ICs3MDYsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIAogICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBkdXJhdGlvbl0g
ewotICAgICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBzdHJv
bmdUaGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7CisgICAgICAgIFdlYkFWUGxheWVyQ29udHJvbGxl
ciogcGxheWVyQ29udHJvbGxlciA9IHN0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlci5nZXQo
KTsKIAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzAxNyB1c2UgY29ycmVjdCB2YWx1ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3Ig
YWxsIHRoZXNlCiAgICAgICAgIHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uID0gZHVy
YXRpb247CkBAIC02NzYsMTAgKzczMCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZQogICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlz
KTsKICAgICAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
c3Ryb25nVGhpcywgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKLSAgICAgICAgTlNUaW1lSW50
ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0gIVtzdHJvbmdUaGlzLT5wbGF5ZXJDb250cm9sbGVyKCkg
cmF0ZV0gPyBOQU4gOiBhbmNob3JUaW1lOworICAgICAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JU
aW1lU3RhbXAgPSAhW3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciByYXRlXSA/IE5BTiA6
IGFuY2hvclRpbWU7CiAgICAgICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtnZXRBVlZhbHVl
VGltaW5nQ2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpjdXJyZW50VGltZQogICAg
ICAgICAgICAgYW5jaG9yVGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOwotICAgICAg
ICBzdHJvbmdUaGlzLT5wbGF5ZXJDb250cm9sbGVyKCkudGltaW5nID0gdGltaW5nOworICAgICAg
ICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOwogICAg
IH0pOwogfQogCkBAIC02ODgsNyArNzQyLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXQKICAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhp
cyk7CiAgICAgCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3N0cm9uZ1RoaXMsIGlzUGxheWluZywgcGxheWJhY2tSYXRlXSB7Ci0gICAgICAgIHN0cm9uZ1Ro
aXMtPnBsYXllckNvbnRyb2xsZXIoKS5yYXRlID0gaXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDog
MC47CisgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0UmF0ZTppc1Bs
YXlpbmcgPyBwbGF5YmFja1JhdGUgOiAwLl07CiAgICAgfSk7CiB9CiAKQEAgLTY5Nyw4ICs3NTEs
OCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVu
c2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgdwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAKICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgaGFzVmlkZW8sIHdp
ZHRoLCBoZWlnaHRdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+cGxheWVyQ29udHJvbGxlcigpLmhh
c0VuYWJsZWRWaWRlbyA9IGhhc1ZpZGVvOwotICAgICAgICBzdHJvbmdUaGlzLT5wbGF5ZXJDb250
cm9sbGVyKCkuY29udGVudERpbWVuc2lvbnMgPSBDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpOwor
ICAgICAgICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldEhhc0VuYWJsZWRWaWRl
bzpoYXNWaWRlb107CisgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0
Q29udGVudERpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiAgICAgfSk7CiB9
CiAKQEAgLTcxOCw3ICs3NzIsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUgogICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAg
ICAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25n
VGhpcywgc2Vla2FibGVSYW5nZXNdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+cGxheWVyQ29udHJv
bGxlcigpLnNlZWthYmxlVGltZVJhbmdlcyA9IHNlZWthYmxlUmFuZ2VzLmdldCgpOworICAgICAg
ICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpz
ZWVrYWJsZVJhbmdlcy5nZXQoKV07CiAgICAgfSk7CiB9CiAKQEAgLTcyNyw3ICs3ODEsNyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVy
c2UoYm9vbCBjYW5QbGF5RmFzdFJldgogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAKICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgY2FuUGxheUZhc3RSZXZlcnNl
XSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnBsYXllckNvbnRyb2xsZXIoKS5jYW5TY2FuQmFja3dh
cmQgPSBjYW5QbGF5RmFzdFJldmVyc2U7CisgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNv
bnRyb2xsZXIgc2V0Q2FuU2NhbkJhY2t3YXJkOmNhblBsYXlGYXN0UmV2ZXJzZV07CiAgICAgfSk7
CiB9CiAKQEAgLTc0OCw5ICs4MDIsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0bwogICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsK
ICAgICAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vi
T3B0aW9ucywgc3Ryb25nVGhpcywgc2VsZWN0ZWRJbmRleF0gewotICAgICAgICBzdHJvbmdUaGlz
LT5wbGF5ZXJDb250cm9sbGVyKCkuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSB3ZWJPcHRp
b25zLmdldCgpOworICAgICAgICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwogICAgICAgICBpZiAo
c2VsZWN0ZWRJbmRleCA8IFt3ZWJPcHRpb25zIGNvdW50XSkKLSAgICAgICAgICAgIHN0cm9uZ1Ro
aXMtPnBsYXllckNvbnRyb2xsZXIoKS5jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9
IFt3ZWJPcHRpb25zIG9iamVjdEF0SW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0
ZWRJbmRleCldOworICAgICAgICAgICAgW3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciBz
ZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdElu
ZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07CiAgICAgfSk7CiB9
CiAKQEAgLTc2MCw5ICs4MTQsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlYwogICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKIAog
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWJPcHRpb25z
LCBzdHJvbmdUaGlzLCBzZWxlY3RlZEluZGV4XSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnBsYXll
ckNvbnRyb2xsZXIoKS5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gd2ViT3B0aW9ucy5n
ZXQoKTsKKyAgICAgICAgW3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciBzZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwogICAgICAgICBpZiAoc2Vs
ZWN0ZWRJbmRleCA8IFt3ZWJPcHRpb25zIGNvdW50XSkKLSAgICAgICAgICAgIHN0cm9uZ1RoaXMt
PnBsYXllckNvbnRyb2xsZXIoKS5jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0g
W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3Rl
ZEluZGV4KV07CisgICAgICAgICAgICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNl
dEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJ
bmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOwogICAgIH0pOwog
fQogCkBAIC03NzcsNyArODMxLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmEKICAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7CiAK
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
cywgZW5hYmxlZCwgbG9jYWxpemVkRGV2aWNlTmFtZSwgZXh0ZXJuYWxQbGF5YmFja1R5cGVdIHsK
LSAgICAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gc3Ryb25n
VGhpcy0+cGxheWVyQ29udHJvbGxlcigpOworICAgICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIq
IHBsYXllckNvbnRyb2xsZXIgPSBzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7
CiAgICAgICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VM
b2NhbGl6ZWROYW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZTsKICAgICAgICAgcGxheWVyQ29udHJv
bGxlci5leHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVybmFsUGxheWJhY2tUeXBlOwogICAgICAg
ICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUgPSBlbmFibGVkOwpAQCAt
ODIxLDE3ICs4NzUsMTcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c2V0dXBGdWxsc2NyZWVuSW50ZXJuYWwoUGxhdGZvcm1MYXllciYgdmkKICAgICBbbV92aWRlb0xh
eWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKIAogICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9
IFtXZWJBVlZpZGVvTGF5ZXIgdmlkZW9MYXllcl07Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5l
ciBzZXRIaWRkZW46cGxheWVyQ29udHJvbGxlcigpLmV4dGVybmFsUGxheWJhY2tBY3RpdmVdOwor
ICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0SGlkZGVuOlttX3BsYXllckNvbnRyb2xsZXIg
aXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlXV07CiAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBz
ZXRWaWRlb1N1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKV07CiAKLSAgICBDR1NpemUgdmlkZW9T
aXplID0gcGxheWVyQ29udHJvbGxlcigpLmNvbnRlbnREaW1lbnNpb25zOworICAgIENHU2l6ZSB2
aWRlb1NpemUgPSBbbV9wbGF5ZXJDb250cm9sbGVyIGNvbnRlbnREaW1lbnNpb25zXTsKICAgICBD
R1JlY3QgdmlkZW9SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCB2aWRlb1NpemUud2lkdGgsIHZpZGVv
U2l6ZS5oZWlnaHQpOwogICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9SZWN0OnZp
ZGVvUmVjdF07CiAKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NB
VlBsYXllclZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFZpZGVvTGF5ZXI6bV92aWRl
b0xheWVyQ29udGFpbmVyLmdldCgpXSk7CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0
U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVy
KCldOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOnBsYXllckNvbnRy
b2xsZXIoKV07CisgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxl
cjooQVZQbGF5ZXJDb250cm9sbGVyICopbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKKyAgICBb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BsYXllckNvbnRyb2xsZXIuZ2V0
KCldOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c09wdGltaXplZEZ1bGxz
Y3JlZW46YWxsb3dPcHRpbWl6ZWRGdWxsc2NyZWVuXTsKIAogICAgIFttX3ZpZGVvTGF5ZXJDb250
YWluZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQo
KV07CkBAIC0xMDEwLDE4ICsxMDY0LDMxIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmNsZWFudXBGdWxsc2NyZWVuSW50ZXJuYWwoKQogICAgICAgICBpZiAobV9wYXJl
bnRXaW5kb3cpCiAgICAgICAgICAgICBbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFw
cGxpY2F0aW9uXSBfc2V0U3RhdHVzQmFyT3JpZW50YXRpb246W21fcGFyZW50V2luZG93IGludGVy
ZmFjZU9yaWVudGF0aW9uXV07CiAgICAgfQorICAgIAorICAgIFttX3BsYXllckNvbnRyb2xsZXIg
c2V0RGVsZWdhdGU6bmlsXTsKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEZ1bGxzY3JlZW5J
bnRlcmZhY2U6bmlsXTsKKyAgICAKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXREZWxl
Z2F0ZTpuaWxdOworICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xs
ZXI6bmlsXTsKKyAgICAKKyAgICBpZiAobV9tb2RlICYgSFRNTE1lZGlhRWxlbWVudDo6VmlkZW9G
dWxsc2NyZWVuTW9kZU9wdGltaXplZCkKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
Y2FuY2VsT3B0aW1pemVkRnVsbHNjcmVlbl07CisgICAgaWYgKG1fbW9kZSAmIEhUTUxNZWRpYUVs
ZW1lbnQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpu
aWxdOworICAgIAogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikKICAgICAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVyXTsKLSAgICBbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOm5pbF07Ci0gICAgbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciA9IG5pbDsKKyAgICAKICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZy
b21TdXBlcmxheWVyXTsKLSAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CiAgICAgW21fdmlkZW9MYXll
ckNvbnRhaW5lciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgW21fdmlkZW9MYXllckNvbnRh
aW5lciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjpuaWxdOwotICAgIG1fdmlkZW9MYXllckNvbnRh
aW5lciA9IG5pbDsKICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVy
dmlld107CisgICAgCisgICAgbV92aWRlb0xheWVyID0gbmlsOworICAgIG1fdmlkZW9MYXllckNv
bnRhaW5lciA9IG5pbDsKKyAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOworICAgIG1f
cGxheWVyQ29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwogICAg
IG1fd2luZG93ID0gbmlsOwogICAgIG1fcGFyZW50VmlldyA9IG5pbDsKQEAgLTEwMzcsMzEgKzEx
MDQsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1
bGxzY3JlZW5JbnRlcm5hbCgpCiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmludmFsaWRhdGUoKQogewotICAgIFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKLSAgICBb
bV93aW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOm5pbF07Ci0gICAgbV93aW5kb3cgPSBuaWw7
CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG5pbDsKLSAgICBpZiAobV9tb2RlICYgSFRN
TE1lZGlhRWxlbWVudDo6VmlkZW9GdWxsc2NyZWVuTW9kZU9wdGltaXplZCkKLSAgICAgICAgW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgY2FuY2VsT3B0aW1pemVkRnVsbHNjcmVlbl07Ci0gICAgaWYg
KG1fbW9kZSAmIEhUTUxNZWRpYUVsZW1lbnQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkK
LSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpO
TyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwotICAgIG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsK
LSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICBpZiAo
bV92aWV3Q29udHJvbGxlcikKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgcmVtb3Zl
RnJvbVBhcmVudFZpZXdDb250cm9sbGVyXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXRQbGF5ZXJDb250cm9sbGVyOm5pbF07Ci0gICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IG5p
bDsKLSAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBtX3ZpZGVv
TGF5ZXIgPSBuaWw7Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciByZW1vdmVGcm9tU3VwZXJs
YXllcl07Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxl
cjpuaWxdOwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKLSAgICBbW21fdmlld0Nv
bnRyb2xsZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgW21fcGxheWVyQ29udHJv
bGxlciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOm5pbF07Ci0gICAgbV92aWV3Q29udHJvbGxlciA9
IG5pbDsKLSAgICBtX3BhcmVudFZpZXcgPSBuaWw7Ci0gICAgbV9wYXJlbnRXaW5kb3cgPSBuaWw7
CisgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBuaWw7CisgICAgCisgICAgY2xlYW51
cEZ1bGxzY3JlZW5JbnRlcm5hbCgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpyZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCBkYjlkOTQ2OWY4YWExYzhiNDBmMmRiNDZkYjAwZDAz
MmIwOTRmOGIyLi45MDJjOTFiMTRhZjA1MWUxN2UxNjczODkzZGIxYjM0ZGQ0OWYyODY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC02Nyw2ICs2Nyw5IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1M
VmlkZW9FbGVtZW50KiB2aWRlCiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ID09IHZpZGVvRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
KQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7
CisgICAgCiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAg
ICAgZm9yIChhdXRvIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQogICAgICAgICAg
ICAgbV92aWRlb0VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDU3OGUwYzM3NDc4OTU0ZjlmNjExMDIxY2ZkMjU2ZTMwNmQxZDE2MDMuLmI3NjNiMDM4NzM5ODQ2
NWVlNWM1NzM3Nzc2NmNkNjI3ODQ4ZmY3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpZiBQTEFURk9STShJT1Mp
CiBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgeworICAgIFJlc2V0
TWVkaWFTdGF0ZSgpCiAgICAgU2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgaG9zdFRpbWUpCiAgICAgU2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIHVuc2ln
bmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAgICAgU2V0U2Vla2FibGVSYW5nZXNWZWN0b3Io
VmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCmluZGV4IDUzZGRkMDExZDU4OTkxMTgwYWRhNTdkY2Q3NjJhYjY0YTYwYjdl
ZDIuLmZiYTIxNGE2MmQzMTk1YzA3YmZhYjc4ZWQyNThkMzIxMWQ0YmM1NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tCkBAIC02OCw5ICs2OCw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKIHsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6aW52YWxpZGF0ZSgpOwogCi0gICAgc2V0V2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwobnVsbHB0cik7Ci0gICAgc2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIo
bnVsbHB0cik7Ci0KICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLmgKaW5kZXggZTcwOTViMDA5YTQzODJiYTQ2MDU3YzhkZGZhMTA2MTU0YTUyY2Y2
OS4uNGY1MzZhNjc0OTBiYmE3Y2YxZTRhMDQxNGI2OGZhMTk1ZDc0MjU4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIuaApAQCAtNjgsNiArNjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZSB7IHJldHVybiBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogICAgIAog
ICAgIC8vIEZ1bGxzY3JlZW5JbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0
YXRlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGlt
ZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRl
KGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KaW5kZXggZmZiMDRiZDVlM2E0YzYyZDk0YjcxN2ZiNDg5YWU2NGYwODE2NDc0Yy4u
ZWU3YWJkNDhiYWI0MDU5ZTJjNmQ5MmQ3ZGI0MmViNTc2MTcwMjlkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCkBAIC0xMTksNiArMTE5LDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZXhpdFZpZGVvRnVsbHNjcmVlbigpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNsaWVudFJlY3RGb3JF
bGVtZW50KHZpZGVvRWxlbWVudC5nZXQoKSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAordm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXNldE1lZGlhU3RhdGUoKQoreworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpSZXNl
dE1lZGlhU3RhdGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisgICAgCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0
RHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
</data>
<flag name="commit-queue"
          id="270580"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245786</attachid>
            <date>2015-01-31 10:39:09 -0800</date>
            <delta_ts>2015-02-02 11:40:52 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-140893-20150131103917.patch</filename>
            <type>text/plain</type>
            <size>29388</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIxYzdkMGFmZTVlMTI4
Mzk3NDg2NWVmMWZhYzZhYjYwZDJlN2YxYi4uMjkxNzZjMzE4ODcyOTI5NDQ2Njg4NmYzNzkyNzll
MDUwNGZhNGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE1LTAxLTI2ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBQcmV2ZW50IGNyYXNoIHdo
ZW4gYWNjZXNzaW5nIFdlYkFWUGxheWVyQ29udHJvbGxlci5kZWxlZ2F0ZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDg5MworCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWltcyB0byBwcmV2
ZW50IGEgbnVsbCBkZWxlZ2F0ZSBhY2Nlc3MgZHVyaW5nIGludmFsaWRhdGlvbiBieSBhZGRpbmcg
bnVsbCBjaGVja3MgYmVmb3JlIGFjY2Vzc2luZyB0aGUgZGVsZWdhdGUsIGJ5IG1ha2luZyBleHBs
aWNpdCB0aGUgcmVjcmVhdGlvbiBvZiBtX3BsYXllckNvbnRyb2xsZXIsIGFuZCBieSBjb25zb2xp
ZGF0aW5nIGFuZCBjb3JyZWN0aW5nIHRoZSB0ZWFyZG93biBzZXF1ZW5jZS4KKworICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UuaDogYWRkIHJlc2V0TWVkaWFTdGF0ZSgpCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6IGRpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBsYXllclZpZXdDb250cm9sbGVyOnNob3VsZEV4
aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpdKTogQ2hlY2sgZm9yIG51bGwgYmVmb3JlIGFjY2Vzc2lu
ZyBkZWxlZ2F0ZS4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHBsYXk6XSk6IGRp
dHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgcGF1c2U6XSk6IGRpdHRvLgor
ICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgdG9nZ2xlUGxheWJhY2s6XSk6IGRpdHRv
LgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2V0UGxheWluZzpdKTogZGl0dG8u
CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBiZWdpblNjcnViYmluZzpdKTogZGl0
dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY3J1YmJpbmc6XSk6IGRp
dHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgc2Vla1RvVGltZTpdKTogZGl0
dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBiZWdpblNjYW5uaW5nRm9yd2Fy
ZDpdKTogZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBlbmRTY2Fubmlu
Z0ZvcndhcmQ6XSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgYmVn
aW5TY2FubmluZ0JhY2t3YXJkOl0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250
cm9sbGVyIGVuZFNjYW5uaW5nQmFja3dhcmQ6XSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBs
YXllckNvbnRyb2xsZXIgc2Vla1RvQmVnaW5uaW5nOl0pOiBkaXR0by4KKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJDb250cm9sbGVyIHNlZWtUb0VuZDpdKTogZGl0dG8uCisgICAgICAgICgtW1dlYkFW
UGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpdKTog
ZGl0dG8uCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9uOl0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJD
b250cm9sbGVyIGxheW91dFN1YmxheWVyc09mTGF5ZXI6XSk6IGRpdHRvLgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0KTogaW5pdGlhbGl6ZSBtX3BsYXllckNvbnRyb2xsZXIKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlhU3RhdGUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXREdXJhdGlvbik6IHJlbW92
ZSBwbGF5ZXJDb250cm9sbGVyKCkKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUpOiBkaXR0by4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBkaXR0by4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyk6
IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENh
blBsYXlGYXN0UmV2ZXJzZSk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogZGl0dG8uCisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyk6IGRpdHRvLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldEV4dGVybmFsUGxheWJhY2spOiBkaXR0by4KKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW5JbnRlcm5hbCk6IGRpdHRv
LgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNj
cmVlblN0YW5kYXJkKTogZGl0dG8uCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW5JbnRlcm5hbCk6IGNvbnNvbGlkYXRlZCBjbGVhbnVw
IGNvZGUgZnJvbSBpbnZhbGlkYXRlKCkKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjppbnZhbGlkYXRlKTogY29uc29saWRhdGUgY2xlYW51cCBjb2RlLgorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBsYXllckNvbnRyb2xsZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpzZXRWaWRlb0VsZW1lbnQpOiBjYWxsIHJlc2V0TWVkaWFTdGF0ZSgpCisKIDIwMTUtMDEt
MTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjE3ODI1MCk6IH4yJSBQTFQgcmVncmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI5NWEyOWMzNzFk
NjY1NWViZDcwOGY3NTQzMDMwZGRkODc3Zjg3MGQuLmEzZmMzMDlkYTQ0YjgwNWY0YWI4ZDRjYTZm
MjA3YjRjYzM4ZDY5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wMS0yNiAg
SmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBjcmFz
aCB3aGVuIGFjY2Vzc2luZyBXZWJBVlBsYXllckNvbnRyb2xsZXIuZGVsZWdhdGUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4OTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBQbHVtYiBuZXcgcmVzZXRNZWRp
YVN0YXRlKCkgdGhyb3VnaCBJUEMgaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUpOiByZW1vdmUgcmVkdW5kYW50IHNldCB0byBudWxs
cHRyLgorICAgICAgICAqIFdlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXNldE1lZGlh
U3RhdGUpOgorCiAyMDE1LTAxLTE5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVXNlIEMrKyBsYW1iZGEgaW5zdGVh
ZCBvZiBXVEY6OmJpbmQoKSBpbiBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiMDdhNzc5YTQyZmRlZDZkYzgyZWFiYjY3ZTYwMzE1
YmIxYjBkMTg0Li5iN2NmMzY1ZGFlMjc1MDQ1N2NmZmEwNDhiZTA1MWRlMjRmM2UxMDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzQ5OSw2ICszNDk5LDcgQEAgX19aTjdXZWJDb3JlMzJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDExc2V0RHVyYXRpb25FZAogX19aTjdXZWJDb3Jl
MzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE0ZXhpdEZ1bGxzY3JlZW5FTlNfN0lu
dFJlY3RFCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTRz
ZXRDdXJyZW50VGltZUVkZAogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDE1ZW50ZXJGdWxsc2NyZWVuRXYKK19fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQxNXJlc2V0TWVkaWFTdGF0ZUV2CiBfX1pON1dlYkNvcmUzMldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTVzZXR1cEZ1bGxzY3JlZW5FUjdDQUxheWVyTlNf
N0ludFJlY3RFUDZVSVZpZXdqYgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDE3Y2xlYW51cEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE3c2V0U2Vla2FibGVSYW5nZXNFUktOU18xMFRpbWVSYW5n
ZXNFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggZDQ1N2U0ZjFkODNlZDY4NDI3MjZkZTVhNzJmNzc4
YTRjNTZmODg3ZS4uNjRjODcxNmZiMjljNTdjMGY0MWM4MDRlN2NmZTRjNjk1ODEzMjY0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBFeHRl
cm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB7IFRhcmdldFR5cGVOb25lLCBUYXJnZXRUeXBlQWlyUGxh
eSwgVGFyZ2V0VHlwZVRWT3V0IH07CiAgICAgCiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCByZXNldE1lZGlhU3RhdGUoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JU
aW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0
IHBsYXliYWNrUmF0ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCAzZjcx
YmEyNWE1ZWZiMTcxY2JjMjE3ZjA0YTk0YmU4ZjhlZjI0MWVhLi5hZjk1MTQ3MzczN2I2YjljM2E3
ZDMyMzFhYjMyZTJjZjQ3YmNhYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAt
NzMsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCopOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2ViVmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsKICAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91
YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwpA
QCAtOTUsNiArOTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXlBdXRvbWF0aWNhbGx5U2hvd1Zp
ZGVvT3B0aW1pemVkKCk7CiAKIHByb3RlY3RlZDoKKyAgICB2b2lkIGJlZ2luU2Vzc2lvbigpOwog
ICAgIHZvaWQgc2V0dXBGdWxsc2NyZWVuSW50ZXJuYWwoUGxhdGZvcm1MYXllciYsIEludFJlY3Qg
aW5pdGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50OjpWaWRlb0Z1bGxzY3JlZW5N
b2RlLCBib29sIGFsbG93T3B0aW1pemVkRnVsbHNjcmVlbik7CiAgICAgdm9pZCBlbnRlckZ1bGxz
Y3JlZW5PcHRpbWl6ZWQoKTsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCk7CkBA
IC0xMTgsOCArMTIwLDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9leGl0Q29tcGxldGVkOwog
ICAgIGJvb2wgbV9lbnRlclJlcXVlc3RlZDsKIAotICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciAq
cGxheWVyQ29udHJvbGxlcigpOwotICAgIAogICAgIHZvaWQgZG9FbnRlckZ1bGxzY3JlZW4oKTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCBhZWUxOWU3N2ExZDExNGI2
MDUyNDYxNThhOGVkNjkyNGY4OTdmYzNkLi45ZGViM2Y3ZmFjN2Q0ZGNkYzUwOTUzMTRhNmY4OWRj
YjU1MTVmZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC04Niw2ICs4Niw4
IEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRp
bWUpCiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb247CiB9CiAKKy0odm9pZClyZXNldFN0YXRlOworCiBAcHJvcGVydHkgKHJl
dGFpbikgQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CiBAcHJvcGVy
dHkgKGFzc2lnbikgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIGRlbGVnYXRlOwogQHByb3BlcnR5
IChhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBmdWxsc2NyZWVuSW50
ZXJmYWNlOwpAQCAtMTU0LDYgKzE1NiwzNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1lZGlh
LCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1lKQogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAor
LSh2b2lkKXJlc2V0U3RhdGUgeworICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKKyAgICBz
ZWxmLm1heFRpbWUgPSAwOworICAgIHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMg
PSAwOworICAgIHNlbGYubG9hZGVkVGltZVJhbmdlcyA9IEBbXTsKKyAgICAKKyAgICBzZWxmLmNh
blBsYXkgPSBOTzsKKyAgICBzZWxmLmNhblBhdXNlID0gTk87CisgICAgc2VsZi5jYW5Ub2dnbGVQ
bGF5YmFjayA9IE5POworICAgIHNlbGYuaGFzRW5hYmxlZEF1ZGlvID0gTk87CisgICAgc2VsZi5j
YW5TZWVrID0gTk87CisgICAgc2VsZi5taW5UaW1lID0gMDsKKyAgICBzZWxmLnN0YXR1cyA9IEFW
UGxheWVyQ29udHJvbGxlclN0YXR1c1Vua25vd247CisgICAgCisgICAgc2VsZi50aW1pbmcgPSBu
aWw7CisgICAgc2VsZi5yYXRlID0gMDsKKyAgICAKKyAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9
IE5POworICAgIHNlbGYuY29udGVudERpbWVuc2lvbnMgPSBDR1NpemVNYWtlKDAsIDApOworICAg
IAorICAgIHNlbGYuc2Vla2FibGVUaW1lUmFuZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
KyAgICAKKyAgICBzZWxmLmNhblNjYW5CYWNrd2FyZCA9IE5POworICAgIAorICAgIHNlbGYuYXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgc2VsZi5jdXJyZW50QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKKyAgICAKKyAgICBzZWxmLmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMgPSBuaWw7CisgICAgc2VsZi5jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uID0gbmlsOworfQorCiAtIChBVlBsYXllciopIHBsYXllciB7CiAgICAgcmV0dXJuIG5p
bDsKIH0KQEAgLTE2OCw5ICsyMDEsMTIgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwg
a0NNVGltZUluZGVmaW5pdGUsIENNVGltZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocGxheWVyVmll
d0NvbnRyb2xsZXIpOwogICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIEFTU0VSVChzZWxm
LmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBZRVM7
CisgICAgCiAgICAgaWYgKHJlYXNvbiA9PSBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxT
Y3JlZW5SZWFzb25Eb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBBVlBsYXllclZpZXdDb250
cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25SZW1vdGVDb250cm9sU3RvcEV2ZW50UmVjZWl2ZWQp
CiAgICAgICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7CisgICAgCiAgICAgc2VsZi5kZWxlZ2F0
ZS0+cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgcmV0dXJuIE5POwogfQpAQCAtMTc4LDIx
ICsyMTQsMjQgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5p
dGUsIENNVGltZSkKIC0gKHZvaWQpcGxheTooaWQpc2VuZGVyCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHNlbmRlcik7Ci0gICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUpOworICAgIGlmICghc2VsZi5kZWxl
Z2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNlbGYuZGVsZWdhdGUtPnBsYXkoKTsKIH0KIAog
LSAodm9pZClwYXVzZTooaWQpc2VuZGVyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0g
ICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUpOworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAg
ICAgcmV0dXJuOwogICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7CiB9CiAKIC0gKHZvaWQpdG9n
Z2xlUGxheWJhY2s6KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAg
IEFTU0VSVChzZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAg
IHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT50b2dnbGVQbGF5U3RhdGUoKTsKIH0KIApAQCAt
MjAzLDEyICsyNDIsMTMgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUlu
ZGVmaW5pdGUsIENNVGltZSkKIAogLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmcKIHsK
LSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CiAgICAgaWYgKHBsYXlpbmcpCiAgICAgICAgIHNlbGYuZGVsZWdhdGUtPnBs
YXkoKTsKICAgICBlbHNlCiAgICAgICAgIHNlbGYuZGVsZWdhdGUtPnBhdXNlKCk7Ci0gICAgfQor
fQogCiArIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nUGxheWluZwogewpAQCAt
MjE4LDIwICsyNTgsMjMgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUlu
ZGVmaW5pdGUsIENNVGltZSkKIC0gKHZvaWQpYmVnaW5TY3J1YmJpbmc6KGlkKXNlbmRlcgogewog
ICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChzZWxmLmRlbGVnYXRlKTsKKyAg
ICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRl
LT5iZWdpblNjcnViYmluZygpOwogfQogCiAtICh2b2lkKWVuZFNjcnViYmluZzooaWQpc2VuZGVy
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUp
OworICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNlbGYuZGVs
ZWdhdGUtPmVuZFNjcnViYmluZygpOwogfQogCiAtICh2b2lkKXNlZWtUb1RpbWU6KE5TVGltZUlu
dGVydmFsKXRpbWUKIHsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxm
LmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CiAgICAgc2VsZi5kZWxlZ2F0ZS0+ZmFzdFNlZWso
dGltZSk7CiB9CiAKQEAgLTI5NCwyOCArMzM3LDMyIEBAIFNPRlRfTElOS19DT05TVEFOVChDb3Jl
TWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCiAtICh2b2lkKWJlZ2luU2Nhbm5pbmdG
b3J3YXJkOihpZClzZW5kZXIKIHsKICAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBBU1NF
UlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CiAgICAgc2VsZi5kZWxlZ2F0ZS0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsKIH0KIAogLSAo
dm9pZCllbmRTY2FubmluZ0ZvcndhcmQ6KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShz
ZW5kZXIpOwotICAgIEFTU0VSVChzZWxmLmRlbGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdh
dGUpCisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY2FubmluZygpOwog
fQogCiAtICh2b2lkKWJlZ2luU2Nhbm5pbmdCYWNrd2FyZDooaWQpc2VuZGVyCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgQVNTRVJUKHNlbGYuZGVsZWdhdGUpOworICAgIGlmICgh
c2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNlbGYuZGVsZWdhdGUtPmJlZ2lu
U2Nhbm5pbmdCYWNrd2FyZCgpOwogfQogCiAtICh2b2lkKWVuZFNjYW5uaW5nQmFja3dhcmQ6KGlk
KXNlbmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChzZWxmLmRl
bGVnYXRlKTsKKyAgICBpZiAoIXNlbGYuZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKICAgICBz
ZWxmLmRlbGVnYXRlLT5lbmRTY2FubmluZygpOwogfQogCkBAIC0zMzcsOCArMzg0LDggQEAgU09G
VF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5pdGUsIENNVGltZSkKIC0g
KHZvaWQpc2Vla1RvQmVnaW5uaW5nOihpZClzZW5kZXIKIHsKICAgICBVTlVTRURfUEFSQU0oc2Vu
ZGVyKTsKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7Ci0KKyAgICBpZiAoIXNlbGYuZGVsZWdh
dGUpCisgICAgICAgIHJldHVybjsKICAgICBzZWxmLmRlbGVnYXRlLT5zZWVrVG9UaW1lKC1JTkZJ
TklUWSk7CiB9CiAKQEAgLTM2NSw4ICs0MTIsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1l
ZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1lKQogLSAodm9pZClzZWVrVG9FbmQ6KGlkKXNl
bmRlcgogewogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIEFTU0VSVChzZWxmLmRlbGVn
YXRlKTsKLQorICAgIGlmICghc2VsZi5kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNl
bGYuZGVsZWdhdGUtPnNlZWtUb1RpbWUoSU5GSU5JVFkpOwogfQogCkBAIC00MTksNyArNDY2LDgg
QEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5pdGUsIENNVGlt
ZSkKICAgICBbX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uIHJlbGVhc2VdOwogICAg
IF9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IFtvcHRpb24gcmV0YWluXTsKICAg
ICAKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQor
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTlNJbnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsK
ICAgICAKQEAgLTQ0Miw3ICs0OTAsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1lZGlhLCBr
Q01UaW1lSW5kZWZpbml0ZSwgQ01UaW1lKQogICAgIFtfY3VycmVudExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbiByZWxlYXNlXTsKICAgICBfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbiA9IFtvcHRpb24gcmV0YWluXTsKICAgICAKLSAgICBBU1NFUlQoc2VsZi5kZWxlZ2F0ZSk7
CisgICAgaWYgKCFzZWxmLmRlbGVnYXRlKQorICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTlNJ
bnRlZ2VyIGluZGV4ID0gTlNOb3RGb3VuZDsKICAgICAKQEAgLTQ2NSw3ICs1MTQsOCBAQCBTT0ZU
X0xJTktfQ09OU1RBTlQoQ29yZU1lZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1lKQogLSAo
dm9pZClsYXlvdXRTdWJsYXllcnNPZkxheWVyOihDQUxheWVyICopbGF5ZXIKIHsKICAgICBDR1Jl
Y3QgbGF5ZXJCb3VuZHMgPSBbbGF5ZXIgYm91bmRzXTsKLSAgICBzZWxmLmRlbGVnYXRlLT5zZXRW
aWRlb0xheWVyRnJhbWUoQ0dSZWN0TWFrZSgwLCAwLCBDR1JlY3RHZXRXaWR0aChsYXllckJvdW5k
cyksIENHUmVjdEdldEhlaWdodChsYXllckJvdW5kcykpKTsKKyAgICBpZiAoc2VsZi5kZWxlZ2F0
ZSkKKyAgICAgICAgc2VsZi5kZWxlZ2F0ZS0+c2V0VmlkZW9MYXllckZyYW1lKENHUmVjdE1ha2Uo
MCwgMCwgQ0dSZWN0R2V0V2lkdGgobGF5ZXJCb3VuZHMpLCBDR1JlY3RHZXRIZWlnaHQobGF5ZXJC
b3VuZHMpKSk7CiAgICAgCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIGZvciAoQ0FM
YXllciAqc3VibGF5ZXIgaW4gW2xheWVyIHN1YmxheWVyc10pIHsKQEAgLTYxNCwyOCArNjY0LDMy
IEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRp
bWUpCiBAZW5kCiAKIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCi0gICAgOiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKG51
bGxwdHIpCisgICAgOiBtX3BsYXllckNvbnRyb2xsZXIoYWRvcHROUyhbW1dlYkFWUGxheWVyQ29u
dHJvbGxlciBhbGxvY10gaW5pdF0pKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbChudWxs
cHRyKQogICAgICwgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIobnVsbHB0cikKICAgICAsIG1f
bW9kZShIVE1MTWVkaWFFbGVtZW50OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKICAgICAsIG1f
ZXhpdFJlcXVlc3RlZChmYWxzZSkKICAgICAsIG1fZXhpdENvbXBsZXRlZChmYWxzZSkKICAgICAs
IG1fZW50ZXJSZXF1ZXN0ZWQoZmFsc2UpCiB7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRG
dWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdOwogfQogCi1XZWJBVlBsYXllckNvbnRyb2xsZXIgKldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkKK3ZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiB7Ci0g
ICAgaWYgKCFtX3BsYXllckNvbnRyb2xsZXIpCi0gICAgewotICAgICAgICBtX3BsYXllckNvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7Ci0g
ICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICAgICAgW21fcGxheWVy
Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3ZpZGVvRnVsbHNjcmVlbk1vZGVsXTsKLSAgICAgICAg
W21fcGxheWVyQ29udHJvbGxlciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdOwotICAgIH0K
LSAgICByZXR1cm4gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOworICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICAKKyAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpc10gewor
ICAgICAgICBpZiAoIXN0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlcikgeworICAgICAgICAg
ICAgc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFWUGxheWVy
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgW3N0cm9uZ1RoaXMtPm1fcGxh
eWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpzdHJvbmdUaGlzLT5tX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsXTsKKyAgICAgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0RnVs
bHNjcmVlbkludGVyZmFjZTpzdHJvbmdUaGlzLmdldCgpXTsKKyAgICAgICAgICAgIAorICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgcmVz
ZXRTdGF0ZV07CisgICAgfSk7CiB9CiAKLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWwqIG1vZGVsKQogewogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKQEAgLTY1
Miw3ICs3MDYsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRE
dXJhdGlvbihkb3VibGUgZHVyYXRpb24pCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIAogICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBkdXJhdGlvbl0gewotICAg
ICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBzdHJvbmdUaGlz
LT5wbGF5ZXJDb250cm9sbGVyKCk7CisgICAgICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxh
eWVyQ29udHJvbGxlciA9IHN0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKIAog
ICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNzAxNyB1c2UgY29ycmVjdCB2YWx1ZXMgaW5zdGVhZCBvZiBkdXJhdGlvbiBmb3IgYWxsIHRo
ZXNlCiAgICAgICAgIHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247
CkBAIC02NzYsMTAgKzczMCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZQogICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAg
ICAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25n
VGhpcywgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKLSAgICAgICAgTlNUaW1lSW50ZXJ2YWwg
YW5jaG9yVGltZVN0YW1wID0gIVtzdHJvbmdUaGlzLT5wbGF5ZXJDb250cm9sbGVyKCkgcmF0ZV0g
PyBOQU4gOiBhbmNob3JUaW1lOworICAgICAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JUaW1lU3Rh
bXAgPSAhW3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciByYXRlXSA/IE5BTiA6IGFuY2hv
clRpbWU7CiAgICAgICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtnZXRBVlZhbHVlVGltaW5n
Q2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpjdXJyZW50VGltZQogICAgICAgICAg
ICAgYW5jaG9yVGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCByYXRlOjBdOwotICAgICAgICBzdHJv
bmdUaGlzLT5wbGF5ZXJDb250cm9sbGVyKCkudGltaW5nID0gdGltaW5nOworICAgICAgICBbc3Ry
b25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOwogICAgIH0pOwog
fQogCkBAIC02ODgsNyArNzQyLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXQKICAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7CiAg
ICAgCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9u
Z1RoaXMsIGlzUGxheWluZywgcGxheWJhY2tSYXRlXSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnBs
YXllckNvbnRyb2xsZXIoKS5yYXRlID0gaXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC47Cisg
ICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0UmF0ZTppc1BsYXlpbmcg
PyBwbGF5YmFja1JhdGUgOiAwLl07CiAgICAgfSk7CiB9CiAKQEAgLTY5Nyw4ICs3NTEsOCBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMo
Ym9vbCBoYXNWaWRlbywgZmxvYXQgdwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAKICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgaGFzVmlkZW8sIHdpZHRoLCBo
ZWlnaHRdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+cGxheWVyQ29udHJvbGxlcigpLmhhc0VuYWJs
ZWRWaWRlbyA9IGhhc1ZpZGVvOwotICAgICAgICBzdHJvbmdUaGlzLT5wbGF5ZXJDb250cm9sbGVy
KCkuY29udGVudERpbWVuc2lvbnMgPSBDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldEhhc0VuYWJsZWRWaWRlbzpoYXNW
aWRlb107CisgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIgc2V0Q29udGVu
dERpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiAgICAgfSk7CiB9CiAKQEAg
LTcxOCw3ICs3NzIsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUgogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAKICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywg
c2Vla2FibGVSYW5nZXNdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+cGxheWVyQ29udHJvbGxlcigp
LnNlZWthYmxlVGltZVJhbmdlcyA9IHNlZWthYmxlUmFuZ2VzLmdldCgpOworICAgICAgICBbc3Ry
b25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJs
ZVJhbmdlcy5nZXQoKV07CiAgICAgfSk7CiB9CiAKQEAgLTcyNyw3ICs3ODEsNyBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9v
bCBjYW5QbGF5RmFzdFJldgogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgY2FuUGxheUZhc3RSZXZlcnNlXSB7Ci0g
ICAgICAgIHN0cm9uZ1RoaXMtPnBsYXllckNvbnRyb2xsZXIoKS5jYW5TY2FuQmFja3dhcmQgPSBj
YW5QbGF5RmFzdFJldmVyc2U7CisgICAgICAgIFtzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xs
ZXIgc2V0Q2FuU2NhbkJhY2t3YXJkOmNhblBsYXlGYXN0UmV2ZXJzZV07CiAgICAgfSk7CiB9CiAK
QEAgLTc0OCw5ICs4MDIsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0bwogICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICAK
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2ViT3B0aW9u
cywgc3Ryb25nVGhpcywgc2VsZWN0ZWRJbmRleF0gewotICAgICAgICBzdHJvbmdUaGlzLT5wbGF5
ZXJDb250cm9sbGVyKCkuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSB3ZWJPcHRpb25zLmdl
dCgpOworICAgICAgICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwogICAgICAgICBpZiAoc2VsZWN0
ZWRJbmRleCA8IFt3ZWJPcHRpb25zIGNvdW50XSkKLSAgICAgICAgICAgIHN0cm9uZ1RoaXMtPnBs
YXllckNvbnRyb2xsZXIoKS5jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IFt3ZWJP
cHRpb25zIG9iamVjdEF0SW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRl
eCldOworICAgICAgICAgICAgW3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciBzZXRDdXJy
ZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnN0
YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07CiAgICAgfSk7CiB9CiAKQEAg
LTc2MCw5ICs4MTQsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlYwogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKIAogICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWJPcHRpb25zLCBzdHJv
bmdUaGlzLCBzZWxlY3RlZEluZGV4XSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnBsYXllckNvbnRy
b2xsZXIoKS5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gd2ViT3B0aW9ucy5nZXQoKTsK
KyAgICAgICAgW3N0cm9uZ1RoaXMtPm1fcGxheWVyQ29udHJvbGxlciBzZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwogICAgICAgICBpZiAoc2VsZWN0ZWRJ
bmRleCA8IFt3ZWJPcHRpb25zIGNvdW50XSkKLSAgICAgICAgICAgIHN0cm9uZ1RoaXMtPnBsYXll
ckNvbnRyb2xsZXIoKS5jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gW3dlYk9w
dGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4
KV07CisgICAgICAgICAgICBbc3Ryb25nVGhpcy0+bV9wbGF5ZXJDb250cm9sbGVyIHNldEN1cnJl
bnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpz
dGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOwogICAgIH0pOwogfQogCkBA
IC03NzcsNyArODMxLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmEKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7CiAKICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgZW5h
YmxlZCwgbG9jYWxpemVkRGV2aWNlTmFtZSwgZXh0ZXJuYWxQbGF5YmFja1R5cGVdIHsKLSAgICAg
ICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gc3Ryb25nVGhpcy0+
cGxheWVyQ29udHJvbGxlcigpOworICAgICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXll
ckNvbnRyb2xsZXIgPSBzdHJvbmdUaGlzLT5tX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CiAgICAg
ICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VMb2NhbGl6
ZWROYW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZTsKICAgICAgICAgcGxheWVyQ29udHJvbGxlci5l
eHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVybmFsUGxheWJhY2tUeXBlOwogICAgICAgICBwbGF5
ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUgPSBlbmFibGVkOwpAQCAtODIxLDE3
ICs4NzUsMTcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBG
dWxsc2NyZWVuSW50ZXJuYWwoUGxhdGZvcm1MYXllciYgdmkKICAgICBbbV92aWRlb0xheWVyIHJl
bW92ZUZyb21TdXBlcmxheWVyXTsKIAogICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IFtXZWJB
VlZpZGVvTGF5ZXIgdmlkZW9MYXllcl07Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRI
aWRkZW46cGxheWVyQ29udHJvbGxlcigpLmV4dGVybmFsUGxheWJhY2tBY3RpdmVdOworICAgIFtt
X3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0SGlkZGVuOlttX3BsYXllckNvbnRyb2xsZXIgaXNFeHRl
cm5hbFBsYXliYWNrQWN0aXZlXV07CiAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRWaWRl
b1N1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKV07CiAKLSAgICBDR1NpemUgdmlkZW9TaXplID0g
cGxheWVyQ29udHJvbGxlcigpLmNvbnRlbnREaW1lbnNpb25zOworICAgIENHU2l6ZSB2aWRlb1Np
emUgPSBbbV9wbGF5ZXJDb250cm9sbGVyIGNvbnRlbnREaW1lbnNpb25zXTsKICAgICBDR1JlY3Qg
dmlkZW9SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCB2aWRlb1NpemUud2lkdGgsIHZpZGVvU2l6ZS5o
ZWlnaHQpOwogICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9SZWN0OnZpZGVvUmVj
dF07CiAKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXll
clZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFZpZGVvTGF5ZXI6bV92aWRlb0xheWVy
Q29udGFpbmVyLmdldCgpXSk7CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQ
bGF5YmFja0NvbnRyb2xzOk5PXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRQbGF5
ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyKCldOwot
ICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOnBsYXllckNvbnRyb2xsZXIo
KV07CisgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjooQVZQ
bGF5ZXJDb250cm9sbGVyICopbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKKyAgICBbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BsYXllckNvbnRyb2xsZXIuZ2V0KCldOwog
ICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c09wdGltaXplZEZ1bGxzY3JlZW46
YWxsb3dPcHRpbWl6ZWRGdWxsc2NyZWVuXTsKIAogICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIg
c2V0UGxheWVyVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CkBA
IC0xMDEwLDE4ICsxMDY0LDMxIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmNsZWFudXBGdWxsc2NyZWVuSW50ZXJuYWwoKQogICAgICAgICBpZiAobV9wYXJlbnRXaW5k
b3cpCiAgICAgICAgICAgICBbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0
aW9uXSBfc2V0U3RhdHVzQmFyT3JpZW50YXRpb246W21fcGFyZW50V2luZG93IGludGVyZmFjZU9y
aWVudGF0aW9uXV07CiAgICAgfQorICAgIAorICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVs
ZWdhdGU6bmlsXTsKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEZ1bGxzY3JlZW5JbnRlcmZh
Y2U6bmlsXTsKKyAgICAKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpu
aWxdOworICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6bmls
XTsKKyAgICAKKyAgICBpZiAobV9tb2RlICYgSFRNTE1lZGlhRWxlbWVudDo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZU9wdGltaXplZCkKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgY2FuY2Vs
T3B0aW1pemVkRnVsbHNjcmVlbl07CisgICAgaWYgKG1fbW9kZSAmIEhUTUxNZWRpYUVsZW1lbnQ6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwor
ICAgIAogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikKICAgICAgICAgW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVyXTsKLSAgICBbbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOm5pbF07Ci0gICAgbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciA9IG5pbDsKKyAgICAKICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKLSAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CiAgICAgW21fdmlkZW9MYXllckNvbnRh
aW5lciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBz
ZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjpuaWxdOwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9
IG5pbDsKICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVydmlld107
CisgICAgCisgICAgbV92aWRlb0xheWVyID0gbmlsOworICAgIG1fdmlkZW9MYXllckNvbnRhaW5l
ciA9IG5pbDsKKyAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOworICAgIG1fcGxheWVy
Q29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwogICAgIG1fd2lu
ZG93ID0gbmlsOwogICAgIG1fcGFyZW50VmlldyA9IG5pbDsKQEAgLTEwMzcsMzEgKzExMDQsMTAg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3Jl
ZW5JbnRlcm5hbCgpCiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6Omlu
dmFsaWRhdGUoKQogewotICAgIFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKLSAgICBbbV93aW5k
b3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOm5pbF07Ci0gICAgbV93aW5kb3cgPSBuaWw7CiAgICAg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG5pbDsKLSAgICBpZiAobV9tb2RlICYgSFRNTE1lZGlh
RWxlbWVudDo6VmlkZW9GdWxsc2NyZWVuTW9kZU9wdGltaXplZCkKLSAgICAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgY2FuY2VsT3B0aW1pemVkRnVsbHNjcmVlbl07Ci0gICAgaWYgKG1fbW9k
ZSAmIEhUTUxNZWRpYUVsZW1lbnQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpOTyBjb21w
bGV0aW9uSGFuZGxlcjpuaWxdOwotICAgIG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKLSAgICBb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtbbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciB2aWV3XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICBpZiAobV92aWV3
Q29udHJvbGxlcikKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBh
cmVudFZpZXdDb250cm9sbGVyXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRQbGF5
ZXJDb250cm9sbGVyOm5pbF07Ci0gICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IG5pbDsKLSAg
ICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBtX3ZpZGVvTGF5ZXIg
PSBuaWw7Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciByZW1vdmVGcm9tU3VwZXJsYXllcl07
Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjpuaWxd
OwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKLSAgICBbW21fdmlld0NvbnRyb2xs
ZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgW21fcGxheWVyQ29udHJvbGxlciBz
ZXRGdWxsc2NyZWVuSW50ZXJmYWNlOm5pbF07Ci0gICAgbV92aWV3Q29udHJvbGxlciA9IG5pbDsK
LSAgICBtX3BhcmVudFZpZXcgPSBuaWw7Ci0gICAgbV9wYXJlbnRXaW5kb3cgPSBuaWw7CisgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBuaWw7CisgICAgCisgICAgY2xlYW51cEZ1bGxz
Y3JlZW5JbnRlcm5hbCgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpyZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudC5tbQppbmRleCBkYjlkOTQ2OWY4YWExYzhiNDBmMmRiNDZkYjAwZDAzMmIwOTRm
OGIyLi45MDJjOTFiMTRhZjA1MWUxN2UxNjczODkzZGIxYjM0ZGQ0OWYyODY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC02Nyw2ICs2Nyw5IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9F
bGVtZW50KiB2aWRlCiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ID09IHZpZGVvRWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKQorICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7CisgICAg
CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAgZm9y
IChhdXRvIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQogICAgICAgICAgICAgbV92
aWRlb0VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDU3OGUw
YzM3NDc4OTU0ZjlmNjExMDIxY2ZkMjU2ZTMwNmQxZDE2MDMuLmI3NjNiMDM4NzM5ODQ2NWVlNWM1
NzM3Nzc2NmNkNjI3ODQ4ZmY3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiBtZXNz
YWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgeworICAgIFJlc2V0TWVkaWFT
dGF0ZSgpCiAgICAgU2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9z
dFRpbWUpCiAgICAgU2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAgICAgU2V0U2Vla2FibGVSYW5nZXNWZWN0b3IoVmVjdG9y
PHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCmluZGV4IDUzZGRkMDExZDU4OTkxMTgwYWRhNTdkY2Q3NjJhYjY0YTYwYjdlZDIuLmZi
YTIxNGE2MmQzMTk1YzA3YmZhYjc4ZWQyNThkMzIxMWQ0YmM1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC02OCw5ICs2OCw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjppbnZhbGlkYXRlKCkKIHsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6aW52YWxpZGF0ZSgpOwogCi0gICAgc2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwo
bnVsbHB0cik7Ci0gICAgc2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIobnVsbHB0
cik7Ci0KICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLmgKaW5kZXggZTcwOTViMDA5YTQzODJiYTQ2MDU3YzhkZGZhMTA2MTU0YTUyY2Y2OS4uNGY1
MzZhNjc0OTBiYmE3Y2YxZTRhMDQxNGI2OGZhMTk1ZDc0MjU4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
aApAQCAtNjgsNiArNjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogICAgIAogICAgIC8v
IEZ1bGxzY3JlZW5JbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91
YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlKGJvb2wg
aXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KaW5kZXggZmZiMDRiZDVlM2E0YzYyZDk0YjcxN2ZiNDg5YWU2NGYwODE2NDc0Yy4uZWU3YWJk
NDhiYWI0MDU5ZTJjNmQ5MmQ3ZGI0MmViNTc2MTcwMjlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CkBAIC0xMTksNiArMTE5LDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhp
dFZpZGVvRnVsbHNjcmVlbigpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNsaWVudFJlY3RGb3JFbGVtZW50
KHZpZGVvRWxlbWVudC5nZXQoKSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAordm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXNldE1lZGlhU3RhdGUoKQoreworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpSZXNldE1lZGlh
U3RhdGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisgICAgCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0RHVyYXRp
b24oZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>