<?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>144332</bug_id>
          
          <creation_ts>2015-04-28 08:35:54 -0700</creation_ts>
          <short_desc>[Mac] Simplify code to support media engines which do not support target playback</short_desc>
          <delta_ts>2015-04-28 14:42:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1089526</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-28 08:35:54 -0700</bug_when>
    <thetext>Simplify the code added in r182240 to support media engines that do not support a playback target.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089527</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-04-28 08:37:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/20727457&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089641</commentid>
    <comment_count>2</comment_count>
      <attachid>251868</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-28 11:24:19 -0700</bug_when>
    <thetext>Created attachment 251868
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089662</commentid>
    <comment_count>3</comment_count>
      <attachid>251873</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-28 12:07:54 -0700</bug_when>
    <thetext>Created attachment 251873
Rebased patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089663</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-28 12:10:06 -0700</bug_when>
    <thetext>Attachment 251873 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLMediaSession.cpp:207:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089680</commentid>
    <comment_count>5</comment_count>
      <attachid>251873</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-04-28 12:36:26 -0700</bug_when>
    <thetext>Comment on attachment 251873
Rebased patch.

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

r=me, with nits:

&gt; Source/WebCore/html/HTMLMediaElement.cpp:748
&gt; +    if (m_pendingActionFlags &amp; StopPlayingToTarget) {
&gt; +        if (m_player &amp;&amp; m_player-&gt;isCurrentPlaybackTargetWireless() &amp;&amp; !m_player-&gt;canPlayToWirelessPlaybackTarget()) {

No need to nest these if statements.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4899
&gt; +    RefPtr&lt;Event&gt; event = prpEvent;
&gt; +    bool cancelled = HTMLElement::dispatchEvent(event);
&gt; +
&gt; +    if (event-&gt;type() != eventNames().webkitcurrentplaybacktargetiswirelesschangedEvent)
&gt; +        return cancelled;
&gt; +    if (!m_player || !m_player-&gt;isCurrentPlaybackTargetWireless() || m_player-&gt;canPlayToWirelessPlaybackTarget())
&gt; +        return cancelled;
&gt; +
&gt; +    scheduleDelayedAction(StopPlayingToTarget);

Since we have to double check these have to be double-checked anyway inside of pendingActionTimerFired(), could we just re-write this to be?:

if (event-&gt;type() == eventNames().webkitcurrentplaybacktargetiswirelesschangedEvent)
    scheduleDelayedAction(StopPlayingToTarget);
return HTMLElement::dispatchEvent(event);

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5905
&gt; -    return potentiallyPlaying() ? requestedPlaybackRate() : 0;
&gt; +    double requestedPlaybackRate = this-&gt;requestedPlaybackRate();
&gt; +    bool potentiallyPlaying = this-&gt;potentiallyPlaying();
&gt; +    LOG(Media, &quot;HTMLMediaElement::mediaPlayerRequestedPlaybackRate(%p) - potentiallyPlaying = %s, returning %f&quot;, this, boolString(potentiallyPlaying), requestedPlaybackRate);
&gt; +    return potentiallyPlaying ? requestedPlaybackRate : 0;

Seems like this logging may potentially be very noisy.

&gt; Source/WebCore/html/HTMLMediaSession.cpp:385
&gt; -    setWirelessVideoPlaybackDisabled(element, m_restrictions &amp; WirelessVideoPlaybackDisabled);
&gt; +    if (m_restrictions &amp; WirelessVideoPlaybackDisabled)
&gt; +        setWirelessVideoPlaybackDisabled(element, true);

Is there some reason we&apos;re no longer setting this to false if the restriction has been lifted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089744</commentid>
    <comment_count>6</comment_count>
      <attachid>251888</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-28 14:34:24 -0700</bug_when>
    <thetext>Created attachment 251888
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089747</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-28 14:42:08 -0700</bug_when>
    <thetext>Committed r183509: https://trac.webkit.org/r183509</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251868</attachid>
            <date>2015-04-28 11:24:19 -0700</date>
            <delta_ts>2015-04-28 12:07:54 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>mse_patch_6.txt</filename>
            <type>text/plain</type>
            <size>24590</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE1LTA0LTI4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFNpbXBsaWZ5
IGNvZGUgdG8gc3VwcG9ydCBtZWRpYSBlbmdpbmVzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRhcmdl
dCBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKTogQWx3YXlzIG1ha2UgY2xpZW50CisgICAgICAgIGNhbGxi
YWNrLCBsZXQgdGhlbSBkZWNpZGUgaWYgaXQgaXMgc2lnbmlmaWNhbnQgb3Igbm90LgorCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBtX2xvYWRUaW1lciAtPiBtX3BlbmRpbmdB
Y3Rpb25UaW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogTW92ZSBicmFjZXMgc28gcHJlcGFyZS1DaGFuZ2VMb2cgZG9lc24ndCBnZXQgY29u
ZnVzZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZURlbGF5
ZWRBY3Rpb24pOiBIYW5kbGUgU3RvcFBsYXlpbmdUb1RhcmdldCBhY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCk6IG1fbG9h
ZFRpbWVyIC0+IG1fcGVuZGluZ0FjdGlvblRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQpOiBSZW5hbWVkIHBlbmRpbmdBY3Rpb25UaW1lckZp
cmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQp
OiBtX2xvYWRUaW1lciAtPiBtX3BlbmRpbmdBY3Rpb25UaW1lci4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOiBBZGQgbG9nZ2luZy4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOiBt
X2xvYWRUaW1lciAtPiBtX3BlbmRpbmdBY3Rpb25UaW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKTog
UmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZl
bnQpOiBJZiBhICd3ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCcK
KyAgICAgICAgZXZlbnQgaXMgZGlzcGF0Y2hlZCB3aGVuIHRoZSBjdXJyZW50IHRhcmdldCBpcyB3
aXJlbGVzcyBidXQgdGhlIG1lZGlhIGVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0CisgICAgICAgIHdp
cmVsZXNzIHBsYXliYWNrLCB0ZWxsIHRoZSBtZWRpYSBlbmdpbmUgbm90IHRvIHBsYXkgdG8gdGhl
IHRhcmdldC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
UmVxdWVzdGVkUGxheWJhY2tSYXRlKTogQWRkIGxvZ2dpbmcuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDoKKwor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOiBEcml2ZS1ieSBmaXgg
dG8gZGlzYWxsb3cgYXVkaW8tb25seSBmaWxlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YVNlc3Npb246OmN1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYVNlc3Npb24uaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
c0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRT
aG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6IFVzZSBhIFJldGFpblB0cgorICAgICAgICB0byBl
eHBsaWNpdGx5IG1hbmFnZSB0aGUgbGlmZXRpbWUgb2YgdGhlIHRlbXBvcmFyeSBvYmplY3QuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc1Bs
YXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6aXND
dXJyZW50UGxheWJhY2tUYXJnZXRTdXBwb3J0ZWQpOiBEZWxldGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpp
c0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Ojppc0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCk6IERl
bGV0ZWQuCisKIDIwMTUtMDQtMjggIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZW1vdmUgbWFrZS1maWxlLWFycmF5cy5weQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4MzM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTYsOSArMTk2LDYgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQ
bGF5YmFjawogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQogewotICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlID09IGF2YWlsYWJsZSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGF2YWlsYWJsZTsKICAgICBm
b3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkKICAgICAgICAgc3RhdGUtPmNsaWVudC0+
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwg
YXZhaWxhYmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkocmV2aXNpb24gMTgzMzk5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHByaXZhdGU6CiBIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBIVE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIEFjdGl2ZURPTU9iamVjdCgmZG9jdW1l
bnQpCi0gICAgLCBtX2xvYWRUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1l
ckZpcmVkKQorICAgICwgbV9wZW5kaW5nQWN0aW9uVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVt
ZW50OjpwZW5kaW5nQWN0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRpbWVy
KCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQpCiAgICAg
LCBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXli
YWNrUHJvZ3Jlc3NUaW1lckZpcmVkKQogICAgICwgbV9zY2FuVGltZXIoKnRoaXMsICZIVE1MTWVk
aWFFbGVtZW50OjpzY2FuVGltZXJGaXJlZCkKQEAgLTUyNCwxMSArNTI0LDEyIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY28KICNpZiBQTEFURk9STShJT1MpCiAgICAg
ICAgIC8vIE5vdGUsIHVubGVzcyB0aGUgcmVzdHJpY3Rpb24gb24gcmVxdWlyaW5nIHVzZXIgYWN0
aW9uIGhhcyBiZWVuIHJlbW92ZWQsCiAgICAgICAgIC8vIGRvIG5vdCBiZWdpbiBkb3dubG9hZGlu
ZyBkYXRhIG9uIGlPUy4KLSAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiBtX21lZGlhU2Vz
c2lvbi0+ZGF0YUxvYWRpbmdQZXJtaXR0ZWQoKnRoaXMpKSB7CisgICAgICAgIGlmICghdmFsdWUu
aXNOdWxsKCkgJiYgbV9tZWRpYVNlc3Npb24tPmRhdGFMb2FkaW5nUGVybWl0dGVkKCp0aGlzKSkK
ICNlbHNlCiAgICAgICAgIC8vIFRyaWdnZXIgYSByZWxvYWQsIGFzIGxvbmcgYXMgdGhlICdzcmMn
IGF0dHJpYnV0ZSBpcyBwcmVzZW50LgotICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Cisg
ICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCiAjZW5kaWYKKyAgICAgICAgewogICAgICAgICAg
ICAgY2xlYXJNZWRpYVBsYXllcihMb2FkTWVkaWFSZXNvdXJjZSk7CiAgICAgICAgICAgICBzY2hl
ZHVsZURlbGF5ZWRBY3Rpb24oTG9hZE1lZGlhUmVzb3VyY2UpOwogICAgICAgICB9CkBAIC02OTAs
MTQgKzY5MSwxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVsYXllZEFjCiAg
ICAgICAgIHNldEZsYWdzKG1fcGVuZGluZ0FjdGlvbkZsYWdzLCBUZXh0VHJhY2tDaGFuZ2VzTm90
aWZpY2F0aW9uKTsKICNlbmRpZgogCi0gICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOwor
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgaWYgKChhY3Rpb25UeXBl
ICYgU3RvcFBsYXlpbmdUb1RhcmdldCkgJiYgIShtX3BlbmRpbmdBY3Rpb25GbGFncyAmIFN0b3BQ
bGF5aW5nVG9UYXJnZXQpKQorICAgICAgICBzZXRGbGFncyhtX3BlbmRpbmdBY3Rpb25GbGFncywg
U3RvcFBsYXlpbmdUb1RhcmdldCk7CisjZW5kaWYKKworICAgIG1fcGVuZGluZ0FjdGlvblRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZU5l
eHRTb3VyY2VDaGlsZCgpCiB7CiAgICAgLy8gU2NoZWR1bGUgdGhlIHRpbWVyIHRvIHRyeSB0aGUg
bmV4dCA8c291cmNlPiBlbGVtZW50IFdJVEhPVVQgcmVzZXR0aW5nIHN0YXRlIGFsYSBwcmVwYXJl
Rm9yTG9hZC4KICAgICBzZXRGbGFncyhtX3BlbmRpbmdBY3Rpb25GbGFncywgTG9hZE1lZGlhUmVz
b3VyY2UpOwotICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBtX3BlbmRpbmdB
Y3Rpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKQEAgLTcxMyw3ICs3
MTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQoY29uCiAgICAgbV9h
c3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpwZW5kaW5nQWN0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+
IHByb3RlY3QoKnRoaXMpOyAvLyBsb2FkTmV4dFNvdXJjZUNoaWxkIG1heSBmaXJlICdiZWZvcmVs
b2FkJywgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAKQEAgLTczNCw2
ICs3NDAsMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZCgpCiAgICAg
ICAgIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgaWYgKG1fcGVuZGluZ0FjdGlv
bkZsYWdzICYgU3RvcFBsYXlpbmdUb1RhcmdldCkgeworICAgICAgICBpZiAobV9wbGF5ZXIgJiYg
bV9wbGF5ZXItPmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSAmJiAhbV9wbGF5ZXIt
PmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSkgeworICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGVuZGluZ0FjdGlvblRpbWVyRmlyZWQoJXApIC0gY2Fs
bGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiLCB0aGlzKTsKKyAgICAg
ICAgICAgIG1fcGxheWVyLT5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIG1fcGVuZGluZ0FjdGlvbkZsYWdzID0gMDsK
IH0KIApAQCAtODIyLDcgKzgzNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZv
ckxvYWQoKQogCiAgICAgLy8gUGVyZm9ybSB0aGUgY2xlYW51cCByZXF1aXJlZCBmb3IgdGhlIHJl
c291cmNlIGxvYWQgYWxnb3JpdGhtIHRvIHJ1bi4KICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsK
LSAgICBtX2xvYWRUaW1lci5zdG9wKCk7CisgICAgbV9wZW5kaW5nQWN0aW9uVGltZXIuc3RvcCgp
OwogICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGFwcHJvcHJpYXRlIHBsYWNlIHRvIHJlc2V0IExv
YWRUZXh0VHJhY2tSZXNvdXJjZSBpZiBuZWNlc3NhcnkgYW5kIHNldCBtX3BlbmRpbmdBY3Rpb25G
bGFncyB0byAwIGhlcmUuCiAgICAgbV9wZW5kaW5nQWN0aW9uRmxhZ3MgJj0gfkxvYWRNZWRpYVJl
c291cmNlOwogICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CkBAIC0yNjIxLDYgKzI2MzYsNyBA
QCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdFBsYXliYWNrCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgaWYg
KG1fZGVmYXVsdFBsYXliYWNrUmF0ZSAhPSByYXRlKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoJXApIC0gJWYiLCB0aGlzLCBy
YXRlKTsKICAgICAgICAgbV9kZWZhdWx0UGxheWJhY2tSYXRlID0gcmF0ZTsKICAgICAgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9CkBAIC00Njky
LDcgKzQ3MDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoCiAg
ICAgbV9wbGF5ZXIgPSBudWxscHRyOwogCiAgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7Ci0gICAg
bV9sb2FkVGltZXIuc3RvcCgpOworICAgIG1fcGVuZGluZ0FjdGlvblRpbWVyLnN0b3AoKTsKIAog
ICAgIGNsZWFyRmxhZ3MobV9wZW5kaW5nQWN0aW9uRmxhZ3MsIGZsYWdzKTsKICAgICBtX2xvYWRT
dGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CkBAIC00ODQxLDExICs0ODU3LDYgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojp3ZWJraXRDdXJyZW50UGxheQogICAgIHJldHVybiBtX21lZGlhU2Vzc2lv
bi0+Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygqdGhpcyk7CiB9CiAKLWJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQoKSBj
b25zdAotewotICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y3VycmVudFBsYXliYWNrVGFyZ2V0
SXNTdXBwb3J0ZWQoKnRoaXMpOwotfQotCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpcmVsZXNz
Um91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkKIHsKICAgICBlbnF1ZXVlUGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKTsKQEAgLTQ4NTYsOSArNDg2NywyMiBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVuCiAgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hh
bmdlZCglcCkgLSB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzID0gJXMiLCB0
aGlzLCBib29sU3RyaW5nKHdlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKSkp
OwogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFja3Rh
cmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOwogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKICAgICBtX21lZGlhU2Vzc2lvbi0+bWVkaWFTdGF0ZURpZENoYW5nZSgqdGhp
cywgbWVkaWFTdGF0ZSgpKTsKLSNlbmRpZgorfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCit7CisgICAgUmVmUHRyPEV2
ZW50PiBldmVudCA9IHBycEV2ZW50OworICAgIGJvb2wgY2FuY2VsbGVkID0gSFRNTEVsZW1lbnQ6
OmRpc3BhdGNoRXZlbnQoZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnRO
YW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQp
CisgICAgICAgIHJldHVybiBjYW5jZWxsZWQ7CisgICAgaWYgKCFtX3BsYXllciB8fCAhbV9wbGF5
ZXItPmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSB8fCBtX3BsYXllci0+Y2FuUGxh
eVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpKQorICAgICAgICByZXR1cm4gY2FuY2VsbGVkOwor
CisgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKFN0b3BQbGF5aW5nVG9UYXJnZXQpOworCisgICAg
cmV0dXJuIGNhbmNlbGxlZDsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCkBAIC01ODU5LDcgKzU4ODMsMTAgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZQogCiBkb3VibGUgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBjb25zdAogewot
ICAgIHJldHVybiBwb3RlbnRpYWxseVBsYXlpbmcoKSA/IHJlcXVlc3RlZFBsYXliYWNrUmF0ZSgp
IDogMDsKKyAgICBkb3VibGUgcmVxdWVzdGVkUGxheWJhY2tSYXRlID0gdGhpcy0+cmVxdWVzdGVk
UGxheWJhY2tSYXRlKCk7CisgICAgYm9vbCBwb3RlbnRpYWxseVBsYXlpbmcgPSB0aGlzLT5wb3Rl
bnRpYWxseVBsYXlpbmcoKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclJlcXVlc3RlZFBsYXliYWNrUmF0ZSglcCkgLSBwb3RlbnRpYWxseVBsYXlpbmcgPSAl
cywgcmV0dXJuaW5nICVmIiwgdGhpcywgYm9vbFN0cmluZyhwb3RlbnRpYWxseVBsYXlpbmcpLCBy
ZXF1ZXN0ZWRQbGF5YmFja1JhdGUpOworICAgIHJldHVybiBwb3RlbnRpYWxseVBsYXlpbmcgPyBy
ZXF1ZXN0ZWRQbGF5YmFja1JhdGUgOiAwOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTgzMzk5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzOSw4ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgICAgIENvbmZpZ3VyZVRleHRUcmFja3MgPSAx
IDw8IDEsCiAgICAgICAgIFRleHRUcmFja0NoYW5nZXNOb3RpZmljYXRpb24gPSAxIDw8IDIsCiAg
ICAgICAgIENvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkgPSAxIDw8IDMsCisgICAgICAgIFN0b3BQ
bGF5aW5nVG9UYXJnZXQgPSAxIDw8IDQsCiAKLSAgICAgICAgRXZlcnlEZWxheWVkQWN0aW9uID0g
TG9hZE1lZGlhUmVzb3VyY2UgfCBDb25maWd1cmVUZXh0VHJhY2tzIHwgVGV4dFRyYWNrQ2hhbmdl
c05vdGlmaWNhdGlvbiB8IENvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXksCisgICAgICAgIEV2ZXJ5
RGVsYXllZEFjdGlvbiA9IExvYWRNZWRpYVJlc291cmNlIHwgQ29uZmlndXJlVGV4dFRyYWNrcyB8
IFRleHRUcmFja0NoYW5nZXNOb3RpZmljYXRpb24gfCBDb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5
IHwgU3RvcFBsYXlpbmdUb1RhcmdldCwKICAgICB9OwogICAgIHZvaWQgc2NoZWR1bGVEZWxheWVk
QWN0aW9uKERlbGF5ZWRBY3Rpb25UeXBlKTsKICAgICAKQEAgLTM1Niw3ICszNTcsNiBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHdlYmtp
dFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpOwogICAgIGJvb2wgd2Via2l0Q3VycmVudFBsYXli
YWNrVGFyZ2V0SXNXaXJlbGVzcygpIGNvbnN0OwotICAgIGJvb2wgd2Via2l0Q3VycmVudFBsYXli
YWNrVGFyZ2V0SXNTdXBwb3J0ZWQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBy
ZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKQEAgLTU2Miw2ICs1NjIsOSBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQo
TWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIGVucXVldWVQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOworCisgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3Bh
dGNoRXZlbnQ7CisgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJl
ZmVycmVyKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02MDQsNyArNjA3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhUGxheWVyUmVxdWVzdGVkUGxheWJhY2tSYXRlKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2b2lkIGxvYWRUaW1lckZpcmVkKCk7CisgICAgdm9p
ZCBwZW5kaW5nQWN0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgcHJvZ3Jlc3NFdmVudFRpbWVy
RmlyZWQoKTsKICAgICB2b2lkIHBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKCk7CiAgICAgdm9p
ZCBzY2FuVGltZXJGaXJlZCgpOwpAQCAtNzMzLDcgKzczNiw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZUNhcHRpb25Db250YWluZXIoKTsKIAotICAgIFRpbWVyIG1fbG9hZFRpbWVyOwor
ICAgIFRpbWVyIG1fcGVuZGluZ0FjdGlvblRpbWVyOwogICAgIFRpbWVyIG1fcHJvZ3Jlc3NFdmVu
dFRpbWVyOwogICAgIFRpbWVyIG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyOwogICAgIFRpbWVyIG1f
c2NhblRpbWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
CShyZXZpc2lvbiAxODMzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNSArMTE2LDQgQEAKIAogICAgIFtDb25kaXRp
b25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgd2Via2l0U2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKCk7CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0g
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNX
aXJlbGVzczsKLSAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBv
cnRlZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJ
KHJldmlzaW9uIDE4MzM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMCArMTc4LDYgQEAgYm9vbCBIVE1MTWVkaWFT
ZXNzaW9uOjpjdXJyZW50UGxheWJhY2tUYQogICAgIHJldHVybiBpc1dpcmVsZXNzOwogfQogCi1i
b29sIEhUTUxNZWRpYVNlc3Npb246OmN1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgTWVkaWFQbGF5ZXIq
IHBsYXllciA9IGVsZW1lbnQucGxheWVyKCk7Ci0gICAgaWYgKCFwbGF5ZXIpIHsKLSAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBw
b3J0ZWQgLSByZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBwbGF5ZXIgaXMgTlVMTCIpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBpc1N1cHBvcnRlZCA9IHBsYXllci0+
aXNDdXJyZW50UGxheWJhY2tUYXJnZXRTdXBwb3J0ZWQoKTsKLSAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFTZXNzaW9uOjpjdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBvcnRlZCAtIHJldHVybmlu
ZyAlcyIsIGlzU3VwcG9ydGVkID8gIlRSVUUiIDogIkZBTFNFIik7Ci0gICAgCi0gICAgcmV0dXJu
IGlzU3VwcG9ydGVkOwotfQotCiB2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogewogICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlciIpOwpAQCAt
MjA2LDYgKzE5MiwxMyBAQCB2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1Rhcmdl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIGlmICgh
ZWxlbWVudC5oYXNWaWRlbygpKXsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lv
bjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgZWxl
bWVudCBoYXMgbm8gdmlkZW8iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAg
ICAgZWxlbWVudC5kb2N1bWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigqdGhpcywgaXM8
SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCkpOwogfQogCkBAIC0zNzcsNyArMzcwLDggQEAgdm9p
ZCBIVE1MTWVkaWFTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZQogICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYVNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCIpOwogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZChlbGVtZW50LCBtX3Jlc3RyaWN0aW9ucyAmIFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
KTsKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCkKKyAgICAgICAgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZWxlbWVudCwgdHJ1
ZSk7CiAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAgIGNsaWVudCgpLnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKICAgICBpZiAo
bV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODMzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CiAgICAgYm9vbCBj
dXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBj
b25zdDsKLSAgICBib29sIGN1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKIAogICAgIGJvb2wgd2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAkocmV2aXNpb24gMTgzMzk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDMsMTEgKzg0Myw2IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2UKICAgICByZXR1cm4gbV9wcml2YXRl
LT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5
ZXI6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgpOwotfQotCiBT
dHJpbmcgTWVkaWFQbGF5ZXI6OndpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9wcml2YXRlLT53aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShy
ZXZpc2lvbiAxODMzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsNyArNDY0LDYgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBib29sIGlzQ3VycmVudFBs
YXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdDsKLSAgICBib29sIGlzQ3VycmVudFBsYXliYWNr
VGFyZ2V0U3VwcG9ydGVkKCkgY29uc3Q7CiAKICAgICBlbnVtIFdpcmVsZXNzUGxheWJhY2tUYXJn
ZXRUeXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBlVFZP
dXQgfTsKICAgICBXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSB3aXJlbGVzc1BsYXliYWNrVGFy
Z2V0VHlwZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHJldmlzaW9uIDE4MzM5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDYgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIGJvb2wgaXNDdXJyZW50UGxheWJhY2tU
YXJnZXRXaXJlbGVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgdmlydHVhbCBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25z
dCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6V2ly
ZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25z
dCB7IHJldHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZU5vbmU7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTgzMzk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc4OSw4ICsyNzg5LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgICAgICByZXR1cm47CiAKICAgICBB
Vk91dHB1dENvbnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRwdXRDb250ZXh0
LmdldCgpIDogbmlsOwotICAgIEFWT3V0cHV0Q29udGV4dCAqY3VycmVudENvbnRleHQgPSBtX2F2
UGxheWVyLmdldCgpLm91dHB1dENvbnRleHQ7Ci0gICAgaWYgKCghbmV3Q29udGV4dCAmJiAhY3Vy
cmVudENvbnRleHQpIHx8IFtjdXJyZW50Q29udGV4dCBpc0VxdWFsOm5ld0NvbnRleHRdKQorICAg
IFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IGN1cnJlbnRDb250ZXh0ID0gbV9hdlBsYXllci5n
ZXQoKS5vdXRwdXRDb250ZXh0OworICAgIGlmICgoIW5ld0NvbnRleHQgJiYgIWN1cnJlbnRDb250
ZXh0LmdldCgpKSB8fCBbY3VycmVudENvbnRleHQuZ2V0KCkgaXNFcXVhbDpuZXdDb250ZXh0XSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CkBAIC0yODA1
LDEwICsyODA1LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgog
ICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFt
X291dHB1dENvbnRleHQgfHwgIW1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VOYW1lKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9jYWNoZWRSYXRlOworICAgIFJldGFp
blB0cjxBVk91dHB1dENvbnRleHQ+IGN1cnJlbnRDb250ZXh0ID0gbV9hdlBsYXllci5nZXQoKS5v
dXRwdXRDb250ZXh0OworICAgIHJldHVybiBjdXJyZW50Q29udGV4dCAmJiBjdXJyZW50Q29udGV4
dC5nZXQoKS5kZXZpY2VOYW1lOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCShyZXZpc2lvbiAxODMzOTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgdG90YWxGcmFtZURlbGF5KCkgb3ZlcnJp
ZGU7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHZpcnR1YWwg
Ym9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVm
PE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldChib29sKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtMjIwLDcgKzIyMCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1Rh
cmdldD4gbV9wbGF5YmFja1RhcmdldDsKLSAgICBib29sIG1fY3VycmVudFBsYXliYWNrVGFyZ2V0
SXNTdXBwb3J0ZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFBsYXlUb1RhcmdldCB7IGZh
bHNlIH07CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0JKHJl
dmlzaW9uIDE4MzM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtODA3LDE0ICs4MDcsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqCiB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQotYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmlzQ3VycmVudFBs
YXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcGxheWJhY2tUYXJn
ZXQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuICFtX3BsYXliYWNrVGFyZ2V0
LT5oYXNBY3RpdmVSb3V0ZSgpOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4mJiB0YXJnZXQpCiB7CiAgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURjo6bW92ZSh0YXJn
ZXQpOwpAQCAtODIyLDEyICs4MTQsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iagogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5VG9UYXJnZXQpCiB7
Ci0gICAgYm9vbCBvbGRTdXBwb3J0ZWQgPSBtX2N1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9y
dGVkOwotICAgIG1fY3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQgPSAhc2hvdWxkUGxh
eVRvVGFyZ2V0OworICAgIGlmIChzaG91bGRQbGF5VG9UYXJnZXQgPT0gbV9zaG91bGRQbGF5VG9U
YXJnZXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hvdWxkUGxheVRvVGFyZ2V0ID0gc2hv
dWxkUGxheVRvVGFyZ2V0OwogCi0gICAgaWYgKG1fcGxheWVyICYmIG9sZFN1cHBvcnRlZCAhPSBt
X2N1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKQorICAgIGlmIChtX3BsYXllcikKICAg
ICAgICAgbV9wbGF5ZXItPmN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKCk7
CiB9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0N1cnJl
bnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tU
YXJnZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3Nob3VsZFBsYXlU
b1RhcmdldCAmJiBtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOworfQogI2VuZGlm
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCShyZXZpc2lvbiAxODMzOTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDEwICsxODAsOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2aXJ0dWFsIGJvb2wgaXNDdXJyZW50UGxh
eWJhY2tUYXJnZXRTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFy
Z2V0PiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
Ym9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0b2dnbGVQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgp
OwogI2VuZGlmCiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CkBAIC0yMTUsNyArMjE0LDcg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEZsb2F0U2l6ZSBtX2NhY2hlZE5hdHVyYWxTaXplOwog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgUmVmUHRyPE1lZGlhUGxh
eWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7Ci0gICAgYm9vbCBtX2N1cnJlbnRQbGF5YmFj
a1RhcmdldElzU3VwcG9ydGVkIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRQbGF5VG9UYXJn
ZXQgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Lm1tCShyZXZpc2lvbiAxODMzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1
NDEsMTQgKzE1NDEsNiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjYW5TYXZlTWVk
CiB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotYm9vbCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRTdXBwb3J0ZWQoKSBjb25z
dAotewotICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICByZXR1cm4gIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCk7Ci19Ci0KIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVm
PE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewogICAgIG1fcGxheWJhY2tUYXJnZXQg
PSBXVEY6Om1vdmUodGFyZ2V0KTsKQEAgLTE1NTYsMTIgKzE1NDgsMjIgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6c2V0V2lyZWxlcwogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXlUb1Rhcmdl
dCkKIHsKLSAgICBib29sIG9sZFN1cHBvcnRlZCA9IG1fY3VycmVudFBsYXliYWNrVGFyZ2V0SXNT
dXBwb3J0ZWQ7Ci0gICAgbV9jdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBvcnRlZCA9ICFzaG91
bGRQbGF5VG9UYXJnZXQ7CisgICAgaWYgKHNob3VsZFBsYXlUb1RhcmdldCA9PSBtX3Nob3VsZFBs
YXlUb1RhcmdldCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGxheWVyICYmIG9sZFN1
cHBvcnRlZCAhPSBtX2N1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKQorICAgIG1fc2hv
dWxkUGxheVRvVGFyZ2V0ID0gc2hvdWxkUGxheVRvVGFyZ2V0OworCisgICAgaWYgKG1fcGxheWVy
KQogICAgICAgICBtX3BsYXllci0+Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5n
ZWQoKTsKIH0KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNDdXJyZW50UGxheWJh
Y2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fc2hvdWxkUGxheVRvVGFy
Z2V0ICYmIG1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCk7Cit9CiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251873</attachid>
            <date>2015-04-28 12:07:54 -0700</date>
            <delta_ts>2015-04-28 14:41:40 -0700</delta_ts>
            <desc>Rebased patch.</desc>
            <filename>mse_patch_7.txt</filename>
            <type>text/plain</type>
            <size>23858</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzQ5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA0LTI4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFNpbXBsaWZ5
IGNvZGUgdG8gc3VwcG9ydCBtZWRpYSBlbmdpbmVzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRhcmdl
dCBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKTogQWx3YXlzIG1ha2UgY2xpZW50CisgICAgICAgIGNhbGxi
YWNrLCBsZXQgdGhlbSBkZWNpZGUgaWYgaXQgaXMgc2lnbmlmaWNhbnQgb3Igbm90LgorCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBtX2xvYWRUaW1lciAtPiBtX3BlbmRpbmdB
Y3Rpb25UaW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxl
RGVsYXllZEFjdGlvbik6IEhhbmRsZSBTdG9wUGxheWluZ1RvVGFyZ2V0IGFjdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKTog
bV9sb2FkVGltZXIgLT4gbV9wZW5kaW5nQWN0aW9uVGltZXIuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZCk6IFJlbmFtZWQgcGVuZGluZ0FjdGlvblRp
bWVyRmlyZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9y
TG9hZCk6IG1fbG9hZFRpbWVyIC0+IG1fcGVuZGluZ0FjdGlvblRpbWVyLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZSk6IEFkZCBsb2dn
aW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBsYXll
cik6IG1fbG9hZFRpbWVyIC0+IG1fcGVuZGluZ0FjdGlvblRpbWVyLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0
ZWQpOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudCk6IElmIGEgJ3dlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFu
Z2VkJworICAgICAgICBldmVudCBpcyBkaXNwYXRjaGVkIHdoZW4gdGhlIGN1cnJlbnQgdGFyZ2V0
IGlzIHdpcmVsZXNzIGJ1dCB0aGUgbWVkaWEgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQKKyAgICAg
ICAgd2lyZWxlc3MgcGxheWJhY2ssIHRlbGwgdGhlIG1lZGlhIGVuZ2luZSBub3QgdG8gcGxheSB0
byB0aGUgdGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJSZXF1ZXN0ZWRQbGF5YmFja1JhdGUpOiBBZGQgbG9nZ2luZy4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
OgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6IERyaXZlLWJ5
IGZpeCB0byBkaXNhbGxvdyBhdWRpby1vbmx5IGZpbGVzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQpOiBEZWxldGVk
LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oOgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KTogVXNlIGEgUmV0YWluUHRyCisgICAgICAg
IHRvIGV4cGxpY2l0bHkgbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUgdGVtcG9yYXJ5IG9iamVj
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Ojppc0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCk6IERlbGV0ZWQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVk
KTogRGVsZXRlZC4KKwogMjAxNS0wNC0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFtpT1NdIEltcGxlbWVudCBmb250LXN5bnRoZXNp
cyBDU1MgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lv
biAxODM0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDkgKzE5Niw2IEBAIHZv
aWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2sKIAogdm9pZCBXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29s
IGF2YWlsYWJsZSkKIHsKLSAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9
PSBhdmFpbGFibGUpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUgPSBhdmFpbGFibGU7CiAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50
U3RhdGUpCiAgICAgICAgIHN0YXRlLT5jbGllbnQtPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MzQ5NikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1Niw3ICsyNTYsNyBAQCBwcml2YXRlOgogSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiAgICAgLCBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQotICAgICwgbV9sb2FkVGltZXIoKnRo
aXMsICZIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZCkKKyAgICAsIG1fcGVuZGluZ0Fj
dGlvblRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cGVuZGluZ0FjdGlvblRpbWVyRmly
ZWQpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6
OnByb2dyZXNzRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIo
KnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZCkKICAg
ICAsIG1fc2NhblRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQp
CkBAIC02OTQsMTQgKzY5NCwxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVs
YXllZEFjCiAgICAgICAgIHNldEZsYWdzKG1fcGVuZGluZ0FjdGlvbkZsYWdzLCBUZXh0VHJhY2tD
aGFuZ2VzTm90aWZpY2F0aW9uKTsKICNlbmRpZgogCi0gICAgbV9sb2FkVGltZXIuc3RhcnRPbmVT
aG90KDApOworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgaWYgKChh
Y3Rpb25UeXBlICYgU3RvcFBsYXlpbmdUb1RhcmdldCkgJiYgIShtX3BlbmRpbmdBY3Rpb25GbGFn
cyAmIFN0b3BQbGF5aW5nVG9UYXJnZXQpKQorICAgICAgICBzZXRGbGFncyhtX3BlbmRpbmdBY3Rp
b25GbGFncywgU3RvcFBsYXlpbmdUb1RhcmdldCk7CisjZW5kaWYKKworICAgIG1fcGVuZGluZ0Fj
dGlvblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpCiB7CiAgICAgLy8gU2NoZWR1bGUgdGhlIHRpbWVyIHRv
IHRyeSB0aGUgbmV4dCA8c291cmNlPiBlbGVtZW50IFdJVEhPVVQgcmVzZXR0aW5nIHN0YXRlIGFs
YSBwcmVwYXJlRm9yTG9hZC4KICAgICBzZXRGbGFncyhtX3BlbmRpbmdBY3Rpb25GbGFncywgTG9h
ZE1lZGlhUmVzb3VyY2UpOwotICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBt
X3BlbmRpbmdBY3Rpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKQEAg
LTcxNyw3ICs3MjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQoY29u
CiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpwZW5kaW5nQWN0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgUmVmPEhUTUxNZWRp
YUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBsb2FkTmV4dFNvdXJjZUNoaWxkIG1heSBmaXJl
ICdiZWZvcmVsb2FkJywgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAK
QEAgLTczOCw2ICs3NDMsMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJl
ZCgpCiAgICAgICAgIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgaWYgKG1fcGVu
ZGluZ0FjdGlvbkZsYWdzICYgU3RvcFBsYXlpbmdUb1RhcmdldCkgeworICAgICAgICBpZiAobV9w
bGF5ZXIgJiYgbV9wbGF5ZXItPmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSAmJiAh
bV9wbGF5ZXItPmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSkgeworICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGVuZGluZ0FjdGlvblRpbWVyRmlyZWQo
JXApIC0gY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiLCB0aGlz
KTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIG1fcGVuZGluZ0FjdGlvbkZs
YWdzID0gMDsKIH0KIApAQCAtODI2LDcgKzg0MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cHJlcGFyZUZvckxvYWQoKQogCiAgICAgLy8gUGVyZm9ybSB0aGUgY2xlYW51cCByZXF1aXJlZCBm
b3IgdGhlIHJlc291cmNlIGxvYWQgYWxnb3JpdGhtIHRvIHJ1bi4KICAgICBzdG9wUGVyaW9kaWNU
aW1lcnMoKTsKLSAgICBtX2xvYWRUaW1lci5zdG9wKCk7CisgICAgbV9wZW5kaW5nQWN0aW9uVGlt
ZXIuc3RvcCgpOwogICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGFwcHJvcHJpYXRlIHBsYWNlIHRv
IHJlc2V0IExvYWRUZXh0VHJhY2tSZXNvdXJjZSBpZiBuZWNlc3NhcnkgYW5kIHNldCBtX3BlbmRp
bmdBY3Rpb25GbGFncyB0byAwIGhlcmUuCiAgICAgbV9wZW5kaW5nQWN0aW9uRmxhZ3MgJj0gfkxv
YWRNZWRpYVJlc291cmNlOwogICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CkBAIC0yNjQ0LDYg
KzI2NTgsNyBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdFBsYXliYWNrCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7
CiAgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSAhPSByYXRlKSB7CisgICAgICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoJXApIC0gJWYi
LCB0aGlzLCByYXRlKTsKICAgICAgICAgbV9kZWZhdWx0UGxheWJhY2tSYXRlID0gcmF0ZTsKICAg
ICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9
CkBAIC00NzA5LDcgKzQ3MjQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQ
bGF5ZXIoCiAgICAgbV9wbGF5ZXIgPSBudWxscHRyOwogCiAgICAgc3RvcFBlcmlvZGljVGltZXJz
KCk7Ci0gICAgbV9sb2FkVGltZXIuc3RvcCgpOworICAgIG1fcGVuZGluZ0FjdGlvblRpbWVyLnN0
b3AoKTsKIAogICAgIGNsZWFyRmxhZ3MobV9wZW5kaW5nQWN0aW9uRmxhZ3MsIGZsYWdzKTsKICAg
ICBtX2xvYWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CkBAIC00ODU4LDExICs0ODczLDYgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRDdXJyZW50UGxheQogICAgIHJldHVybiBtX21l
ZGlhU2Vzc2lvbi0+Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygqdGhpcyk7CiB9CiAK
LWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBw
b3J0ZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y3VycmVudFBsYXli
YWNrVGFyZ2V0SXNTdXBwb3J0ZWQoKnRoaXMpOwotfQotCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkKIHsKICAgICBlbnF1ZXVlUGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKTsKQEAgLTQ4NzMsOSArNDg4MywyMiBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVuCiAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dp
cmVsZXNzQ2hhbmdlZCglcCkgLSB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNz
ID0gJXMiLCB0aGlzLCBib29sU3RyaW5nKHdlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2ly
ZWxlc3MoKSkpOwogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRw
bGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOwogCi0jaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBtX21lZGlhU2Vzc2lvbi0+bWVkaWFTdGF0ZURpZENo
YW5nZSgqdGhpcywgbWVkaWFTdGF0ZSgpKTsKLSNlbmRpZgorfQorCitib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCit7CisgICAg
UmVmUHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50OworICAgIGJvb2wgY2FuY2VsbGVkID0gSFRN
TEVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkg
IT0gZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFu
Z2VkRXZlbnQpCisgICAgICAgIHJldHVybiBjYW5jZWxsZWQ7CisgICAgaWYgKCFtX3BsYXllciB8
fCAhbV9wbGF5ZXItPmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSB8fCBtX3BsYXll
ci0+Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpKQorICAgICAgICByZXR1cm4gY2Fu
Y2VsbGVkOworCisgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKFN0b3BQbGF5aW5nVG9UYXJnZXQp
OworCisgICAgcmV0dXJuIGNhbmNlbGxlZDsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCkBAIC01ODc2LDcgKzU4
OTksMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZQogCiBkb3Vi
bGUgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBj
b25zdAogewotICAgIHJldHVybiBwb3RlbnRpYWxseVBsYXlpbmcoKSA/IHJlcXVlc3RlZFBsYXli
YWNrUmF0ZSgpIDogMDsKKyAgICBkb3VibGUgcmVxdWVzdGVkUGxheWJhY2tSYXRlID0gdGhpcy0+
cmVxdWVzdGVkUGxheWJhY2tSYXRlKCk7CisgICAgYm9vbCBwb3RlbnRpYWxseVBsYXlpbmcgPSB0
aGlzLT5wb3RlbnRpYWxseVBsYXlpbmcoKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclJlcXVlc3RlZFBsYXliYWNrUmF0ZSglcCkgLSBwb3RlbnRpYWxseVBs
YXlpbmcgPSAlcywgcmV0dXJuaW5nICVmIiwgdGhpcywgYm9vbFN0cmluZyhwb3RlbnRpYWxseVBs
YXlpbmcpLCByZXF1ZXN0ZWRQbGF5YmFja1JhdGUpOworICAgIHJldHVybiBwb3RlbnRpYWxseVBs
YXlpbmcgPyByZXF1ZXN0ZWRQbGF5YmFja1JhdGUgOiAwOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTgz
NDk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw4ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgICAgIENvbmZpZ3VyZVRleHRU
cmFja3MgPSAxIDw8IDEsCiAgICAgICAgIFRleHRUcmFja0NoYW5nZXNOb3RpZmljYXRpb24gPSAx
IDw8IDIsCiAgICAgICAgIENvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkgPSAxIDw8IDMsCisgICAg
ICAgIFN0b3BQbGF5aW5nVG9UYXJnZXQgPSAxIDw8IDQsCiAKLSAgICAgICAgRXZlcnlEZWxheWVk
QWN0aW9uID0gTG9hZE1lZGlhUmVzb3VyY2UgfCBDb25maWd1cmVUZXh0VHJhY2tzIHwgVGV4dFRy
YWNrQ2hhbmdlc05vdGlmaWNhdGlvbiB8IENvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXksCisgICAg
ICAgIEV2ZXJ5RGVsYXllZEFjdGlvbiA9IExvYWRNZWRpYVJlc291cmNlIHwgQ29uZmlndXJlVGV4
dFRyYWNrcyB8IFRleHRUcmFja0NoYW5nZXNOb3RpZmljYXRpb24gfCBDb25maWd1cmVUZXh0VHJh
Y2tEaXNwbGF5IHwgU3RvcFBsYXlpbmdUb1RhcmdldCwKICAgICB9OwogICAgIHZvaWQgc2NoZWR1
bGVEZWxheWVkQWN0aW9uKERlbGF5ZWRBY3Rpb25UeXBlKTsKICAgICAKQEAgLTM1Niw3ICszNTcs
NiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2
b2lkIHdlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpOwogICAgIGJvb2wgd2Via2l0Q3Vy
cmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpIGNvbnN0OwotICAgIGJvb2wgd2Via2l0Q3Vy
cmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9v
bCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKQEAgLTU2Miw2ICs1
NjIsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAg
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVz
c0NoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIGVucXVldWVQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOworCisgICAgdXNpbmcgRXZlbnRUYXJn
ZXQ6OmRpc3BhdGNoRXZlbnQ7CisgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4pIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllclJlZmVycmVyKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02MDQsNyArNjA3LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhUGxheWVyUmVxdWVzdGVkUGxheWJhY2tS
YXRlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2b2lkIGxvYWRUaW1lckZpcmVkKCk7
CisgICAgdm9pZCBwZW5kaW5nQWN0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgcHJvZ3Jlc3NF
dmVudFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKCk7
CiAgICAgdm9pZCBzY2FuVGltZXJGaXJlZCgpOwpAQCAtNzMzLDcgKzczNiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHVwZGF0ZUNhcHRpb25Db250YWluZXIoKTsKIAotICAgIFRpbWVyIG1fbG9h
ZFRpbWVyOworICAgIFRpbWVyIG1fcGVuZGluZ0FjdGlvblRpbWVyOwogICAgIFRpbWVyIG1fcHJv
Z3Jlc3NFdmVudFRpbWVyOwogICAgIFRpbWVyIG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyOwogICAg
IFRpbWVyIG1fc2NhblRpbWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaWRsCShyZXZpc2lvbiAxODM0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNSArMTE2LDQgQEAKIAogICAg
IFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgd2Via2l0U2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKCk7CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVF0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0Q3VycmVudFBsYXliYWNr
VGFyZ2V0SXNXaXJlbGVzczsKLSAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJn
ZXRJc1N1cHBvcnRlZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNl
c3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vz
c2lvbi5jcHAJKHJldmlzaW9uIDE4MzQ5NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSwyMCArMTg5LDYgQEAgYm9vbCBI
VE1MTWVkaWFTZXNzaW9uOjpjdXJyZW50UGxheWJhY2tUYQogICAgIHJldHVybiBpc1dpcmVsZXNz
OwogfQogCi1ib29sIEhUTUxNZWRpYVNlc3Npb246OmN1cnJlbnRQbGF5YmFja1RhcmdldElzU3Vw
cG9ydGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgTWVk
aWFQbGF5ZXIqIHBsYXllciA9IGVsZW1lbnQucGxheWVyKCk7Ci0gICAgaWYgKCFwbGF5ZXIpIHsK
LSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBsYXliYWNrVGFy
Z2V0SXNTdXBwb3J0ZWQgLSByZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBwbGF5ZXIgaXMgTlVMTCIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBpc1N1cHBvcnRlZCA9
IHBsYXllci0+aXNDdXJyZW50UGxheWJhY2tUYXJnZXRTdXBwb3J0ZWQoKTsKLSAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFTZXNzaW9uOjpjdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBvcnRlZCAt
IHJldHVybmluZyAlcyIsIGlzU3VwcG9ydGVkID8gIlRSVUUiIDogIkZBTFNFIik7Ci0gICAgCi0g
ICAgcmV0dXJuIGlzU3VwcG9ydGVkOwotfQotCiB2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tl
ciIpOwpAQCAtMjE3LDYgKzIwMywxMyBAQCB2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5
YmFja1RhcmdlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQor
ICAgIGlmICghZWxlbWVudC5oYXNWaWRlbygpKXsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVhcmx5IGJl
Y2F1c2UgZWxlbWVudCBoYXMgbm8gdmlkZW8iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorCiAgICAgZWxlbWVudC5kb2N1bWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigq
dGhpcywgaXM8SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCkpOwogfQogCkBAIC0zODgsNyArMzgx
LDggQEAgdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZQogICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCIpOwogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBzZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZChlbGVtZW50LCBtX3Jlc3RyaWN0aW9ucyAmIFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKTsKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCkKKyAgICAgICAgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZWxl
bWVudCwgdHJ1ZSk7CiAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAgIGNsaWVudCgp
LnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsK
ICAgICBpZiAobV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxODM0OTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYs
NiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CiAg
ICAgYm9vbCBjdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjb25zdDsKLSAgICBib29sIGN1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIGhhc1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKIAogICAgIGJvb2wg
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAkocmV2aXNpb24gMTgzNDk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDMsMTEgKzg0Myw2
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2UKICAgICByZXR1cm4g
bV9wcml2YXRlLT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCk7CiB9CiAKLWJvb2wg
TWVkaWFQbGF5ZXI6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgp
OwotfQotCiBTdHJpbmcgTWVkaWFQbGF5ZXI6OndpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT53aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFt
ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCShyZXZpc2lvbiAxODM0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsNyArNDY0LDYgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBib29sIGlz
Q3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdDsKLSAgICBib29sIGlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3Q7CiAKICAgICBlbnVtIFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXRUeXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJn
ZXRUeXBlVFZPdXQgfTsKICAgICBXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSB3aXJlbGVzc1Bs
YXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHJldmlzaW9uIDE4MzQ5
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDYgQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIGJvb2wgaXNDdXJyZW50
UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5h
bWUoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAgICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5
cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZU5vbmU7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTgzNDk2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc5OCw4ICsyNzk4LDggQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgICAgICByZXR1cm47
CiAKICAgICBBVk91dHB1dENvbnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRw
dXRDb250ZXh0LmdldCgpIDogbmlsOwotICAgIEFWT3V0cHV0Q29udGV4dCAqY3VycmVudENvbnRl
eHQgPSBtX2F2UGxheWVyLmdldCgpLm91dHB1dENvbnRleHQ7Ci0gICAgaWYgKCghbmV3Q29udGV4
dCAmJiAhY3VycmVudENvbnRleHQpIHx8IFtjdXJyZW50Q29udGV4dCBpc0VxdWFsOm5ld0NvbnRl
eHRdKQorICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IGN1cnJlbnRDb250ZXh0ID0gbV9h
dlBsYXllci5nZXQoKS5vdXRwdXRDb250ZXh0OworICAgIGlmICgoIW5ld0NvbnRleHQgJiYgIWN1
cnJlbnRDb250ZXh0LmdldCgpKSB8fCBbY3VycmVudENvbnRleHQuZ2V0KCkgaXNFcXVhbDpuZXdD
b250ZXh0XSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7
CkBAIC0yODE0LDEwICsyODE0LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOgogICAgIGlmICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKCFtX291dHB1dENvbnRleHQgfHwgIW1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VO
YW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9jYWNoZWRSYXRlOwor
ICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IGN1cnJlbnRDb250ZXh0ID0gbV9hdlBsYXll
ci5nZXQoKS5vdXRwdXRDb250ZXh0OworICAgIHJldHVybiBjdXJyZW50Q29udGV4dCAmJiBjdXJy
ZW50Q29udGV4dC5nZXQoKS5kZXZpY2VOYW1lOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCShyZXZpc2lvbiAxODM0OTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcg
KzE3Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgdG90YWxGcmFtZURlbGF5
KCkgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAg
IHZpcnR1YWwgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRT
aG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtMjIw
LDcgKzIyMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWU7
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBSZWZQdHI8TWVkaWFQ
bGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKLSAgICBib29sIG1fY3VycmVudFBsYXli
YWNrVGFyZ2V0SXNTdXBwb3J0ZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFBsYXlUb1Rh
cmdldCB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0JKHJldmlzaW9uIDE4MzQ5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQkod29ya2luZyBjb3B5KQpAQCAtODA3LDE0ICs4MDcsNiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqCiB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQotYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Omlz
Q3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcGxh
eWJhY2tUYXJnZXQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuICFtX3BsYXli
YWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQ
bGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7CiAgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURjo6
bW92ZSh0YXJnZXQpOwpAQCAtODIyLDEyICs4MTQsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iagogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5VG9U
YXJnZXQpCiB7Ci0gICAgYm9vbCBvbGRTdXBwb3J0ZWQgPSBtX2N1cnJlbnRQbGF5YmFja1Rhcmdl
dElzU3VwcG9ydGVkOwotICAgIG1fY3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQgPSAh
c2hvdWxkUGxheVRvVGFyZ2V0OworICAgIGlmIChzaG91bGRQbGF5VG9UYXJnZXQgPT0gbV9zaG91
bGRQbGF5VG9UYXJnZXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hvdWxkUGxheVRvVGFy
Z2V0ID0gc2hvdWxkUGxheVRvVGFyZ2V0OwogCi0gICAgaWYgKG1fcGxheWVyICYmIG9sZFN1cHBv
cnRlZCAhPSBtX2N1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKQorICAgIGlmIChtX3Bs
YXllcikKICAgICAgICAgbV9wbGF5ZXItPmN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3ND
aGFuZ2VkKCk7CiB9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Ojppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cGxheWJhY2tUYXJnZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3No
b3VsZFBsYXlUb1RhcmdldCAmJiBtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOwor
fQogI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCShyZXZpc2lv
biAxODM0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDEwICsxODAsOSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2aXJ0dWFsIGJvb2wgaXND
dXJyZW50UGxheWJhY2tUYXJnZXRTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0b2dnbGVQbGF5aW5nVG9QbGF5YmFj
a1RhcmdldCgpOwogI2VuZGlmCiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CkBAIC0yMTUs
NyArMjE0LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEZsb2F0U2l6ZSBtX2NhY2hlZE5hdHVy
YWxTaXplOwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgUmVmUHRy
PE1lZGlhUGxheWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7Ci0gICAgYm9vbCBtX2N1cnJl
bnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRQ
bGF5VG9UYXJnZXQgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiAxODM0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE1NDEsMTQgKzE1NDEsNiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpj
YW5TYXZlTWVkCiB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotYm9v
bCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRTdXBwb3J0
ZWQoKSBjb25zdAotewotICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICByZXR1cm4gIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCk7
Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewogICAgIG1fcGxheWJh
Y2tUYXJnZXQgPSBXVEY6Om1vdmUodGFyZ2V0KTsKQEAgLTE1NTYsMTIgKzE1NDgsMjIgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0V2lyZWxlcwogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBs
YXlUb1RhcmdldCkKIHsKLSAgICBib29sIG9sZFN1cHBvcnRlZCA9IG1fY3VycmVudFBsYXliYWNr
VGFyZ2V0SXNTdXBwb3J0ZWQ7Ci0gICAgbV9jdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBvcnRl
ZCA9ICFzaG91bGRQbGF5VG9UYXJnZXQ7CisgICAgaWYgKHNob3VsZFBsYXlUb1RhcmdldCA9PSBt
X3Nob3VsZFBsYXlUb1RhcmdldCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGxheWVy
ICYmIG9sZFN1cHBvcnRlZCAhPSBtX2N1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKQor
ICAgIG1fc2hvdWxkUGxheVRvVGFyZ2V0ID0gc2hvdWxkUGxheVRvVGFyZ2V0OworCisgICAgaWYg
KG1fcGxheWVyKQogICAgICAgICBtX3BsYXllci0+Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJl
bGVzc0NoYW5nZWQoKTsKIH0KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNDdXJy
ZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXliYWNr
VGFyZ2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fc2hvdWxk
UGxheVRvVGFyZ2V0ICYmIG1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCk7Cit9CiAj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="276678"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251888</attachid>
            <date>2015-04-28 14:34:24 -0700</date>
            <delta_ts>2015-04-28 14:40:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>mse_patch_8.txt</filename>
            <type>text/plain</type>
            <size>22931</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzUwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE1LTA0LTI4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFNpbXBsaWZ5
IGNvZGUgdG8gc3VwcG9ydCBtZWRpYSBlbmdpbmVzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRhcmdl
dCBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZSk6IEFsd2F5cyBtYWtlIGNsaWVudAorICAgICAgICBjYWxsYmFjaywg
bGV0IHRoZW0gZGVjaWRlIGlmIGl0IGlzIHNpZ25pZmljYW50IG9yIG5vdC4KKworICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogbV9sb2FkVGltZXIgLT4gbV9wZW5kaW5nQWN0aW9u
VGltZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZURlbGF5
ZWRBY3Rpb24pOiBIYW5kbGUgQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFibGl0eS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKTog
bV9sb2FkVGltZXIgLT4gbV9wZW5kaW5nQWN0aW9uVGltZXIuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZCk6IFJlbmFtZWQgcGVuZGluZ0FjdGlvblRp
bWVyRmlyZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9y
TG9hZCk6IG1fbG9hZFRpbWVyIC0+IG1fcGVuZGluZ0FjdGlvblRpbWVyLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZSk6IEFkZCBsb2dn
aW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBsYXll
cik6IG1fbG9hZFRpbWVyIC0+IG1fcGVuZGluZ0FjdGlvblRpbWVyLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0
ZWQpOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudCk6IElmIGEgJ3dlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFu
Z2VkJworICAgICAgICBldmVudCBpcyBkaXNwYXRjaGVkIHdoZW4gdGhlIGN1cnJlbnQgdGFyZ2V0
IGlzIHdpcmVsZXNzIGJ1dCB0aGUgbWVkaWEgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQKKyAgICAg
ICAgd2lyZWxlc3MgcGxheWJhY2ssIHRlbGwgdGhlIG1lZGlhIGVuZ2luZSBub3QgdG8gcGxheSB0
byB0aGUgdGFyZ2V0LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6c2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKTogRHJpdmUtYnkgZml4IHRvIGRpc2FsbG93IGF1ZGlvLW9ubHkg
ZmlsZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpjdXJyZW50UGxheWJh
Y2tUYXJnZXRJc1N1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFT
ZXNzaW9uLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRT
dXBwb3J0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJn
ZXQpOiBVc2UgYSBSZXRhaW5QdHIKKyAgICAgICAgdG8gZXhwbGljaXRseSBtYW5hZ2UgdGhlIGxp
ZmV0aW1lIG9mIHRoZSB0ZW1wb3Jhcnkgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6aXND
dXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0U3Vw
cG9ydGVkKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRX
aXJlbGVzcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXND
dXJyZW50UGxheWJhY2tUYXJnZXRTdXBwb3J0ZWQpOiBEZWxldGVkLgorCiAyMDE1LTA0LTI4ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0Nv
bnRlbnQgRXh0ZW5zaW9uc10gVXNlIGxlc3MgbWVtb3J5IGZvciBDb21iaW5lZFVSTEZpbHRlcnMu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTgzNTA3KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw5ICsxOTYsNiBAQCB2b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldFBsYXliYWNrCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCiB7
Ci0gICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPT0gYXZhaWxhYmxlKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0g
YXZhaWxhYmxlOwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKQogICAgICAg
ICBzdGF0ZS0+Y2xpZW50LT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShz
dGF0ZS0+Y29udGV4dElkLCBhdmFpbGFibGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODM1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcg
QEAgcHJpdmF0ZToKIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgQWN0aXZl
RE9NT2JqZWN0KCZkb2N1bWVudCkKLSAgICAsIG1fbG9hZFRpbWVyKCp0aGlzLCAmSFRNTE1lZGlh
RWxlbWVudDo6bG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3BlbmRpbmdBY3Rpb25UaW1lcigqdGhp
cywgJkhUTUxNZWRpYUVsZW1lbnQ6OnBlbmRpbmdBY3Rpb25UaW1lckZpcmVkKQogICAgICwgbV9w
cm9ncmVzc0V2ZW50VGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50
VGltZXJGaXJlZCkKICAgICAsIG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyKCp0aGlzLCAmSFRNTE1l
ZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQpCiAgICAgLCBtX3NjYW5UaW1l
cigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVkKQpAQCAtNjk0LDE0ICs2
OTQsMTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZURlbGF5ZWRBYwogICAgICAg
ICBzZXRGbGFncyhtX3BlbmRpbmdBY3Rpb25GbGFncywgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNh
dGlvbik7CiAjZW5kaWYKIAotICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIGlmIChhY3Rpb25UeXBlICYgQ2hl
Y2tQbGF5YmFja1RhcmdldENvbXBhdGFibGl0eSkKKyAgICAgICAgc2V0RmxhZ3MobV9wZW5kaW5n
QWN0aW9uRmxhZ3MsIENoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmxpdHkpOworI2VuZGlmCisK
KyAgICBtX3BlbmRpbmdBY3Rpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2NoZWR1bGVOZXh0U291cmNlQ2hpbGQoKQogewogICAgIC8vIFNjaGVk
dWxlIHRoZSB0aW1lciB0byB0cnkgdGhlIG5leHQgPHNvdXJjZT4gZWxlbWVudCBXSVRIT1VUIHJl
c2V0dGluZyBzdGF0ZSBhbGEgcHJlcGFyZUZvckxvYWQuCiAgICAgc2V0RmxhZ3MobV9wZW5kaW5n
QWN0aW9uRmxhZ3MsIExvYWRNZWRpYVJlc291cmNlKTsKLSAgICBtX2xvYWRUaW1lci5zdGFydE9u
ZVNob3QoMCk7CisgICAgbV9wZW5kaW5nQWN0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudE5hbWUpCkBAIC03MTcsNyArNzIyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUV2ZW50KGNvbgogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVu
dC5yZWxlYXNlKCkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVk
KCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGVuZGluZ0FjdGlvblRpbWVyRmlyZWQoKQogewog
ICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gbG9hZE5leHRTb3Vy
Y2VDaGlsZCBtYXkgZmlyZSAnYmVmb3JlbG9hZCcsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBE
T00gbXV0YXRpb25zLgogCkBAIC03MzgsNiArNzQzLDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bG9hZFRpbWVyRmlyZWQoKQogICAgICAgICBub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNr
Q2hhbmdlcygpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorICAgIGlmIChtX3BlbmRpbmdBY3Rpb25GbGFncyAmIENoZWNrUGxheWJhY2tUYXJnZXRDb21w
YXRhYmxpdHkgJiYgbV9wbGF5ZXIgJiYgbV9wbGF5ZXItPmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0
V2lyZWxlc3MoKSAmJiAhbV9wbGF5ZXItPmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQo
KSkgeworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwZW5kaW5nQWN0aW9u
VGltZXJGaXJlZCglcCkgLSBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZh
bHNlKSIsIHRoaXMpOworICAgICAgICBtX3BsYXllci0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQoZmFsc2UpOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9wZW5kaW5nQWN0aW9uRmxhZ3Mg
PSAwOwogfQogCkBAIC04MjYsNyArODM4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVw
YXJlRm9yTG9hZCgpCiAKICAgICAvLyBQZXJmb3JtIHRoZSBjbGVhbnVwIHJlcXVpcmVkIGZvciB0
aGUgcmVzb3VyY2UgbG9hZCBhbGdvcml0aG0gdG8gcnVuLgogICAgIHN0b3BQZXJpb2RpY1RpbWVy
cygpOwotICAgIG1fbG9hZFRpbWVyLnN0b3AoKTsKKyAgICBtX3BlbmRpbmdBY3Rpb25UaW1lci5z
dG9wKCk7CiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgYXBwcm9wcmlhdGUgcGxhY2UgdG8gcmVz
ZXQgTG9hZFRleHRUcmFja1Jlc291cmNlIGlmIG5lY2Vzc2FyeSBhbmQgc2V0IG1fcGVuZGluZ0Fj
dGlvbkZsYWdzIHRvIDAgaGVyZS4KICAgICBtX3BlbmRpbmdBY3Rpb25GbGFncyAmPSB+TG9hZE1l
ZGlhUmVzb3VyY2U7CiAgICAgbV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKQEAgLTI2NDQsNiArMjY1
Niw3IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpkZWZhdWx0UGxheWJhY2sKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShkb3VibGUgcmF0ZSkKIHsKICAg
ICBpZiAobV9kZWZhdWx0UGxheWJhY2tSYXRlICE9IHJhdGUpIHsKKyAgICAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZSglcCkgLSAlZiIsIHRo
aXMsIHJhdGUpOwogICAgICAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOwogICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogICAgIH0KQEAg
LTQ3MDksNyArNDcyMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBsYXll
cigKICAgICBtX3BsYXllciA9IG51bGxwdHI7CiAKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsK
LSAgICBtX2xvYWRUaW1lci5zdG9wKCk7CisgICAgbV9wZW5kaW5nQWN0aW9uVGltZXIuc3RvcCgp
OwogCiAgICAgY2xlYXJGbGFncyhtX3BlbmRpbmdBY3Rpb25GbGFncywgZmxhZ3MpOwogICAgIG1f
bG9hZFN0YXRlID0gV2FpdGluZ0ZvclNvdXJjZTsKQEAgLTQ4NTgsMTEgKzQ4NzEsNiBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdEN1cnJlbnRQbGF5CiAgICAgcmV0dXJuIG1fbWVkaWFT
ZXNzaW9uLT5jdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCp0aGlzKTsKIH0KIAotYm9v
bCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBvcnRl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5jdXJyZW50UGxheWJhY2tU
YXJnZXRJc1N1cHBvcnRlZCgqdGhpcyk7Ci19Ci0KIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2ly
ZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKQogewogICAgIGVucXVldWVQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOwpAQCAtNDg3Myw5ICs0ODgxLDE1IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW4KICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxl
c3NDaGFuZ2VkKCVwKSAtIHdlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MgPSAl
cyIsIHRoaXMsIGJvb2xTdHJpbmcod2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVz
cygpKSk7CiAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXli
YWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCk7CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYVN0YXRlRGlkQ2hhbmdl
KCp0aGlzLCBtZWRpYVN0YXRlKCkpOwotI2VuZGlmCit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKK3sKKyAgICBSZWZQ
dHI8RXZlbnQ+IGV2ZW50ID0gcHJwRXZlbnQ7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZl
bnQpCisgICAgICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihDaGVja1BsYXliYWNrVGFyZ2V0Q29t
cGF0YWJsaXR5KTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQp
OwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCShyZXZpc2lvbiAxODM1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDggKzEzOSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgQ29uZmlndXJlVGV4dFRyYWNrcyA9IDEgPDwgMSwKICAgICAgICAgVGV4dFRyYWNrQ2hhbmdl
c05vdGlmaWNhdGlvbiA9IDEgPDwgMiwKICAgICAgICAgQ29uZmlndXJlVGV4dFRyYWNrRGlzcGxh
eSA9IDEgPDwgMywKKyAgICAgICAgQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFibGl0eSA9IDEg
PDwgNCwKIAotICAgICAgICBFdmVyeURlbGF5ZWRBY3Rpb24gPSBMb2FkTWVkaWFSZXNvdXJjZSB8
IENvbmZpZ3VyZVRleHRUcmFja3MgfCBUZXh0VHJhY2tDaGFuZ2VzTm90aWZpY2F0aW9uIHwgQ29u
ZmlndXJlVGV4dFRyYWNrRGlzcGxheSwKKyAgICAgICAgRXZlcnlEZWxheWVkQWN0aW9uID0gTG9h
ZE1lZGlhUmVzb3VyY2UgfCBDb25maWd1cmVUZXh0VHJhY2tzIHwgVGV4dFRyYWNrQ2hhbmdlc05v
dGlmaWNhdGlvbiB8IENvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkgfCBDaGVja1BsYXliYWNrVGFy
Z2V0Q29tcGF0YWJsaXR5LAogICAgIH07CiAgICAgdm9pZCBzY2hlZHVsZURlbGF5ZWRBY3Rpb24o
RGVsYXllZEFjdGlvblR5cGUpOwogICAgIApAQCAtMzU2LDcgKzM1Nyw2IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgd2Via2l0U2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKCk7CiAgICAgYm9vbCB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJn
ZXRJc1dpcmVsZXNzKCkgY29uc3Q7Ci0gICAgYm9vbCB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJn
ZXRJc1N1cHBvcnRlZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwpAQCAtNTYyLDYgKzU2Miw5IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChNZWRpYVBs
YXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5Q2hhbmdlZEV2ZW50KCk7CisKKyAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVu
dDsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pikgb3Zl
cnJpZGU7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTYwNCw3ICs2MDcsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBkb3VibGUgbWVkaWFQbGF5ZXJSZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKIAotICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHBlbmRp
bmdBY3Rpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCBwcm9ncmVzc0V2ZW50VGltZXJGaXJlZCgp
OwogICAgIHZvaWQgcGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQoKTsKICAgICB2b2lkIHNjYW5U
aW1lckZpcmVkKCk7CkBAIC03MzMsNyArNzM2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBk
YXRlQ2FwdGlvbkNvbnRhaW5lcigpOwogCi0gICAgVGltZXIgbV9sb2FkVGltZXI7CisgICAgVGlt
ZXIgbV9wZW5kaW5nQWN0aW9uVGltZXI7CiAgICAgVGltZXIgbV9wcm9ncmVzc0V2ZW50VGltZXI7
CiAgICAgVGltZXIgbV9wbGF5YmFja1Byb2dyZXNzVGltZXI7CiAgICAgVGltZXIgbV9zY2FuVGlt
ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHJldmlz
aW9uIDE4MzUwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTExNiw1ICsxMTYsNCBAQAogCiAgICAgW0NvbmRpdGlvbmFsPVdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gdm9pZCB3ZWJraXRTaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXIoKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNz
OwotICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIHdlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNp
b24gMTgzNTA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTg5LDIwICsxODksNiBAQCBib29sIEhUTUxNZWRpYVNlc3Npb246
OmN1cnJlbnRQbGF5YmFja1RhCiAgICAgcmV0dXJuIGlzV2lyZWxlc3M7CiB9CiAKLWJvb2wgSFRN
TE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKLXsKLSAgICBNZWRpYVBsYXllciogcGxheWVy
ID0gZWxlbWVudC5wbGF5ZXIoKTsKLSAgICBpZiAoIXBsYXllcikgewotICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFTZXNzaW9uOjpjdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBvcnRlZCAt
IHJldHVybmluZyBGQUxTRSBiZWNhdXNlIHBsYXllciBpcyBOVUxMIik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkID0gcGxheWVyLT5pc0N1cnJl
bnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgpOwotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNl
c3Npb246OmN1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkIC0gcmV0dXJuaW5nICVzIiwg
aXNTdXBwb3J0ZWQgPyAiVFJVRSIgOiAiRkFMU0UiKTsKLSAgICAKLSAgICByZXR1cm4gaXNTdXBw
b3J0ZWQ7Ci19Ci0KIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIik7CkBAIC0yMTcsNiAr
MjAzLDEzIEBAIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2UKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorI2lmICFQTEFURk9STShJT1MpCisgICAgaWYgKCFlbGVtZW50
Lmhhc1ZpZGVvKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6c2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgZWxlbWVudCBo
YXMgbm8gdmlkZW8iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZWxl
bWVudC5kb2N1bWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigqdGhpcywgaXM8SFRNTFZp
ZGVvRWxlbWVudD4oZWxlbWVudCkpOwogfQogCkBAIC0zODgsNyArMzgxLDggQEAgdm9pZCBIVE1M
TWVkaWFTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZQogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YVNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCIpOwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKLSAgICBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChlbGVt
ZW50LCBtX3Jlc3RyaWN0aW9ucyAmIFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKKyAg
ICBpZiAobV9yZXN0cmljdGlvbnMgJiBXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCkKKyAg
ICAgICAgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZWxlbWVudCwgdHJ1ZSk7CiAg
ICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAgIGNsaWVudCgpLnNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKICAgICBpZiAobV9zaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
U2Vzc2lvbi5oCShyZXZpc2lvbiAxODM1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CiAgICAgYm9vbCBjdXJyZW50
UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsK
LSAgICBib29sIGN1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKIAogICAgIGJvb2wgd2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2
aXNpb24gMTgzNTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDMsMTEgKzg0Myw2IEBAIGJvb2wgTWVkaWFQ
bGF5ZXI6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2UKICAgICByZXR1cm4gbV9wcml2YXRlLT5pc0N1
cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6Omlz
Q3VycmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgpOwotfQotCiBTdHJpbmcg
TWVkaWFQbGF5ZXI6OndpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT53aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lv
biAxODM1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsNyArNDY0LDYgQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBib29sIGlzQ3VycmVudFBsYXliYWNr
VGFyZ2V0V2lyZWxlc3MoKSBjb25zdDsKLSAgICBib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0
U3VwcG9ydGVkKCkgY29uc3Q7CiAKICAgICBlbnVtIFdpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBl
IHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBlVFZPdXQgfTsK
ICAgICBXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSB3aXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlw
ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHJldmlzaW9uIDE4MzUwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjEsNyArMTYxLDYgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKICAgICB2aXJ0dWFsIGJvb2wgaXNDdXJyZW50UGxheWJhY2tUYXJnZXRX
aXJlbGVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ3Vy
cmVudFBsYXliYWNrVGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdmlydHVhbCBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdCB7IHJl
dHVybiBlbXB0eVN0cmluZygpOyB9CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6V2lyZWxlc3NQ
bGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCB7IHJl
dHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZU5vbmU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQkocmV2aXNpb24gMTgzNTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc5OCw4ICsyNzk4LDggQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgICAgICByZXR1cm47CiAKICAgICBBVk91dHB1
dENvbnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRwdXRDb250ZXh0LmdldCgp
IDogbmlsOwotICAgIEFWT3V0cHV0Q29udGV4dCAqY3VycmVudENvbnRleHQgPSBtX2F2UGxheWVy
LmdldCgpLm91dHB1dENvbnRleHQ7Ci0gICAgaWYgKCghbmV3Q29udGV4dCAmJiAhY3VycmVudENv
bnRleHQpIHx8IFtjdXJyZW50Q29udGV4dCBpc0VxdWFsOm5ld0NvbnRleHRdKQorICAgIFJldGFp
blB0cjxBVk91dHB1dENvbnRleHQ+IGN1cnJlbnRDb250ZXh0ID0gbV9hdlBsYXllci5nZXQoKS5v
dXRwdXRDb250ZXh0OworICAgIGlmICgoIW5ld0NvbnRleHQgJiYgIWN1cnJlbnRDb250ZXh0Lmdl
dCgpKSB8fCBbY3VycmVudENvbnRleHQuZ2V0KCkgaXNFcXVhbDpuZXdDb250ZXh0XSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CkBAIC0yODE0LDEwICsy
ODE0LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIGlm
ICghbV9hdlBsYXllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFtX291dHB1
dENvbnRleHQgfHwgIW1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VOYW1lKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9jYWNoZWRSYXRlOworICAgIFJldGFpblB0cjxB
Vk91dHB1dENvbnRleHQ+IGN1cnJlbnRDb250ZXh0ID0gbV9hdlBsYXllci5nZXQoKS5vdXRwdXRD
b250ZXh0OworICAgIHJldHVybiBjdXJyZW50Q29udGV4dCAmJiBjdXJyZW50Q29udGV4dC5nZXQo
KS5kZXZpY2VOYW1lOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCShyZXZpc2lvbiAxODM1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgdG90YWxGcmFtZURlbGF5KCkgb3ZlcnJpZGU7CiAK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHZpcnR1YWwgYm9vbCBp
c0N1cnJlbnRQbGF5YmFja1RhcmdldFN1cHBvcnRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlh
UGxheWJhY2tUYXJnZXQ+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5
YmFja1RhcmdldChib29sKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtMjIwLDcgKzIyMCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4g
bV9wbGF5YmFja1RhcmdldDsKLSAgICBib29sIG1fY3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBw
b3J0ZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFBsYXlUb1RhcmdldCB7IGZhbHNlIH07
CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0JKHJldmlzaW9u
IDE4MzUwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQkod29ya2luZyBj
b3B5KQpAQCAtODA3LDE0ICs4MDcsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqCiB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotYm9v
bCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmlzQ3VycmVudFBsYXliYWNr
VGFyZ2V0U3VwcG9ydGVkKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNB
Y3RpdmVSb3V0ZSgpOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4m
JiB0YXJnZXQpCiB7CiAgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURjo6bW92ZSh0YXJnZXQpOwpA
QCAtODIyLDEyICs4MTQsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iagogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5VG9UYXJnZXQpCiB7Ci0gICAg
Ym9vbCBvbGRTdXBwb3J0ZWQgPSBtX2N1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkOwot
ICAgIG1fY3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0ZWQgPSAhc2hvdWxkUGxheVRvVGFy
Z2V0OworICAgIGlmIChzaG91bGRQbGF5VG9UYXJnZXQgPT0gbV9zaG91bGRQbGF5VG9UYXJnZXQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hvdWxkUGxheVRvVGFyZ2V0ID0gc2hvdWxkUGxh
eVRvVGFyZ2V0OwogCi0gICAgaWYgKG1fcGxheWVyICYmIG9sZFN1cHBvcnRlZCAhPSBtX2N1cnJl
bnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKQorICAgIGlmIChtX3BsYXllcikKICAgICAgICAg
bV9wbGF5ZXItPmN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKCk7CiB9CisK
K2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0N1cnJlbnRQbGF5
YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3Nob3VsZFBsYXlUb1Rhcmdl
dCAmJiBtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOworfQogI2VuZGlmCiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCShyZXZpc2lvbiAxODM1MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDEwICsxODAsOSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2aXJ0dWFsIGJvb2wgaXNDdXJyZW50UGxheWJhY2tU
YXJnZXRTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXJy
ZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYm
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB0b2dnbGVQbGF5aW5nVG9QbGF5YmFja1RhcmdldCgpOwogI2Vu
ZGlmCiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CkBAIC0yMTUsNyArMjE0LDcgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIEZsb2F0U2l6ZSBtX2NhY2hlZE5hdHVyYWxTaXplOwogI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tU
YXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7Ci0gICAgYm9vbCBtX2N1cnJlbnRQbGF5YmFja1Rhcmdl
dElzU3VwcG9ydGVkIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRQbGF5VG9UYXJnZXQgeyBm
YWxzZSB9OwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
CShyZXZpc2lvbiAxODM1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NDEsMTQg
KzE1NDEsNiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjYW5TYXZlTWVkCiB9CiAK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRTdXBwb3J0ZWQoKSBjb25zdAotewot
ICAgIGlmICghbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCk7Ci19Ci0KIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlh
UGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewogICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEY6
Om1vdmUodGFyZ2V0KTsKQEAgLTE1NTYsMTIgKzE1NDgsMjIgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6c2V0V2lyZWxlcwogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXlUb1RhcmdldCkKIHsK
LSAgICBib29sIG9sZFN1cHBvcnRlZCA9IG1fY3VycmVudFBsYXliYWNrVGFyZ2V0SXNTdXBwb3J0
ZWQ7Ci0gICAgbV9jdXJyZW50UGxheWJhY2tUYXJnZXRJc1N1cHBvcnRlZCA9ICFzaG91bGRQbGF5
VG9UYXJnZXQ7CisgICAgaWYgKHNob3VsZFBsYXlUb1RhcmdldCA9PSBtX3Nob3VsZFBsYXlUb1Rh
cmdldCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGxheWVyICYmIG9sZFN1cHBvcnRl
ZCAhPSBtX2N1cnJlbnRQbGF5YmFja1RhcmdldElzU3VwcG9ydGVkKQorICAgIG1fc2hvdWxkUGxh
eVRvVGFyZ2V0ID0gc2hvdWxkUGxheVRvVGFyZ2V0OworCisgICAgaWYgKG1fcGxheWVyKQogICAg
ICAgICBtX3BsYXllci0+Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKTsK
IH0KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNDdXJyZW50UGxheWJhY2tUYXJn
ZXRXaXJlbGVzcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fc2hvdWxkUGxheVRvVGFyZ2V0ICYm
IG1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCk7Cit9CiAjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>