<?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>208080</bug_id>
          
          <creation_ts>2020-02-21 16:34:23 -0800</creation_ts>
          <short_desc>Support in-band generic cues when loading media in the GPU Process</short_desc>
          <delta_ts>2020-02-28 04:55:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=208372</see_also>
          <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>aakash_jain</cc>
    
    <cc>annulen</cc>
    
    <cc>ap</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1621804</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-21 16:34:23 -0800</bug_when>
    <thetext>Support in-band generic cues when loading media in the GPU Process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621805</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-21 16:34:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/59687943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621809</commentid>
    <comment_count>2</comment_count>
      <attachid>391433</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-21 16:38:38 -0800</bug_when>
    <thetext>Created attachment 391433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621836</commentid>
    <comment_count>3</comment_count>
      <attachid>391442</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-21 18:53:11 -0800</bug_when>
    <thetext>Created attachment 391442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621845</commentid>
    <comment_count>4</comment_count>
      <attachid>391446</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-21 19:49:11 -0800</bug_when>
    <thetext>Created attachment 391446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621884</commentid>
    <comment_count>5</comment_count>
      <attachid>391446</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-22 10:29:24 -0800</bug_when>
    <thetext>Comment on attachment 391446
Patch

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

&gt; Source/WebCore/html/track/InbandGenericTextTrack.cpp:88
&gt; -TextTrackCueGeneric* GenericTextTrackCueMap::find(GenericCueData&amp; cueData)
&gt; +TextTrackCueGeneric* GenericTextTrackCueMap::find(InbandGenericCue&amp; cueData)
&gt;  {
&gt; -    return m_dataToCueMap.get(&amp;cueData);
&gt; +    auto index = findIndexOfPair(cueData);
&gt; +    if (index == notFound)
&gt; +        return nullptr;
&gt; +
&gt; +    return m_cues[index].m_cue.get();
&gt;  }
&gt;  
&gt; -GenericCueData* GenericTextTrackCueMap::find(TextTrackCue&amp; cue)
&gt; +size_t GenericTextTrackCueMap::findIndexOfPair(TextTrackCue&amp; cue)
&gt;  {
&gt; -    return m_cueToDataMap.get(&amp;cue);
&gt; +    return m_cues.findMatching([&amp;cue](const auto&amp; cuePair) {
&gt; +        if (!cue.hasEquivalentStartTime(*cuePair.m_cue))
&gt; +            return false;
&gt; +
&gt; +        return cue.isEqual(*cuePair.m_cue, TextTrackCue::IgnoreDuration);
&gt; +    });
&gt; +}
&gt; +
&gt; +InbandGenericCue* GenericTextTrackCueMap::find(TextTrackCue&amp; cue)
&gt; +{
&gt; +    auto index = findIndexOfPair(cue);
&gt; +    if (index == notFound)
&gt; +        return nullptr;
&gt; +
&gt; +    return m_cues[index].m_cueData.get();

These methods seem to now be much slower, doing a long walk of the entire vector. And a long movie could have thousands of cues.  Is there a way to speed this up? I see that the cues are inserted in startTime order; could we do a binary search here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623414</commentid>
    <comment_count>6</comment_count>
      <attachid>391848</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-27 04:16:54 -0800</bug_when>
    <thetext>Created attachment 391848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623421</commentid>
    <comment_count>7</comment_count>
      <attachid>391851</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-27 05:49:31 -0800</bug_when>
    <thetext>Created attachment 391851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623501</commentid>
    <comment_count>8</comment_count>
      <attachid>391851</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-27 08:37:19 -0800</bug_when>
    <thetext>Comment on attachment 391851
Patch

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

&gt; Source/WebCore/html/track/InbandGenericTextTrack.cpp:49
&gt; +TextTrackCueGeneric* GenericTextTrackCueMap::find(InbandGenericCue&amp; inbandCue)

We could pass for all these methods the cue ID instead of InbandGenericCue object.

&gt; Source/WebCore/html/track/InbandGenericTextTrack.h:46
&gt; +    using CueToDataMap = HashMap&lt;RefPtr&lt;TextTrackCue&gt;, uint64_t&gt;;

Can we use ObjectIdentifier?

&gt; Source/WebCore/html/track/InbandGenericTextTrack.h:47
&gt; +    using CueDataToCueMap = HashMap&lt;uint64_t, RefPtr&lt;TextTrackCueGeneric&gt;&gt;;

Ditto.

Also, do we need to keep ownership of the keys?
Should it be TextTrackCue*?

&gt; Source/WebCore/platform/graphics/InbandGenericCue.cpp:79
&gt; +        switch (m_cueData.m_align) {

Can this switch be useful elsewhere?
Should it be made as a helper function?

&gt; Source/WebCore/platform/graphics/InbandGenericCue.cpp:111
&gt; +    if (!m_cueData.m_fontName.isEmpty())

empty or null?

&gt; Source/WebCore/platform/graphics/InbandGenericCue.cpp:144
&gt; +    return true;

Would be more compact as
return m_relativeFontSize == other.m_relativeFontSize
    &amp;&amp; m_.... == ...

&gt; Source/WebCore/platform/graphics/InbandGenericCue.h:93
&gt; +        return WTF::nullopt;

Should we serialise/deserialize invalid IDs?

&gt; Source/WebCore/platform/graphics/InbandGenericCue.h:228
&gt; +    explicit InbandGenericCue();

No need for explicit.
Constructor as private would be better.

&gt; Source/WebCore/platform/graphics/InbandGenericCue.h:284
&gt; +    static uint64_t s_nextUniqueId;

Needed? ObjectIdentifier as well

&gt; Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:87
&gt; +void InbandTextTrackPrivateAVF::processCueAttributes(CFAttributedStringRef attributedString, InbandGenericCue&amp; cueData)

It seems processCueAttributes is called in one place where cureData is directly created.
It seems we could then change it to something like
Ref&lt;InbandGenericCue&gt; InbandTextTrackPrivateAVF::processCueAttributes(CFAttributedStringRef)
Or maybe RefPtr&lt; InbandGenericCue &gt; if there are error cases.

&gt; Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:99
&gt; +    Vector&lt;RefPtr&lt;InbandGenericCue&gt;&gt; m_cues;

Vector&lt;Ref&lt;&gt;&gt;?

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:531
&gt; +    if (const auto&amp; track = m_textTracks.get(identifier))

s/const//
Seems strange that a const auto&amp; track could be calling addGenericCue.
 Ditto below.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:532
&gt; +        track-&gt;addGenericCue(WTFMove(InbandGenericCue::create(WTFMove(cueData)).get()));

Maybe addGenericCue should take a Ref&lt;&gt;.
WTFMove not needed probably.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:540
&gt; +        track-&gt;updateGenericCue(WTFMove(InbandGenericCue::create(WTFMove(cueData)).get()));

WTFMove not needed probably.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:548
&gt; +        track-&gt;removeGenericCue(WTFMove(InbandGenericCue::create(WTFMove(cueData)).get()));

WTFMove not needed probably.

&gt; Source/WebKit/WebProcess/GPU/media/TextTrackPrivateRemote.cpp:91
&gt; +void TextTrackPrivateRemote::addGenericCue(InbandGenericCue&amp;&amp; cue)

Do we really needed a &amp;&amp;? Since it is refcounted, I would expect to either pass a Ref&lt;&gt;&amp;&amp; or a InbandGenericCue&amp;.
Ditto for the others.

&gt; LayoutTests/gpu-process/TestExpectations:240
&gt; +media/track/track-in-band-metadata-display-order.html [ Pass ]

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623805</commentid>
    <comment_count>9</comment_count>
      <attachid>391851</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-27 17:39:15 -0800</bug_when>
    <thetext>Comment on attachment 391851
Patch

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

&gt;&gt; Source/WebCore/html/track/InbandGenericTextTrack.cpp:49
&gt;&gt; +TextTrackCueGeneric* GenericTextTrackCueMap::find(InbandGenericCue&amp; inbandCue)
&gt; 
&gt; We could pass for all these methods the cue ID instead of InbandGenericCue object.

Good idea, fixed.

&gt;&gt; Source/WebCore/html/track/InbandGenericTextTrack.h:46
&gt;&gt; +    using CueToDataMap = HashMap&lt;RefPtr&lt;TextTrackCue&gt;, uint64_t&gt;;
&gt; 
&gt; Can we use ObjectIdentifier?

Good idea, fixed.

&gt;&gt; Source/WebCore/html/track/InbandGenericTextTrack.h:47
&gt;&gt; +    using CueDataToCueMap = HashMap&lt;uint64_t, RefPtr&lt;TextTrackCueGeneric&gt;&gt;;
&gt; 
&gt; Ditto.
&gt; 
&gt; Also, do we need to keep ownership of the keys?
&gt; Should it be TextTrackCue*?

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/InbandGenericCue.cpp:79
&gt;&gt; +        switch (m_cueData.m_align) {
&gt; 
&gt; Can this switch be useful elsewhere?
&gt; Should it be made as a helper function?

This is the only place it is used so far.

&gt;&gt; Source/WebCore/platform/graphics/InbandGenericCue.cpp:111
&gt;&gt; +    if (!m_cueData.m_fontName.isEmpty())
&gt; 
&gt; empty or null?

.isEmpty() checks for NULL and empty: 

bool isEmpty() const { return !m_impl || m_impl-&gt;isEmpty(); }

&gt;&gt; Source/WebCore/platform/graphics/InbandGenericCue.cpp:144
&gt;&gt; +    return true;
&gt; 
&gt; Would be more compact as
&gt; return m_relativeFontSize == other.m_relativeFontSize
&gt;     &amp;&amp; m_.... == ...

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/InbandGenericCue.h:93
&gt;&gt; +        return WTF::nullopt;
&gt; 
&gt; Should we serialise/deserialize invalid IDs?

I changed it to an ObjectIdentifier, so we get whatever its behavior with invalid values is.

&gt;&gt; Source/WebCore/platform/graphics/InbandGenericCue.h:228
&gt;&gt; +    explicit InbandGenericCue();
&gt; 
&gt; No need for explicit.
&gt; Constructor as private would be better.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/InbandGenericCue.h:284
&gt;&gt; +    static uint64_t s_nextUniqueId;
&gt; 
&gt; Needed? ObjectIdentifier as well

Not needed with ObjectIdentifier

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:87
&gt;&gt; +void InbandTextTrackPrivateAVF::processCueAttributes(CFAttributedStringRef attributedString, InbandGenericCue&amp; cueData)
&gt; 
&gt; It seems processCueAttributes is called in one place where cureData is directly created.
&gt; It seems we could then change it to something like
&gt; Ref&lt;InbandGenericCue&gt; InbandTextTrackPrivateAVF::processCueAttributes(CFAttributedStringRef)
&gt; Or maybe RefPtr&lt; InbandGenericCue &gt; if there are error cases.

Good idea, changed.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:99
&gt;&gt; +    Vector&lt;RefPtr&lt;InbandGenericCue&gt;&gt; m_cues;
&gt; 
&gt; Vector&lt;Ref&lt;&gt;&gt;?

Fixed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:531
&gt;&gt; +    if (const auto&amp; track = m_textTracks.get(identifier))
&gt; 
&gt; s/const//
&gt; Seems strange that a const auto&amp; track could be calling addGenericCue.
&gt;  Ditto below.

Fixed

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:548
&gt;&gt; +        track-&gt;removeGenericCue(WTFMove(InbandGenericCue::create(WTFMove(cueData)).get()));
&gt; 
&gt; WTFMove not needed probably.

All fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623807</commentid>
    <comment_count>10</comment_count>
      <attachid>391946</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-27 17:40:26 -0800</bug_when>
    <thetext>Created attachment 391946
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623850</commentid>
    <comment_count>11</comment_count>
      <attachid>391946</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-27 19:06:05 -0800</bug_when>
    <thetext>Comment on attachment 391946
Patch for landing

Clearing flags on attachment: 391946

Committed r257612: &lt;https://trac.webkit.org/changeset/257612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623851</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-27 19:06:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623935</commentid>
    <comment_count>13</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-02-28 04:55:43 -0800</bug_when>
    <thetext>&gt; Committed r257612: &lt;https://trac.webkit.org/changeset/257612&gt;
This seems to have broken Windows build. Tracked in https://bugs.webkit.org/show_bug.cgi?id=208372

EWS also indicated this failure: https://ews-build.webkit.org/#/builders/10/builds/8439</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391433</attachid>
            <date>2020-02-21 16:38:38 -0800</date>
            <delta_ts>2020-02-21 18:53:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208080-20200221163837.patch</filename>
            <type>text/plain</type>
            <size>61980</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uZTVkNWVkZTkyOTVlMDdkZDA5OWQxODEyZDFmNDI1
MTYzMjQyYjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0wMi0yMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGlu
LWJhbmQgZ2VuZXJpYyBjdWVzIHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBl
bmFibGVkIGZvciBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRU
cmFja0N1ZU1hcDo6ZmluZEluZGV4T2ZQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNU
ZXh0VHJhY2tDdWVNYXA6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRUcmFj
a0N1ZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRTdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZW5kVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRF
bmRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmlkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldElkKToKKyAgICAgICAgKFdl
YkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnNldExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6cG9z
aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmFsaWduIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNDdWU6OmZvbnROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OnNldEZvbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmJhc2VGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRCYXNlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1
ZTo6cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljQ3VlOjpzZXRSZWxhdGl2ZUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OmZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kR2VuZXJpY0N1ZTo6YmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNDdWU6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRHZW5lcmljQ3VlOjpoaWdobGlnaHRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY0N1ZTo6c2V0U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
SW5iYW5kR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjp0
b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZG9lc0V4dGVuZEN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdlbmVyaWNDdWVEYXRhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2Vu
ZXJpY0N1ZURhdGE6OnN0YXJ0VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6c2V0U3RhcnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjplbmRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRFbmRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjppZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OmNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldENvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OmxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldExpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OnBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmFsaWduIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRBbGlnbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9udE5hbWUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEZvbnROYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpiYXNlRm9udFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEJh
c2VGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6
cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0UmVsYXRpdmVGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9yZWdyb3VuZENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmJhY2tncm91bmRDb2xvciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0QmFj
a2dyb3VuZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
OjpoaWdobGlnaHRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0SGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YTo6c2V0U3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyaWNDdWVEYXRhOjp0b0pTT05TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OmRvZXNFeHRlbmRDdWVEYXRhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+Ojp0b1N0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNv
bXBsZXRlZEN1ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorCiAyMDIwLTAy
LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
YzIxMTgzMTg1ZGRjNzA4NDFhYTBlNzgwYWNlM2FkYmQ3YzVjZTU3Li43YWUyNTU4NzhlMzUyYThj
ZDE0ZmQyYjM5ZDRlNzZkYzEwYmI1M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIw
LTAyLTIxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgaW4tYmFuZCBnZW5lcmljIGN1ZXMgd2hlbiBsb2FkaW5nIG1lZGlhIGluIHRoZSBH
UFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4MDgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTY4Nzk0Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJh
Y2tQcm94eTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFj
a1Byb3h5Ojp1cGRhdGVHZW5lcmljQ3VlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRy
YWNrUHJveHk6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGRHZW5l
cmljQ3VlKToKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRl
R2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnJl
bW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuaDoKKwogMjAyMC0wMi0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVsZW1ldHJ5IGZyb20gc2FuZGJveCBydWxl
cyBuZWVkZWQgZm9yIGJhc2ljIFdlYktpdCBsb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBh
ZDRmNzFkN2M0YjQ5NjkxMDMyMTYzM2NhYWZjMzhkNjBmNjJjZjFkLi41MThmOTg0MzU5YzM2Zjli
MmZiOGQ4OTFlMmJiZDAyYzkyYTc1YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMDIsNiAr
MTEwMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA3YjE4YTUwYTQ0ZjZhOGU2M2QxNGMzMjg4NDMzNTY3OTAxZDExMjBiLi5lMDI1NmRl
MGRiNGNiYjRkMjAxYWVlOTNmOWI5ZTE0YzE1ODQ0NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDUsNiArMTQ1LDcgQEAK
IAkJMDc4MzIyODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODMyMjgzMTgw
MTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi87IH07CiAJCTA3ODQ2
MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1QjE1MUEwMEE1OERGMSAvKiBK
U1RyYWNrRXZlbnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJh
Y2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi87IH07CisJCTA3
ODYzM0U5MjNGRjM0N0IwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmljQ3VlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg2MzNERTIzRkVERjIyMDA4N0FF
MjEgLyogSW5iYW5kR2VuZXJpY0N1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3ODdDNDZBMUJGQkRGNkYwMDZEQ0Q3RiAvKiBKU01lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc4N0M0NjgxQkZCREY2RjAwNkRDRDdGIC8qIEpTTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CiAJCTA3OEUwOTE1MTdEMTREMUMwMDQyMEFBMSAv
KiBNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcyMjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3OEUwOTE4MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUI1NTE3Q0VDMzI3MDA4
NDhFNTEgLyogTWVkaWFTdHJlYW1UcmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01NDkzLDYgKzU0OTQsNyBAQAogCQkwNzg0NjM0MTE0NUIx
NTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0
NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3ODYzM0Q3MjNGRTA5NjQwMDg3QUUyMSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzg2MzNERTIzRkVERjIyMDA4N0FFMjEg
LyogSW5iYW5kR2VuZXJpY0N1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRHZW5lcmljQ3VlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODdDNDY3MUJGQkRGNkYwMDZEQ0Q3RiAv
KiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODdDNDY4MUJGQkRGNkYwMDZEQ0Q3RiAv
KiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDc0LDYgKzI1MDc2LDcgQEAKIAkJCQk1NTQ2NzU3NzFG
RDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuY3BwICovLAogCQkJCTU1NDY3NTc4MUZEMUZD
MUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oICovLAogCQkJCTU1NTBDQjQxMUU5NTVFM0MwMDEx
MUFBMCAvKiBJbWFnZVR5cGVzLmggKi8sCisJCQkJMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8q
IEluYmFuZEdlbmVyaWNDdWUuaCAqLywKIAkJCQkwNzk0MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyog
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oICovLAogCQkJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0
NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi8sCiAJCQkJMkQ0NkYwNEQxN0I5
NkZCRDAwNTY0N0YwIC8qIEludFBvaW50LmNwcCAqLywKQEAgLTMwMzE1LDYgKzMwMzE4LDcgQEAK
IAkJCQkyNkY3NTZCNTFCM0I2OEYyMDAwNURENzkgLyogSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNp
dEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5NjFDNTUxOEFEMzM4QzAwRDA3REM1
IC8qIEluYmFuZERhdGFUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODYzM0U5MjNG
RjM0N0IwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmljQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
RTE2QzU5MzE3Q0ZFMTcyMDA4NTJDMDQgLyogSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTIxNjZFODU1
RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRl
eCAyNjI4OTRmMmUxMzI1OWQ0NDgyODgxZTUxZTBjNDU2MGE5ZTVhMDNmLi4yNDcxMmI4ZWIzN2My
NGI5M2MwNmRlZTM2OTBmZDRmMzQ4YzkzMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTQxLDMyICs0MSw2MyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJh
bmRHZW5lcmljVGV4dFRyYWNrKTsKIAotdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjphZGQo
R2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEsIFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKK3ZvaWQg
R2VuZXJpY1RleHRUcmFja0N1ZU1hcDo6YWRkKEluYmFuZEdlbmVyaWNDdWUmIGN1ZURhdGEsIFRl
eHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKIHsKLSAgICBtX2RhdGFUb0N1ZU1hcC5hZGQoJmN1ZURh
dGEsICZjdWUpOwotICAgIG1fY3VlVG9EYXRhTWFwLmFkZCgmY3VlLCAmY3VlRGF0YSk7CisgICAg
YXV0byBpbmRleCA9IG1fY3Vlcy5maW5kTWF0Y2hpbmcoWyZjdWVEYXRhXShjb25zdCBhdXRvJiBj
dWVQYWlyKSB7CisgICAgICAgIHJldHVybiBjdWVEYXRhLnN0YXJ0VGltZSgpID49IGN1ZVBhaXIu
bV9jdWVEYXRhLT5zdGFydFRpbWUoKTsKKyAgICB9KTsKKworICAgIG1fY3Vlcy5pbnNlcnQoaW5k
ZXggIT0gbm90Rm91bmQgPyBpbmRleCA6IDAsIEdlbmVyaWNDdWVQYWlyIHsgJmN1ZURhdGEsICZj
dWUgfSk7Cit9CisKK3NpemVfdCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5kSW5kZXhPZlBh
aXIoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKK3sKKyAgICByZXR1cm4gbV9jdWVzLmZpbmRN
YXRjaGluZyhbJmN1ZURhdGFdKGNvbnN0IGF1dG8mIGN1ZVBhaXIpIHsKKyAgICAgICAgaWYgKGN1
ZURhdGEuc3RhcnRUaW1lKCkgIT0gY3VlUGFpci5tX2N1ZURhdGEtPnN0YXJ0VGltZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBjdWVEYXRhLmRvZXNFeHRl
bmRDdWVEYXRhKCpjdWVQYWlyLm1fY3VlRGF0YSk7CisgICAgfSk7CiB9CiAKLVRleHRUcmFja0N1
ZUdlbmVyaWMqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoR2VuZXJpY0N1ZURhdGEmIGN1
ZURhdGEpCitUZXh0VHJhY2tDdWVHZW5lcmljKiBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5k
KEluYmFuZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7Ci0gICAgcmV0dXJuIG1fZGF0YVRvQ3VlTWFw
LmdldCgmY3VlRGF0YSk7CisgICAgYXV0byBpbmRleCA9IGZpbmRJbmRleE9mUGFpcihjdWVEYXRh
KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIG1fY3Vlc1tpbmRleF0ubV9jdWUuZ2V0KCk7CiB9CiAKLUdlbmVyaWNDdWVE
YXRhKiBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5kKFRleHRUcmFja0N1ZSYgY3VlKQorc2l6
ZV90IEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmRJbmRleE9mUGFpcihUZXh0VHJhY2tDdWUm
IGN1ZSkKIHsKLSAgICByZXR1cm4gbV9jdWVUb0RhdGFNYXAuZ2V0KCZjdWUpOworICAgIHJldHVy
biBtX2N1ZXMuZmluZE1hdGNoaW5nKFsmY3VlXShjb25zdCBhdXRvJiBjdWVQYWlyKSB7CisgICAg
ICAgIGlmICghY3VlLmhhc0VxdWl2YWxlbnRTdGFydFRpbWUoKmN1ZVBhaXIubV9jdWUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBjdWUuaXNFcXVhbCgqY3Vl
UGFpci5tX2N1ZSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbik7CisgICAgfSk7Cit9CisK
K0luYmFuZEdlbmVyaWNDdWUqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoVGV4dFRyYWNr
Q3VlJiBjdWUpCit7CisgICAgYXV0byBpbmRleCA9IGZpbmRJbmRleE9mUGFpcihjdWUpOworICAg
IGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gbV9jdWVzW2luZGV4XS5tX2N1ZURhdGEuZ2V0KCk7CiB9CiAKLXZvaWQgR2VuZXJpY1Rl
eHRUcmFja0N1ZU1hcDo6cmVtb3ZlKEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjpyZW1vdmUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsK
LSAgICBpZiAoYXV0byBjdWUgPSBtX2RhdGFUb0N1ZU1hcC50YWtlKCZjdWVEYXRhKSkKLSAgICAg
ICAgbV9jdWVUb0RhdGFNYXAucmVtb3ZlKGN1ZSk7CisgICAgaWYgKGF1dG8gaW5kZXggPSBmaW5k
SW5kZXhPZlBhaXIoY3VlRGF0YSkpCisgICAgICAgIG1fY3Vlcy5yZW1vdmUoaW5kZXgpOwogfQog
CiB2b2lkIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OnJlbW92ZShUZXh0VHJhY2tDdWUmIGN1ZSkK
IHsKLSAgICBpZiAoYXV0byBkYXRhID0gbV9jdWVUb0RhdGFNYXAudGFrZSgmY3VlKSkKLSAgICAg
ICAgbV9kYXRhVG9DdWVNYXAucmVtb3ZlKGRhdGEpOworICAgIGlmIChhdXRvIGluZGV4ID0gZmlu
ZEluZGV4T2ZQYWlyKGN1ZSkpCisgICAgICAgIG1fY3Vlcy5yZW1vdmUoaW5kZXgpOwogfQogCiBp
bmxpbmUgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6SW5iYW5kR2VuZXJpY1RleHRUcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQpAQCAtODEsNyArMTEyLDcgQEAgUmVm
PEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXgKIAogSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6fkluYmFuZEdl
bmVyaWNUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFj
azo6dXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYgY3VlLCBHZW5lcmlj
Q3VlRGF0YSYgY3VlRGF0YSkKK3ZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlQ3Vl
RnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYgY3VlLCBJbmJhbmRHZW5lcmljQ3VlJiBj
dWVEYXRhKQogewogICAgIGN1ZS53aWxsQ2hhbmdlKCk7CiAKQEAgLTEwOSwxOCArMTQwLDE4IEBA
IHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRy
YWNrQ3VlR2VuZXJpYyYgY3VlLCBHZW5lCiAgICAgaWYgKGN1ZURhdGEuaGlnaGxpZ2h0Q29sb3Io
KS5pc1ZhbGlkKCkpCiAgICAgICAgIGN1ZS5zZXRIaWdobGlnaHRDb2xvcihjdWVEYXRhLmhpZ2hs
aWdodENvbG9yKCkucmdiKCkpOwogCi0gICAgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmlj
Q3VlRGF0YTo6U3RhcnQpCisgICAgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0
YTo6QWxpZ25tZW50OjpTdGFydCkKICAgICAgICAgY3VlLnNldEFsaWduKCJzdGFydCJfcyk7Ci0g
ICAgZWxzZSBpZiAoY3VlRGF0YS5hbGlnbigpID09IEdlbmVyaWNDdWVEYXRhOjpNaWRkbGUpCisg
ICAgZWxzZSBpZiAoY3VlRGF0YS5hbGlnbigpID09IEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6
Ok1pZGRsZSkKICAgICAgICAgY3VlLnNldEFsaWduKCJtaWRkbGUiX3MpOwotICAgIGVsc2UgaWYg
KGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6RW5kKQorICAgIGVsc2UgaWYgKGN1
ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpFbmQpCiAgICAgICAg
IGN1ZS5zZXRBbGlnbigiZW5kIl9zKTsKICAgICBjdWUuc2V0U25hcFRvTGluZXMoZmFsc2UpOwog
CiAgICAgY3VlLmRpZENoYW5nZSgpOwogfQogCi12b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6
OmFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEpCit2b2lkIEluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsK
ICAgICBpZiAobV9jdWVNYXAuZmluZChjdWVEYXRhKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0
LDEzICsxNjUsMTMgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRHZW5lcmljQ3Vl
KEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
ImFkZGVkIGN1ZTogIiwgY3VlLmdldCgpKTsKIAotICAgIGlmIChjdWVEYXRhLnN0YXR1cygpICE9
IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKKyAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSAhPSBH
ZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZSkKICAgICAgICAgbV9jdWVNYXAuYWRkKGN1
ZURhdGEsIGN1ZSk7CiAKICAgICBhZGRDdWUoV1RGTW92ZShjdWUpKTsKIH0KIAotdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBjdWVE
YXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7CiAgICAgYXV0byBjdWUgPSBtYWtlUmVmUHRyKG1fY3Vl
TWFwLmZpbmQoY3VlRGF0YSkpOwogICAgIGlmICghY3VlKQpAQCAtMTQ4LDExICsxNzksMTEgQEAg
dm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVE
YXRhJiBjdWVEYXRhKQogCiAgICAgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoKmN1ZSwgY3VlRGF0YSk7
CiAKLSAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSA9PSBHZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUp
CisgICAgaWYgKGN1ZURhdGEuc3RhdHVzKCkgPT0gR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29t
cGxldGUpCiAgICAgICAgIG1fY3VlTWFwLnJlbW92ZShjdWVEYXRhKTsKIH0KIAotdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBjdWVE
YXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7CiAgICAgYXV0byBjdWUgPSBtYWtlUmVmUHRyKG1fY3Vl
TWFwLmZpbmQoY3VlRGF0YSkpOwogICAgIGlmIChjdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmgKaW5kZXggMjIxMmY5NTc3ZjI2
ZjU4MDcwOGE4MmNhMjA1MWZjYjg4NWVlYTg4YS4uMWNmY2VkMTI5NDhiYTlmM2FhNjBlZmYwOThm
NGIwMTAwM2UxZDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmgKQEAgLTM1LDIwICszNSwyNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXAgewogcHVibGljOgotICAgIHZvaWQg
YWRkKEdlbmVyaWNDdWVEYXRhJiwgVGV4dFRyYWNrQ3VlR2VuZXJpYyYpOworICAgIHZvaWQgYWRk
KEluYmFuZEdlbmVyaWNDdWUmLCBUZXh0VHJhY2tDdWVHZW5lcmljJik7CisKKyAgICBzaXplX3Qg
ZmluZEluZGV4T2ZQYWlyKFRleHRUcmFja0N1ZSYpOworICAgIHNpemVfdCBmaW5kSW5kZXhPZlBh
aXIoSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdm9pZCByZW1vdmUoVGV4dFRyYWNrQ3VlJik7
Ci0gICAgdm9pZCByZW1vdmUoR2VuZXJpY0N1ZURhdGEmKTsKKyAgICB2b2lkIHJlbW92ZShJbmJh
bmRHZW5lcmljQ3VlJik7CiAKLSAgICBHZW5lcmljQ3VlRGF0YSogZmluZChUZXh0VHJhY2tDdWUm
KTsKLSAgICBUZXh0VHJhY2tDdWVHZW5lcmljKiBmaW5kKEdlbmVyaWNDdWVEYXRhJik7CisgICAg
SW5iYW5kR2VuZXJpY0N1ZSogZmluZChUZXh0VHJhY2tDdWUmKTsKKyAgICBUZXh0VHJhY2tDdWVH
ZW5lcmljKiBmaW5kKEluYmFuZEdlbmVyaWNDdWUmKTsKIAogcHJpdmF0ZToKLSAgICB1c2luZyBD
dWVUb0RhdGFNYXAgPSBIYXNoTWFwPFJlZlB0cjxUZXh0VHJhY2tDdWU+LCBSZWZQdHI8R2VuZXJp
Y0N1ZURhdGE+PjsKLSAgICB1c2luZyBDdWVEYXRhVG9DdWVNYXAgPSBIYXNoTWFwPFJlZlB0cjxH
ZW5lcmljQ3VlRGF0YT4sIFJlZlB0cjxUZXh0VHJhY2tDdWVHZW5lcmljPj47CisgICAgc3RydWN0
IEdlbmVyaWNDdWVQYWlyIHsKKyAgICAgICAgR2VuZXJpY0N1ZVBhaXIoKSA9IGRlZmF1bHQ7CisK
KyAgICAgICAgUmVmUHRyPEluYmFuZEdlbmVyaWNDdWU+IG1fY3VlRGF0YTsKKyAgICAgICAgUmVm
UHRyPFRleHRUcmFja0N1ZUdlbmVyaWM+IG1fY3VlOworICAgIH07CiAKLSAgICBDdWVUb0RhdGFN
YXAgbV9jdWVUb0RhdGFNYXA7Ci0gICAgQ3VlRGF0YVRvQ3VlTWFwIG1fZGF0YVRvQ3VlTWFwOwor
ICAgIFZlY3RvcjxHZW5lcmljQ3VlUGFpcj4gbV9jdWVzOwogfTsKIAogY2xhc3MgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjayBmaW5hbCA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2ssIHByaXZhdGUgV2Vi
VlRUUGFyc2VyQ2xpZW50IHsKQEAgLTYwLDEyICs2NiwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEluYmFuZEdlbmVyaWNUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRleHRU
cmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgYWRkR2Vu
ZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1
ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShHZW5l
cmljQ3VlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmlj
Q3VlJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUm
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZp
bmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmKSBmaW5h
bDsKIAotICAgIHZvaWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYs
IEdlbmVyaWNDdWVEYXRhJik7CisgICAgdm9pZCB1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJh
Y2tDdWVHZW5lcmljJiwgSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBw
YXJzZXIoKTsKICAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCA4
ZmVmOWYzNGFlYWJlMDM1NTE0OTNiNjQ1ZWMxYTZlNWU0ZjM4YTkxLi4zMGZjMjUyN2YwNTJiNDdm
ODA0N2QxNjI3OTJmZTdkN2FiZjI5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kVGV4dFRyYWNrLmgKQEAgLTc3LDkgKzc3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZSYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAj
ZW5kaWYKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIG92ZXJyaWRl
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2Vu
ZXJpY0N1ZURhdGEmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdm9p
ZCByZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikg
b3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgdXBkYXRlR2VuZXJp
Y0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFk
ZXIoU3RyaW5nJiYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lk
IHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmgKaW5kZXggZmQwY2IzZWIzMTE4Y2MzZjMzYzliNjg4NmFhMGY2MmEw
NjRmMWQ0ZS4uNTA3NjY3ZTI0MWYxY2FmMTA4OTgzMDg3MWI0NGI4Nzc2YzM2MzZhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTMy
LDggKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHZW5lcmljQ3VlRGF0
YTsKLQogLy8gQSAiZ2VuZXJpYyIgY3VlIGlzIGEgbm9uLVdlYlZUVCBjdWUsIHNvIGl0IGlzIG5v
dCBwb3NpdGlvbmVkL3NpemVkIHdpdGggdGhlIFdlYlZUVCBsb2dpYy4KIGNsYXNzIFRleHRUcmFj
a0N1ZUdlbmVyaWMgZmluYWwgOiBwdWJsaWMgVlRUQ3VlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0VYUE9SVChUZXh0VHJhY2tDdWVHZW5lcmljLCBXRUJDT1JFX0VYUE9SVCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3Vl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3VlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmI3MzAzZjU4ZjBmMjhlNTlhNjZiNDlkM2ZmZWEzNGNhYWI5MzMxNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdl
bmVyaWNDdWUuaApAQCAtMCwwICsxLDM5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdlbmVyaWNDdWVEYXRhIHsKKyAgICBHZW5lcmlj
Q3VlRGF0YSgpID0gZGVmYXVsdDsKKworICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKKyAgICBN
ZWRpYVRpbWUgbV9lbmRUaW1lOworICAgIFN0cmluZyBtX2lkOworICAgIFN0cmluZyBtX2NvbnRl
bnQ7CisgICAgU3RyaW5nIG1fZm9udE5hbWU7CisgICAgZG91YmxlIG1fbGluZSB7IC0xIH07Cisg
ICAgZG91YmxlIG1fcG9zaXRpb24geyAtMSB9OworICAgIGRvdWJsZSBtX3NpemUgeyAtMSB9Owor
ICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZSB7IDAgfTsKKyAgICBkb3VibGUgbV9yZWxhdGl2ZUZv
bnRTaXplIHsgMCB9OworICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOworICAgIENvbG9yIG1f
YmFja2dyb3VuZENvbG9yOworICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7CisKKyAgICBlbnVt
IGNsYXNzIEFsaWdubWVudCA6IHVpbnQ4X3QgeyBOb25lLCBTdGFydCwgTWlkZGxlLCBFbmQgfTsK
KyAgICBBbGlnbm1lbnQgbV9hbGlnbiB7IEFsaWdubWVudDo6Tm9uZSB9OworCisgICAgZW51bSBj
bGFzcyBTdGF0dXMgOiB1aW50OF90IHsgVW5pbml0aWFsaXplZCwgUGFydGlhbCwgQ29tcGxldGUg
fTsKKyAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6OlVuaW5pdGlhbGl6ZWQgfTsKKworICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxHZW5lcmljQ3Vl
RGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxN
ZWRpYVRpbWU+IHN0YXJ0VGltZTsKKyAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CisgICAg
ICAgIGlmICghc3RhcnRUaW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZFRpbWU7CisgICAgICAgIGRlY29kZXIgPj4g
ZW5kVGltZTsKKyAgICAgICAgaWYgKCFlbmRUaW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNv
bnRlbnQ7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudDsKKyAgICAgICAgaWYgKCFjb250ZW50
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IGZvbnROYW1lOworICAgICAgICBkZWNvZGVyID4+IGZvbnROYW1lOworICAgICAgICBp
ZiAoIWZvbnROYW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IGxpbmU7CisgICAgICAgIGRlY29kZXIgPj4gbGluZTsKKyAgICAg
ICAgaWYgKCFsaW5lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IHBvc2l0aW9uOworICAgICAgICBkZWNvZGVyID4+IHBvc2l0aW9u
OworICAgICAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IHNpemU7CisgICAgICAgIGRlY29kZXIgPj4g
c2l6ZTsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IGJhc2VGb250U2l6ZTsKKyAgICAgICAgZGVj
b2RlciA+PiBiYXNlRm9udFNpemU7CisgICAgICAgIGlmICghYmFzZUZvbnRTaXplKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IHJl
bGF0aXZlRm9udFNpemU7CisgICAgICAgIGRlY29kZXIgPj4gcmVsYXRpdmVGb250U2l6ZTsKKyAg
ICAgICAgaWYgKCFyZWxhdGl2ZUZvbnRTaXplKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBDb2xvciBtX2ZvcmVncm91bmRDb2xvcjsKKyAgICAgICAgQ29sb3Ig
bV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7CisKKyAg
ICAgICAgT3B0aW9uYWw8Q29sb3I+IGZvcmVncm91bmRDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+
PiBmb3JlZ3JvdW5kQ29sb3I7CisgICAgICAgIGlmICghZm9yZWdyb3VuZENvbG9yKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDb2xvcj4gYmFj
a2dyb3VuZENvbG9yOworICAgICAgICBkZWNvZGVyID4+IGJhY2tncm91bmRDb2xvcjsKKyAgICAg
ICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPENvbG9yPiBoaWdobGlnaHRDb2xvcjsKKyAgICAgICAgZGVj
b2RlciA+PiBoaWdobGlnaHRDb2xvcjsKKyAgICAgICAgaWYgKCFoaWdobGlnaHRDb2xvcikKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8QWxpZ25t
ZW50PiBhbGlnbm1lbnQ7CisgICAgICAgIGRlY29kZXIgPj4gYWxpZ25tZW50OworICAgICAgICBp
ZiAoIWFsaWdubWVudCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8U3RhdHVzPiBzdGF0dXM7CisgICAgICAgIGRlY29kZXIgPj4gc3RhdHVzOwor
ICAgICAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpzdGFydFRpbWUpLAorICAg
ICAgICAgICAgV1RGTW92ZSgqZW5kVGltZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmlkZW50
aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqY29udGVudCksCisgICAgICAgICAgICBXVEZN
b3ZlKCpmb250TmFtZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmxpbmUpLAorICAgICAgICAg
ICAgV1RGTW92ZSgqcG9zaXRpb24pLAorICAgICAgICAgICAgV1RGTW92ZSgqc2l6ZSksCisgICAg
ICAgICAgICBXVEZNb3ZlKCpiYXNlRm9udFNpemUpLAorICAgICAgICAgICAgV1RGTW92ZSgqcmVs
YXRpdmVGb250U2l6ZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmZvcmVncm91bmRDb2xvciks
CisgICAgICAgICAgICBXVEZNb3ZlKCpiYWNrZ3JvdW5kQ29sb3IpLAorICAgICAgICAgICAgV1RG
TW92ZSgqaGlnaGxpZ2h0Q29sb3IpLAorCisgICAgICAgICAgICBXVEZNb3ZlKCphbGlnbm1lbnQp
LAorICAgICAgICAgICAgV1RGTW92ZSgqc3RhdHVzKSwKKyAgICAgICAgfX07CisgICAgfQorCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3N0YXJ0VGltZTsKKyAgICAg
ICAgZW5jb2RlciA8PCBtX2VuZFRpbWU7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICAg
ICAgZW5jb2RlciA8PCBtX2NvbnRlbnQ7CisgICAgICAgIGVuY29kZXIgPDwgbV9mb250TmFtZTsK
KyAgICAgICAgZW5jb2RlciA8PCBtX2xpbmU7CisgICAgICAgIGVuY29kZXIgPDwgbV9wb3NpdGlv
bjsKKyAgICAgICAgZW5jb2RlciA8PCBtX3NpemU7CisgICAgICAgIGVuY29kZXIgPDwgbV9iYXNl
Rm9udFNpemU7CisgICAgICAgIGVuY29kZXIgPDwgbV9yZWxhdGl2ZUZvbnRTaXplOworICAgICAg
ICBlbmNvZGVyIDw8IG1fZm9yZWdyb3VuZENvbG9yOworICAgICAgICBlbmNvZGVyIDw8IG1fYmFj
a2dyb3VuZENvbG9yOworICAgICAgICBlbmNvZGVyIDw8IG1faGlnaGxpZ2h0Q29sb3I7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRW51bShtX2FsaWduKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKG1fc3RhdHVzKTsKKyAgICB9Cit9OworCisKK2NsYXNzIEluYmFuZEdlbmVyaWNDdWUgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbmJhbmRHZW5lcmljQ3VlPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IElu
YmFuZEdlbmVyaWNDdWUpOyB9CisgICAgc3RhdGljIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBjcmVh
dGUoR2VuZXJpY0N1ZURhdGEmJiBjdWVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFu
ZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSkpOyB9CisKKyAgICBNZWRpYVRpbWUgc3RhcnRU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fc3RhcnRUaW1lOyB9CisgICAgdm9pZCBz
ZXRTdGFydFRpbWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydFRpbWUpIHsgbV9jdWVEYXRhLm1fc3Rh
cnRUaW1lID0gc3RhcnRUaW1lOyB9CisKKyAgICBNZWRpYVRpbWUgZW5kVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VlRGF0YS5tX2VuZFRpbWU7IH0KKyAgICB2b2lkIHNldEVuZFRpbWUoY29uc3Qg
TWVkaWFUaW1lJiBlbmRUaW1lKSB7IG1fY3VlRGF0YS5tX2VuZFRpbWUgPSBlbmRUaW1lOyB9CisK
KyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1faWQ7IH0K
KyAgICB2b2lkIHNldElkKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9jdWVEYXRhLm1faWQgPSBpZDsg
fQorCisgICAgY29uc3QgU3RyaW5nJiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRh
Lm1fY29udGVudDsgfQorICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQp
IHsgbV9jdWVEYXRhLm1fY29udGVudCA9IGNvbnRlbnQ7IH0KKworICAgIGRvdWJsZSBsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fbGluZTsgfQorICAgIHZvaWQgc2V0TGluZShkb3Vi
bGUgbGluZSkgeyBtX2N1ZURhdGEubV9saW5lID0gbGluZTsgfQorCisgICAgZG91YmxlIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNl
dFBvc2l0aW9uKGRvdWJsZSBwb3NpdGlvbikgeyBtX2N1ZURhdGEubV9wb3NpdGlvbiA9IHBvc2l0
aW9uOyB9CisKKyAgICBkb3VibGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX3Np
emU7IH0KKyAgICB2b2lkIHNldFNpemUoZG91YmxlIHNpemUpIHsgbV9jdWVEYXRhLm1fc2l6ZSA9
IHNpemU7IH0KKworICAgIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQgYWxpZ24oKSBjb25zdCB7
IHJldHVybiBtX2N1ZURhdGEubV9hbGlnbjsgfQorICAgIHZvaWQgc2V0QWxpZ24oR2VuZXJpY0N1
ZURhdGE6OkFsaWdubWVudCBhbGlnbikgeyBtX2N1ZURhdGEubV9hbGlnbiA9IGFsaWduOyB9CisK
KyAgICBjb25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1f
Zm9udE5hbWU7IH0KKyAgICB2b2lkIHNldEZvbnROYW1lKGNvbnN0IFN0cmluZyYgZm9udE5hbWUp
IHsgbV9jdWVEYXRhLm1fZm9udE5hbWUgPSBmb250TmFtZTsgfQorCisgICAgZG91YmxlIGJhc2VG
b250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX2Jhc2VGb250U2l6ZTsgfQorICAg
IHZvaWQgc2V0QmFzZUZvbnRTaXplKGRvdWJsZSBiYXNlRm9udFNpemUpIHsgbV9jdWVEYXRhLm1f
YmFzZUZvbnRTaXplID0gYmFzZUZvbnRTaXplOyB9CisKKyAgICBkb3VibGUgcmVsYXRpdmVGb250
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemU7IH0KKyAg
ICB2b2lkIHNldFJlbGF0aXZlRm9udFNpemUoZG91YmxlIHJlbGF0aXZlRm9udFNpemUpIHsgbV9j
dWVEYXRhLm1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0KKworICAgIGNv
bnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9m
b3JlZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpIHsgbV9jdWVEYXRhLm1fZm9yZWdyb3VuZENvbG9yID0gY29sb3I7IH0KKworICAg
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEu
bV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpIHsgbV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KKwor
ICAgIGNvbnN0IENvbG9yJiBoaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0
YS5tX2hpZ2hsaWdodENvbG9yOyB9CisgICAgdm9pZCBzZXRIaWdobGlnaHRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpIHsgbV9jdWVEYXRhLm1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsgfQorCisg
ICAgR2VuZXJpY0N1ZURhdGE6OlN0YXR1cyBzdGF0dXMoKSB7IHJldHVybiBtX2N1ZURhdGEubV9z
dGF0dXM7IH0KKyAgICB2b2lkIHNldFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6U3RhdHVzIHN0YXR1
cykgeyBtX2N1ZURhdGEubV9zdGF0dXMgPSBzdGF0dXM7IH0KKworICAgIGJvb2wgZG9lc0V4dGVu
ZEN1ZURhdGEoY29uc3QgSW5iYW5kR2VuZXJpY0N1ZSYpIGNvbnN0OworCisgICAgU3RyaW5nIHRv
SlNPTlN0cmluZygpIGNvbnN0OworCisgICAgY29uc3QgR2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGE7IH0KKworcHJpdmF0ZToKKyAgICBJbmJhbmRHZW5l
cmljQ3VlKCkgPSBkZWZhdWx0OworICAgIEluYmFuZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEm
JiBjdWVEYXRhKQorICAgICAgICA6IG1fY3VlRGF0YShXVEZNb3ZlKGN1ZURhdGEpKQorICAgIHsK
KyAgICB9CisKKyAgICBHZW5lcmljQ3VlRGF0YSBtX2N1ZURhdGE7Cit9OworCitpbmxpbmUgU3Ry
aW5nIEluYmFuZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZygpIGNvbnN0Cit7CisgICAgYXV0byBv
YmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAg
IG9iamVjdC0+c2V0U3RyaW5nKCJ0ZXh0Il9zLCBtX2N1ZURhdGEubV9jb250ZW50KTsKKyNlbmRp
ZgorICAgIG9iamVjdC0+c2V0RG91YmxlKCJzdGFydCJfcywgbV9jdWVEYXRhLm1fc3RhcnRUaW1l
LnRvRG91YmxlKCkpOworICAgIG9iamVjdC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fY3VlRGF0YS5t
X2VuZFRpbWUudG9Eb3VibGUoKSk7CisKKyAgICBjb25zdCBjaGFyKiBzdGF0dXM7CisgICAgc3dp
dGNoIChtX2N1ZURhdGEubV9zdGF0dXMpIHsKKyAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGF0
dXM6OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgIHN0YXR1cyA9ICJVbmluaXRpYWxpemVkIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpQYXJ0aWFsOgor
ICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2Vu
ZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29tcGxldGU6CisgICAgICAgIHN0YXR1cyA9ICJDb21wbGV0
ZSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvYmplY3QtPnNldFN0cmluZygic3RhdHVz
Iiwgc3RhdHVzKTsKKworICAgIGlmICghbV9jdWVEYXRhLm1faWQuaXNFbXB0eSgpKQorICAgICAg
ICBvYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2N1ZURhdGEubV9pZCk7CisKKyAgICBpZiAobV9j
dWVEYXRhLm1fbGluZSA+IDApCisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJsaW5lIl9zLCBt
X2N1ZURhdGEubV9saW5lKTsKKworICAgIGlmIChtX2N1ZURhdGEubV9zaXplID4gMCkKKyAgICAg
ICAgb2JqZWN0LT5zZXREb3VibGUoInNpemUiX3MsIG1fY3VlRGF0YS5tX3NpemUpOworCisgICAg
aWYgKG1fY3VlRGF0YS5tX3Bvc2l0aW9uID4gMCkKKyAgICAgICAgb2JqZWN0LT5zZXREb3VibGUo
InBvc2l0aW9uIl9zLCBtX2N1ZURhdGEubV9wb3NpdGlvbik7CisKKyAgICBpZiAobV9jdWVEYXRh
Lm1fYWxpZ24gIT0gR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6Tm9uZSkgeworICAgICAgICBj
b25zdCBjaGFyKiBhbGlnbjsKKyAgICAgICAgc3dpdGNoIChtX2N1ZURhdGEubV9hbGlnbikgewor
ICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0OgorICAgICAgICAg
ICAgYWxpZ24gPSAiU3RhcnQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2Vu
ZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlOgorICAgICAgICAgICAgYWxpZ24gPSAiTWlk
ZGxlIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpB
bGlnbm1lbnQ6OkVuZDoKKyAgICAgICAgICAgIGFsaWduID0gIkVuZCI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpOb25lOgorICAg
ICAgICAgICAgYWxpZ24gPSAiTm9uZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBvYmplY3QtPnNldFN0cmluZygiYWxpZ24iX3MsIGFsaWduKTsKKyAgICB9CisKKyAg
ICBpZiAobV9jdWVEYXRhLm1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoImZvcmVncm91bmRDb2xvciJfcywgbV9jdWVEYXRhLm1fZm9yZWdyb3Vu
ZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFja2dyb3VuZENv
bG9yLmlzVmFsaWQoKSkKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImJhY2tncm91bmRDb2xv
ciJfcywgbV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisKKyAgICBp
ZiAobV9jdWVEYXRhLm1faGlnaGxpZ2h0Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICBvYmplY3Qt
PnNldFN0cmluZygiaGlnaGxpZ2h0Q29sb3IiX3MsIG1fY3VlRGF0YS5tX2hpZ2hsaWdodENvbG9y
LnNlcmlhbGl6ZWQoKSk7CisKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFzZUZvbnRTaXplKQorICAg
ICAgICBvYmplY3QtPnNldERvdWJsZSgiYmFzZUZvbnRTaXplIl9zLCBtX2N1ZURhdGEubV9iYXNl
Rm9udFNpemUpOworCisgICAgaWYgKG1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemUpCisgICAg
ICAgIG9iamVjdC0+c2V0RG91YmxlKCJyZWxhdGl2ZUZvbnRTaXplIl9zLCBtX2N1ZURhdGEubV9y
ZWxhdGl2ZUZvbnRTaXplKTsKKworICAgIGlmICghbV9jdWVEYXRhLm1fZm9udE5hbWUuaXNFbXB0
eSgpKQorICAgICAgICBvYmplY3QtPnNldFN0cmluZygiZm9udCJfcywgbV9jdWVEYXRhLm1fZm9u
dE5hbWUpOworCisgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3RyaW5nKCk7Cit9CisKK2lubGlu
ZSBib29sIEluYmFuZEdlbmVyaWNDdWU6OmRvZXNFeHRlbmRDdWVEYXRhKGNvbnN0IEluYmFuZEdl
bmVyaWNDdWUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX2N1ZURhdGEubV9yZWxhdGl2ZUZv
bnRTaXplICE9IG90aGVyLm1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFzZUZvbnRTaXplICE9IG90aGVyLm1f
Y3VlRGF0YS5tX2Jhc2VGb250U2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICht
X2N1ZURhdGEubV9wb3NpdGlvbiAhPSBvdGhlci5tX2N1ZURhdGEubV9wb3NpdGlvbikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9saW5lICE9IG90aGVyLm1fY3Vl
RGF0YS5tX2xpbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jdWVEYXRhLm1f
c2l6ZSAhPSBvdGhlci5tX2N1ZURhdGEubV9zaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKG1fY3VlRGF0YS5tX2FsaWduICE9IG90aGVyLm1fY3VlRGF0YS5tX2FsaWduKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY3VlRGF0YS5tX2ZvcmVncm91bmRDb2xvciAh
PSBvdGhlci5tX2N1ZURhdGEubV9mb3JlZ3JvdW5kQ29sb3IpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yICE9IG90aGVyLm1fY3VlRGF0
YS5tX2JhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1
ZURhdGEubV9oaWdobGlnaHRDb2xvciAhPSBvdGhlci5tX2N1ZURhdGEubV9oaWdobGlnaHRDb2xv
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9mb250TmFtZSAh
PSBvdGhlci5tX2N1ZURhdGEubV9mb250TmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2N1ZURhdGEubV9pZCAhPSBvdGhlci5tX2N1ZURhdGEubV9pZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9jb250ZW50ICE9IG90aGVyLm1fY3VlRGF0
YS5tX2NvbnRlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBMb2dBcmd1bWVudDsKK3RlbXBsYXRlIDw+
CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZT4geworICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYgY3Vl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1ZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpB
bGlnbm1lbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50LAorICAgICAgICBXZWJDb3JlOjpHZW5lcmlj
Q3VlRGF0YTo6QWxpZ25tZW50OjpOb25lLAorICAgICAgICBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0
YTo6QWxpZ25tZW50OjpTdGFydCwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OkFs
aWdubWVudDo6TWlkZGxlLAorICAgICAgICBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxpZ25t
ZW50OjpFbmQKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1cywKKyAgICAgICAg
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6VW5pbml0aWFsaXplZCwKKyAgICAgICAg
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbCwKKyAgICAgICAgV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29tcGxldGUKKyAgICA+OworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCBmNDMwNjQ1MThkZjQxOTYx
YjNmNmM2M2E3NmM5OTEzZDE3NjdhZWJjLi5mZDMzZWI5YzBiMTExNmJlOGIzNjg3ZDA5ZjIyZjA0
NmNiZDNhY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNs
dWRlICJJbmJhbmRHZW5lcmljQ3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgpA
QCAtNDEsMTg3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRleHRU
cmFja1ByaXZhdGU7CiBjbGFzcyBJU09XZWJWVFRDdWU7CiAKLWNsYXNzIEdlbmVyaWNDdWVEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8R2VuZXJpY0N1ZURhdGE+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEdlbmVyaWNDdWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEdl
bmVyaWNDdWVEYXRhKTsgfQotCi0gICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRUaW1lOyB9Ci0gICAgdm9pZCBzZXRTdGFydFRpbWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydFRpbWUpIHsgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KLQotICAgIE1lZGlhVGlt
ZSBlbmRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRUaW1lOyB9Ci0gICAgdm9pZCBzZXRFbmRU
aW1lKGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSkgeyBtX2VuZFRpbWUgPSBlbmRUaW1lOyB9Ci0K
LSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQg
c2V0SWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KLQotICAgIGNvbnN0IFN0cmlu
ZyYgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudDsgfQotICAgIHZvaWQgc2V0Q29u
dGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpIHsgbV9jb250ZW50ID0gY29udGVudDsgfQotCi0g
ICAgZG91YmxlIGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KLSAgICB2b2lkIHNldExp
bmUoZG91YmxlIGxpbmUpIHsgbV9saW5lID0gbGluZTsgfQotCi0gICAgZG91YmxlIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0UG9zaXRpb24oZG91
YmxlIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQotCi0gICAgZG91YmxlIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB2b2lkIHNldFNpemUoZG91YmxlIHNp
emUpIHsgbV9zaXplID0gc2l6ZTsgfQotCi0gICAgZW51bSBBbGlnbm1lbnQgeyBOb25lLCBTdGFy
dCwgTWlkZGxlLCBFbmQgfTsKLSAgICBBbGlnbm1lbnQgYWxpZ24oKSBjb25zdCB7IHJldHVybiBt
X2FsaWduOyB9Ci0gICAgdm9pZCBzZXRBbGlnbihBbGlnbm1lbnQgYWxpZ24pIHsgbV9hbGlnbiA9
IGFsaWduOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9mb250TmFtZTsgfQotICAgIHZvaWQgc2V0Rm9udE5hbWUoY29uc3QgU3RyaW5nJiBmb250TmFt
ZSkgeyBtX2ZvbnROYW1lID0gZm9udE5hbWU7IH0KLQotICAgIGRvdWJsZSBiYXNlRm9udFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2Jhc2VGb250U2l6ZTsgfQotICAgIHZvaWQgc2V0QmFzZUZvbnRT
aXplKGRvdWJsZSBiYXNlRm9udFNpemUpIHsgbV9iYXNlRm9udFNpemUgPSBiYXNlRm9udFNpemU7
IH0KLQotICAgIGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
dGl2ZUZvbnRTaXplOyB9Ci0gICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXplKGRvdWJsZSByZWxh
dGl2ZUZvbnRTaXplKSB7IG1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0K
LQotICAgIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2Zv
cmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvciA9IGNvbG9yOyB9Ci0KLSAgICBjb25zdCBDb2xv
ciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0K
LSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNr
Z3JvdW5kQ29sb3IgPSBjb2xvcjsgfQotCi0gICAgY29uc3QgQ29sb3ImIGhpZ2hsaWdodENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0SGlnaGxp
Z2h0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsg
fQotCi0gICAgZW51bSBTdGF0dXMgeyBVbmluaXRpYWxpemVkLCBQYXJ0aWFsLCBDb21wbGV0ZSB9
OwotICAgIFN0YXR1cyBzdGF0dXMoKSB7IHJldHVybiBtX3N0YXR1czsgfQotICAgIHZvaWQgc2V0
U3RhdHVzKFN0YXR1cyBzdGF0dXMpIHsgbV9zdGF0dXMgPSBzdGF0dXM7IH0KLQotICAgIGJvb2wg
ZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1ZURhdGEmKSBjb25zdDsKLQotICAgIFN0
cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmljQ3VlRGF0
YSgpID0gZGVmYXVsdDsKLQotICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKLSAgICBNZWRpYVRp
bWUgbV9lbmRUaW1lOwotICAgIFN0cmluZyBtX2lkOwotICAgIFN0cmluZyBtX2NvbnRlbnQ7Ci0g
ICAgZG91YmxlIG1fbGluZSB7IC0xIH07Ci0gICAgZG91YmxlIG1fcG9zaXRpb24geyAtMSB9Owot
ICAgIGRvdWJsZSBtX3NpemUgeyAtMSB9OwotICAgIEFsaWdubWVudCBtX2FsaWduIHsgTm9uZSB9
OwotICAgIFN0cmluZyBtX2ZvbnROYW1lOwotICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZSB7IDAg
fTsKLSAgICBkb3VibGUgbV9yZWxhdGl2ZUZvbnRTaXplIHsgMCB9OwotICAgIENvbG9yIG1fZm9y
ZWdyb3VuZENvbG9yOwotICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwotICAgIENvbG9yIG1f
aGlnaGxpZ2h0Q29sb3I7Ci0gICAgU3RhdHVzIG1fc3RhdHVzIHsgVW5pbml0aWFsaXplZCB9Owot
fTsKLQotaW5saW5lIFN0cmluZyBHZW5lcmljQ3VlRGF0YTo6dG9KU09OU3RyaW5nKCkgY29uc3QK
LXsKLSAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KLSNpZiAhTE9H
X0RJU0FCTEVECi0gICAgb2JqZWN0LT5zZXRTdHJpbmcoInRleHQiX3MsIG1fY29udGVudCk7Ci0j
ZW5kaWYKLSAgICBvYmplY3QtPnNldERvdWJsZSgic3RhcnQiX3MsIG1fc3RhcnRUaW1lLnRvRG91
YmxlKCkpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fZW5kVGltZS50b0RvdWJs
ZSgpKTsKLQotICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKLSAgICBzd2l0Y2ggKG1fc3RhdHVzKSB7
Ci0gICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgc3RhdHVz
ID0gIlVuaW5pdGlhbGl6ZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdlbmVyaWNDdWVE
YXRhOjpQYXJ0aWFsOgotICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlOgotICAgICAgICBzdGF0dXMgPSAi
Q29tcGxldGUiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmco
InN0YXR1cyIsIHN0YXR1cyk7Ci0KLSAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQotICAgICAgICBv
YmplY3QtPnNldFN0cmluZygiaWQiLCBtX2lkKTsKLQotICAgIGlmIChtX2xpbmUgPiAwKQotICAg
ICAgICBvYmplY3QtPnNldERvdWJsZSgibGluZSJfcywgbV9saW5lKTsKLQotICAgIGlmIChtX3Np
emUgPiAwKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgic2l6ZSJfcywgbV9zaXplKTsKLQot
ICAgIGlmIChtX3Bvc2l0aW9uID4gMCkKLSAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInBvc2l0
aW9uIl9zLCBtX3Bvc2l0aW9uKTsKLQotICAgIGlmIChtX2FsaWduICE9IE5vbmUpIHsKLSAgICAg
ICAgY29uc3QgY2hhciogYWxpZ247Ci0gICAgICAgIHN3aXRjaCAobV9hbGlnbikgewotICAgICAg
ICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGFydDoKLSAgICAgICAgICAgIGFsaWduID0gIlN0YXJ0
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpNaWRk
bGU6Ci0gICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkVuZDoKLSAgICAgICAgICAgIGFsaWduID0gIkVu
ZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6Tm9u
ZToKLSAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbik7Ci0gICAg
fQotCi0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgb2JqZWN0
LT5zZXRTdHJpbmcoImZvcmVncm91bmRDb2xvciJfcywgbV9mb3JlZ3JvdW5kQ29sb3Iuc2VyaWFs
aXplZCgpKTsKLQotICAgIGlmIChtX2JhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAg
IG9iamVjdC0+c2V0U3RyaW5nKCJiYWNrZ3JvdW5kQ29sb3IiX3MsIG1fYmFja2dyb3VuZENvbG9y
LnNlcmlhbGl6ZWQoKSk7Ci0KLSAgICBpZiAobV9oaWdobGlnaHRDb2xvci5pc1ZhbGlkKCkpCi0g
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJoaWdobGlnaHRDb2xvciJfcywgbV9oaWdobGlnaHRD
b2xvci5zZXJpYWxpemVkKCkpOwotCi0gICAgaWYgKG1fYmFzZUZvbnRTaXplKQotICAgICAgICBv
YmplY3QtPnNldERvdWJsZSgiYmFzZUZvbnRTaXplIl9zLCBtX2Jhc2VGb250U2l6ZSk7Ci0KLSAg
ICBpZiAobV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgicmVs
YXRpdmVGb250U2l6ZSJfcywgbV9yZWxhdGl2ZUZvbnRTaXplKTsKLQotICAgIGlmICghbV9mb250
TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJmb250Il9zLCBtX2Zv
bnROYW1lKTsKLQotICAgIHJldHVybiBvYmplY3QtPnRvSlNPTlN0cmluZygpOwotfQotCi1pbmxp
bmUgYm9vbCBHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1
ZURhdGEmIG90aGVyKSBjb25zdAotewotICAgIGlmIChtX3JlbGF0aXZlRm9udFNpemUgIT0gb3Ro
ZXIubV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
YmFzZUZvbnRTaXplICE9IG90aGVyLm1fYmFzZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChtX2xpbmUgIT0gb3RoZXIubV9saW5lKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1fc2l6ZSAhPSBvdGhlci5tX3NpemUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAobV9hbGlnbiAhPSBvdGhlci5tX2FsaWduKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yICE9IG90aGVyLm1fZm9yZWdyb3Vu
ZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fYmFja2dyb3VuZENvbG9y
ICE9IG90aGVyLm1fYmFja2dyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG1faGlnaGxpZ2h0Q29sb3IgIT0gb3RoZXIubV9oaWdobGlnaHRDb2xvcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2ZvbnROYW1lICE9IG90aGVyLm1fZm9udE5hbWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9pZCAhPSBvdGhlci5tX2lkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fY29udGVudCAhPSBvdGhlci5tX2NvbnRlbnQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAKIGNs
YXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgOiBwdWJsaWMgVHJhY2tQcml2YXRlQmFz
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudCgpID0gZGVmYXVsdDsKQEAgLTIzNCw5ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpID0gMDsKICNlbmRpZgogCi0gICAg
dmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKQEAgLTI0NSwxOSArNjUsNCBAQCBw
dWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ7Ci0KLXRlbXBsYXRlIDw+
Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+IHsKLSAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiBjdWUpCi0g
ICAgewotICAgICAgICByZXR1cm4gY3VlLnRvSlNPTlN0cmluZygpOwotICAgIH0KLX07Ci0KLX0K
LQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDliNTI4YjRjY2JlZmNh
NWEwZDJmODA0NThkNDI2YjQ0YTRjNGE1MDYuLjJjZDQyYTk5YWY0Yzg5NWFlMTFmYzE4MDg2ZDdm
ZDgzYTQ2NzU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGJvb2wgbWFrZVJHQkEzMkZyb21B
UkdCQ0ZBcnJheShDRkFycmF5UmVmIGNvbG9yQXJyYXksIFJHQkEzMiYgY29sb3IpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1
ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcsIEdlbmVy
aWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZywg
SW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFMOwog
ICAgIC8vIFNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMgd2UgdHJhbnNsYXRlIGludG8gcGVyLWN1ZSBX
ZWJWVFQgc2V0dGluZ3MgYXJlIHJlcGVhdGVkIG9uIGVhY2ggcGFydCBvZiBhbiBhdHRyaWJ1dGVk
IHN0cmluZyBzbyBvbmx5CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2b2lkIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBh
dHRyaQogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBBbGlnbjsKIAogICAgICAgICAgICAg
ICAgIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1l
bnRUeXBlX1N0YXJ0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAgICAgICAgICAgICAg
ICAgY3VlRGF0YS5zZXRBbGlnbihHZW5lcmljQ3VlRGF0YTo6U3RhcnQpOworICAgICAgICAgICAg
ICAgICAgICBjdWVEYXRhLnNldEFsaWduKEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0
KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcs
IGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFs
VG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6
Ok1pZGRsZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1
ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0
cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX0VuZCwg
MCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0
QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkVuZCk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEu
c2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6RW5kKTsKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0z
MjMsNyArMzIzLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0
cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICBpZiAoY291bnQpCiAg
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRlZCAiLCBjb3VudCwgY291bnQgPiAx
ID8gIiBjdWVzIiA6ICIgY3VlIiwgIiBhdCB0aW1lICIsIHRpbWUpOwogCi0gICAgVmVjdG9yPFJl
ZjxHZW5lcmljQ3VlRGF0YT4+IGFycml2aW5nQ3VlczsKKyAgICBWZWN0b3I8UmVmPEluYmFuZEdl
bmVyaWNDdWU+PiBhcnJpdmluZ0N1ZXM7CiAgICAgaWYgKGNvdW50KSB7CiAgICAgICAgIGZvciAo
Q0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgIENGQXR0cmlidXRl
ZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nID0gc3RhdGljX2Nhc3Q8Q0ZBdHRyaWJ1dGVkU3Ry
aW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dHJpYnV0ZWRTdHJpbmdzLCBpKSk7CkBA
IC0zMzEsNyArMzMxLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
QXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgICAgIGlm
ICghYXR0cmlidXRlZFN0cmluZyB8fCAhQ0ZBdHRyaWJ1dGVkU3RyaW5nR2V0TGVuZ3RoKGF0dHJp
YnV0ZWRTdHJpbmcpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBh
dXRvIGN1ZURhdGEgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRv
IGN1ZURhdGEgPSBJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHByb2Nl
c3NDdWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZWRTdHJpbmcsIGN1ZURhdGEuZ2V0KCkpOwogICAgICAg
ICAgICAgaWYgKCFjdWVEYXRhLT5jb250ZW50KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAg
ICAgICAgICAgIGlmIChjdWVEYXRhLT5wb3NpdGlvbigpID49IDAgJiYgY3VlRGF0YS0+c2l6ZSgp
ID4gMCkKICAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRQb3NpdGlvbihjdWVEYXRhLT5wb3Np
dGlvbigpIC0gY3VlRGF0YS0+c2l6ZSgpIC8gMik7CiAKLSAgICAgICAgICAgIGN1ZURhdGEtPnNl
dFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6UGFydGlhbCk7CisgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbCk7CiAKICAgICAgICAgICAg
IGFycml2aW5nQ3Vlcy5hcHBlbmQoV1RGTW92ZShjdWVEYXRhKSk7CiAgICAgICAgIH0KQEAgLTM1
Nyw3ICszNTcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRy
aWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogICAgICAgICBpZiAobV9jdXJy
ZW50Q3VlRW5kVGltZSA+PSBtX2N1cnJlbnRDdWVTdGFydFRpbWUpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgY3VlRGF0YSA6IG1fY3VlcykgewogICAgICAgICAgICAgICAgIC8vIFNlZSBpZiBv
bmUgb2YgdGhlIG5ld2x5LWFycml2ZWQgY3VlcyBpcyBhbiBleHRlbnNpb24gb2YgdGhpcyBjdWUu
Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxHZW5lcmljQ3VlRGF0YT4+IG5vbkV4dGVuc2lv
bkN1ZXM7CisgICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxJbmJhbmRHZW5lcmljQ3VlPj4gbm9u
RXh0ZW5zaW9uQ3VlczsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGFycml2aW5nQ3VlIDog
YXJyaXZpbmdDdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJyaXZpbmdDdWUtPmRv
ZXNFeHRlbmRDdWVEYXRhKCpjdWVEYXRhKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vbkV4
dGVuc2lvbkN1ZXMuYXBwZW5kKFdURk1vdmUoYXJyaXZpbmdDdWUpKTsKQEAgLTM3NCw3ICszNzQs
NyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRyaWJ1dGVkU3Ry
aW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogCiAgICAgICAgICAgICAgICAgaWYgKG1fcGVu
ZGluZ0N1ZVN0YXR1cyA9PSBWYWxpZCkgewogICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRFbmRUaW1lKG1fY3VycmVudEN1ZUVuZFRpbWUpOwotICAgICAgICAgICAgICAgICAgICBjdWVE
YXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKTsKKyAgICAgICAgICAgICAg
ICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRl
KTsKIAogICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRp
bmcgY3VlICIsICpjdWVEYXRhKTsKIApAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3ZlQ29tcGxldGVkQ3VlcygpCiAgICAgICAgIGxvbmcgY3Vy
cmVudEN1ZSA9IG1fY3Vlcy5zaXplKCkgLSAxOwogICAgICAgICBmb3IgKDsgY3VycmVudEN1ZSA+
PSAwOyAtLWN1cnJlbnRDdWUpIHsKICAgICAgICAgICAgIGF1dG8mIGN1ZSA9IG1fY3Vlc1tjdXJy
ZW50Q3VlXTsKLSAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9IEdlbmVyaWNDdWVEYXRh
OjpDb21wbGV0ZSkKKyAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9IEdlbmVyaWNDdWVE
YXRhOjpTdGF0dXM6OkNvbXBsZXRlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3ZpbmcgY3VlICIsICpjdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggNWQ4
NzEwNzM3YTM0ZjdhNTNiODhmNWIzY2ViMzBiNGRhZmM5M2ViOC4uNjM0M2U0NTczN2VjZTg1MmIw
MThjOWFiYmMwMDJmYzYxMTlmOGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRyYWNrUGFyZW50KiwgQ3Vl
Rm9ybWF0KTsKIAotICAgIHZvaWQgcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3Ry
aW5nUmVmLCBHZW5lcmljQ3VlRGF0YSYpOworICAgIHZvaWQgcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMo
Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmLCBJbmJhbmRHZW5lcmljQ3VlJik7CiAgICAgdm9pZCBwcm9j
ZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAg
dm9pZCBwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRpbWUmKTsK
ICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZEN1ZXMoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVRpbWUgbV9jdXJyZW50Q3VlU3RhcnRUaW1lOwogICAgIE1lZGlhVGltZSBt
X2N1cnJlbnRDdWVFbmRUaW1lOwogCi0gICAgVmVjdG9yPFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4+
IG1fY3VlczsKKyAgICBWZWN0b3I8UmVmUHRyPEluYmFuZEdlbmVyaWNDdWU+PiBtX2N1ZXM7CiAg
ICAgQVZGSW5iYW5kVHJhY2tQYXJlbnQqIG1fb3duZXI7CiAKICAgICBlbnVtIFBlbmRpbmdDdWVT
dGF0dXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oCmluZGV4IDM5ZGE1NThlNmRiMzhmMGM3NzhjNTE3ODBhMDc2MmI1ZjY1MDBiMGYu
LjM0MDcwY2M3YTg3NWEwYTBjOTcyNzRhZmRmYjQ3MjlkM2ZkYmRhNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTQ0LDcg
KzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkY7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOwotY2xhc3Mg
R2VuZXJpY0N1ZURhdGE7CiAKIC8vIFVzZSBlYWdlciBpbml0aWFsaXphdGlvbiBmb3IgdGhlIFdl
YWtQdHJGYWN0b3J5IHNpbmNlIHdlIGNhbGwgbWFrZVdlYWtQdHIoKSBmcm9tIGFub3RoZXIgdGhy
ZWFkLgogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiwgV2Vha1B0ckZhY3RvcnlJ
bml0aWFsaXphdGlvbjo6RWFnZXI+LCBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
LCBwdWJsaWMgQVZGSW5iYW5kVHJhY2tQYXJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCmluZGV4IDMyYzliN2Ux
MmU1YTcyY2IwYmJiZDBhOTVlMDMxMThlMDcyNDBiYzEuLmFmNjRjODJiOTAyM2FkMjM0MTQyM2Nm
ODVkYjQ5NWE3NmM0YzZiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApAQCAtMTE4LDE5ICsxMTgsMTkgQEAg
dm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUKIH0KICNlbmRpZgogCi12b2lkIFJlbW90ZVRleHRUcmFj
a1Byb3h5OjphZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgUmVtb3RlVGV4dFRy
YWNrUHJveHk6OmFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGRHZW5lcmljQ3VlKG1faWRlbnRpZmllciwg
Y3VlLmN1ZURhdGEoKSksIG1fcGxheWVyLmlkZW5kaWZpZXIoKSk7CiB9CiAKLXZvaWQgUmVtb3Rl
VGV4dFRyYWNrUHJveHk6OnVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKQordm9pZCBS
ZW1vdGVUZXh0VHJhY2tQcm94eTo6dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiBj
dWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlVwZGF0ZUdlbmVyaWND
dWUobV9pZGVudGlmaWVyLCBjdWUuY3VlRGF0YSgpKSwgbV9wbGF5ZXIuaWRlbmRpZmllcigpKTsK
IH0KIAotdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmlj
Q3VlRGF0YSYpCit2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVHZW5lcmljQ3VlKElu
YmFuZEdlbmVyaWNDdWUmIGN1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6UmVtb3ZlR2VuZXJpY0N1ZShtX2lkZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkpLCBtX3BsYXll
ci5pZGVuZGlmaWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdl
YlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCBlMjg2ZWM0ODk0
NjczYTRmMmI1NjFkMjM4YjA2ZjYyNzUzNmNmZTQ1Li4wYmUxNTQ1MWQ5YWI4NDliOWFhNDliNTRj
MzE1OTQ0Y2Q2ZjhmNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJik7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpOworICAgIHZpcnR1YWwg
dm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2Vi
VlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjYwNDkwZmI3YjU2YTg4Y2ZmMGQ5
Yjg5YzFhNzE2OGFlZDBkMTg1Yy4uMzcyYjVkMmQ3ZTlmNzcxNzM5ZjdkZmI1YjcwYTJmNTIwNzMx
MTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01NjMs
NiArNTYzLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3Jl
OjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9TaGFyZURhdGEuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OkZvbnRDaGFuZ2VzJzogWyc8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hh
bmdlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSc6IFsnPFdlYkNvcmUv
RnJhbWVMb2FkZXJUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEn
OiBbJzxXZWJDb3JlL0luYmFuZEdlbmVyaWNDdWUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Okdy
YW1tYXJEZXRhaWwnOiBbJzxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlw
ZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5zcGVj
dG9yT3ZlcmxheS5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZmNjNi
MjMwZjYyN2QxMmNjNmVjM2VmN2RkNmNlNmFkMTI5N2FhNmEuLjU4NWZmZTU2MjNmNWI3ZmQ2ZGEw
ZTY3NDdmNWEyYTU5Zjg0Zjc5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTExNiwxOCArMTE2LDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvCiAgICAgaWYgKHVybC5p
c0xvY2FsRmlsZSgpKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7
CiAgICAgICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKLSAg
ICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gZmFsc2U7CiAKKyAgICAgICAgYXV0byBjcmVh
dGVFeHRlbnNpb24gPSBbJl0gewogI2lmIEhBVkUoU0FOREJPWF9JU1NVRV9SRUFEX0VYVEVOU0lP
Tl9UT19QUk9DRVNTX0JZX0FVRElUX1RPS0VOKQotICAgICAgICBhdXRvIGF1ZGl0VG9rZW4gPSBt
X21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCk7Ci0gICAgICAgIEFT
U0VSVChhdWRpdFRva2VuKTsKLSAgICAgICAgaWYgKGF1ZGl0VG9rZW4pCi0gICAgICAgICAgICBj
cmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5
QXVkaXRUb2tlbihmaWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUpOwot
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZp
bGVTeXN0ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRsZSk7CiAjZW5kaWYKLSAgICAg
ICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxl
U3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7CiAK
LSAgICAgICAgaWYgKCFjcmVhdGVkRXh0ZW5zaW9uKSB7CisgICAgICAgICAgICByZXR1cm4gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAo
IWNyZWF0ZWRFeHRlbnNpb24oKSkgewogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUg
dG8gY3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9uIGhhbmRsZSBmb3IgR1BVUHJvY2VzcyB1cmwuXG4i
KTsKICAgICAgICAgICAgIG1fY2FjaGVkU3RhdGUubmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAgICAgICAgICBtX3BsYXllci0+bmV0d29y
a1N0YXRlQ2hhbmdlZCgpOwpAQCAtNTI1LDYgKzUyNCwzMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cmVtb3ZlRGF0YUN1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
ZW50aQogfQogI2VuZGlmCiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphZGRHZW5l
cmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgR2VuZXJpY0N1
ZURhdGEmJiBjdWVEYXRhKQoreworICAgIEFTU0VSVChtX3RleHRUcmFja3MuY29udGFpbnMoaWRl
bnRpZmllcikpOworCisgICAgaWYgKGNvbnN0IGF1dG8mIHRyYWNrID0gbV90ZXh0VHJhY2tzLmdl
dChpZGVudGlmaWVyKSkKKyAgICAgICAgdHJhY2stPmFkZEdlbmVyaWNDdWUoV1RGTW92ZShJbmJh
bmRHZW5lcmljQ3VlOjpjcmVhdGUoV1RGTW92ZShjdWVEYXRhKSkuZ2V0KCkpKTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUoVHJhY2tQcml2YXRl
UmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBHZW5lcmljQ3VlRGF0YSYmIGN1ZURhdGEpCit7
CisgICAgQVNTRVJUKG1fdGV4dFRyYWNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBp
ZiAoY29uc3QgYXV0byYgdHJhY2sgPSBtX3RleHRUcmFja3MuZ2V0KGlkZW50aWZpZXIpKQorICAg
ICAgICB0cmFjay0+dXBkYXRlR2VuZXJpY0N1ZShXVEZNb3ZlKEluYmFuZEdlbmVyaWNDdWU6OmNy
ZWF0ZShXVEZNb3ZlKGN1ZURhdGEpKS5nZXQoKSkpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEdlbmVyaWNDdWVEYXRhJiYgY3VlRGF0YSkKK3sKKyAgICBBU1NFUlQobV90
ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIGlmIChjb25zdCBhdXRvJiB0
cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHRyYWNrLT5yZW1v
dmVHZW5lcmljQ3VlKFdURk1vdmUoSW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRlKFdURk1vdmUoY3Vl
RGF0YSkpLmdldCgpKSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphZGRS
ZW1vdGVWaWRlb1RyYWNrKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3ZpZGVvVHJhY2tzLmVuc3VyZShpZGVudGlmaWVyLCBbJl0gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMTMyZjMwYWIyOWI2ZTUwOWYxMTM5NDkyNTgw
YTZlMzY3MWNjNzkwOS4uNTY4YzE2OGY1MGI0ZThkYzU3NzE1MWRhY2E2NzQ4MmE3NzQwODUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIE1hY2hT
ZW5kUmlnaHQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBHZW5lcmljQ3VlRGF0
YTsKIGNsYXNzIElTT1dlYlZUVEN1ZTsKIGNsYXNzIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVW
YWx1ZTsKIH0KQEAgLTEyMiw2ICsxMjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0
YUN1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBNZWRpYVRpbWUmJiBzdGFydCwgTWVk
aWFUaW1lJiYgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmJik7
CiAjZW5kaWYKIAorICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSYmKTsKKyAgICB2b2lkIHVwZGF0ZUdlbmVy
aWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VuZXJpY0N1ZURh
dGEmJik7CisgICAgdm9pZCByZW1vdmVHZW5lcmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiYpOworCiAgICAgdm9pZCByZXF1ZXN0UmVz
b3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25z
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2Uo
UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVzb3VyY2VOb3RTdXBw
b3J0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KaW5k
ZXggZTg4OTdiNmExMGExMGQ0YjcwMDkyOThjN2FhMjcyOGJmZTExMjk3YS4uM2ZmY2YzNmVmZTI0
YjNkMDg1MGVlYTI4NmUyY2U3MjhlNGEyZmMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTU3LDkgKzU3LDkgQEAgbWVzc2FnZXMgLT4gTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewogICAgIFJlbW92ZURhdGFDdWUoV2Vi
S2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIE1lZGlhVGltZSBzdGFy
dCwgTWVkaWFUaW1lIGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVl
IGN1ZURhdGEpCiAjZW5kaWYKIAotICAgICMjIEFkZEdlbmVyaWNDdWUoV2ViQ29yZTo6R2VuZXJp
Y0N1ZURhdGEgY3VlKQotICAgICMjIFVwZGF0ZUdlbmVyaWNDdWUoV2ViQ29yZTo6R2VuZXJpY0N1
ZURhdGEgY3VlKQotICAgICMjIFJlbW92ZUdlbmVyaWNDdWUoV2ViQ29yZTo6R2VuZXJpY0N1ZURh
dGEgY3VlKQorICAgIEFkZEdlbmVyaWNDdWUoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIHRyYWNrSUQsIHN0cnVjdCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCisgICAg
VXBkYXRlR2VuZXJpY0N1ZShXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJh
Y2tJRCwgc3RydWN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhIGN1ZSkKKyAgICBSZW1vdmVHZW5l
cmljQ3VlKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1
Y3QgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQogCiAgICAgQWRkUmVtb3RlVmlkZW9UcmFj
ayhXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgc3RydWN0IFdl
YktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAg
IFJlbW92ZVJlbW90ZVZpZGVvVHJhY2soV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIHRyYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2YTY2MjJhMzk1NDk5
MDA3MTA2YmQ0OTA5NzExMDVkNThiODNhOTZlLi43MjUyMTdkNzI0YmRlYjk4ZTNiYzBkYjY1YzU2
MWVkN2VlNjA1MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTg4LDIyICs4OCwy
NyBAQCB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYQogICAgIG1faXNEZWZhdWx0ID0gY29uZmlndXJh
dGlvbi5pc0RlZmF1bHQ7CiB9CiAKLXZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkR2Vu
ZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpCit2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OmFk
ZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYmIGN1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIEFTU0VSVChjbGllbnQoKSk7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMt
PmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmFkZEdlbmVyaWNDdWUoY3VlKTsKIH0KIAotdm9p
ZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRh
JikKK3ZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRH
ZW5lcmljQ3VlJiYgY3VlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKGNs
aWVudCgpKTsKKyAgICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAg
IGNsaWVudC0+dXBkYXRlR2VuZXJpY0N1ZShjdWUpOwogfQogCi12b2lkIFRleHRUcmFja1ByaXZh
dGVSZW1vdGU6OnJlbW92ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKQordm9pZCBUZXh0VHJh
Y2tQcml2YXRlUmVtb3RlOjpyZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmJiBjdWUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQoY2xpZW50KCkpOworICAgIGlm
IChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5yZW1vdmVH
ZW5lcmljQ3VlKGN1ZSk7CiB9CiAKLQogdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpwYXJz
ZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogewogICAgIEFTU0VSVChjbGllbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRU
cmFja1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDdiN2Y3MDNjYjQ5N2RlZGVhMzkxZGI1OWNj
OTJiZWNlMTVhNTkyZTMuLmJiMmY0MTQ0YmQ2OTBiOTdiNTc5Yjc1ODNiNDUzZjY5YjNjYzU0Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEdlbmVyaWNDdWVEYXRhOworY2xhc3MgSW5iYW5kR2VuZXJpY0N1ZTsKIGNsYXNzIElTT1dl
YlZUVEN1ZTsKIH0KIApAQCAtNTcsOSArNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVE
YXRhQ3VlKE1lZGlhVGltZSYmIHN0YXJ0LCBNZWRpYVRpbWUmJiBlbmQsIFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVWYWx1ZSYmKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRHZW5lcmljQ3VlKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhJik7Ci0gICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhJik7Ci0gICAgdm9pZCByZW1vdmVHZW5lcmljQ3VlKFdlYkNvcmU6
OkdlbmVyaWNDdWVEYXRhJik7CisgICAgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWND
dWUmJik7CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmJik7Cisg
ICAgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmJik7CiAKICAgICB2b2lk
IHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdm9pZCBwYXJzZVdlYlZUVEN1
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjYwNWFjYmMzZTUwNGEx
YzkwZDMwZGM5MjI1MmVmYzViZGMxYjAwMy4uZWJmNjNhZWFmZTRhNjEzNGViZWZhZjJkYzhjNTg5
YmUxMmYyMWZhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAyLTIxICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW4tYmFuZCBn
ZW5lcmljIGN1ZXMgd2hlbiBsb2FkaW5nIG1lZGlhIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDgwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81OTY4Nzk0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MjAtMDItMjEgIEphc29uIExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAg
ICAgWyBNYWMgRGVidWcgXSBsZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL2FuaW1h
dGlvbi13ZWxjb21lLXNhZmFyaS5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1
LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MTNhNWQ0NDg0MmZhYjljZTQ3MzRiZGRm
MzdjNGVhZTVkMjA3NWU4Li42NDg0ODEzNmM3NDYzMDhlZWNmZmUzZjVlNjVjODcxMDkwYTk5YWQ5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIzMiw2ICsy
MzIsMTMgQEAgaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXdlYnZ0dC10cmFja3MuaHRtbCBbIFBh
c3MgXQogaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS5odG1sIFsg
UGFzcyBdCiBodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLWNyYXNo
Lmh0bWwgWyBQYXNzIF0KIAorbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1jdWVzLWFkZGVkLW9u
Y2UuaHRtbCBbIFBhc3MgXQorbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS5odG1sIFsg
UGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLWR1cGxpY2F0ZS10cmFja3Mtd2hlbi1z
b3VyY2UtY2hhbmdlcy5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLWxl
Z2FjeS1hcGkuaHRtbCBbIFBhc3MgXQorbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC5odG1sIFsg
UGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLW1ldGFkYXRhLWRpc3BsYXktb3JkZXIu
aHRtbCBbIFBhc3MgXQorCiBhY2Nlc3NpYmlsaXR5L21lZGlhLWVsZW1lbnQuaHRtbCBbIFNraXAg
XQogZmFzdC9ibG9jay9mbG9hdC9saXN0LW1hcmtlci1pcy1mbG9hdC1jcmFzaC5odG1sIFsgU2tp
cCBdCiBmYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbi1yZXBsYWNlZC1pbi10YWJsZS1kaXNwbGF5
LWNyYXNoLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391442</attachid>
            <date>2020-02-21 18:53:11 -0800</date>
            <delta_ts>2020-02-21 19:49:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208080-20200221185311.patch</filename>
            <type>text/plain</type>
            <size>61979</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uZTVkNWVkZTkyOTVlMDdkZDA5OWQxODEyZDFmNDI1
MTYzMjQyYjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0wMi0yMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGlu
LWJhbmQgZ2VuZXJpYyBjdWVzIHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBl
bmFibGVkIGZvciBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRU
cmFja0N1ZU1hcDo6ZmluZEluZGV4T2ZQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNU
ZXh0VHJhY2tDdWVNYXA6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRUcmFj
a0N1ZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRTdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZW5kVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRF
bmRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmlkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldElkKToKKyAgICAgICAgKFdl
YkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnNldExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6cG9z
aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmFsaWduIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNDdWU6OmZvbnROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OnNldEZvbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmJhc2VGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRCYXNlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1
ZTo6cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljQ3VlOjpzZXRSZWxhdGl2ZUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OmZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kR2VuZXJpY0N1ZTo6YmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNDdWU6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRHZW5lcmljQ3VlOjpoaWdobGlnaHRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY0N1ZTo6c2V0U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
SW5iYW5kR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjp0
b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZG9lc0V4dGVuZEN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdlbmVyaWNDdWVEYXRhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2Vu
ZXJpY0N1ZURhdGE6OnN0YXJ0VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6c2V0U3RhcnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjplbmRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRFbmRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjppZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OmNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldENvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OmxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldExpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OnBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmFsaWduIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRBbGlnbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9udE5hbWUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEZvbnROYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpiYXNlRm9udFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEJh
c2VGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6
cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0UmVsYXRpdmVGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9yZWdyb3VuZENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmJhY2tncm91bmRDb2xvciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0QmFj
a2dyb3VuZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
OjpoaWdobGlnaHRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0SGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YTo6c2V0U3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyaWNDdWVEYXRhOjp0b0pTT05TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OmRvZXNFeHRlbmRDdWVEYXRhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+Ojp0b1N0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNv
bXBsZXRlZEN1ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorCiAyMDIwLTAy
LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
YzIxMTgzMTg1ZGRjNzA4NDFhYTBlNzgwYWNlM2FkYmQ3YzVjZTU3Li43YWUyNTU4NzhlMzUyYThj
ZDE0ZmQyYjM5ZDRlNzZkYzEwYmI1M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIw
LTAyLTIxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgaW4tYmFuZCBnZW5lcmljIGN1ZXMgd2hlbiBsb2FkaW5nIG1lZGlhIGluIHRoZSBH
UFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4MDgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTY4Nzk0Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJh
Y2tQcm94eTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFj
a1Byb3h5Ojp1cGRhdGVHZW5lcmljQ3VlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRy
YWNrUHJveHk6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGRHZW5l
cmljQ3VlKToKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRl
R2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnJl
bW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuaDoKKwogMjAyMC0wMi0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVsZW1ldHJ5IGZyb20gc2FuZGJveCBydWxl
cyBuZWVkZWQgZm9yIGJhc2ljIFdlYktpdCBsb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBh
ZDRmNzFkN2M0YjQ5NjkxMDMyMTYzM2NhYWZjMzhkNjBmNjJjZjFkLi41MThmOTg0MzU5YzM2Zjli
MmZiOGQ4OTFlMmJiZDAyYzkyYTc1YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMDIsNiAr
MTEwMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA3YjE4YTUwYTQ0ZjZhOGU2M2QxNGMzMjg4NDMzNTY3OTAxZDExMjBiLi5lMDI1NmRl
MGRiNGNiYjRkMjAxYWVlOTNmOWI5ZTE0YzE1ODQ0NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDUsNiArMTQ1LDcgQEAK
IAkJMDc4MzIyODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODMyMjgzMTgw
MTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi87IH07CiAJCTA3ODQ2
MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1QjE1MUEwMEE1OERGMSAvKiBK
U1RyYWNrRXZlbnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJh
Y2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi87IH07CisJCTA3
ODYzM0U5MjNGRjM0N0IwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmljQ3VlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg2MzNERTIzRkVERjIyMDA4N0FF
MjEgLyogSW5iYW5kR2VuZXJpY0N1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3ODdDNDZBMUJGQkRGNkYwMDZEQ0Q3RiAvKiBKU01lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc4N0M0NjgxQkZCREY2RjAwNkRDRDdGIC8qIEpTTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CiAJCTA3OEUwOTE1MTdEMTREMUMwMDQyMEFBMSAv
KiBNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcyMjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3OEUwOTE4MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUI1NTE3Q0VDMzI3MDA4
NDhFNTEgLyogTWVkaWFTdHJlYW1UcmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01NDkzLDYgKzU0OTQsNyBAQAogCQkwNzg0NjM0MTE0NUIx
NTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0
NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3ODYzM0Q3MjNGRTA5NjQwMDg3QUUyMSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzg2MzNERTIzRkVERjIyMDA4N0FFMjEg
LyogSW5iYW5kR2VuZXJpY0N1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRHZW5lcmljQ3VlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODdDNDY3MUJGQkRGNkYwMDZEQ0Q3RiAv
KiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODdDNDY4MUJGQkRGNkYwMDZEQ0Q3RiAv
KiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDc0LDYgKzI1MDc2LDcgQEAKIAkJCQk1NTQ2NzU3NzFG
RDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuY3BwICovLAogCQkJCTU1NDY3NTc4MUZEMUZD
MUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oICovLAogCQkJCTU1NTBDQjQxMUU5NTVFM0MwMDEx
MUFBMCAvKiBJbWFnZVR5cGVzLmggKi8sCisJCQkJMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8q
IEluYmFuZEdlbmVyaWNDdWUuaCAqLywKIAkJCQkwNzk0MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyog
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oICovLAogCQkJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0
NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi8sCiAJCQkJMkQ0NkYwNEQxN0I5
NkZCRDAwNTY0N0YwIC8qIEludFBvaW50LmNwcCAqLywKQEAgLTMwMzE1LDYgKzMwMzE4LDcgQEAK
IAkJCQkyNkY3NTZCNTFCM0I2OEYyMDAwNURENzkgLyogSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNp
dEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5NjFDNTUxOEFEMzM4QzAwRDA3REM1
IC8qIEluYmFuZERhdGFUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODYzM0U5MjNG
RjM0N0IwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmljQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
RTE2QzU5MzE3Q0ZFMTcyMDA4NTJDMDQgLyogSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTIxNjZFODU1
RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRl
eCAyNjI4OTRmMmUxMzI1OWQ0NDgyODgxZTUxZTBjNDU2MGE5ZTVhMDNmLi4yNDcxMmI4ZWIzN2My
NGI5M2MwNmRlZTM2OTBmZDRmMzQ4YzkzMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTQxLDMyICs0MSw2MyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJh
bmRHZW5lcmljVGV4dFRyYWNrKTsKIAotdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjphZGQo
R2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEsIFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKK3ZvaWQg
R2VuZXJpY1RleHRUcmFja0N1ZU1hcDo6YWRkKEluYmFuZEdlbmVyaWNDdWUmIGN1ZURhdGEsIFRl
eHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKIHsKLSAgICBtX2RhdGFUb0N1ZU1hcC5hZGQoJmN1ZURh
dGEsICZjdWUpOwotICAgIG1fY3VlVG9EYXRhTWFwLmFkZCgmY3VlLCAmY3VlRGF0YSk7CisgICAg
YXV0byBpbmRleCA9IG1fY3Vlcy5maW5kTWF0Y2hpbmcoWyZjdWVEYXRhXShjb25zdCBhdXRvJiBj
dWVQYWlyKSB7CisgICAgICAgIHJldHVybiBjdWVEYXRhLnN0YXJ0VGltZSgpID49IGN1ZVBhaXIu
bV9jdWVEYXRhLT5zdGFydFRpbWUoKTsKKyAgICB9KTsKKworICAgIG1fY3Vlcy5pbnNlcnQoaW5k
ZXggIT0gbm90Rm91bmQgPyBpbmRleCA6IDAsIEdlbmVyaWNDdWVQYWlyIHsgJmN1ZURhdGEsICZj
dWUgfSk7Cit9CisKK3NpemVfdCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5kSW5kZXhPZlBh
aXIoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKK3sKKyAgICByZXR1cm4gbV9jdWVzLmZpbmRN
YXRjaGluZyhbJmN1ZURhdGFdKGNvbnN0IGF1dG8mIGN1ZVBhaXIpIHsKKyAgICAgICAgaWYgKGN1
ZURhdGEuc3RhcnRUaW1lKCkgIT0gY3VlUGFpci5tX2N1ZURhdGEtPnN0YXJ0VGltZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBjdWVEYXRhLmRvZXNFeHRl
bmRDdWVEYXRhKCpjdWVQYWlyLm1fY3VlRGF0YSk7CisgICAgfSk7CiB9CiAKLVRleHRUcmFja0N1
ZUdlbmVyaWMqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoR2VuZXJpY0N1ZURhdGEmIGN1
ZURhdGEpCitUZXh0VHJhY2tDdWVHZW5lcmljKiBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5k
KEluYmFuZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7Ci0gICAgcmV0dXJuIG1fZGF0YVRvQ3VlTWFw
LmdldCgmY3VlRGF0YSk7CisgICAgYXV0byBpbmRleCA9IGZpbmRJbmRleE9mUGFpcihjdWVEYXRh
KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIG1fY3Vlc1tpbmRleF0ubV9jdWUuZ2V0KCk7CiB9CiAKLUdlbmVyaWNDdWVE
YXRhKiBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5kKFRleHRUcmFja0N1ZSYgY3VlKQorc2l6
ZV90IEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmRJbmRleE9mUGFpcihUZXh0VHJhY2tDdWUm
IGN1ZSkKIHsKLSAgICByZXR1cm4gbV9jdWVUb0RhdGFNYXAuZ2V0KCZjdWUpOworICAgIHJldHVy
biBtX2N1ZXMuZmluZE1hdGNoaW5nKFsmY3VlXShjb25zdCBhdXRvJiBjdWVQYWlyKSB7CisgICAg
ICAgIGlmICghY3VlLmhhc0VxdWl2YWxlbnRTdGFydFRpbWUoKmN1ZVBhaXIubV9jdWUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBjdWUuaXNFcXVhbCgqY3Vl
UGFpci5tX2N1ZSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbik7CisgICAgfSk7Cit9CisK
K0luYmFuZEdlbmVyaWNDdWUqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoVGV4dFRyYWNr
Q3VlJiBjdWUpCit7CisgICAgYXV0byBpbmRleCA9IGZpbmRJbmRleE9mUGFpcihjdWUpOworICAg
IGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gbV9jdWVzW2luZGV4XS5tX2N1ZURhdGEuZ2V0KCk7CiB9CiAKLXZvaWQgR2VuZXJpY1Rl
eHRUcmFja0N1ZU1hcDo6cmVtb3ZlKEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjpyZW1vdmUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsK
LSAgICBpZiAoYXV0byBjdWUgPSBtX2RhdGFUb0N1ZU1hcC50YWtlKCZjdWVEYXRhKSkKLSAgICAg
ICAgbV9jdWVUb0RhdGFNYXAucmVtb3ZlKGN1ZSk7CisgICAgaWYgKGF1dG8gaW5kZXggPSBmaW5k
SW5kZXhPZlBhaXIoY3VlRGF0YSkpCisgICAgICAgIG1fY3Vlcy5yZW1vdmUoaW5kZXgpOwogfQog
CiB2b2lkIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OnJlbW92ZShUZXh0VHJhY2tDdWUmIGN1ZSkK
IHsKLSAgICBpZiAoYXV0byBkYXRhID0gbV9jdWVUb0RhdGFNYXAudGFrZSgmY3VlKSkKLSAgICAg
ICAgbV9kYXRhVG9DdWVNYXAucmVtb3ZlKGRhdGEpOworICAgIGlmIChhdXRvIGluZGV4ID0gZmlu
ZEluZGV4T2ZQYWlyKGN1ZSkpCisgICAgICAgIG1fY3Vlcy5yZW1vdmUoaW5kZXgpOwogfQogCiBp
bmxpbmUgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6SW5iYW5kR2VuZXJpY1RleHRUcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQpAQCAtODEsNyArMTEyLDcgQEAgUmVm
PEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXgKIAogSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6fkluYmFuZEdl
bmVyaWNUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFj
azo6dXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYgY3VlLCBHZW5lcmlj
Q3VlRGF0YSYgY3VlRGF0YSkKK3ZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlQ3Vl
RnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYgY3VlLCBJbmJhbmRHZW5lcmljQ3VlJiBj
dWVEYXRhKQogewogICAgIGN1ZS53aWxsQ2hhbmdlKCk7CiAKQEAgLTEwOSwxOCArMTQwLDE4IEBA
IHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRy
YWNrQ3VlR2VuZXJpYyYgY3VlLCBHZW5lCiAgICAgaWYgKGN1ZURhdGEuaGlnaGxpZ2h0Q29sb3Io
KS5pc1ZhbGlkKCkpCiAgICAgICAgIGN1ZS5zZXRIaWdobGlnaHRDb2xvcihjdWVEYXRhLmhpZ2hs
aWdodENvbG9yKCkucmdiKCkpOwogCi0gICAgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmlj
Q3VlRGF0YTo6U3RhcnQpCisgICAgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0
YTo6QWxpZ25tZW50OjpTdGFydCkKICAgICAgICAgY3VlLnNldEFsaWduKCJzdGFydCJfcyk7Ci0g
ICAgZWxzZSBpZiAoY3VlRGF0YS5hbGlnbigpID09IEdlbmVyaWNDdWVEYXRhOjpNaWRkbGUpCisg
ICAgZWxzZSBpZiAoY3VlRGF0YS5hbGlnbigpID09IEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6
Ok1pZGRsZSkKICAgICAgICAgY3VlLnNldEFsaWduKCJtaWRkbGUiX3MpOwotICAgIGVsc2UgaWYg
KGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6RW5kKQorICAgIGVsc2UgaWYgKGN1
ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpFbmQpCiAgICAgICAg
IGN1ZS5zZXRBbGlnbigiZW5kIl9zKTsKICAgICBjdWUuc2V0U25hcFRvTGluZXMoZmFsc2UpOwog
CiAgICAgY3VlLmRpZENoYW5nZSgpOwogfQogCi12b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6
OmFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEpCit2b2lkIEluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsK
ICAgICBpZiAobV9jdWVNYXAuZmluZChjdWVEYXRhKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0
LDEzICsxNjUsMTMgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRHZW5lcmljQ3Vl
KEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
ImFkZGVkIGN1ZTogIiwgY3VlLmdldCgpKTsKIAotICAgIGlmIChjdWVEYXRhLnN0YXR1cygpICE9
IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKKyAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSAhPSBH
ZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZSkKICAgICAgICAgbV9jdWVNYXAuYWRkKGN1
ZURhdGEsIGN1ZSk7CiAKICAgICBhZGRDdWUoV1RGTW92ZShjdWUpKTsKIH0KIAotdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBjdWVE
YXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7CiAgICAgYXV0byBjdWUgPSBtYWtlUmVmUHRyKG1fY3Vl
TWFwLmZpbmQoY3VlRGF0YSkpOwogICAgIGlmICghY3VlKQpAQCAtMTQ4LDExICsxNzksMTEgQEAg
dm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVE
YXRhJiBjdWVEYXRhKQogCiAgICAgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoKmN1ZSwgY3VlRGF0YSk7
CiAKLSAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSA9PSBHZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUp
CisgICAgaWYgKGN1ZURhdGEuc3RhdHVzKCkgPT0gR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29t
cGxldGUpCiAgICAgICAgIG1fY3VlTWFwLnJlbW92ZShjdWVEYXRhKTsKIH0KIAotdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBjdWVE
YXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7CiAgICAgYXV0byBjdWUgPSBtYWtlUmVmUHRyKG1fY3Vl
TWFwLmZpbmQoY3VlRGF0YSkpOwogICAgIGlmIChjdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmgKaW5kZXggMjIxMmY5NTc3ZjI2
ZjU4MDcwOGE4MmNhMjA1MWZjYjg4NWVlYTg4YS4uMWNmY2VkMTI5NDhiYTlmM2FhNjBlZmYwOThm
NGIwMTAwM2UxZDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmgKQEAgLTM1LDIwICszNSwyNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXAgewogcHVibGljOgotICAgIHZvaWQg
YWRkKEdlbmVyaWNDdWVEYXRhJiwgVGV4dFRyYWNrQ3VlR2VuZXJpYyYpOworICAgIHZvaWQgYWRk
KEluYmFuZEdlbmVyaWNDdWUmLCBUZXh0VHJhY2tDdWVHZW5lcmljJik7CisKKyAgICBzaXplX3Qg
ZmluZEluZGV4T2ZQYWlyKFRleHRUcmFja0N1ZSYpOworICAgIHNpemVfdCBmaW5kSW5kZXhPZlBh
aXIoSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdm9pZCByZW1vdmUoVGV4dFRyYWNrQ3VlJik7
Ci0gICAgdm9pZCByZW1vdmUoR2VuZXJpY0N1ZURhdGEmKTsKKyAgICB2b2lkIHJlbW92ZShJbmJh
bmRHZW5lcmljQ3VlJik7CiAKLSAgICBHZW5lcmljQ3VlRGF0YSogZmluZChUZXh0VHJhY2tDdWUm
KTsKLSAgICBUZXh0VHJhY2tDdWVHZW5lcmljKiBmaW5kKEdlbmVyaWNDdWVEYXRhJik7CisgICAg
SW5iYW5kR2VuZXJpY0N1ZSogZmluZChUZXh0VHJhY2tDdWUmKTsKKyAgICBUZXh0VHJhY2tDdWVH
ZW5lcmljKiBmaW5kKEluYmFuZEdlbmVyaWNDdWUmKTsKIAogcHJpdmF0ZToKLSAgICB1c2luZyBD
dWVUb0RhdGFNYXAgPSBIYXNoTWFwPFJlZlB0cjxUZXh0VHJhY2tDdWU+LCBSZWZQdHI8R2VuZXJp
Y0N1ZURhdGE+PjsKLSAgICB1c2luZyBDdWVEYXRhVG9DdWVNYXAgPSBIYXNoTWFwPFJlZlB0cjxH
ZW5lcmljQ3VlRGF0YT4sIFJlZlB0cjxUZXh0VHJhY2tDdWVHZW5lcmljPj47CisgICAgc3RydWN0
IEdlbmVyaWNDdWVQYWlyIHsKKyAgICAgICAgR2VuZXJpY0N1ZVBhaXIoKSA9IGRlZmF1bHQ7CisK
KyAgICAgICAgUmVmUHRyPEluYmFuZEdlbmVyaWNDdWU+IG1fY3VlRGF0YTsKKyAgICAgICAgUmVm
UHRyPFRleHRUcmFja0N1ZUdlbmVyaWM+IG1fY3VlOworICAgIH07CiAKLSAgICBDdWVUb0RhdGFN
YXAgbV9jdWVUb0RhdGFNYXA7Ci0gICAgQ3VlRGF0YVRvQ3VlTWFwIG1fZGF0YVRvQ3VlTWFwOwor
ICAgIFZlY3RvcjxHZW5lcmljQ3VlUGFpcj4gbV9jdWVzOwogfTsKIAogY2xhc3MgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjayBmaW5hbCA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2ssIHByaXZhdGUgV2Vi
VlRUUGFyc2VyQ2xpZW50IHsKQEAgLTYwLDEyICs2NiwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEluYmFuZEdlbmVyaWNUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRleHRU
cmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgYWRkR2Vu
ZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1
ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShHZW5l
cmljQ3VlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmlj
Q3VlJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUm
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZp
bmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmKSBmaW5h
bDsKIAotICAgIHZvaWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYs
IEdlbmVyaWNDdWVEYXRhJik7CisgICAgdm9pZCB1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJh
Y2tDdWVHZW5lcmljJiwgSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBw
YXJzZXIoKTsKICAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCA4
ZmVmOWYzNGFlYWJlMDM1NTE0OTNiNjQ1ZWMxYTZlNWU0ZjM4YTkxLi4zMGZjMjUyN2YwNTJiNDdm
ODA0N2QxNjI3OTJmZTdkN2FiZjI5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kVGV4dFRyYWNrLmgKQEAgLTc3LDkgKzc3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZSYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAj
ZW5kaWYKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIG92ZXJyaWRl
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2Vu
ZXJpY0N1ZURhdGEmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdm9p
ZCByZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikg
b3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgdXBkYXRlR2VuZXJp
Y0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFk
ZXIoU3RyaW5nJiYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lk
IHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmgKaW5kZXggZmQwY2IzZWIzMTE4Y2MzZjMzYzliNjg4NmFhMGY2MmEw
NjRmMWQ0ZS4uNTA3NjY3ZTI0MWYxY2FmMTA4OTgzMDg3MWI0NGI4Nzc2YzM2MzZhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTMy
LDggKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHZW5lcmljQ3VlRGF0
YTsKLQogLy8gQSAiZ2VuZXJpYyIgY3VlIGlzIGEgbm9uLVdlYlZUVCBjdWUsIHNvIGl0IGlzIG5v
dCBwb3NpdGlvbmVkL3NpemVkIHdpdGggdGhlIFdlYlZUVCBsb2dpYy4KIGNsYXNzIFRleHRUcmFj
a0N1ZUdlbmVyaWMgZmluYWwgOiBwdWJsaWMgVlRUQ3VlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0VYUE9SVChUZXh0VHJhY2tDdWVHZW5lcmljLCBXRUJDT1JFX0VYUE9SVCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3Vl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3VlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmI3MzAzZjU4ZjBmMjhlNTlhNjZiNDlkM2ZmZWEzNGNhYWI5MzMxNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdl
bmVyaWNDdWUuaApAQCAtMCwwICsxLDM5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdlbmVyaWNDdWVEYXRhIHsKKyAgICBHZW5lcmlj
Q3VlRGF0YSgpID0gZGVmYXVsdDsKKworICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKKyAgICBN
ZWRpYVRpbWUgbV9lbmRUaW1lOworICAgIFN0cmluZyBtX2lkOworICAgIFN0cmluZyBtX2NvbnRl
bnQ7CisgICAgU3RyaW5nIG1fZm9udE5hbWU7CisgICAgZG91YmxlIG1fbGluZSB7IC0xIH07Cisg
ICAgZG91YmxlIG1fcG9zaXRpb24geyAtMSB9OworICAgIGRvdWJsZSBtX3NpemUgeyAtMSB9Owor
ICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZSB7IDAgfTsKKyAgICBkb3VibGUgbV9yZWxhdGl2ZUZv
bnRTaXplIHsgMCB9OworICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOworICAgIENvbG9yIG1f
YmFja2dyb3VuZENvbG9yOworICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7CisKKyAgICBlbnVt
IGNsYXNzIEFsaWdubWVudCA6IHVpbnQ4X3QgeyBOb25lLCBTdGFydCwgTWlkZGxlLCBFbmQgfTsK
KyAgICBBbGlnbm1lbnQgbV9hbGlnbiB7IEFsaWdubWVudDo6Tm9uZSB9OworCisgICAgZW51bSBj
bGFzcyBTdGF0dXMgOiB1aW50OF90IHsgVW5pbml0aWFsaXplZCwgUGFydGlhbCwgQ29tcGxldGUg
fTsKKyAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6OlVuaW5pdGlhbGl6ZWQgfTsKKworICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxHZW5lcmljQ3Vl
RGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxN
ZWRpYVRpbWU+IHN0YXJ0VGltZTsKKyAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CisgICAg
ICAgIGlmICghc3RhcnRUaW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZFRpbWU7CisgICAgICAgIGRlY29kZXIgPj4g
ZW5kVGltZTsKKyAgICAgICAgaWYgKCFlbmRUaW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNv
bnRlbnQ7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudDsKKyAgICAgICAgaWYgKCFjb250ZW50
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IGZvbnROYW1lOworICAgICAgICBkZWNvZGVyID4+IGZvbnROYW1lOworICAgICAgICBp
ZiAoIWZvbnROYW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IGxpbmU7CisgICAgICAgIGRlY29kZXIgPj4gbGluZTsKKyAgICAg
ICAgaWYgKCFsaW5lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IHBvc2l0aW9uOworICAgICAgICBkZWNvZGVyID4+IHBvc2l0aW9u
OworICAgICAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IHNpemU7CisgICAgICAgIGRlY29kZXIgPj4g
c2l6ZTsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IGJhc2VGb250U2l6ZTsKKyAgICAgICAgZGVj
b2RlciA+PiBiYXNlRm9udFNpemU7CisgICAgICAgIGlmICghYmFzZUZvbnRTaXplKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IHJl
bGF0aXZlRm9udFNpemU7CisgICAgICAgIGRlY29kZXIgPj4gcmVsYXRpdmVGb250U2l6ZTsKKyAg
ICAgICAgaWYgKCFyZWxhdGl2ZUZvbnRTaXplKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBDb2xvciBtX2ZvcmVncm91bmRDb2xvcjsKKyAgICAgICAgQ29sb3Ig
bV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7CisKKyAg
ICAgICAgT3B0aW9uYWw8Q29sb3I+IGZvcmVncm91bmRDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+
PiBmb3JlZ3JvdW5kQ29sb3I7CisgICAgICAgIGlmICghZm9yZWdyb3VuZENvbG9yKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDb2xvcj4gYmFj
a2dyb3VuZENvbG9yOworICAgICAgICBkZWNvZGVyID4+IGJhY2tncm91bmRDb2xvcjsKKyAgICAg
ICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPENvbG9yPiBoaWdobGlnaHRDb2xvcjsKKyAgICAgICAgZGVj
b2RlciA+PiBoaWdobGlnaHRDb2xvcjsKKyAgICAgICAgaWYgKCFoaWdobGlnaHRDb2xvcikKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8QWxpZ25t
ZW50PiBhbGlnbm1lbnQ7CisgICAgICAgIGRlY29kZXIgPj4gYWxpZ25tZW50OworICAgICAgICBp
ZiAoIWFsaWdubWVudCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8U3RhdHVzPiBzdGF0dXM7CisgICAgICAgIGRlY29kZXIgPj4gc3RhdHVzOwor
ICAgICAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpzdGFydFRpbWUpLAorICAg
ICAgICAgICAgV1RGTW92ZSgqZW5kVGltZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmlkZW50
aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqY29udGVudCksCisgICAgICAgICAgICBXVEZN
b3ZlKCpmb250TmFtZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmxpbmUpLAorICAgICAgICAg
ICAgV1RGTW92ZSgqcG9zaXRpb24pLAorICAgICAgICAgICAgV1RGTW92ZSgqc2l6ZSksCisgICAg
ICAgICAgICBXVEZNb3ZlKCpiYXNlRm9udFNpemUpLAorICAgICAgICAgICAgV1RGTW92ZSgqcmVs
YXRpdmVGb250U2l6ZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmZvcmVncm91bmRDb2xvciks
CisgICAgICAgICAgICBXVEZNb3ZlKCpiYWNrZ3JvdW5kQ29sb3IpLAorICAgICAgICAgICAgV1RG
TW92ZSgqaGlnaGxpZ2h0Q29sb3IpLAorCisgICAgICAgICAgICBXVEZNb3ZlKCphbGlnbm1lbnQp
LAorICAgICAgICAgICAgV1RGTW92ZSgqc3RhdHVzKSwKKyAgICAgICAgfX07CisgICAgfQorCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3N0YXJ0VGltZTsKKyAgICAg
ICAgZW5jb2RlciA8PCBtX2VuZFRpbWU7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICAg
ICAgZW5jb2RlciA8PCBtX2NvbnRlbnQ7CisgICAgICAgIGVuY29kZXIgPDwgbV9mb250TmFtZTsK
KyAgICAgICAgZW5jb2RlciA8PCBtX2xpbmU7CisgICAgICAgIGVuY29kZXIgPDwgbV9wb3NpdGlv
bjsKKyAgICAgICAgZW5jb2RlciA8PCBtX3NpemU7CisgICAgICAgIGVuY29kZXIgPDwgbV9iYXNl
Rm9udFNpemU7CisgICAgICAgIGVuY29kZXIgPDwgbV9yZWxhdGl2ZUZvbnRTaXplOworICAgICAg
ICBlbmNvZGVyIDw8IG1fZm9yZWdyb3VuZENvbG9yOworICAgICAgICBlbmNvZGVyIDw8IG1fYmFj
a2dyb3VuZENvbG9yOworICAgICAgICBlbmNvZGVyIDw8IG1faGlnaGxpZ2h0Q29sb3I7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRW51bShtX2FsaWduKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKG1fc3RhdHVzKTsKKyAgICB9Cit9OworCisKK2NsYXNzIEluYmFuZEdlbmVyaWNDdWUgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbmJhbmRHZW5lcmljQ3VlPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IElu
YmFuZEdlbmVyaWNDdWUpOyB9CisgICAgc3RhdGljIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBjcmVh
dGUoR2VuZXJpY0N1ZURhdGEmJiBjdWVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFu
ZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSkpOyB9CisKKyAgICBNZWRpYVRpbWUgc3RhcnRU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fc3RhcnRUaW1lOyB9CisgICAgdm9pZCBz
ZXRTdGFydFRpbWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydFRpbWUpIHsgbV9jdWVEYXRhLm1fc3Rh
cnRUaW1lID0gc3RhcnRUaW1lOyB9CisKKyAgICBNZWRpYVRpbWUgZW5kVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VlRGF0YS5tX2VuZFRpbWU7IH0KKyAgICB2b2lkIHNldEVuZFRpbWUoY29uc3Qg
TWVkaWFUaW1lJiBlbmRUaW1lKSB7IG1fY3VlRGF0YS5tX2VuZFRpbWUgPSBlbmRUaW1lOyB9CisK
KyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1faWQ7IH0K
KyAgICB2b2lkIHNldElkKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9jdWVEYXRhLm1faWQgPSBpZDsg
fQorCisgICAgY29uc3QgU3RyaW5nJiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRh
Lm1fY29udGVudDsgfQorICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQp
IHsgbV9jdWVEYXRhLm1fY29udGVudCA9IGNvbnRlbnQ7IH0KKworICAgIGRvdWJsZSBsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fbGluZTsgfQorICAgIHZvaWQgc2V0TGluZShkb3Vi
bGUgbGluZSkgeyBtX2N1ZURhdGEubV9saW5lID0gbGluZTsgfQorCisgICAgZG91YmxlIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNl
dFBvc2l0aW9uKGRvdWJsZSBwb3NpdGlvbikgeyBtX2N1ZURhdGEubV9wb3NpdGlvbiA9IHBvc2l0
aW9uOyB9CisKKyAgICBkb3VibGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX3Np
emU7IH0KKyAgICB2b2lkIHNldFNpemUoZG91YmxlIHNpemUpIHsgbV9jdWVEYXRhLm1fc2l6ZSA9
IHNpemU7IH0KKworICAgIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQgYWxpZ24oKSBjb25zdCB7
IHJldHVybiBtX2N1ZURhdGEubV9hbGlnbjsgfQorICAgIHZvaWQgc2V0QWxpZ24oR2VuZXJpY0N1
ZURhdGE6OkFsaWdubWVudCBhbGlnbikgeyBtX2N1ZURhdGEubV9hbGlnbiA9IGFsaWduOyB9CisK
KyAgICBjb25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1f
Zm9udE5hbWU7IH0KKyAgICB2b2lkIHNldEZvbnROYW1lKGNvbnN0IFN0cmluZyYgZm9udE5hbWUp
IHsgbV9jdWVEYXRhLm1fZm9udE5hbWUgPSBmb250TmFtZTsgfQorCisgICAgZG91YmxlIGJhc2VG
b250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX2Jhc2VGb250U2l6ZTsgfQorICAg
IHZvaWQgc2V0QmFzZUZvbnRTaXplKGRvdWJsZSBiYXNlRm9udFNpemUpIHsgbV9jdWVEYXRhLm1f
YmFzZUZvbnRTaXplID0gYmFzZUZvbnRTaXplOyB9CisKKyAgICBkb3VibGUgcmVsYXRpdmVGb250
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemU7IH0KKyAg
ICB2b2lkIHNldFJlbGF0aXZlRm9udFNpemUoZG91YmxlIHJlbGF0aXZlRm9udFNpemUpIHsgbV9j
dWVEYXRhLm1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0KKworICAgIGNv
bnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9m
b3JlZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpIHsgbV9jdWVEYXRhLm1fZm9yZWdyb3VuZENvbG9yID0gY29sb3I7IH0KKworICAg
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEu
bV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpIHsgbV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KKwor
ICAgIGNvbnN0IENvbG9yJiBoaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0
YS5tX2hpZ2hsaWdodENvbG9yOyB9CisgICAgdm9pZCBzZXRIaWdobGlnaHRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpIHsgbV9jdWVEYXRhLm1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsgfQorCisg
ICAgR2VuZXJpY0N1ZURhdGE6OlN0YXR1cyBzdGF0dXMoKSB7IHJldHVybiBtX2N1ZURhdGEubV9z
dGF0dXM7IH0KKyAgICB2b2lkIHNldFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6U3RhdHVzIHN0YXR1
cykgeyBtX2N1ZURhdGEubV9zdGF0dXMgPSBzdGF0dXM7IH0KKworICAgIGJvb2wgZG9lc0V4dGVu
ZEN1ZURhdGEoY29uc3QgSW5iYW5kR2VuZXJpY0N1ZSYpIGNvbnN0OworCisgICAgU3RyaW5nIHRv
SlNPTlN0cmluZygpIGNvbnN0OworCisgICAgY29uc3QgR2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGE7IH0KKworcHJpdmF0ZToKKyAgICBJbmJhbmRHZW5l
cmljQ3VlKCkgPSBkZWZhdWx0OworICAgIEluYmFuZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEm
JiBjdWVEYXRhKQorICAgICAgICA6IG1fY3VlRGF0YShXVEZNb3ZlKGN1ZURhdGEpKQorICAgIHsK
KyAgICB9CisKKyAgICBHZW5lcmljQ3VlRGF0YSBtX2N1ZURhdGE7Cit9OworCitpbmxpbmUgU3Ry
aW5nIEluYmFuZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZygpIGNvbnN0Cit7CisgICAgYXV0byBv
YmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAg
IG9iamVjdC0+c2V0U3RyaW5nKCJ0ZXh0Il9zLCBtX2N1ZURhdGEubV9jb250ZW50KTsKKyNlbmRp
ZgorICAgIG9iamVjdC0+c2V0RG91YmxlKCJzdGFydCJfcywgbV9jdWVEYXRhLm1fc3RhcnRUaW1l
LnRvRG91YmxlKCkpOworICAgIG9iamVjdC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fY3VlRGF0YS5t
X2VuZFRpbWUudG9Eb3VibGUoKSk7CisKKyAgICBjb25zdCBjaGFyKiBzdGF0dXM7CisgICAgc3dp
dGNoIChtX2N1ZURhdGEubV9zdGF0dXMpIHsKKyAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGF0
dXM6OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgIHN0YXR1cyA9ICJVbmluaXRpYWxpemVkIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpQYXJ0aWFsOgor
ICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2Vu
ZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29tcGxldGU6CisgICAgICAgIHN0YXR1cyA9ICJDb21wbGV0
ZSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvYmplY3QtPnNldFN0cmluZygic3RhdHVz
Iiwgc3RhdHVzKTsKKworICAgIGlmICghbV9jdWVEYXRhLm1faWQuaXNFbXB0eSgpKQorICAgICAg
ICBvYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2N1ZURhdGEubV9pZCk7CisKKyAgICBpZiAobV9j
dWVEYXRhLm1fbGluZSA+IDApCisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJsaW5lIl9zLCBt
X2N1ZURhdGEubV9saW5lKTsKKworICAgIGlmIChtX2N1ZURhdGEubV9zaXplID4gMCkKKyAgICAg
ICAgb2JqZWN0LT5zZXREb3VibGUoInNpemUiX3MsIG1fY3VlRGF0YS5tX3NpemUpOworCisgICAg
aWYgKG1fY3VlRGF0YS5tX3Bvc2l0aW9uID4gMCkKKyAgICAgICAgb2JqZWN0LT5zZXREb3VibGUo
InBvc2l0aW9uIl9zLCBtX2N1ZURhdGEubV9wb3NpdGlvbik7CisKKyAgICBpZiAobV9jdWVEYXRh
Lm1fYWxpZ24gIT0gR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6Tm9uZSkgeworICAgICAgICBj
b25zdCBjaGFyKiBhbGlnbjsKKyAgICAgICAgc3dpdGNoIChtX2N1ZURhdGEubV9hbGlnbikgewor
ICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0OgorICAgICAgICAg
ICAgYWxpZ24gPSAiU3RhcnQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2Vu
ZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlOgorICAgICAgICAgICAgYWxpZ24gPSAiTWlk
ZGxlIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpB
bGlnbm1lbnQ6OkVuZDoKKyAgICAgICAgICAgIGFsaWduID0gIkVuZCI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpOb25lOgorICAg
ICAgICAgICAgYWxpZ24gPSAiTm9uZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBvYmplY3QtPnNldFN0cmluZygiYWxpZ24iX3MsIGFsaWduKTsKKyAgICB9CisKKyAg
ICBpZiAobV9jdWVEYXRhLm1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoImZvcmVncm91bmRDb2xvciJfcywgbV9jdWVEYXRhLm1fZm9yZWdyb3Vu
ZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFja2dyb3VuZENv
bG9yLmlzVmFsaWQoKSkKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImJhY2tncm91bmRDb2xv
ciJfcywgbV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisKKyAgICBp
ZiAobV9jdWVEYXRhLm1faGlnaGxpZ2h0Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICBvYmplY3Qt
PnNldFN0cmluZygiaGlnaGxpZ2h0Q29sb3IiX3MsIG1fY3VlRGF0YS5tX2hpZ2hsaWdodENvbG9y
LnNlcmlhbGl6ZWQoKSk7CisKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFzZUZvbnRTaXplKQorICAg
ICAgICBvYmplY3QtPnNldERvdWJsZSgiYmFzZUZvbnRTaXplIl9zLCBtX2N1ZURhdGEubV9iYXNl
Rm9udFNpemUpOworCisgICAgaWYgKG1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemUpCisgICAg
ICAgIG9iamVjdC0+c2V0RG91YmxlKCJyZWxhdGl2ZUZvbnRTaXplIl9zLCBtX2N1ZURhdGEubV9y
ZWxhdGl2ZUZvbnRTaXplKTsKKworICAgIGlmICghbV9jdWVEYXRhLm1fZm9udE5hbWUuaXNFbXB0
eSgpKQorICAgICAgICBvYmplY3QtPnNldFN0cmluZygiZm9udCJfcywgbV9jdWVEYXRhLm1fZm9u
dE5hbWUpOworCisgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3RyaW5nKCk7Cit9CisKK2lubGlu
ZSBib29sIEluYmFuZEdlbmVyaWNDdWU6OmRvZXNFeHRlbmRDdWVEYXRhKGNvbnN0IEluYmFuZEdl
bmVyaWNDdWUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX2N1ZURhdGEubV9yZWxhdGl2ZUZv
bnRTaXplICE9IG90aGVyLm1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFzZUZvbnRTaXplICE9IG90aGVyLm1f
Y3VlRGF0YS5tX2Jhc2VGb250U2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICht
X2N1ZURhdGEubV9wb3NpdGlvbiAhPSBvdGhlci5tX2N1ZURhdGEubV9wb3NpdGlvbikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9saW5lICE9IG90aGVyLm1fY3Vl
RGF0YS5tX2xpbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jdWVEYXRhLm1f
c2l6ZSAhPSBvdGhlci5tX2N1ZURhdGEubV9zaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKG1fY3VlRGF0YS5tX2FsaWduICE9IG90aGVyLm1fY3VlRGF0YS5tX2FsaWduKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY3VlRGF0YS5tX2ZvcmVncm91bmRDb2xvciAh
PSBvdGhlci5tX2N1ZURhdGEubV9mb3JlZ3JvdW5kQ29sb3IpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yICE9IG90aGVyLm1fY3VlRGF0
YS5tX2JhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1
ZURhdGEubV9oaWdobGlnaHRDb2xvciAhPSBvdGhlci5tX2N1ZURhdGEubV9oaWdobGlnaHRDb2xv
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9mb250TmFtZSAh
PSBvdGhlci5tX2N1ZURhdGEubV9mb250TmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2N1ZURhdGEubV9pZCAhPSBvdGhlci5tX2N1ZURhdGEubV9pZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9jb250ZW50ICE9IG90aGVyLm1fY3VlRGF0
YS5tX2NvbnRlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBMb2dBcmd1bWVudDsKK3RlbXBsYXRlIDw+
CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZT4geworICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYgY3Vl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1ZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpB
bGlnbm1lbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50LAorICAgICAgICBXZWJDb3JlOjpHZW5lcmlj
Q3VlRGF0YTo6QWxpZ25tZW50OjpOb25lLAorICAgICAgICBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0
YTo6QWxpZ25tZW50OjpTdGFydCwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OkFs
aWdubWVudDo6TWlkZGxlLAorICAgICAgICBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxpZ25t
ZW50OjpFbmQKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1cywKKyAgICAgICAg
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6VW5pbml0aWFsaXplZCwKKyAgICAgICAg
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbCwKKyAgICAgICAgV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29tcGxldGUKKyAgICA+OworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCBmNDMwNjQ1MThkZjQxOTYx
YjNmNmM2M2E3NmM5OTEzZDE3NjdhZWJjLi5mZDMzZWI5YzBiMTExNmJlOGIzNjg3ZDA5ZjIyZjA0
NmNiZDNhY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNs
dWRlICJJbmJhbmRHZW5lcmljQ3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgpA
QCAtNDEsMTg3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRleHRU
cmFja1ByaXZhdGU7CiBjbGFzcyBJU09XZWJWVFRDdWU7CiAKLWNsYXNzIEdlbmVyaWNDdWVEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8R2VuZXJpY0N1ZURhdGE+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEdlbmVyaWNDdWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEdl
bmVyaWNDdWVEYXRhKTsgfQotCi0gICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRUaW1lOyB9Ci0gICAgdm9pZCBzZXRTdGFydFRpbWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydFRpbWUpIHsgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KLQotICAgIE1lZGlhVGlt
ZSBlbmRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRUaW1lOyB9Ci0gICAgdm9pZCBzZXRFbmRU
aW1lKGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSkgeyBtX2VuZFRpbWUgPSBlbmRUaW1lOyB9Ci0K
LSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQg
c2V0SWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KLQotICAgIGNvbnN0IFN0cmlu
ZyYgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudDsgfQotICAgIHZvaWQgc2V0Q29u
dGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpIHsgbV9jb250ZW50ID0gY29udGVudDsgfQotCi0g
ICAgZG91YmxlIGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KLSAgICB2b2lkIHNldExp
bmUoZG91YmxlIGxpbmUpIHsgbV9saW5lID0gbGluZTsgfQotCi0gICAgZG91YmxlIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0UG9zaXRpb24oZG91
YmxlIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQotCi0gICAgZG91YmxlIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB2b2lkIHNldFNpemUoZG91YmxlIHNp
emUpIHsgbV9zaXplID0gc2l6ZTsgfQotCi0gICAgZW51bSBBbGlnbm1lbnQgeyBOb25lLCBTdGFy
dCwgTWlkZGxlLCBFbmQgfTsKLSAgICBBbGlnbm1lbnQgYWxpZ24oKSBjb25zdCB7IHJldHVybiBt
X2FsaWduOyB9Ci0gICAgdm9pZCBzZXRBbGlnbihBbGlnbm1lbnQgYWxpZ24pIHsgbV9hbGlnbiA9
IGFsaWduOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9mb250TmFtZTsgfQotICAgIHZvaWQgc2V0Rm9udE5hbWUoY29uc3QgU3RyaW5nJiBmb250TmFt
ZSkgeyBtX2ZvbnROYW1lID0gZm9udE5hbWU7IH0KLQotICAgIGRvdWJsZSBiYXNlRm9udFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2Jhc2VGb250U2l6ZTsgfQotICAgIHZvaWQgc2V0QmFzZUZvbnRT
aXplKGRvdWJsZSBiYXNlRm9udFNpemUpIHsgbV9iYXNlRm9udFNpemUgPSBiYXNlRm9udFNpemU7
IH0KLQotICAgIGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
dGl2ZUZvbnRTaXplOyB9Ci0gICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXplKGRvdWJsZSByZWxh
dGl2ZUZvbnRTaXplKSB7IG1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0K
LQotICAgIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2Zv
cmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvciA9IGNvbG9yOyB9Ci0KLSAgICBjb25zdCBDb2xv
ciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0K
LSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNr
Z3JvdW5kQ29sb3IgPSBjb2xvcjsgfQotCi0gICAgY29uc3QgQ29sb3ImIGhpZ2hsaWdodENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0SGlnaGxp
Z2h0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsg
fQotCi0gICAgZW51bSBTdGF0dXMgeyBVbmluaXRpYWxpemVkLCBQYXJ0aWFsLCBDb21wbGV0ZSB9
OwotICAgIFN0YXR1cyBzdGF0dXMoKSB7IHJldHVybiBtX3N0YXR1czsgfQotICAgIHZvaWQgc2V0
U3RhdHVzKFN0YXR1cyBzdGF0dXMpIHsgbV9zdGF0dXMgPSBzdGF0dXM7IH0KLQotICAgIGJvb2wg
ZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1ZURhdGEmKSBjb25zdDsKLQotICAgIFN0
cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmljQ3VlRGF0
YSgpID0gZGVmYXVsdDsKLQotICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKLSAgICBNZWRpYVRp
bWUgbV9lbmRUaW1lOwotICAgIFN0cmluZyBtX2lkOwotICAgIFN0cmluZyBtX2NvbnRlbnQ7Ci0g
ICAgZG91YmxlIG1fbGluZSB7IC0xIH07Ci0gICAgZG91YmxlIG1fcG9zaXRpb24geyAtMSB9Owot
ICAgIGRvdWJsZSBtX3NpemUgeyAtMSB9OwotICAgIEFsaWdubWVudCBtX2FsaWduIHsgTm9uZSB9
OwotICAgIFN0cmluZyBtX2ZvbnROYW1lOwotICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZSB7IDAg
fTsKLSAgICBkb3VibGUgbV9yZWxhdGl2ZUZvbnRTaXplIHsgMCB9OwotICAgIENvbG9yIG1fZm9y
ZWdyb3VuZENvbG9yOwotICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwotICAgIENvbG9yIG1f
aGlnaGxpZ2h0Q29sb3I7Ci0gICAgU3RhdHVzIG1fc3RhdHVzIHsgVW5pbml0aWFsaXplZCB9Owot
fTsKLQotaW5saW5lIFN0cmluZyBHZW5lcmljQ3VlRGF0YTo6dG9KU09OU3RyaW5nKCkgY29uc3QK
LXsKLSAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KLSNpZiAhTE9H
X0RJU0FCTEVECi0gICAgb2JqZWN0LT5zZXRTdHJpbmcoInRleHQiX3MsIG1fY29udGVudCk7Ci0j
ZW5kaWYKLSAgICBvYmplY3QtPnNldERvdWJsZSgic3RhcnQiX3MsIG1fc3RhcnRUaW1lLnRvRG91
YmxlKCkpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fZW5kVGltZS50b0RvdWJs
ZSgpKTsKLQotICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKLSAgICBzd2l0Y2ggKG1fc3RhdHVzKSB7
Ci0gICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgc3RhdHVz
ID0gIlVuaW5pdGlhbGl6ZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdlbmVyaWNDdWVE
YXRhOjpQYXJ0aWFsOgotICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlOgotICAgICAgICBzdGF0dXMgPSAi
Q29tcGxldGUiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmco
InN0YXR1cyIsIHN0YXR1cyk7Ci0KLSAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQotICAgICAgICBv
YmplY3QtPnNldFN0cmluZygiaWQiLCBtX2lkKTsKLQotICAgIGlmIChtX2xpbmUgPiAwKQotICAg
ICAgICBvYmplY3QtPnNldERvdWJsZSgibGluZSJfcywgbV9saW5lKTsKLQotICAgIGlmIChtX3Np
emUgPiAwKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgic2l6ZSJfcywgbV9zaXplKTsKLQot
ICAgIGlmIChtX3Bvc2l0aW9uID4gMCkKLSAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInBvc2l0
aW9uIl9zLCBtX3Bvc2l0aW9uKTsKLQotICAgIGlmIChtX2FsaWduICE9IE5vbmUpIHsKLSAgICAg
ICAgY29uc3QgY2hhciogYWxpZ247Ci0gICAgICAgIHN3aXRjaCAobV9hbGlnbikgewotICAgICAg
ICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGFydDoKLSAgICAgICAgICAgIGFsaWduID0gIlN0YXJ0
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpNaWRk
bGU6Ci0gICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkVuZDoKLSAgICAgICAgICAgIGFsaWduID0gIkVu
ZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6Tm9u
ZToKLSAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbik7Ci0gICAg
fQotCi0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgb2JqZWN0
LT5zZXRTdHJpbmcoImZvcmVncm91bmRDb2xvciJfcywgbV9mb3JlZ3JvdW5kQ29sb3Iuc2VyaWFs
aXplZCgpKTsKLQotICAgIGlmIChtX2JhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAg
IG9iamVjdC0+c2V0U3RyaW5nKCJiYWNrZ3JvdW5kQ29sb3IiX3MsIG1fYmFja2dyb3VuZENvbG9y
LnNlcmlhbGl6ZWQoKSk7Ci0KLSAgICBpZiAobV9oaWdobGlnaHRDb2xvci5pc1ZhbGlkKCkpCi0g
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJoaWdobGlnaHRDb2xvciJfcywgbV9oaWdobGlnaHRD
b2xvci5zZXJpYWxpemVkKCkpOwotCi0gICAgaWYgKG1fYmFzZUZvbnRTaXplKQotICAgICAgICBv
YmplY3QtPnNldERvdWJsZSgiYmFzZUZvbnRTaXplIl9zLCBtX2Jhc2VGb250U2l6ZSk7Ci0KLSAg
ICBpZiAobV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgicmVs
YXRpdmVGb250U2l6ZSJfcywgbV9yZWxhdGl2ZUZvbnRTaXplKTsKLQotICAgIGlmICghbV9mb250
TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJmb250Il9zLCBtX2Zv
bnROYW1lKTsKLQotICAgIHJldHVybiBvYmplY3QtPnRvSlNPTlN0cmluZygpOwotfQotCi1pbmxp
bmUgYm9vbCBHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1
ZURhdGEmIG90aGVyKSBjb25zdAotewotICAgIGlmIChtX3JlbGF0aXZlRm9udFNpemUgIT0gb3Ro
ZXIubV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
YmFzZUZvbnRTaXplICE9IG90aGVyLm1fYmFzZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChtX2xpbmUgIT0gb3RoZXIubV9saW5lKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1fc2l6ZSAhPSBvdGhlci5tX3NpemUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAobV9hbGlnbiAhPSBvdGhlci5tX2FsaWduKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yICE9IG90aGVyLm1fZm9yZWdyb3Vu
ZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fYmFja2dyb3VuZENvbG9y
ICE9IG90aGVyLm1fYmFja2dyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG1faGlnaGxpZ2h0Q29sb3IgIT0gb3RoZXIubV9oaWdobGlnaHRDb2xvcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2ZvbnROYW1lICE9IG90aGVyLm1fZm9udE5hbWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9pZCAhPSBvdGhlci5tX2lkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fY29udGVudCAhPSBvdGhlci5tX2NvbnRlbnQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAKIGNs
YXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgOiBwdWJsaWMgVHJhY2tQcml2YXRlQmFz
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudCgpID0gZGVmYXVsdDsKQEAgLTIzNCw5ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpID0gMDsKICNlbmRpZgogCi0gICAg
dmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKQEAgLTI0NSwxOSArNjUsNCBAQCBw
dWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ7Ci0KLXRlbXBsYXRlIDw+
Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+IHsKLSAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiBjdWUpCi0g
ICAgewotICAgICAgICByZXR1cm4gY3VlLnRvSlNPTlN0cmluZygpOwotICAgIH0KLX07Ci0KLX0K
LQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDliNTI4YjRjY2JlZmNh
NWEwZDJmODA0NThkNDI2YjQ0YTRjNGE1MDYuLjJjZDQyYTk5YWY0Yzg5NWFlMTFmYzE4MDg2ZDdm
ZDgzYTQ2NzU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGJvb2wgbWFrZVJHQkEzMkZyb21B
UkdCQ0ZBcnJheShDRkFycmF5UmVmIGNvbG9yQXJyYXksIFJHQkEzMiYgY29sb3IpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1
ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcsIEdlbmVy
aWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZywg
SW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFMOwog
ICAgIC8vIFNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMgd2UgdHJhbnNsYXRlIGludG8gcGVyLWN1ZSBX
ZWJWVFQgc2V0dGluZ3MgYXJlIHJlcGVhdGVkIG9uIGVhY2ggcGFydCBvZiBhbiBhdHRyaWJ1dGVk
IHN0cmluZyBzbyBvbmx5CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2b2lkIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBh
dHRyaQogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBBbGlnbjsKIAogICAgICAgICAgICAg
ICAgIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1l
bnRUeXBlX1N0YXJ0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAgICAgICAgICAgICAg
ICAgY3VlRGF0YS5zZXRBbGlnbihHZW5lcmljQ3VlRGF0YTo6U3RhcnQpOworICAgICAgICAgICAg
ICAgICAgICBjdWVEYXRhLnNldEFsaWduKEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0
KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcs
IGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFs
VG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6
Ok1pZGRsZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1
ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0
cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX0VuZCwg
MCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0
QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkVuZCk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEu
c2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6RW5kKTsKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0z
MjMsNyArMzIzLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0
cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICBpZiAoY291bnQpCiAg
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRlZCAiLCBjb3VudCwgY291bnQgPiAx
ID8gIiBjdWVzIiA6ICIgY3VlIiwgIiBhdCB0aW1lICIsIHRpbWUpOwogCi0gICAgVmVjdG9yPFJl
ZjxHZW5lcmljQ3VlRGF0YT4+IGFycml2aW5nQ3VlczsKKyAgICBWZWN0b3I8UmVmPEluYmFuZEdl
bmVyaWNDdWU+PiBhcnJpdmluZ0N1ZXM7CiAgICAgaWYgKGNvdW50KSB7CiAgICAgICAgIGZvciAo
Q0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgIENGQXR0cmlidXRl
ZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nID0gc3RhdGljX2Nhc3Q8Q0ZBdHRyaWJ1dGVkU3Ry
aW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dHJpYnV0ZWRTdHJpbmdzLCBpKSk7CkBA
IC0zMzEsNyArMzMxLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
QXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgICAgIGlm
ICghYXR0cmlidXRlZFN0cmluZyB8fCAhQ0ZBdHRyaWJ1dGVkU3RyaW5nR2V0TGVuZ3RoKGF0dHJp
YnV0ZWRTdHJpbmcpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBh
dXRvIGN1ZURhdGEgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRv
IGN1ZURhdGEgPSBJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHByb2Nl
c3NDdWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZWRTdHJpbmcsIGN1ZURhdGEuZ2V0KCkpOwogICAgICAg
ICAgICAgaWYgKCFjdWVEYXRhLT5jb250ZW50KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAg
ICAgICAgICAgIGlmIChjdWVEYXRhLT5wb3NpdGlvbigpID49IDAgJiYgY3VlRGF0YS0+c2l6ZSgp
ID4gMCkKICAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRQb3NpdGlvbihjdWVEYXRhLT5wb3Np
dGlvbigpIC0gY3VlRGF0YS0+c2l6ZSgpIC8gMik7CiAKLSAgICAgICAgICAgIGN1ZURhdGEtPnNl
dFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6UGFydGlhbCk7CisgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbCk7CiAKICAgICAgICAgICAg
IGFycml2aW5nQ3Vlcy5hcHBlbmQoV1RGTW92ZShjdWVEYXRhKSk7CiAgICAgICAgIH0KQEAgLTM1
Nyw3ICszNTcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRy
aWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogICAgICAgICBpZiAobV9jdXJy
ZW50Q3VlRW5kVGltZSA+PSBtX2N1cnJlbnRDdWVTdGFydFRpbWUpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgY3VlRGF0YSA6IG1fY3VlcykgewogICAgICAgICAgICAgICAgIC8vIFNlZSBpZiBv
bmUgb2YgdGhlIG5ld2x5LWFycml2ZWQgY3VlcyBpcyBhbiBleHRlbnNpb24gb2YgdGhpcyBjdWUu
Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxHZW5lcmljQ3VlRGF0YT4+IG5vbkV4dGVuc2lv
bkN1ZXM7CisgICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxJbmJhbmRHZW5lcmljQ3VlPj4gbm9u
RXh0ZW5zaW9uQ3VlczsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGFycml2aW5nQ3VlIDog
YXJyaXZpbmdDdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJyaXZpbmdDdWUtPmRv
ZXNFeHRlbmRDdWVEYXRhKCpjdWVEYXRhKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vbkV4
dGVuc2lvbkN1ZXMuYXBwZW5kKFdURk1vdmUoYXJyaXZpbmdDdWUpKTsKQEAgLTM3NCw3ICszNzQs
NyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRyaWJ1dGVkU3Ry
aW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogCiAgICAgICAgICAgICAgICAgaWYgKG1fcGVu
ZGluZ0N1ZVN0YXR1cyA9PSBWYWxpZCkgewogICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRFbmRUaW1lKG1fY3VycmVudEN1ZUVuZFRpbWUpOwotICAgICAgICAgICAgICAgICAgICBjdWVE
YXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKTsKKyAgICAgICAgICAgICAg
ICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRl
KTsKIAogICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRp
bmcgY3VlICIsICpjdWVEYXRhKTsKIApAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3ZlQ29tcGxldGVkQ3VlcygpCiAgICAgICAgIGxvbmcgY3Vy
cmVudEN1ZSA9IG1fY3Vlcy5zaXplKCkgLSAxOwogICAgICAgICBmb3IgKDsgY3VycmVudEN1ZSA+
PSAwOyAtLWN1cnJlbnRDdWUpIHsKICAgICAgICAgICAgIGF1dG8mIGN1ZSA9IG1fY3Vlc1tjdXJy
ZW50Q3VlXTsKLSAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9IEdlbmVyaWNDdWVEYXRh
OjpDb21wbGV0ZSkKKyAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9IEdlbmVyaWNDdWVE
YXRhOjpTdGF0dXM6OkNvbXBsZXRlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3ZpbmcgY3VlICIsICpjdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggNWQ4
NzEwNzM3YTM0ZjdhNTNiODhmNWIzY2ViMzBiNGRhZmM5M2ViOC4uNjM0M2U0NTczN2VjZTg1MmIw
MThjOWFiYmMwMDJmYzYxMTlmOGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRyYWNrUGFyZW50KiwgQ3Vl
Rm9ybWF0KTsKIAotICAgIHZvaWQgcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3Ry
aW5nUmVmLCBHZW5lcmljQ3VlRGF0YSYpOworICAgIHZvaWQgcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMo
Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmLCBJbmJhbmRHZW5lcmljQ3VlJik7CiAgICAgdm9pZCBwcm9j
ZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAg
dm9pZCBwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRpbWUmKTsK
ICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZEN1ZXMoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVRpbWUgbV9jdXJyZW50Q3VlU3RhcnRUaW1lOwogICAgIE1lZGlhVGltZSBt
X2N1cnJlbnRDdWVFbmRUaW1lOwogCi0gICAgVmVjdG9yPFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4+
IG1fY3VlczsKKyAgICBWZWN0b3I8UmVmUHRyPEluYmFuZEdlbmVyaWNDdWU+PiBtX2N1ZXM7CiAg
ICAgQVZGSW5iYW5kVHJhY2tQYXJlbnQqIG1fb3duZXI7CiAKICAgICBlbnVtIFBlbmRpbmdDdWVT
dGF0dXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oCmluZGV4IDM5ZGE1NThlNmRiMzhmMGM3NzhjNTE3ODBhMDc2MmI1ZjY1MDBiMGYu
LjM0MDcwY2M3YTg3NWEwYTBjOTcyNzRhZmRmYjQ3MjlkM2ZkYmRhNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTQ0LDcg
KzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkY7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOwotY2xhc3Mg
R2VuZXJpY0N1ZURhdGE7CiAKIC8vIFVzZSBlYWdlciBpbml0aWFsaXphdGlvbiBmb3IgdGhlIFdl
YWtQdHJGYWN0b3J5IHNpbmNlIHdlIGNhbGwgbWFrZVdlYWtQdHIoKSBmcm9tIGFub3RoZXIgdGhy
ZWFkLgogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiwgV2Vha1B0ckZhY3RvcnlJ
bml0aWFsaXphdGlvbjo6RWFnZXI+LCBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
LCBwdWJsaWMgQVZGSW5iYW5kVHJhY2tQYXJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCmluZGV4IDMyYzliN2Ux
MmU1YTcyY2IwYmJiZDBhOTVlMDMxMThlMDcyNDBiYzEuLmFmNjRjODJiOTAyM2FkMjM0MTQyM2Nm
ODVkYjQ5NWE3NmM0YzZiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApAQCAtMTE4LDE5ICsxMTgsMTkgQEAg
dm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUKIH0KICNlbmRpZgogCi12b2lkIFJlbW90ZVRleHRUcmFj
a1Byb3h5OjphZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgUmVtb3RlVGV4dFRy
YWNrUHJveHk6OmFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGRHZW5lcmljQ3VlKG1faWRlbnRpZmllciwg
Y3VlLmN1ZURhdGEoKSksIG1fcGxheWVyLmlkZW5kaWZpZXIoKSk7CiB9CiAKLXZvaWQgUmVtb3Rl
VGV4dFRyYWNrUHJveHk6OnVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKQordm9pZCBS
ZW1vdGVUZXh0VHJhY2tQcm94eTo6dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiBj
dWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlVwZGF0ZUdlbmVyaWND
dWUobV9pZGVudGlmaWVyLCBjdWUuY3VlRGF0YSgpKSwgbV9wbGF5ZXIuaWRlbmRpZmllcigpKTsK
IH0KIAotdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmlj
Q3VlRGF0YSYpCit2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVHZW5lcmljQ3VlKElu
YmFuZEdlbmVyaWNDdWUmIGN1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6UmVtb3ZlR2VuZXJpY0N1ZShtX2lkZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkpLCBtX3BsYXll
ci5pZGVuZGlmaWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdl
YlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCBlMjg2ZWM0ODk0
NjczYTRmMmI1NjFkMjM4YjA2ZjYyNzUzNmNmZTQ1Li4wYmUxNTQ1MWQ5YWI4NDliOWFhNDliNTRj
MzE1OTQ0Y2Q2ZjhmNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJik7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpOworICAgIHZpcnR1YWwg
dm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2Vi
VlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjYwNDkwZmI3YjU2YTg4Y2ZmMGQ5
Yjg5YzFhNzE2OGFlZDBkMTg1Yy4uMzcyYjVkMmQ3ZTlmNzcxNzM5ZjdkZmI1YjcwYTJmNTIwNzMx
MTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01NjMs
NiArNTYzLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3Jl
OjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9TaGFyZURhdGEuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OkZvbnRDaGFuZ2VzJzogWyc8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hh
bmdlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSc6IFsnPFdlYkNvcmUv
RnJhbWVMb2FkZXJUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEn
OiBbJzxXZWJDb3JlL0luYmFuZEdlbmVyaWNDdWUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Okdy
YW1tYXJEZXRhaWwnOiBbJzxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlw
ZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5zcGVj
dG9yT3ZlcmxheS5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZmNjNi
MjMwZjYyN2QxMmNjNmVjM2VmN2RkNmNlNmFkMTI5N2FhNmEuLjg0YTk2ZTY1NGEzMmIzNThkODk5
YjdhYzIxOTQ5NmE3N2I4MGFlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTExNiwxOCArMTE2LDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvCiAgICAgaWYgKHVybC5p
c0xvY2FsRmlsZSgpKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7
CiAgICAgICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKLSAg
ICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gZmFsc2U7CiAKKyAgICAgICAgYXV0byBjcmVh
dGVFeHRlbnNpb24gPSBbJl0gewogI2lmIEhBVkUoU0FOREJPWF9JU1NVRV9SRUFEX0VYVEVOU0lP
Tl9UT19QUk9DRVNTX0JZX0FVRElUX1RPS0VOKQotICAgICAgICBhdXRvIGF1ZGl0VG9rZW4gPSBt
X21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCk7Ci0gICAgICAgIEFT
U0VSVChhdWRpdFRva2VuKTsKLSAgICAgICAgaWYgKGF1ZGl0VG9rZW4pCi0gICAgICAgICAgICBj
cmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5
QXVkaXRUb2tlbihmaWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUpOwot
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZp
bGVTeXN0ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRsZSk7CiAjZW5kaWYKLSAgICAg
ICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxl
U3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7CiAK
LSAgICAgICAgaWYgKCFjcmVhdGVkRXh0ZW5zaW9uKSB7CisgICAgICAgICAgICByZXR1cm4gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAo
IWNyZWF0ZUV4dGVuc2lvbigpKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlVuYWJsZSB0
byBjcmVhdGUgc2FuZGJveCBleHRlbnNpb24gaGFuZGxlIGZvciBHUFVQcm9jZXNzIHVybC5cbiIp
OwogICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZS5uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcjsKICAgICAgICAgICAgIG1fcGxheWVyLT5uZXR3b3Jr
U3RhdGVDaGFuZ2VkKCk7CkBAIC01MjUsNiArNTI0LDMwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpyZW1vdmVEYXRhQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRl
bnRpCiB9CiAjZW5kaWYKIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFkZEdlbmVy
aWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBHZW5lcmljQ3Vl
RGF0YSYmIGN1ZURhdGEpCit7CisgICAgQVNTRVJUKG1fdGV4dFRyYWNrcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisKKyAgICBpZiAoY29uc3QgYXV0byYgdHJhY2sgPSBtX3RleHRUcmFja3MuZ2V0
KGlkZW50aWZpZXIpKQorICAgICAgICB0cmFjay0+YWRkR2VuZXJpY0N1ZShXVEZNb3ZlKEluYmFu
ZEdlbmVyaWNDdWU6OmNyZWF0ZShXVEZNb3ZlKGN1ZURhdGEpKS5nZXQoKSkpOworfQorCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlR2VuZXJpY0N1ZShUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdlbmVyaWNDdWVEYXRhJiYgY3VlRGF0YSkKK3sK
KyAgICBBU1NFUlQobV90ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAgIGlm
IChjb25zdCBhdXRvJiB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRpZmllcikpCisgICAg
ICAgIHRyYWNrLT51cGRhdGVHZW5lcmljQ3VlKFdURk1vdmUoSW5iYW5kR2VuZXJpY0N1ZTo6Y3Jl
YXRlKFdURk1vdmUoY3VlRGF0YSkpLmdldCgpKSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpyZW1vdmVHZW5lcmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgR2VuZXJpY0N1ZURhdGEmJiBjdWVEYXRhKQoreworICAgIEFTU0VSVChtX3Rl
eHRUcmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgaWYgKGNvbnN0IGF1dG8mIHRy
YWNrID0gbV90ZXh0VHJhY2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdHJhY2stPnJlbW92
ZUdlbmVyaWNDdWUoV1RGTW92ZShJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoV1RGTW92ZShjdWVE
YXRhKSkuZ2V0KCkpKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFkZFJl
bW90ZVZpZGVvVHJhY2soVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBU
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fdmlkZW9UcmFja3MuZW5zdXJlKGlkZW50aWZpZXIsIFsmXSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCAxMzJmMzBhYjI5YjZlNTA5ZjExMzk0OTI1ODBh
NmUzNjcxY2M3OTA5Li41NjhjMTY4ZjUwYjRlOGRjNTc3MTUxZGFjYTY3NDgyYTc3NDA4NTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgTWFjaFNl
bmRSaWdodDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEdlbmVyaWNDdWVEYXRh
OwogY2xhc3MgSVNPV2ViVlRUQ3VlOwogY2xhc3MgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZh
bHVlOwogfQpAQCAtMTIyLDYgKzEyMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRh
Q3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIE1lZGlhVGltZSYmIHN0YXJ0LCBNZWRp
YVRpbWUmJiBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZSYmKTsK
ICNlbmRpZgogCisgICAgdm9pZCBhZGRHZW5lcmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiYpOworICAgIHZvaWQgdXBkYXRlR2VuZXJp
Y0N1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0
YSYmKTsKKyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciwgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEmJik7CisKICAgICB2b2lkIHJlcXVlc3RSZXNv
dXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShS
ZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZXNvdXJjZU5vdFN1cHBv
cnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRl
eCBlODg5N2I2YTEwYTEwZDRiNzAwOTI5OGM3YWEyNzI4YmZlMTEyOTdhLi4zZmZjZjM2ZWZlMjRi
M2QwODUwZWVhMjg2ZTJjZTcyOGU0YTJmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtNTcsOSArNTcsOSBAQCBtZXNzYWdlcyAtPiBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAgICAgUmVtb3ZlRGF0YUN1ZShXZWJL
aXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgTWVkaWFUaW1lIHN0YXJ0
LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUg
Y3VlRGF0YSkKICNlbmRpZgogCi0gICAgIyMgQWRkR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmlj
Q3VlRGF0YSBjdWUpCi0gICAgIyMgVXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmljQ3Vl
RGF0YSBjdWUpCi0gICAgIyMgUmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmljQ3VlRGF0
YSBjdWUpCisgICAgQWRkR2VuZXJpY0N1ZShXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgdHJhY2tJRCwgc3RydWN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhIGN1ZSkKKyAgICBV
cGRhdGVHZW5lcmljQ3VlKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFj
a0lELCBzdHJ1Y3QgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQorICAgIFJlbW92ZUdlbmVy
aWNDdWUoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIHN0cnVj
dCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCiAKICAgICBBZGRSZW1vdGVWaWRlb1RyYWNr
KFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1Y3QgV2Vi
S2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAg
UmVtb3ZlUmVtb3RlVmlkZW9UcmFjayhXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgdHJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZhNjYyMmEzOTU0OTkw
MDcxMDZiZDQ5MDk3MTEwNWQ1OGI4M2E5NmUuLjcyNTIxN2Q3MjRiZGViOThlM2JjMGRiNjVjNTYx
ZWQ3ZWU2MDUzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtODgsMjIgKzg4LDI3
IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihUZXh0
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhCiAgICAgbV9pc0RlZmF1bHQgPSBjb25maWd1cmF0
aW9uLmlzRGVmYXVsdDsKIH0KIAotdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGRHZW5l
cmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRk
R2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiYgY3VlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgQVNTRVJUKGNsaWVudCgpKTsKKyAgICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+
Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+YWRkR2VuZXJpY0N1ZShjdWUpOwogfQogCi12b2lk
IFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEm
KQordm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdl
bmVyaWNDdWUmJiBjdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQoY2xp
ZW50KCkpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAg
Y2xpZW50LT51cGRhdGVHZW5lcmljQ3VlKGN1ZSk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpCit2b2lkIFRleHRUcmFj
a1ByaXZhdGVSZW1vdGU6OnJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYmIGN1ZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChjbGllbnQoKSk7CisgICAgaWYg
KGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlbW92ZUdl
bmVyaWNDdWUoY3VlKTsKIH0KIAotCiB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNl
V2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiB7CiAgICAgQVNTRVJUKGNsaWVudCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggN2I3ZjcwM2NiNDk3ZGVkZWEzOTFkYjU5Y2M5
MmJlY2UxNWE1OTJlMy4uYmIyZjQxNDRiZDY5MGI5N2I1NzliNzU4M2I0NTNmNjliM2NjNTRjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQ
cml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgR2VuZXJpY0N1ZURhdGE7CitjbGFzcyBJbmJhbmRHZW5lcmljQ3VlOwogY2xhc3MgSVNPV2Vi
VlRUQ3VlOwogfQogCkBAIC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURh
dGFDdWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlJiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGFkZEdlbmVyaWNDdWUoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGEmKTsKKyAgICB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1
ZSYmKTsKKyAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYmKTsKKyAg
ICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYmKTsKIAogICAgIHZvaWQg
cGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKICAgICB2b2lkIHBhcnNlV2ViVlRUQ3Vl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNjA1YWNiYzNlNTA0YTFj
OTBkMzBkYzkyMjUyZWZjNWJkYzFiMDAzLi5lYmY2M2FlYWZlNGE2MTM0ZWJlZmFmMmRjOGM1ODli
ZTEyZjIxZmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMjEgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbi1iYW5kIGdl
bmVyaWMgY3VlcyB3aGVuIGxvYWRpbmcgbWVkaWEgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwODAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU5Njg3OTQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAy
MC0wMi0yMSAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbIE1hYyBEZWJ1ZyBdIGxlZ2FjeS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvYW5pbWF0
aW9uLXdlbGNvbWUtc2FmYXJpLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUt
cHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkxM2E1ZDQ0ODQyZmFiOWNlNDczNGJkZGYz
N2M0ZWFlNWQyMDc1ZTguLjY0ODQ4MTM2Yzc0NjMwOGVlY2ZmZTNmNWU2NWM4NzEwOTBhOTlhZDkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjMyLDYgKzIz
MiwxMyBAQCBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtd2VidnR0LXRyYWNrcy5odG1sIFsgUGFz
cyBdCiBodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLmh0bWwgWyBQ
YXNzIF0KIGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEtY3Jhc2gu
aHRtbCBbIFBhc3MgXQogCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLWN1ZXMtYWRkZWQtb25j
ZS5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLmh0bWwgWyBQ
YXNzIF0KK21lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtZHVwbGljYXRlLXRyYWNrcy13aGVuLXNv
dXJjZS1jaGFuZ2VzLmh0bWwgWyBQYXNzIF0KK21lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtbGVn
YWN5LWFwaS5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLmh0bWwgWyBQ
YXNzIF0KK21lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtbWV0YWRhdGEtZGlzcGxheS1vcmRlci5o
dG1sIFsgUGFzcyBdCisKIGFjY2Vzc2liaWxpdHkvbWVkaWEtZWxlbWVudC5odG1sIFsgU2tpcCBd
CiBmYXN0L2Jsb2NrL2Zsb2F0L2xpc3QtbWFya2VyLWlzLWZsb2F0LWNyYXNoLmh0bWwgWyBTa2lw
IF0KIGZhc3QvY3NzL3JlbGF0aXZlLXBvc2l0aW9uLXJlcGxhY2VkLWluLXRhYmxlLWRpc3BsYXkt
Y3Jhc2guaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391446</attachid>
            <date>2020-02-21 19:49:11 -0800</date>
            <delta_ts>2020-02-27 04:16:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208080-20200221194910.patch</filename>
            <type>text/plain</type>
            <size>63464</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uZTVkNWVkZTkyOTVlMDdkZDA5OWQxODEyZDFmNDI1
MTYzMjQyYjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0wMi0yMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGlu
LWJhbmQgZ2VuZXJpYyBjdWVzIHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBl
bmFibGVkIGZvciBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRU
cmFja0N1ZU1hcDo6ZmluZEluZGV4T2ZQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNU
ZXh0VHJhY2tDdWVNYXA6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRUcmFj
a0N1ZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRTdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZW5kVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRF
bmRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmlkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldElkKToKKyAgICAgICAgKFdl
YkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnNldExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6cG9z
aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmFsaWduIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNDdWU6OmZvbnROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OnNldEZvbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmJhc2VGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRCYXNlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1
ZTo6cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljQ3VlOjpzZXRSZWxhdGl2ZUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OmZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kR2VuZXJpY0N1ZTo6YmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNDdWU6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRHZW5lcmljQ3VlOjpoaWdobGlnaHRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY0N1ZTo6c2V0U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
SW5iYW5kR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjp0
b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZG9lc0V4dGVuZEN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdlbmVyaWNDdWVEYXRhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2Vu
ZXJpY0N1ZURhdGE6OnN0YXJ0VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6c2V0U3RhcnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjplbmRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRFbmRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjppZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OmNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldENvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OmxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldExpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OnBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmFsaWduIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRBbGlnbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9udE5hbWUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEZvbnROYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpiYXNlRm9udFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEJh
c2VGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6
cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0UmVsYXRpdmVGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9yZWdyb3VuZENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmJhY2tncm91bmRDb2xvciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0QmFj
a2dyb3VuZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
OjpoaWdobGlnaHRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0SGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YTo6c2V0U3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyaWNDdWVEYXRhOjp0b0pTT05TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OmRvZXNFeHRlbmRDdWVEYXRhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+Ojp0b1N0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNv
bXBsZXRlZEN1ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorCiAyMDIwLTAy
LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
YzIxMTgzMTg1ZGRjNzA4NDFhYTBlNzgwYWNlM2FkYmQ3YzVjZTU3Li43YWUyNTU4NzhlMzUyYThj
ZDE0ZmQyYjM5ZDRlNzZkYzEwYmI1M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIw
LTAyLTIxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgaW4tYmFuZCBnZW5lcmljIGN1ZXMgd2hlbiBsb2FkaW5nIG1lZGlhIGluIHRoZSBH
UFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4MDgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTY4Nzk0Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJh
Y2tQcm94eTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFj
a1Byb3h5Ojp1cGRhdGVHZW5lcmljQ3VlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRy
YWNrUHJveHk6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGRHZW5l
cmljQ3VlKToKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRl
R2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnJl
bW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuaDoKKwogMjAyMC0wMi0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVsZW1ldHJ5IGZyb20gc2FuZGJveCBydWxl
cyBuZWVkZWQgZm9yIGJhc2ljIFdlYktpdCBsb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBh
ZDRmNzFkN2M0YjQ5NjkxMDMyMTYzM2NhYWZjMzhkNjBmNjJjZjFkLi41MThmOTg0MzU5YzM2Zjli
MmZiOGQ4OTFlMmJiZDAyYzkyYTc1YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMDIsNiAr
MTEwMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA3YjE4YTUwYTQ0ZjZhOGU2M2QxNGMzMjg4NDMzNTY3OTAxZDExMjBiLi5lMDI1NmRl
MGRiNGNiYjRkMjAxYWVlOTNmOWI5ZTE0YzE1ODQ0NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDUsNiArMTQ1LDcgQEAK
IAkJMDc4MzIyODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODMyMjgzMTgw
MTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi87IH07CiAJCTA3ODQ2
MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1QjE1MUEwMEE1OERGMSAvKiBK
U1RyYWNrRXZlbnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJh
Y2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi87IH07CisJCTA3
ODYzM0U5MjNGRjM0N0IwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmljQ3VlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg2MzNERTIzRkVERjIyMDA4N0FF
MjEgLyogSW5iYW5kR2VuZXJpY0N1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3ODdDNDZBMUJGQkRGNkYwMDZEQ0Q3RiAvKiBKU01lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc4N0M0NjgxQkZCREY2RjAwNkRDRDdGIC8qIEpTTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CiAJCTA3OEUwOTE1MTdEMTREMUMwMDQyMEFBMSAv
KiBNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcyMjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmggKi87IH07CiAJ
CTA3OEUwOTE4MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUI1NTE3Q0VDMzI3MDA4
NDhFNTEgLyogTWVkaWFTdHJlYW1UcmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01NDkzLDYgKzU0OTQsNyBAQAogCQkwNzg0NjM0MTE0NUIx
NTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0
NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3ODYzM0Q3MjNGRTA5NjQwMDg3QUUyMSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzg2MzNERTIzRkVERjIyMDA4N0FFMjEg
LyogSW5iYW5kR2VuZXJpY0N1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRHZW5lcmljQ3VlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODdDNDY3MUJGQkRGNkYwMDZEQ0Q3RiAv
KiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODdDNDY4MUJGQkRGNkYwMDZEQ0Q3RiAv
KiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDc0LDYgKzI1MDc2LDcgQEAKIAkJCQk1NTQ2NzU3NzFG
RDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuY3BwICovLAogCQkJCTU1NDY3NTc4MUZEMUZD
MUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oICovLAogCQkJCTU1NTBDQjQxMUU5NTVFM0MwMDEx
MUFBMCAvKiBJbWFnZVR5cGVzLmggKi8sCisJCQkJMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8q
IEluYmFuZEdlbmVyaWNDdWUuaCAqLywKIAkJCQkwNzk0MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyog
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oICovLAogCQkJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0
NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi8sCiAJCQkJMkQ0NkYwNEQxN0I5
NkZCRDAwNTY0N0YwIC8qIEludFBvaW50LmNwcCAqLywKQEAgLTMwMzE1LDYgKzMwMzE4LDcgQEAK
IAkJCQkyNkY3NTZCNTFCM0I2OEYyMDAwNURENzkgLyogSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNp
dEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5NjFDNTUxOEFEMzM4QzAwRDA3REM1
IC8qIEluYmFuZERhdGFUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODYzM0U5MjNG
RjM0N0IwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmljQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
RTE2QzU5MzE3Q0ZFMTcyMDA4NTJDMDQgLyogSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTIxNjZFODU1
RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRl
eCAyNjI4OTRmMmUxMzI1OWQ0NDgyODgxZTUxZTBjNDU2MGE5ZTVhMDNmLi4yNDcxMmI4ZWIzN2My
NGI5M2MwNmRlZTM2OTBmZDRmMzQ4YzkzMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTQxLDMyICs0MSw2MyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJh
bmRHZW5lcmljVGV4dFRyYWNrKTsKIAotdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjphZGQo
R2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEsIFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKK3ZvaWQg
R2VuZXJpY1RleHRUcmFja0N1ZU1hcDo6YWRkKEluYmFuZEdlbmVyaWNDdWUmIGN1ZURhdGEsIFRl
eHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKIHsKLSAgICBtX2RhdGFUb0N1ZU1hcC5hZGQoJmN1ZURh
dGEsICZjdWUpOwotICAgIG1fY3VlVG9EYXRhTWFwLmFkZCgmY3VlLCAmY3VlRGF0YSk7CisgICAg
YXV0byBpbmRleCA9IG1fY3Vlcy5maW5kTWF0Y2hpbmcoWyZjdWVEYXRhXShjb25zdCBhdXRvJiBj
dWVQYWlyKSB7CisgICAgICAgIHJldHVybiBjdWVEYXRhLnN0YXJ0VGltZSgpID49IGN1ZVBhaXIu
bV9jdWVEYXRhLT5zdGFydFRpbWUoKTsKKyAgICB9KTsKKworICAgIG1fY3Vlcy5pbnNlcnQoaW5k
ZXggIT0gbm90Rm91bmQgPyBpbmRleCA6IDAsIEdlbmVyaWNDdWVQYWlyIHsgJmN1ZURhdGEsICZj
dWUgfSk7Cit9CisKK3NpemVfdCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5kSW5kZXhPZlBh
aXIoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKK3sKKyAgICByZXR1cm4gbV9jdWVzLmZpbmRN
YXRjaGluZyhbJmN1ZURhdGFdKGNvbnN0IGF1dG8mIGN1ZVBhaXIpIHsKKyAgICAgICAgaWYgKGN1
ZURhdGEuc3RhcnRUaW1lKCkgIT0gY3VlUGFpci5tX2N1ZURhdGEtPnN0YXJ0VGltZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBjdWVEYXRhLmRvZXNFeHRl
bmRDdWVEYXRhKCpjdWVQYWlyLm1fY3VlRGF0YSk7CisgICAgfSk7CiB9CiAKLVRleHRUcmFja0N1
ZUdlbmVyaWMqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoR2VuZXJpY0N1ZURhdGEmIGN1
ZURhdGEpCitUZXh0VHJhY2tDdWVHZW5lcmljKiBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5k
KEluYmFuZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7Ci0gICAgcmV0dXJuIG1fZGF0YVRvQ3VlTWFw
LmdldCgmY3VlRGF0YSk7CisgICAgYXV0byBpbmRleCA9IGZpbmRJbmRleE9mUGFpcihjdWVEYXRh
KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIG1fY3Vlc1tpbmRleF0ubV9jdWUuZ2V0KCk7CiB9CiAKLUdlbmVyaWNDdWVE
YXRhKiBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpmaW5kKFRleHRUcmFja0N1ZSYgY3VlKQorc2l6
ZV90IEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmRJbmRleE9mUGFpcihUZXh0VHJhY2tDdWUm
IGN1ZSkKIHsKLSAgICByZXR1cm4gbV9jdWVUb0RhdGFNYXAuZ2V0KCZjdWUpOworICAgIHJldHVy
biBtX2N1ZXMuZmluZE1hdGNoaW5nKFsmY3VlXShjb25zdCBhdXRvJiBjdWVQYWlyKSB7CisgICAg
ICAgIGlmICghY3VlLmhhc0VxdWl2YWxlbnRTdGFydFRpbWUoKmN1ZVBhaXIubV9jdWUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBjdWUuaXNFcXVhbCgqY3Vl
UGFpci5tX2N1ZSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbik7CisgICAgfSk7Cit9CisK
K0luYmFuZEdlbmVyaWNDdWUqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoVGV4dFRyYWNr
Q3VlJiBjdWUpCit7CisgICAgYXV0byBpbmRleCA9IGZpbmRJbmRleE9mUGFpcihjdWUpOworICAg
IGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gbV9jdWVzW2luZGV4XS5tX2N1ZURhdGEuZ2V0KCk7CiB9CiAKLXZvaWQgR2VuZXJpY1Rl
eHRUcmFja0N1ZU1hcDo6cmVtb3ZlKEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjpyZW1vdmUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsK
LSAgICBpZiAoYXV0byBjdWUgPSBtX2RhdGFUb0N1ZU1hcC50YWtlKCZjdWVEYXRhKSkKLSAgICAg
ICAgbV9jdWVUb0RhdGFNYXAucmVtb3ZlKGN1ZSk7CisgICAgaWYgKGF1dG8gaW5kZXggPSBmaW5k
SW5kZXhPZlBhaXIoY3VlRGF0YSkpCisgICAgICAgIG1fY3Vlcy5yZW1vdmUoaW5kZXgpOwogfQog
CiB2b2lkIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OnJlbW92ZShUZXh0VHJhY2tDdWUmIGN1ZSkK
IHsKLSAgICBpZiAoYXV0byBkYXRhID0gbV9jdWVUb0RhdGFNYXAudGFrZSgmY3VlKSkKLSAgICAg
ICAgbV9kYXRhVG9DdWVNYXAucmVtb3ZlKGRhdGEpOworICAgIGlmIChhdXRvIGluZGV4ID0gZmlu
ZEluZGV4T2ZQYWlyKGN1ZSkpCisgICAgICAgIG1fY3Vlcy5yZW1vdmUoaW5kZXgpOwogfQogCiBp
bmxpbmUgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6SW5iYW5kR2VuZXJpY1RleHRUcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQpAQCAtODEsNyArMTEyLDcgQEAgUmVm
PEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXgKIAogSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6fkluYmFuZEdl
bmVyaWNUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFj
azo6dXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYgY3VlLCBHZW5lcmlj
Q3VlRGF0YSYgY3VlRGF0YSkKK3ZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlQ3Vl
RnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYgY3VlLCBJbmJhbmRHZW5lcmljQ3VlJiBj
dWVEYXRhKQogewogICAgIGN1ZS53aWxsQ2hhbmdlKCk7CiAKQEAgLTEwOSwxOCArMTQwLDE4IEBA
IHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRy
YWNrQ3VlR2VuZXJpYyYgY3VlLCBHZW5lCiAgICAgaWYgKGN1ZURhdGEuaGlnaGxpZ2h0Q29sb3Io
KS5pc1ZhbGlkKCkpCiAgICAgICAgIGN1ZS5zZXRIaWdobGlnaHRDb2xvcihjdWVEYXRhLmhpZ2hs
aWdodENvbG9yKCkucmdiKCkpOwogCi0gICAgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmlj
Q3VlRGF0YTo6U3RhcnQpCisgICAgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0
YTo6QWxpZ25tZW50OjpTdGFydCkKICAgICAgICAgY3VlLnNldEFsaWduKCJzdGFydCJfcyk7Ci0g
ICAgZWxzZSBpZiAoY3VlRGF0YS5hbGlnbigpID09IEdlbmVyaWNDdWVEYXRhOjpNaWRkbGUpCisg
ICAgZWxzZSBpZiAoY3VlRGF0YS5hbGlnbigpID09IEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6
Ok1pZGRsZSkKICAgICAgICAgY3VlLnNldEFsaWduKCJtaWRkbGUiX3MpOwotICAgIGVsc2UgaWYg
KGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6RW5kKQorICAgIGVsc2UgaWYgKGN1
ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpFbmQpCiAgICAgICAg
IGN1ZS5zZXRBbGlnbigiZW5kIl9zKTsKICAgICBjdWUuc2V0U25hcFRvTGluZXMoZmFsc2UpOwog
CiAgICAgY3VlLmRpZENoYW5nZSgpOwogfQogCi12b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6
OmFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEpCit2b2lkIEluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsK
ICAgICBpZiAobV9jdWVNYXAuZmluZChjdWVEYXRhKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0
LDEzICsxNjUsMTMgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRHZW5lcmljQ3Vl
KEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
ImFkZGVkIGN1ZTogIiwgY3VlLmdldCgpKTsKIAotICAgIGlmIChjdWVEYXRhLnN0YXR1cygpICE9
IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKKyAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSAhPSBH
ZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZSkKICAgICAgICAgbV9jdWVNYXAuYWRkKGN1
ZURhdGEsIGN1ZSk7CiAKICAgICBhZGRDdWUoV1RGTW92ZShjdWUpKTsKIH0KIAotdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBjdWVE
YXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7CiAgICAgYXV0byBjdWUgPSBtYWtlUmVmUHRyKG1fY3Vl
TWFwLmZpbmQoY3VlRGF0YSkpOwogICAgIGlmICghY3VlKQpAQCAtMTQ4LDExICsxNzksMTEgQEAg
dm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVE
YXRhJiBjdWVEYXRhKQogCiAgICAgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoKmN1ZSwgY3VlRGF0YSk7
CiAKLSAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSA9PSBHZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUp
CisgICAgaWYgKGN1ZURhdGEuc3RhdHVzKCkgPT0gR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29t
cGxldGUpCiAgICAgICAgIG1fY3VlTWFwLnJlbW92ZShjdWVEYXRhKTsKIH0KIAotdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBjdWVE
YXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7CiAgICAgYXV0byBjdWUgPSBtYWtlUmVmUHRyKG1fY3Vl
TWFwLmZpbmQoY3VlRGF0YSkpOwogICAgIGlmIChjdWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmgKaW5kZXggMjIxMmY5NTc3ZjI2
ZjU4MDcwOGE4MmNhMjA1MWZjYjg4NWVlYTg4YS4uMWNmY2VkMTI5NDhiYTlmM2FhNjBlZmYwOThm
NGIwMTAwM2UxZDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmgKQEAgLTM1LDIwICszNSwyNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXAgewogcHVibGljOgotICAgIHZvaWQg
YWRkKEdlbmVyaWNDdWVEYXRhJiwgVGV4dFRyYWNrQ3VlR2VuZXJpYyYpOworICAgIHZvaWQgYWRk
KEluYmFuZEdlbmVyaWNDdWUmLCBUZXh0VHJhY2tDdWVHZW5lcmljJik7CisKKyAgICBzaXplX3Qg
ZmluZEluZGV4T2ZQYWlyKFRleHRUcmFja0N1ZSYpOworICAgIHNpemVfdCBmaW5kSW5kZXhPZlBh
aXIoSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdm9pZCByZW1vdmUoVGV4dFRyYWNrQ3VlJik7
Ci0gICAgdm9pZCByZW1vdmUoR2VuZXJpY0N1ZURhdGEmKTsKKyAgICB2b2lkIHJlbW92ZShJbmJh
bmRHZW5lcmljQ3VlJik7CiAKLSAgICBHZW5lcmljQ3VlRGF0YSogZmluZChUZXh0VHJhY2tDdWUm
KTsKLSAgICBUZXh0VHJhY2tDdWVHZW5lcmljKiBmaW5kKEdlbmVyaWNDdWVEYXRhJik7CisgICAg
SW5iYW5kR2VuZXJpY0N1ZSogZmluZChUZXh0VHJhY2tDdWUmKTsKKyAgICBUZXh0VHJhY2tDdWVH
ZW5lcmljKiBmaW5kKEluYmFuZEdlbmVyaWNDdWUmKTsKIAogcHJpdmF0ZToKLSAgICB1c2luZyBD
dWVUb0RhdGFNYXAgPSBIYXNoTWFwPFJlZlB0cjxUZXh0VHJhY2tDdWU+LCBSZWZQdHI8R2VuZXJp
Y0N1ZURhdGE+PjsKLSAgICB1c2luZyBDdWVEYXRhVG9DdWVNYXAgPSBIYXNoTWFwPFJlZlB0cjxH
ZW5lcmljQ3VlRGF0YT4sIFJlZlB0cjxUZXh0VHJhY2tDdWVHZW5lcmljPj47CisgICAgc3RydWN0
IEdlbmVyaWNDdWVQYWlyIHsKKyAgICAgICAgR2VuZXJpY0N1ZVBhaXIoKSA9IGRlZmF1bHQ7CisK
KyAgICAgICAgUmVmUHRyPEluYmFuZEdlbmVyaWNDdWU+IG1fY3VlRGF0YTsKKyAgICAgICAgUmVm
UHRyPFRleHRUcmFja0N1ZUdlbmVyaWM+IG1fY3VlOworICAgIH07CiAKLSAgICBDdWVUb0RhdGFN
YXAgbV9jdWVUb0RhdGFNYXA7Ci0gICAgQ3VlRGF0YVRvQ3VlTWFwIG1fZGF0YVRvQ3VlTWFwOwor
ICAgIFZlY3RvcjxHZW5lcmljQ3VlUGFpcj4gbV9jdWVzOwogfTsKIAogY2xhc3MgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjayBmaW5hbCA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2ssIHByaXZhdGUgV2Vi
VlRUUGFyc2VyQ2xpZW50IHsKQEAgLTYwLDEyICs2NiwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEluYmFuZEdlbmVyaWNUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRleHRU
cmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgYWRkR2Vu
ZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1
ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShHZW5l
cmljQ3VlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmlj
Q3VlJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUm
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZp
bmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmKSBmaW5h
bDsKIAotICAgIHZvaWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYs
IEdlbmVyaWNDdWVEYXRhJik7CisgICAgdm9pZCB1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJh
Y2tDdWVHZW5lcmljJiwgSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBw
YXJzZXIoKTsKICAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCA4
ZmVmOWYzNGFlYWJlMDM1NTE0OTNiNjQ1ZWMxYTZlNWU0ZjM4YTkxLi4zMGZjMjUyN2YwNTJiNDdm
ODA0N2QxNjI3OTJmZTdkN2FiZjI5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kVGV4dFRyYWNrLmgKQEAgLTc3LDkgKzc3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZSYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAj
ZW5kaWYKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIG92ZXJyaWRl
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2Vu
ZXJpY0N1ZURhdGEmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdm9p
ZCByZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikg
b3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgdXBkYXRlR2VuZXJp
Y0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFk
ZXIoU3RyaW5nJiYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lk
IHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmgKaW5kZXggZmQwY2IzZWIzMTE4Y2MzZjMzYzliNjg4NmFhMGY2MmEw
NjRmMWQ0ZS4uNTA3NjY3ZTI0MWYxY2FmMTA4OTgzMDg3MWI0NGI4Nzc2YzM2MzZhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTMy
LDggKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHZW5lcmljQ3VlRGF0
YTsKLQogLy8gQSAiZ2VuZXJpYyIgY3VlIGlzIGEgbm9uLVdlYlZUVCBjdWUsIHNvIGl0IGlzIG5v
dCBwb3NpdGlvbmVkL3NpemVkIHdpdGggdGhlIFdlYlZUVCBsb2dpYy4KIGNsYXNzIFRleHRUcmFj
a0N1ZUdlbmVyaWMgZmluYWwgOiBwdWJsaWMgVlRUQ3VlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0VYUE9SVChUZXh0VHJhY2tDdWVHZW5lcmljLCBXRUJDT1JFX0VYUE9SVCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3Vl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3VlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmI3MzAzZjU4ZjBmMjhlNTlhNjZiNDlkM2ZmZWEzNGNhYWI5MzMxNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdl
bmVyaWNDdWUuaApAQCAtMCwwICsxLDM5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdlbmVyaWNDdWVEYXRhIHsKKyAgICBHZW5lcmlj
Q3VlRGF0YSgpID0gZGVmYXVsdDsKKworICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKKyAgICBN
ZWRpYVRpbWUgbV9lbmRUaW1lOworICAgIFN0cmluZyBtX2lkOworICAgIFN0cmluZyBtX2NvbnRl
bnQ7CisgICAgU3RyaW5nIG1fZm9udE5hbWU7CisgICAgZG91YmxlIG1fbGluZSB7IC0xIH07Cisg
ICAgZG91YmxlIG1fcG9zaXRpb24geyAtMSB9OworICAgIGRvdWJsZSBtX3NpemUgeyAtMSB9Owor
ICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZSB7IDAgfTsKKyAgICBkb3VibGUgbV9yZWxhdGl2ZUZv
bnRTaXplIHsgMCB9OworICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOworICAgIENvbG9yIG1f
YmFja2dyb3VuZENvbG9yOworICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7CisKKyAgICBlbnVt
IGNsYXNzIEFsaWdubWVudCA6IHVpbnQ4X3QgeyBOb25lLCBTdGFydCwgTWlkZGxlLCBFbmQgfTsK
KyAgICBBbGlnbm1lbnQgbV9hbGlnbiB7IEFsaWdubWVudDo6Tm9uZSB9OworCisgICAgZW51bSBj
bGFzcyBTdGF0dXMgOiB1aW50OF90IHsgVW5pbml0aWFsaXplZCwgUGFydGlhbCwgQ29tcGxldGUg
fTsKKyAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6OlVuaW5pdGlhbGl6ZWQgfTsKKworICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxHZW5lcmljQ3Vl
RGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxN
ZWRpYVRpbWU+IHN0YXJ0VGltZTsKKyAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CisgICAg
ICAgIGlmICghc3RhcnRUaW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZFRpbWU7CisgICAgICAgIGRlY29kZXIgPj4g
ZW5kVGltZTsKKyAgICAgICAgaWYgKCFlbmRUaW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNv
bnRlbnQ7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudDsKKyAgICAgICAgaWYgKCFjb250ZW50
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IGZvbnROYW1lOworICAgICAgICBkZWNvZGVyID4+IGZvbnROYW1lOworICAgICAgICBp
ZiAoIWZvbnROYW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IGxpbmU7CisgICAgICAgIGRlY29kZXIgPj4gbGluZTsKKyAgICAg
ICAgaWYgKCFsaW5lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IHBvc2l0aW9uOworICAgICAgICBkZWNvZGVyID4+IHBvc2l0aW9u
OworICAgICAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IHNpemU7CisgICAgICAgIGRlY29kZXIgPj4g
c2l6ZTsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IGJhc2VGb250U2l6ZTsKKyAgICAgICAgZGVj
b2RlciA+PiBiYXNlRm9udFNpemU7CisgICAgICAgIGlmICghYmFzZUZvbnRTaXplKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxkb3VibGU+IHJl
bGF0aXZlRm9udFNpemU7CisgICAgICAgIGRlY29kZXIgPj4gcmVsYXRpdmVGb250U2l6ZTsKKyAg
ICAgICAgaWYgKCFyZWxhdGl2ZUZvbnRTaXplKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBDb2xvciBtX2ZvcmVncm91bmRDb2xvcjsKKyAgICAgICAgQ29sb3Ig
bV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7CisKKyAg
ICAgICAgT3B0aW9uYWw8Q29sb3I+IGZvcmVncm91bmRDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+
PiBmb3JlZ3JvdW5kQ29sb3I7CisgICAgICAgIGlmICghZm9yZWdyb3VuZENvbG9yKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDb2xvcj4gYmFj
a2dyb3VuZENvbG9yOworICAgICAgICBkZWNvZGVyID4+IGJhY2tncm91bmRDb2xvcjsKKyAgICAg
ICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPENvbG9yPiBoaWdobGlnaHRDb2xvcjsKKyAgICAgICAgZGVj
b2RlciA+PiBoaWdobGlnaHRDb2xvcjsKKyAgICAgICAgaWYgKCFoaWdobGlnaHRDb2xvcikKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8QWxpZ25t
ZW50PiBhbGlnbm1lbnQ7CisgICAgICAgIGRlY29kZXIgPj4gYWxpZ25tZW50OworICAgICAgICBp
ZiAoIWFsaWdubWVudCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8U3RhdHVzPiBzdGF0dXM7CisgICAgICAgIGRlY29kZXIgPj4gc3RhdHVzOwor
ICAgICAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpzdGFydFRpbWUpLAorICAg
ICAgICAgICAgV1RGTW92ZSgqZW5kVGltZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmlkZW50
aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqY29udGVudCksCisgICAgICAgICAgICBXVEZN
b3ZlKCpmb250TmFtZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmxpbmUpLAorICAgICAgICAg
ICAgV1RGTW92ZSgqcG9zaXRpb24pLAorICAgICAgICAgICAgV1RGTW92ZSgqc2l6ZSksCisgICAg
ICAgICAgICBXVEZNb3ZlKCpiYXNlRm9udFNpemUpLAorICAgICAgICAgICAgV1RGTW92ZSgqcmVs
YXRpdmVGb250U2l6ZSksCisKKyAgICAgICAgICAgIFdURk1vdmUoKmZvcmVncm91bmRDb2xvciks
CisgICAgICAgICAgICBXVEZNb3ZlKCpiYWNrZ3JvdW5kQ29sb3IpLAorICAgICAgICAgICAgV1RG
TW92ZSgqaGlnaGxpZ2h0Q29sb3IpLAorCisgICAgICAgICAgICBXVEZNb3ZlKCphbGlnbm1lbnQp
LAorICAgICAgICAgICAgV1RGTW92ZSgqc3RhdHVzKSwKKyAgICAgICAgfX07CisgICAgfQorCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3N0YXJ0VGltZTsKKyAgICAg
ICAgZW5jb2RlciA8PCBtX2VuZFRpbWU7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICAg
ICAgZW5jb2RlciA8PCBtX2NvbnRlbnQ7CisgICAgICAgIGVuY29kZXIgPDwgbV9mb250TmFtZTsK
KyAgICAgICAgZW5jb2RlciA8PCBtX2xpbmU7CisgICAgICAgIGVuY29kZXIgPDwgbV9wb3NpdGlv
bjsKKyAgICAgICAgZW5jb2RlciA8PCBtX3NpemU7CisgICAgICAgIGVuY29kZXIgPDwgbV9iYXNl
Rm9udFNpemU7CisgICAgICAgIGVuY29kZXIgPDwgbV9yZWxhdGl2ZUZvbnRTaXplOworICAgICAg
ICBlbmNvZGVyIDw8IG1fZm9yZWdyb3VuZENvbG9yOworICAgICAgICBlbmNvZGVyIDw8IG1fYmFj
a2dyb3VuZENvbG9yOworICAgICAgICBlbmNvZGVyIDw8IG1faGlnaGxpZ2h0Q29sb3I7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRW51bShtX2FsaWduKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKG1fc3RhdHVzKTsKKyAgICB9Cit9OworCisKK2NsYXNzIEluYmFuZEdlbmVyaWNDdWUgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbmJhbmRHZW5lcmljQ3VlPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IElu
YmFuZEdlbmVyaWNDdWUpOyB9CisgICAgc3RhdGljIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBjcmVh
dGUoR2VuZXJpY0N1ZURhdGEmJiBjdWVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFu
ZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSkpOyB9CisKKyAgICBNZWRpYVRpbWUgc3RhcnRU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fc3RhcnRUaW1lOyB9CisgICAgdm9pZCBz
ZXRTdGFydFRpbWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydFRpbWUpIHsgbV9jdWVEYXRhLm1fc3Rh
cnRUaW1lID0gc3RhcnRUaW1lOyB9CisKKyAgICBNZWRpYVRpbWUgZW5kVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VlRGF0YS5tX2VuZFRpbWU7IH0KKyAgICB2b2lkIHNldEVuZFRpbWUoY29uc3Qg
TWVkaWFUaW1lJiBlbmRUaW1lKSB7IG1fY3VlRGF0YS5tX2VuZFRpbWUgPSBlbmRUaW1lOyB9CisK
KyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1faWQ7IH0K
KyAgICB2b2lkIHNldElkKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9jdWVEYXRhLm1faWQgPSBpZDsg
fQorCisgICAgY29uc3QgU3RyaW5nJiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRh
Lm1fY29udGVudDsgfQorICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQp
IHsgbV9jdWVEYXRhLm1fY29udGVudCA9IGNvbnRlbnQ7IH0KKworICAgIGRvdWJsZSBsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fbGluZTsgfQorICAgIHZvaWQgc2V0TGluZShkb3Vi
bGUgbGluZSkgeyBtX2N1ZURhdGEubV9saW5lID0gbGluZTsgfQorCisgICAgZG91YmxlIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNl
dFBvc2l0aW9uKGRvdWJsZSBwb3NpdGlvbikgeyBtX2N1ZURhdGEubV9wb3NpdGlvbiA9IHBvc2l0
aW9uOyB9CisKKyAgICBkb3VibGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX3Np
emU7IH0KKyAgICB2b2lkIHNldFNpemUoZG91YmxlIHNpemUpIHsgbV9jdWVEYXRhLm1fc2l6ZSA9
IHNpemU7IH0KKworICAgIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQgYWxpZ24oKSBjb25zdCB7
IHJldHVybiBtX2N1ZURhdGEubV9hbGlnbjsgfQorICAgIHZvaWQgc2V0QWxpZ24oR2VuZXJpY0N1
ZURhdGE6OkFsaWdubWVudCBhbGlnbikgeyBtX2N1ZURhdGEubV9hbGlnbiA9IGFsaWduOyB9CisK
KyAgICBjb25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1f
Zm9udE5hbWU7IH0KKyAgICB2b2lkIHNldEZvbnROYW1lKGNvbnN0IFN0cmluZyYgZm9udE5hbWUp
IHsgbV9jdWVEYXRhLm1fZm9udE5hbWUgPSBmb250TmFtZTsgfQorCisgICAgZG91YmxlIGJhc2VG
b250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX2Jhc2VGb250U2l6ZTsgfQorICAg
IHZvaWQgc2V0QmFzZUZvbnRTaXplKGRvdWJsZSBiYXNlRm9udFNpemUpIHsgbV9jdWVEYXRhLm1f
YmFzZUZvbnRTaXplID0gYmFzZUZvbnRTaXplOyB9CisKKyAgICBkb3VibGUgcmVsYXRpdmVGb250
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemU7IH0KKyAg
ICB2b2lkIHNldFJlbGF0aXZlRm9udFNpemUoZG91YmxlIHJlbGF0aXZlRm9udFNpemUpIHsgbV9j
dWVEYXRhLm1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0KKworICAgIGNv
bnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9m
b3JlZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpIHsgbV9jdWVEYXRhLm1fZm9yZWdyb3VuZENvbG9yID0gY29sb3I7IH0KKworICAg
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEu
bV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpIHsgbV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KKwor
ICAgIGNvbnN0IENvbG9yJiBoaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0
YS5tX2hpZ2hsaWdodENvbG9yOyB9CisgICAgdm9pZCBzZXRIaWdobGlnaHRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpIHsgbV9jdWVEYXRhLm1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsgfQorCisg
ICAgR2VuZXJpY0N1ZURhdGE6OlN0YXR1cyBzdGF0dXMoKSB7IHJldHVybiBtX2N1ZURhdGEubV9z
dGF0dXM7IH0KKyAgICB2b2lkIHNldFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6U3RhdHVzIHN0YXR1
cykgeyBtX2N1ZURhdGEubV9zdGF0dXMgPSBzdGF0dXM7IH0KKworICAgIGJvb2wgZG9lc0V4dGVu
ZEN1ZURhdGEoY29uc3QgSW5iYW5kR2VuZXJpY0N1ZSYpIGNvbnN0OworCisgICAgU3RyaW5nIHRv
SlNPTlN0cmluZygpIGNvbnN0OworCisgICAgY29uc3QgR2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGE7IH0KKworcHJpdmF0ZToKKyAgICBJbmJhbmRHZW5l
cmljQ3VlKCkgPSBkZWZhdWx0OworICAgIEluYmFuZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEm
JiBjdWVEYXRhKQorICAgICAgICA6IG1fY3VlRGF0YShXVEZNb3ZlKGN1ZURhdGEpKQorICAgIHsK
KyAgICB9CisKKyAgICBHZW5lcmljQ3VlRGF0YSBtX2N1ZURhdGE7Cit9OworCitpbmxpbmUgU3Ry
aW5nIEluYmFuZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZygpIGNvbnN0Cit7CisgICAgYXV0byBv
YmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAg
IG9iamVjdC0+c2V0U3RyaW5nKCJ0ZXh0Il9zLCBtX2N1ZURhdGEubV9jb250ZW50KTsKKyNlbmRp
ZgorICAgIG9iamVjdC0+c2V0RG91YmxlKCJzdGFydCJfcywgbV9jdWVEYXRhLm1fc3RhcnRUaW1l
LnRvRG91YmxlKCkpOworICAgIG9iamVjdC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fY3VlRGF0YS5t
X2VuZFRpbWUudG9Eb3VibGUoKSk7CisKKyAgICBjb25zdCBjaGFyKiBzdGF0dXM7CisgICAgc3dp
dGNoIChtX2N1ZURhdGEubV9zdGF0dXMpIHsKKyAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGF0
dXM6OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgIHN0YXR1cyA9ICJVbmluaXRpYWxpemVkIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpQYXJ0aWFsOgor
ICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2Vu
ZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29tcGxldGU6CisgICAgICAgIHN0YXR1cyA9ICJDb21wbGV0
ZSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvYmplY3QtPnNldFN0cmluZygic3RhdHVz
Iiwgc3RhdHVzKTsKKworICAgIGlmICghbV9jdWVEYXRhLm1faWQuaXNFbXB0eSgpKQorICAgICAg
ICBvYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2N1ZURhdGEubV9pZCk7CisKKyAgICBpZiAobV9j
dWVEYXRhLm1fbGluZSA+IDApCisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJsaW5lIl9zLCBt
X2N1ZURhdGEubV9saW5lKTsKKworICAgIGlmIChtX2N1ZURhdGEubV9zaXplID4gMCkKKyAgICAg
ICAgb2JqZWN0LT5zZXREb3VibGUoInNpemUiX3MsIG1fY3VlRGF0YS5tX3NpemUpOworCisgICAg
aWYgKG1fY3VlRGF0YS5tX3Bvc2l0aW9uID4gMCkKKyAgICAgICAgb2JqZWN0LT5zZXREb3VibGUo
InBvc2l0aW9uIl9zLCBtX2N1ZURhdGEubV9wb3NpdGlvbik7CisKKyAgICBpZiAobV9jdWVEYXRh
Lm1fYWxpZ24gIT0gR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6Tm9uZSkgeworICAgICAgICBj
b25zdCBjaGFyKiBhbGlnbjsKKyAgICAgICAgc3dpdGNoIChtX2N1ZURhdGEubV9hbGlnbikgewor
ICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0OgorICAgICAgICAg
ICAgYWxpZ24gPSAiU3RhcnQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2Vu
ZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlOgorICAgICAgICAgICAgYWxpZ24gPSAiTWlk
ZGxlIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpB
bGlnbm1lbnQ6OkVuZDoKKyAgICAgICAgICAgIGFsaWduID0gIkVuZCI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpOb25lOgorICAg
ICAgICAgICAgYWxpZ24gPSAiTm9uZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBvYmplY3QtPnNldFN0cmluZygiYWxpZ24iX3MsIGFsaWduKTsKKyAgICB9CisKKyAg
ICBpZiAobV9jdWVEYXRhLm1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoImZvcmVncm91bmRDb2xvciJfcywgbV9jdWVEYXRhLm1fZm9yZWdyb3Vu
ZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFja2dyb3VuZENv
bG9yLmlzVmFsaWQoKSkKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImJhY2tncm91bmRDb2xv
ciJfcywgbV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisKKyAgICBp
ZiAobV9jdWVEYXRhLm1faGlnaGxpZ2h0Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICBvYmplY3Qt
PnNldFN0cmluZygiaGlnaGxpZ2h0Q29sb3IiX3MsIG1fY3VlRGF0YS5tX2hpZ2hsaWdodENvbG9y
LnNlcmlhbGl6ZWQoKSk7CisKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFzZUZvbnRTaXplKQorICAg
ICAgICBvYmplY3QtPnNldERvdWJsZSgiYmFzZUZvbnRTaXplIl9zLCBtX2N1ZURhdGEubV9iYXNl
Rm9udFNpemUpOworCisgICAgaWYgKG1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemUpCisgICAg
ICAgIG9iamVjdC0+c2V0RG91YmxlKCJyZWxhdGl2ZUZvbnRTaXplIl9zLCBtX2N1ZURhdGEubV9y
ZWxhdGl2ZUZvbnRTaXplKTsKKworICAgIGlmICghbV9jdWVEYXRhLm1fZm9udE5hbWUuaXNFbXB0
eSgpKQorICAgICAgICBvYmplY3QtPnNldFN0cmluZygiZm9udCJfcywgbV9jdWVEYXRhLm1fZm9u
dE5hbWUpOworCisgICAgcmV0dXJuIG9iamVjdC0+dG9KU09OU3RyaW5nKCk7Cit9CisKK2lubGlu
ZSBib29sIEluYmFuZEdlbmVyaWNDdWU6OmRvZXNFeHRlbmRDdWVEYXRhKGNvbnN0IEluYmFuZEdl
bmVyaWNDdWUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX2N1ZURhdGEubV9yZWxhdGl2ZUZv
bnRTaXplICE9IG90aGVyLm1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFzZUZvbnRTaXplICE9IG90aGVyLm1f
Y3VlRGF0YS5tX2Jhc2VGb250U2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICht
X2N1ZURhdGEubV9wb3NpdGlvbiAhPSBvdGhlci5tX2N1ZURhdGEubV9wb3NpdGlvbikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9saW5lICE9IG90aGVyLm1fY3Vl
RGF0YS5tX2xpbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jdWVEYXRhLm1f
c2l6ZSAhPSBvdGhlci5tX2N1ZURhdGEubV9zaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKG1fY3VlRGF0YS5tX2FsaWduICE9IG90aGVyLm1fY3VlRGF0YS5tX2FsaWduKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY3VlRGF0YS5tX2ZvcmVncm91bmRDb2xvciAh
PSBvdGhlci5tX2N1ZURhdGEubV9mb3JlZ3JvdW5kQ29sb3IpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yICE9IG90aGVyLm1fY3VlRGF0
YS5tX2JhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1
ZURhdGEubV9oaWdobGlnaHRDb2xvciAhPSBvdGhlci5tX2N1ZURhdGEubV9oaWdobGlnaHRDb2xv
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9mb250TmFtZSAh
PSBvdGhlci5tX2N1ZURhdGEubV9mb250TmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2N1ZURhdGEubV9pZCAhPSBvdGhlci5tX2N1ZURhdGEubV9pZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2N1ZURhdGEubV9jb250ZW50ICE9IG90aGVyLm1fY3VlRGF0
YS5tX2NvbnRlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBMb2dBcmd1bWVudDsKK3RlbXBsYXRlIDw+
CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZT4geworICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYgY3Vl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1ZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpB
bGlnbm1lbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50LAorICAgICAgICBXZWJDb3JlOjpHZW5lcmlj
Q3VlRGF0YTo6QWxpZ25tZW50OjpOb25lLAorICAgICAgICBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0
YTo6QWxpZ25tZW50OjpTdGFydCwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OkFs
aWdubWVudDo6TWlkZGxlLAorICAgICAgICBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxpZ25t
ZW50OjpFbmQKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1cywKKyAgICAgICAg
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6VW5pbml0aWFsaXplZCwKKyAgICAgICAg
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbCwKKyAgICAgICAgV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6Q29tcGxldGUKKyAgICA+OworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCBmNDMwNjQ1MThkZjQxOTYx
YjNmNmM2M2E3NmM5OTEzZDE3NjdhZWJjLi5mZDMzZWI5YzBiMTExNmJlOGIzNjg3ZDA5ZjIyZjA0
NmNiZDNhY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNs
dWRlICJJbmJhbmRHZW5lcmljQ3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgpA
QCAtNDEsMTg3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRleHRU
cmFja1ByaXZhdGU7CiBjbGFzcyBJU09XZWJWVFRDdWU7CiAKLWNsYXNzIEdlbmVyaWNDdWVEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8R2VuZXJpY0N1ZURhdGE+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEdlbmVyaWNDdWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEdl
bmVyaWNDdWVEYXRhKTsgfQotCi0gICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRUaW1lOyB9Ci0gICAgdm9pZCBzZXRTdGFydFRpbWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydFRpbWUpIHsgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KLQotICAgIE1lZGlhVGlt
ZSBlbmRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRUaW1lOyB9Ci0gICAgdm9pZCBzZXRFbmRU
aW1lKGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSkgeyBtX2VuZFRpbWUgPSBlbmRUaW1lOyB9Ci0K
LSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQg
c2V0SWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KLQotICAgIGNvbnN0IFN0cmlu
ZyYgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudDsgfQotICAgIHZvaWQgc2V0Q29u
dGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpIHsgbV9jb250ZW50ID0gY29udGVudDsgfQotCi0g
ICAgZG91YmxlIGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KLSAgICB2b2lkIHNldExp
bmUoZG91YmxlIGxpbmUpIHsgbV9saW5lID0gbGluZTsgfQotCi0gICAgZG91YmxlIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0UG9zaXRpb24oZG91
YmxlIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQotCi0gICAgZG91YmxlIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB2b2lkIHNldFNpemUoZG91YmxlIHNp
emUpIHsgbV9zaXplID0gc2l6ZTsgfQotCi0gICAgZW51bSBBbGlnbm1lbnQgeyBOb25lLCBTdGFy
dCwgTWlkZGxlLCBFbmQgfTsKLSAgICBBbGlnbm1lbnQgYWxpZ24oKSBjb25zdCB7IHJldHVybiBt
X2FsaWduOyB9Ci0gICAgdm9pZCBzZXRBbGlnbihBbGlnbm1lbnQgYWxpZ24pIHsgbV9hbGlnbiA9
IGFsaWduOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9mb250TmFtZTsgfQotICAgIHZvaWQgc2V0Rm9udE5hbWUoY29uc3QgU3RyaW5nJiBmb250TmFt
ZSkgeyBtX2ZvbnROYW1lID0gZm9udE5hbWU7IH0KLQotICAgIGRvdWJsZSBiYXNlRm9udFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2Jhc2VGb250U2l6ZTsgfQotICAgIHZvaWQgc2V0QmFzZUZvbnRT
aXplKGRvdWJsZSBiYXNlRm9udFNpemUpIHsgbV9iYXNlRm9udFNpemUgPSBiYXNlRm9udFNpemU7
IH0KLQotICAgIGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
dGl2ZUZvbnRTaXplOyB9Ci0gICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXplKGRvdWJsZSByZWxh
dGl2ZUZvbnRTaXplKSB7IG1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0K
LQotICAgIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2Zv
cmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvciA9IGNvbG9yOyB9Ci0KLSAgICBjb25zdCBDb2xv
ciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0K
LSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNr
Z3JvdW5kQ29sb3IgPSBjb2xvcjsgfQotCi0gICAgY29uc3QgQ29sb3ImIGhpZ2hsaWdodENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0SGlnaGxp
Z2h0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsg
fQotCi0gICAgZW51bSBTdGF0dXMgeyBVbmluaXRpYWxpemVkLCBQYXJ0aWFsLCBDb21wbGV0ZSB9
OwotICAgIFN0YXR1cyBzdGF0dXMoKSB7IHJldHVybiBtX3N0YXR1czsgfQotICAgIHZvaWQgc2V0
U3RhdHVzKFN0YXR1cyBzdGF0dXMpIHsgbV9zdGF0dXMgPSBzdGF0dXM7IH0KLQotICAgIGJvb2wg
ZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1ZURhdGEmKSBjb25zdDsKLQotICAgIFN0
cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmljQ3VlRGF0
YSgpID0gZGVmYXVsdDsKLQotICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKLSAgICBNZWRpYVRp
bWUgbV9lbmRUaW1lOwotICAgIFN0cmluZyBtX2lkOwotICAgIFN0cmluZyBtX2NvbnRlbnQ7Ci0g
ICAgZG91YmxlIG1fbGluZSB7IC0xIH07Ci0gICAgZG91YmxlIG1fcG9zaXRpb24geyAtMSB9Owot
ICAgIGRvdWJsZSBtX3NpemUgeyAtMSB9OwotICAgIEFsaWdubWVudCBtX2FsaWduIHsgTm9uZSB9
OwotICAgIFN0cmluZyBtX2ZvbnROYW1lOwotICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZSB7IDAg
fTsKLSAgICBkb3VibGUgbV9yZWxhdGl2ZUZvbnRTaXplIHsgMCB9OwotICAgIENvbG9yIG1fZm9y
ZWdyb3VuZENvbG9yOwotICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwotICAgIENvbG9yIG1f
aGlnaGxpZ2h0Q29sb3I7Ci0gICAgU3RhdHVzIG1fc3RhdHVzIHsgVW5pbml0aWFsaXplZCB9Owot
fTsKLQotaW5saW5lIFN0cmluZyBHZW5lcmljQ3VlRGF0YTo6dG9KU09OU3RyaW5nKCkgY29uc3QK
LXsKLSAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KLSNpZiAhTE9H
X0RJU0FCTEVECi0gICAgb2JqZWN0LT5zZXRTdHJpbmcoInRleHQiX3MsIG1fY29udGVudCk7Ci0j
ZW5kaWYKLSAgICBvYmplY3QtPnNldERvdWJsZSgic3RhcnQiX3MsIG1fc3RhcnRUaW1lLnRvRG91
YmxlKCkpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fZW5kVGltZS50b0RvdWJs
ZSgpKTsKLQotICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKLSAgICBzd2l0Y2ggKG1fc3RhdHVzKSB7
Ci0gICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgc3RhdHVz
ID0gIlVuaW5pdGlhbGl6ZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdlbmVyaWNDdWVE
YXRhOjpQYXJ0aWFsOgotICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlOgotICAgICAgICBzdGF0dXMgPSAi
Q29tcGxldGUiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmco
InN0YXR1cyIsIHN0YXR1cyk7Ci0KLSAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQotICAgICAgICBv
YmplY3QtPnNldFN0cmluZygiaWQiLCBtX2lkKTsKLQotICAgIGlmIChtX2xpbmUgPiAwKQotICAg
ICAgICBvYmplY3QtPnNldERvdWJsZSgibGluZSJfcywgbV9saW5lKTsKLQotICAgIGlmIChtX3Np
emUgPiAwKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgic2l6ZSJfcywgbV9zaXplKTsKLQot
ICAgIGlmIChtX3Bvc2l0aW9uID4gMCkKLSAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInBvc2l0
aW9uIl9zLCBtX3Bvc2l0aW9uKTsKLQotICAgIGlmIChtX2FsaWduICE9IE5vbmUpIHsKLSAgICAg
ICAgY29uc3QgY2hhciogYWxpZ247Ci0gICAgICAgIHN3aXRjaCAobV9hbGlnbikgewotICAgICAg
ICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGFydDoKLSAgICAgICAgICAgIGFsaWduID0gIlN0YXJ0
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpNaWRk
bGU6Ci0gICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkVuZDoKLSAgICAgICAgICAgIGFsaWduID0gIkVu
ZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6Tm9u
ZToKLSAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbik7Ci0gICAg
fQotCi0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgb2JqZWN0
LT5zZXRTdHJpbmcoImZvcmVncm91bmRDb2xvciJfcywgbV9mb3JlZ3JvdW5kQ29sb3Iuc2VyaWFs
aXplZCgpKTsKLQotICAgIGlmIChtX2JhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAg
IG9iamVjdC0+c2V0U3RyaW5nKCJiYWNrZ3JvdW5kQ29sb3IiX3MsIG1fYmFja2dyb3VuZENvbG9y
LnNlcmlhbGl6ZWQoKSk7Ci0KLSAgICBpZiAobV9oaWdobGlnaHRDb2xvci5pc1ZhbGlkKCkpCi0g
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJoaWdobGlnaHRDb2xvciJfcywgbV9oaWdobGlnaHRD
b2xvci5zZXJpYWxpemVkKCkpOwotCi0gICAgaWYgKG1fYmFzZUZvbnRTaXplKQotICAgICAgICBv
YmplY3QtPnNldERvdWJsZSgiYmFzZUZvbnRTaXplIl9zLCBtX2Jhc2VGb250U2l6ZSk7Ci0KLSAg
ICBpZiAobV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgicmVs
YXRpdmVGb250U2l6ZSJfcywgbV9yZWxhdGl2ZUZvbnRTaXplKTsKLQotICAgIGlmICghbV9mb250
TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJmb250Il9zLCBtX2Zv
bnROYW1lKTsKLQotICAgIHJldHVybiBvYmplY3QtPnRvSlNPTlN0cmluZygpOwotfQotCi1pbmxp
bmUgYm9vbCBHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1
ZURhdGEmIG90aGVyKSBjb25zdAotewotICAgIGlmIChtX3JlbGF0aXZlRm9udFNpemUgIT0gb3Ro
ZXIubV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
YmFzZUZvbnRTaXplICE9IG90aGVyLm1fYmFzZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChtX2xpbmUgIT0gb3RoZXIubV9saW5lKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1fc2l6ZSAhPSBvdGhlci5tX3NpemUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAobV9hbGlnbiAhPSBvdGhlci5tX2FsaWduKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yICE9IG90aGVyLm1fZm9yZWdyb3Vu
ZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fYmFja2dyb3VuZENvbG9y
ICE9IG90aGVyLm1fYmFja2dyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG1faGlnaGxpZ2h0Q29sb3IgIT0gb3RoZXIubV9oaWdobGlnaHRDb2xvcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2ZvbnROYW1lICE9IG90aGVyLm1fZm9udE5hbWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9pZCAhPSBvdGhlci5tX2lkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fY29udGVudCAhPSBvdGhlci5tX2NvbnRlbnQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAKIGNs
YXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgOiBwdWJsaWMgVHJhY2tQcml2YXRlQmFz
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudCgpID0gZGVmYXVsdDsKQEAgLTIzNCw5ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpID0gMDsKICNlbmRpZgogCi0gICAg
dmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKQEAgLTI0NSwxOSArNjUsNCBAQCBw
dWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ7Ci0KLXRlbXBsYXRlIDw+
Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+IHsKLSAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiBjdWUpCi0g
ICAgewotICAgICAgICByZXR1cm4gY3VlLnRvSlNPTlN0cmluZygpOwotICAgIH0KLX07Ci0KLX0K
LQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDliNTI4YjRjY2JlZmNh
NWEwZDJmODA0NThkNDI2YjQ0YTRjNGE1MDYuLjJjZDQyYTk5YWY0Yzg5NWFlMTFmYzE4MDg2ZDdm
ZDgzYTQ2NzU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGJvb2wgbWFrZVJHQkEzMkZyb21B
UkdCQ0ZBcnJheShDRkFycmF5UmVmIGNvbG9yQXJyYXksIFJHQkEzMiYgY29sb3IpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1
ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcsIEdlbmVy
aWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZywg
SW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFMOwog
ICAgIC8vIFNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMgd2UgdHJhbnNsYXRlIGludG8gcGVyLWN1ZSBX
ZWJWVFQgc2V0dGluZ3MgYXJlIHJlcGVhdGVkIG9uIGVhY2ggcGFydCBvZiBhbiBhdHRyaWJ1dGVk
IHN0cmluZyBzbyBvbmx5CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2b2lkIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBh
dHRyaQogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBBbGlnbjsKIAogICAgICAgICAgICAg
ICAgIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1l
bnRUeXBlX1N0YXJ0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAgICAgICAgICAgICAg
ICAgY3VlRGF0YS5zZXRBbGlnbihHZW5lcmljQ3VlRGF0YTo6U3RhcnQpOworICAgICAgICAgICAg
ICAgICAgICBjdWVEYXRhLnNldEFsaWduKEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0
KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcs
IGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFs
VG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6
Ok1pZGRsZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1
ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0
cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX0VuZCwg
MCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0
QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkVuZCk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEu
c2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6RW5kKTsKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0z
MjMsNyArMzIzLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0
cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICBpZiAoY291bnQpCiAg
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRlZCAiLCBjb3VudCwgY291bnQgPiAx
ID8gIiBjdWVzIiA6ICIgY3VlIiwgIiBhdCB0aW1lICIsIHRpbWUpOwogCi0gICAgVmVjdG9yPFJl
ZjxHZW5lcmljQ3VlRGF0YT4+IGFycml2aW5nQ3VlczsKKyAgICBWZWN0b3I8UmVmPEluYmFuZEdl
bmVyaWNDdWU+PiBhcnJpdmluZ0N1ZXM7CiAgICAgaWYgKGNvdW50KSB7CiAgICAgICAgIGZvciAo
Q0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgIENGQXR0cmlidXRl
ZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nID0gc3RhdGljX2Nhc3Q8Q0ZBdHRyaWJ1dGVkU3Ry
aW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dHJpYnV0ZWRTdHJpbmdzLCBpKSk7CkBA
IC0zMzEsNyArMzMxLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
QXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgICAgIGlm
ICghYXR0cmlidXRlZFN0cmluZyB8fCAhQ0ZBdHRyaWJ1dGVkU3RyaW5nR2V0TGVuZ3RoKGF0dHJp
YnV0ZWRTdHJpbmcpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBh
dXRvIGN1ZURhdGEgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRv
IGN1ZURhdGEgPSBJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHByb2Nl
c3NDdWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZWRTdHJpbmcsIGN1ZURhdGEuZ2V0KCkpOwogICAgICAg
ICAgICAgaWYgKCFjdWVEYXRhLT5jb250ZW50KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAg
ICAgICAgICAgIGlmIChjdWVEYXRhLT5wb3NpdGlvbigpID49IDAgJiYgY3VlRGF0YS0+c2l6ZSgp
ID4gMCkKICAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRQb3NpdGlvbihjdWVEYXRhLT5wb3Np
dGlvbigpIC0gY3VlRGF0YS0+c2l6ZSgpIC8gMik7CiAKLSAgICAgICAgICAgIGN1ZURhdGEtPnNl
dFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6UGFydGlhbCk7CisgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbCk7CiAKICAgICAgICAgICAg
IGFycml2aW5nQ3Vlcy5hcHBlbmQoV1RGTW92ZShjdWVEYXRhKSk7CiAgICAgICAgIH0KQEAgLTM1
Nyw3ICszNTcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRy
aWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogICAgICAgICBpZiAobV9jdXJy
ZW50Q3VlRW5kVGltZSA+PSBtX2N1cnJlbnRDdWVTdGFydFRpbWUpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgY3VlRGF0YSA6IG1fY3VlcykgewogICAgICAgICAgICAgICAgIC8vIFNlZSBpZiBv
bmUgb2YgdGhlIG5ld2x5LWFycml2ZWQgY3VlcyBpcyBhbiBleHRlbnNpb24gb2YgdGhpcyBjdWUu
Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxHZW5lcmljQ3VlRGF0YT4+IG5vbkV4dGVuc2lv
bkN1ZXM7CisgICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxJbmJhbmRHZW5lcmljQ3VlPj4gbm9u
RXh0ZW5zaW9uQ3VlczsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGFycml2aW5nQ3VlIDog
YXJyaXZpbmdDdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJyaXZpbmdDdWUtPmRv
ZXNFeHRlbmRDdWVEYXRhKCpjdWVEYXRhKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vbkV4
dGVuc2lvbkN1ZXMuYXBwZW5kKFdURk1vdmUoYXJyaXZpbmdDdWUpKTsKQEAgLTM3NCw3ICszNzQs
NyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRyaWJ1dGVkU3Ry
aW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogCiAgICAgICAgICAgICAgICAgaWYgKG1fcGVu
ZGluZ0N1ZVN0YXR1cyA9PSBWYWxpZCkgewogICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRFbmRUaW1lKG1fY3VycmVudEN1ZUVuZFRpbWUpOwotICAgICAgICAgICAgICAgICAgICBjdWVE
YXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKTsKKyAgICAgICAgICAgICAg
ICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRl
KTsKIAogICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRp
bmcgY3VlICIsICpjdWVEYXRhKTsKIApAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3ZlQ29tcGxldGVkQ3VlcygpCiAgICAgICAgIGxvbmcgY3Vy
cmVudEN1ZSA9IG1fY3Vlcy5zaXplKCkgLSAxOwogICAgICAgICBmb3IgKDsgY3VycmVudEN1ZSA+
PSAwOyAtLWN1cnJlbnRDdWUpIHsKICAgICAgICAgICAgIGF1dG8mIGN1ZSA9IG1fY3Vlc1tjdXJy
ZW50Q3VlXTsKLSAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9IEdlbmVyaWNDdWVEYXRh
OjpDb21wbGV0ZSkKKyAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9IEdlbmVyaWNDdWVE
YXRhOjpTdGF0dXM6OkNvbXBsZXRlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3ZpbmcgY3VlICIsICpjdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggNWQ4
NzEwNzM3YTM0ZjdhNTNiODhmNWIzY2ViMzBiNGRhZmM5M2ViOC4uNjM0M2U0NTczN2VjZTg1MmIw
MThjOWFiYmMwMDJmYzYxMTlmOGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRyYWNrUGFyZW50KiwgQ3Vl
Rm9ybWF0KTsKIAotICAgIHZvaWQgcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3Ry
aW5nUmVmLCBHZW5lcmljQ3VlRGF0YSYpOworICAgIHZvaWQgcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMo
Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmLCBJbmJhbmRHZW5lcmljQ3VlJik7CiAgICAgdm9pZCBwcm9j
ZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAg
dm9pZCBwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRpbWUmKTsK
ICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZEN1ZXMoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVRpbWUgbV9jdXJyZW50Q3VlU3RhcnRUaW1lOwogICAgIE1lZGlhVGltZSBt
X2N1cnJlbnRDdWVFbmRUaW1lOwogCi0gICAgVmVjdG9yPFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4+
IG1fY3VlczsKKyAgICBWZWN0b3I8UmVmUHRyPEluYmFuZEdlbmVyaWNDdWU+PiBtX2N1ZXM7CiAg
ICAgQVZGSW5iYW5kVHJhY2tQYXJlbnQqIG1fb3duZXI7CiAKICAgICBlbnVtIFBlbmRpbmdDdWVT
dGF0dXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oCmluZGV4IDM5ZGE1NThlNmRiMzhmMGM3NzhjNTE3ODBhMDc2MmI1ZjY1MDBiMGYu
LjM0MDcwY2M3YTg3NWEwYTBjOTcyNzRhZmRmYjQ3MjlkM2ZkYmRhNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTQ0LDcg
KzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkY7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOwotY2xhc3Mg
R2VuZXJpY0N1ZURhdGE7CiAKIC8vIFVzZSBlYWdlciBpbml0aWFsaXphdGlvbiBmb3IgdGhlIFdl
YWtQdHJGYWN0b3J5IHNpbmNlIHdlIGNhbGwgbWFrZVdlYWtQdHIoKSBmcm9tIGFub3RoZXIgdGhy
ZWFkLgogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiwgV2Vha1B0ckZhY3RvcnlJ
bml0aWFsaXphdGlvbjo6RWFnZXI+LCBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
LCBwdWJsaWMgQVZGSW5iYW5kVHJhY2tQYXJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA0M2U2OWIw
NjdhNzBlMTY3ZTgzZTg0ZmQ3YTY2YTI5NGFmYWEwMzc4Li5mNWE1NGFmYmZhNjY4ODQ4NDIyNjM3
ZTdiYzRkYmIwNGUwNWI5MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFu
ZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2xpZW50KCktPmFkZERhdGFDdWUoc3RhcnQsIGVuZCwgZGF0YSwgbGVu
Z3RoKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmIGRh
dGEpCisgICAgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGRhdGEpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY3VlRm9ybWF0KCkgPT0gQ3VlRm9ybWF0OjpHZW5lcmljKTsKICAg
ICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWNDdWUoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDU1M2Q4ZWUzZWI0NTU2OTkxMjNi
YmFiZDU5ZGYzYTI0ZTAzOWU4YjguLjJhNmQ1MWQ4MDk3ZjcyZmE0NjhmYTUzZjNlYjI4ZmM4ZjAy
ZWE0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0yNDIzLDcgKzI0MjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5KiBlbnRyeQogewogICAg
IEFTU0VSVChlbnRyeSk7CiAKLSAgICBhdXRvIGN1ZSA9IEdlbmVyaWNDdWVEYXRhOjpjcmVhdGUo
KTsKKyAgICBhdXRvIGN1ZSA9IEluYmFuZEdlbmVyaWNDdWU6OmNyZWF0ZSgpOwogCiAgICAgZ2lu
dDY0IHN0YXJ0ID0gLTEsIHN0b3AgPSAtMTsKICAgICBnc3RfdG9jX2VudHJ5X2dldF9zdGFydF9z
dG9wX3RpbWVzKGVudHJ5LCAmc3RhcnQsICZzdG9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCmluZGV4IDMyYzli
N2UxMmU1YTcyY2IwYmJiZDBhOTVlMDMxMThlMDcyNDBiYzEuLmFmNjRjODJiOTAyM2FkMjM0MTQy
M2NmODVkYjQ5NWE3NmM0YzZiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApAQCAtMTE4LDE5ICsxMTgsMTkg
QEAgdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRp
bWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUKIH0KICNlbmRpZgogCi12b2lkIFJlbW90ZVRleHRU
cmFja1Byb3h5OjphZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgUmVtb3RlVGV4
dFRyYWNrUHJveHk6OmFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGRHZW5lcmljQ3VlKG1faWRlbnRpZmll
ciwgY3VlLmN1ZURhdGEoKSksIG1fcGxheWVyLmlkZW5kaWZpZXIoKSk7CiB9CiAKLXZvaWQgUmVt
b3RlVGV4dFRyYWNrUHJveHk6OnVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKQordm9p
ZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3Vl
JiBjdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlVwZGF0ZUdlbmVy
aWNDdWUobV9pZGVudGlmaWVyLCBjdWUuY3VlRGF0YSgpKSwgbV9wbGF5ZXIuaWRlbmRpZmllcigp
KTsKIH0KIAotdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlR2VuZXJpY0N1ZShHZW5l
cmljQ3VlRGF0YSYpCit2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVHZW5lcmljQ3Vl
KEluYmFuZEdlbmVyaWNDdWUmIGN1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6UmVtb3ZlR2VuZXJpY0N1ZShtX2lkZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkpLCBtX3Bs
YXllci5pZGVuZGlmaWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJz
ZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCBlMjg2ZWM0
ODk0NjczYTRmMmI1NjFkMjM4YjA2ZjYyNzUzNmNmZTQ1Li4wYmUxNTQ1MWQ5YWI4NDliOWFhNDli
NTRjMzE1OTQ0Y2Q2ZjhmNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5k
aWYKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpOworICAgIHZpcnR1
YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
V2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjYwNDkwZmI3YjU2YTg4Y2Zm
MGQ5Yjg5YzFhNzE2OGFlZDBkMTg1Yy4uMzcyYjVkMmQ3ZTlmNzcxNzM5ZjdkZmI1YjcwYTJmNTIw
NzMxMTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01
NjMsNiArNTYzLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJD
b3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9TaGFyZURhdGEuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OkZvbnRDaGFuZ2VzJzogWyc8V2ViQ29yZS9Gb250QXR0cmlidXRl
Q2hhbmdlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSc6IFsnPFdlYkNv
cmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6R2VuZXJpY0N1ZURh
dGEnOiBbJzxXZWJDb3JlL0luYmFuZEdlbmVyaWNDdWUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OkdyYW1tYXJEZXRhaWwnOiBbJzxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVy
VHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5z
cGVjdG9yT3ZlcmxheS5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZm
NjNiMjMwZjYyN2QxMmNjNmVjM2VmN2RkNmNlNmFkMTI5N2FhNmEuLjg0YTk2ZTY1NGEzMmIzNThk
ODk5YjdhYzIxOTQ5NmE3N2I4MGFlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTExNiwxOCArMTE2LDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvCiAgICAgaWYgKHVy
bC5pc0xvY2FsRmlsZSgpKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5k
bGU7CiAgICAgICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsK
LSAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gZmFsc2U7CiAKKyAgICAgICAgYXV0byBj
cmVhdGVFeHRlbnNpb24gPSBbJl0gewogI2lmIEhBVkUoU0FOREJPWF9JU1NVRV9SRUFEX0VYVEVO
U0lPTl9UT19QUk9DRVNTX0JZX0FVRElUX1RPS0VOKQotICAgICAgICBhdXRvIGF1ZGl0VG9rZW4g
PSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCk7Ci0gICAgICAg
IEFTU0VSVChhdWRpdFRva2VuKTsKLSAgICAgICAgaWYgKGF1ZGl0VG9rZW4pCi0gICAgICAgICAg
ICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZEJ5QXVkaXRUb2tlbihmaWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUp
OwotICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoYXV0byBhdWRpdFRva2VuID0gbV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2Vu
KGZpbGVTeXN0ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRsZSk7CiAjZW5kaWYKLSAg
ICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShm
aWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7
CiAKLSAgICAgICAgaWYgKCFjcmVhdGVkRXh0ZW5zaW9uKSB7CisgICAgICAgICAgICByZXR1cm4g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAoIWNyZWF0ZUV4dGVuc2lvbigpKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlVuYWJs
ZSB0byBjcmVhdGUgc2FuZGJveCBleHRlbnNpb24gaGFuZGxlIGZvciBHUFVQcm9jZXNzIHVybC5c
biIpOwogICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZS5uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcjsKICAgICAgICAgICAgIG1fcGxheWVyLT5uZXR3
b3JrU3RhdGVDaGFuZ2VkKCk7CkBAIC01MjUsNiArNTI0LDMwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpyZW1vdmVEYXRhQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWRlbnRpCiB9CiAjZW5kaWYKIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFkZEdl
bmVyaWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBHZW5lcmlj
Q3VlRGF0YSYmIGN1ZURhdGEpCit7CisgICAgQVNTRVJUKG1fdGV4dFRyYWNrcy5jb250YWlucyhp
ZGVudGlmaWVyKSk7CisKKyAgICBpZiAoY29uc3QgYXV0byYgdHJhY2sgPSBtX3RleHRUcmFja3Mu
Z2V0KGlkZW50aWZpZXIpKQorICAgICAgICB0cmFjay0+YWRkR2VuZXJpY0N1ZShXVEZNb3ZlKElu
YmFuZEdlbmVyaWNDdWU6OmNyZWF0ZShXVEZNb3ZlKGN1ZURhdGEpKS5nZXQoKSkpOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlR2VuZXJpY0N1ZShUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdlbmVyaWNDdWVEYXRhJiYgY3VlRGF0YSkK
K3sKKyAgICBBU1NFUlQobV90ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKworICAg
IGlmIChjb25zdCBhdXRvJiB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRpZmllcikpCisg
ICAgICAgIHRyYWNrLT51cGRhdGVHZW5lcmljQ3VlKFdURk1vdmUoSW5iYW5kR2VuZXJpY0N1ZTo6
Y3JlYXRlKFdURk1vdmUoY3VlRGF0YSkpLmdldCgpKSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpyZW1vdmVHZW5lcmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgR2VuZXJpY0N1ZURhdGEmJiBjdWVEYXRhKQoreworICAgIEFTU0VSVCht
X3RleHRUcmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgaWYgKGNvbnN0IGF1dG8m
IHRyYWNrID0gbV90ZXh0VHJhY2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdHJhY2stPnJl
bW92ZUdlbmVyaWNDdWUoV1RGTW92ZShJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoV1RGTW92ZShj
dWVEYXRhKSkuZ2V0KCkpKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFk
ZFJlbW90ZVZpZGVvVHJhY2soVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fdmlkZW9UcmFja3MuZW5zdXJlKGlkZW50aWZpZXIsIFsmXSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCAxMzJmMzBhYjI5YjZlNTA5ZjExMzk0OTI1
ODBhNmUzNjcxY2M3OTA5Li41NjhjMTY4ZjUwYjRlOGRjNTc3MTUxZGFjYTY3NDgyYTc3NDA4NTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgTWFj
aFNlbmRSaWdodDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEdlbmVyaWNDdWVE
YXRhOwogY2xhc3MgSVNPV2ViVlRUQ3VlOwogY2xhc3MgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZVZhbHVlOwogfQpAQCAtMTIyLDYgKzEyMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVE
YXRhQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIE1lZGlhVGltZSYmIHN0YXJ0LCBN
ZWRpYVRpbWUmJiBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZSYm
KTsKICNlbmRpZgogCisgICAgdm9pZCBhZGRHZW5lcmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiYpOworICAgIHZvaWQgdXBkYXRlR2Vu
ZXJpY0N1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW5lcmljQ3Vl
RGF0YSYmKTsKKyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEmJik7CisKICAgICB2b2lkIHJlcXVlc3RS
ZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlv
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJj
ZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZXNvdXJjZU5vdFN1
cHBvcnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpp
bmRleCBlODg5N2I2YTEwYTEwZDRiNzAwOTI5OGM3YWEyNzI4YmZlMTEyOTdhLi4zZmZjZjM2ZWZl
MjRiM2QwODUwZWVhMjg2ZTJjZTcyOGU0YTJmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtNTcsOSArNTcsOSBAQCBtZXNzYWdlcyAtPiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAgICAgUmVtb3ZlRGF0YUN1ZShX
ZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgTWVkaWFUaW1lIHN0
YXJ0LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFs
dWUgY3VlRGF0YSkKICNlbmRpZgogCi0gICAgIyMgQWRkR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YSBjdWUpCi0gICAgIyMgVXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmlj
Q3VlRGF0YSBjdWUpCi0gICAgIyMgUmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmljQ3Vl
RGF0YSBjdWUpCisgICAgQWRkR2VuZXJpY0N1ZShXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgdHJhY2tJRCwgc3RydWN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhIGN1ZSkKKyAg
ICBVcGRhdGVHZW5lcmljQ3VlKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0
cmFja0lELCBzdHJ1Y3QgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQorICAgIFJlbW92ZUdl
bmVyaWNDdWUoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIHN0
cnVjdCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCiAKICAgICBBZGRSZW1vdGVWaWRlb1Ry
YWNrKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBzdHJ1Y3Qg
V2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAg
ICAgUmVtb3ZlUmVtb3RlVmlkZW9UcmFjayhXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgdHJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZhNjYyMmEzOTU0
OTkwMDcxMDZiZDQ5MDk3MTEwNWQ1OGI4M2E5NmUuLjcyNTIxN2Q3MjRiZGViOThlM2JjMGRiNjVj
NTYxZWQ3ZWU2MDUzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtODgsMjIgKzg4
LDI3IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihU
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhCiAgICAgbV9pc0RlZmF1bHQgPSBjb25maWd1
cmF0aW9uLmlzRGVmYXVsdDsKIH0KIAotdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGRH
ZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6
YWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiYgY3VlKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgQVNTRVJUKGNsaWVudCgpKTsKKyAgICBpZiAoYXV0byogY2xpZW50ID0gdGhp
cy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+YWRkR2VuZXJpY0N1ZShjdWUpOwogfQogCi12
b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURh
dGEmKQordm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmJiBjdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQo
Y2xpZW50KCkpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAg
ICAgY2xpZW50LT51cGRhdGVHZW5lcmljQ3VlKGN1ZSk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpCit2b2lkIFRleHRU
cmFja1ByaXZhdGVSZW1vdGU6OnJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYmIGN1
ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChjbGllbnQoKSk7CisgICAg
aWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlbW92
ZUdlbmVyaWNDdWUoY3VlKTsKIH0KIAotCiB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBh
cnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiB7CiAgICAgQVNTRVJUKGNsaWVu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggN2I3ZjcwM2NiNDk3ZGVkZWEzOTFkYjU5
Y2M5MmJlY2UxNWE1OTJlMy4uYmIyZjQxNDRiZDY5MGI5N2I1NzliNzU4M2I0NTNmNjliM2NjNTRj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJh
Y2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgR2VuZXJpY0N1ZURhdGE7CitjbGFzcyBJbmJhbmRHZW5lcmljQ3VlOwogY2xhc3MgSVNP
V2ViVlRUQ3VlOwogfQogCkBAIC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZURhdGFDdWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlJiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGFkZEdlbmVyaWNDdWUo
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGEmKTsKKyAgICB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJp
Y0N1ZSYmKTsKKyAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYmKTsK
KyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYmKTsKIAogICAgIHZv
aWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKICAgICB2b2lkIHBhcnNlV2ViVlRU
Q3VlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNjA1YWNiYzNlNTA0
YTFjOTBkMzBkYzkyMjUyZWZjNWJkYzFiMDAzLi5lYmY2M2FlYWZlNGE2MTM0ZWJlZmFmMmRjOGM1
ODliZTEyZjIxZmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMjEgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbi1iYW5k
IGdlbmVyaWMgY3VlcyB3aGVuIGxvYWRpbmcgbWVkaWEgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwODAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU5Njg3OTQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAyMC0wMi0yMSAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbIE1hYyBEZWJ1ZyBdIGxlZ2FjeS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvYW5p
bWF0aW9uLXdlbGNvbWUtc2FmYXJpLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkxM2E1ZDQ0ODQyZmFiOWNlNDczNGJk
ZGYzN2M0ZWFlNWQyMDc1ZTguLjY0ODQ4MTM2Yzc0NjMwOGVlY2ZmZTNmNWU2NWM4NzEwOTBhOTlh
ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjMyLDYg
KzIzMiwxMyBAQCBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtd2VidnR0LXRyYWNrcy5odG1sIFsg
UGFzcyBdCiBodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLmh0bWwg
WyBQYXNzIF0KIGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEtY3Jh
c2guaHRtbCBbIFBhc3MgXQogCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLWN1ZXMtYWRkZWQt
b25jZS5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLmh0bWwg
WyBQYXNzIF0KK21lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtZHVwbGljYXRlLXRyYWNrcy13aGVu
LXNvdXJjZS1jaGFuZ2VzLmh0bWwgWyBQYXNzIF0KK21lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQt
bGVnYWN5LWFwaS5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLmh0bWwg
WyBQYXNzIF0KK21lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtbWV0YWRhdGEtZGlzcGxheS1vcmRl
ci5odG1sIFsgUGFzcyBdCisKIGFjY2Vzc2liaWxpdHkvbWVkaWEtZWxlbWVudC5odG1sIFsgU2tp
cCBdCiBmYXN0L2Jsb2NrL2Zsb2F0L2xpc3QtbWFya2VyLWlzLWZsb2F0LWNyYXNoLmh0bWwgWyBT
a2lwIF0KIGZhc3QvY3NzL3JlbGF0aXZlLXBvc2l0aW9uLXJlcGxhY2VkLWluLXRhYmxlLWRpc3Bs
YXktY3Jhc2guaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391848</attachid>
            <date>2020-02-27 04:16:54 -0800</date>
            <delta_ts>2020-02-27 05:49:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208080-20200227041653.patch</filename>
            <type>text/plain</type>
            <size>64719</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdkMGU3NzhhYzAwM2Rm
OGYyOTJmODVkNDk1NWRhZTViZmY4YTFhYi4uY2M5OTk5ZThiNTI2MWFhMmRjYmQyNzZmNTI0YWIz
ZDM3NzRlNjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0wMi0yMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGlu
LWJhbmQgZ2VuZXJpYyBjdWVzIHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBl
bmFibGVkIGZvciBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRU
cmFja0N1ZU1hcDo6ZmluZEluZGV4T2ZQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNU
ZXh0VHJhY2tDdWVNYXA6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRUcmFj
a0N1ZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRTdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZW5kVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRF
bmRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmlkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldElkKToKKyAgICAgICAgKFdl
YkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnNldExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6cG9z
aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmFsaWduIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNDdWU6OmZvbnROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OnNldEZvbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmJhc2VGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRCYXNlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1
ZTo6cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljQ3VlOjpzZXRSZWxhdGl2ZUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OmZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kR2VuZXJpY0N1ZTo6YmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNDdWU6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRHZW5lcmljQ3VlOjpoaWdobGlnaHRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY0N1ZTo6c2V0U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
SW5iYW5kR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjp0
b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZG9lc0V4dGVuZEN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdlbmVyaWNDdWVEYXRhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2Vu
ZXJpY0N1ZURhdGE6OnN0YXJ0VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6c2V0U3RhcnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjplbmRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRFbmRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjppZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OmNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldENvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OmxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldExpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OnBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmFsaWduIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRBbGlnbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9udE5hbWUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEZvbnROYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpiYXNlRm9udFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEJh
c2VGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6
cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0UmVsYXRpdmVGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9yZWdyb3VuZENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmJhY2tncm91bmRDb2xvciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0QmFj
a2dyb3VuZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
OjpoaWdobGlnaHRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0SGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YTo6c2V0U3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyaWNDdWVEYXRhOjp0b0pTT05TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OmRvZXNFeHRlbmRDdWVEYXRhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+Ojp0b1N0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNv
bXBsZXRlZEN1ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorCiAyMDIwLTAy
LTI2ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIG5vbi11bmlmaWVkIGJ1aWxkcyB3aXRoIGFzc2Vy
dGlvbnMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzY1OGUxNDhmZDdmOTkzNDhjNWM4MmM1NzgxNTQ5
MDg0ZjY2Y2YxZS4uYzQ5ZjNjYTY2YmNiMWIxYzQ5ZDhjYTFiNmM2Y2VlZTY4OTU4ZWEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wMi0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLWJhbmQgZ2VuZXJpYyBjdWVz
IHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZEdlbmVyaWNDdWUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6dXBkYXRlR2VuZXJpY0N1ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVHZW5lcmljQ3VlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5Lmg6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFkZEdlbmVyaWND
dWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZUdl
bmVyaWNDdWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJl
bW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViS2l0
OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpyZW1vdmVHZW5lcmljQ3VlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmg6CisKIDIwMjAtMDIt
MjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVVByb2Nl
c3Mgc2hvdWxkIGJlIG1hZGUgYXdhcmUgb2YgZGV2aWNlIG9yaWVudGF0aW9uIGZvciBjb3JyZWN0
IHZpZGVvIGNhcHR1cmUgZnJhbWUgcm90YXRpb24gY29tcHV0YXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IDZkYjVjZTBmMGQ2OWVhNjg0YTJhMDU3MTQ3OTQ0MDBiMjM5NjQyMjkuLjQzMzg1M2Y2
MmZlODRmZGIxNzQwMzNjYmZiOTc5NmQ3ODA1NzA3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
MTEwMCw2ICsxMTAwLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBl
cy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UG9pbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZmNhYWIzYTFkM2U1MzA4MTdkYjBmYzRjMzQ1
ZmIxOTQ4ODEwM2MwLi42OGMyNmY5MzdmYTYwZDdiY2UwMzcxNzQ0ODc5MzIxZGJiNjgxZWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTg3NCw2ICsxODc0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE1MzNiNjk3N2Y5ZDU4MThhZDhi
NDdiMGZlNGEwODM1M2E0ODYzNC4uNzYwYjgzNzM0MTlkYjFhM2I1YzI3MTA3YWEzMWI2MDQ1ODFh
ZGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTQ1LDYgKzE0NSw3IEBACiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5oICovOyB9OwogCQkwNzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFj
a0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
Nzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJCTA3ODQ2
Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyog
SlNUcmFja0N1c3RvbS5oICovOyB9OworCQkwNzg2MzNFOTIzRkYzNDdCMDA4N0FFMjEgLyogSW5i
YW5kR2VuZXJpY0N1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8qIEluYmFuZEdlbmVyaWNDdWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzg3QzQ2QTFC
RkJERjZGMDA2RENEN0YgLyogSlNNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODdDNDY4MUJGQkRG
NkYwMDZEQ0Q3RiAvKiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9Owog
CQkwNzhFMDkxNTE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjIxQjREMTdDRUMzMjcwMDg0OEU1
MSAvKiBNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzhFMDkxODE3RDE0RDFDMDA0MjBBQTEgLyog
TWVkaWFTdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcyMjFCNTUxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtVHJhY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTQ5Miw2
ICs1NDkzLDggQEAKIAkJMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJh
Y2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUcmFja0N1c3Rv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg2MzNENzIzRkUwOTY0MDA4N0FF
MjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8qIEluYmFuZEdlbmVyaWNDdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5iYW5kR2VuZXJpY0N1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzg2MzNGODI0MDcxNUQyMDA4N0FFMjEgLyogSW5iYW5kR2VuZXJpY0N1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmJhbmRHZW5lcmljQ3VlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc4N0M0NjcxQkZCREY2RjAwNkRDRDdGIC8qIEpTTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc4N0M0NjgxQkZCREY2RjAwNkRDRDdGIC8qIEpTTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFU
cmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3OEUwOTQ4MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjUwNzIsNiArMjUwNzUsOCBAQAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFn
ZVNvdXJjZS5jcHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291
cmNlLmggKi8sCiAJCQkJNTU1MENCNDExRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAq
LywKKwkJCQkwNzg2MzNGODI0MDcxNUQyMDA4N0FFMjEgLyogSW5iYW5kR2VuZXJpY0N1ZS5jcHAg
Ki8sCisJCQkJMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8qIEluYmFuZEdlbmVyaWNDdWUuaCAq
LywKIAkJCQkwNzk0MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oICovLAogCQkJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50LmggKi8sCiAJCQkJMkQ0NkYwNEQxN0I5NkZCRDAwNTY0N0YwIC8qIEludFBv
aW50LmNwcCAqLywKQEAgLTMwMzExLDYgKzMwMzE2LDcgQEAKIAkJCQkyNkY3NTZCNTFCM0I2OEYy
MDAwNURENzkgLyogSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxNkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkU5NjFDNTUxOEFEMzM4QzAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJh
Y2suaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODYzM0U5MjNGRjM0N0IwMDg3QUUyMSAvKiBJbmJh
bmRHZW5lcmljQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTE2QzU5MzE3Q0ZFMTcyMDA4NTJD
MDQgLyogSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFOUUx
MkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTIxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRl
eHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCA2NTFiYmMxYjA3NGFjODNjYTI4
ZjQ2MWJiMWY0ZTQ5N2I3YmU5NTcxLi4zNjFjM2FmMWU2Njc0NGMxMjBjZjZmYTYwYmVjZGYxODE2
MTRlMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVy
aWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjay5jcHAKQEAgLTQwLDMyICs0MCwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJhbmRHZW5lcmljVGV4dFRyYWNrKTsK
IAotdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjphZGQoR2VuZXJpY0N1ZURhdGEmIGN1ZURh
dGEsIFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKK3ZvaWQgR2VuZXJpY1RleHRUcmFja0N1ZU1h
cDo6YWRkKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSwgVGV4dFRyYWNrQ3VlR2VuZXJpYyYg
cHVibGljQ3VlKQogewotICAgIG1fZGF0YVRvQ3VlTWFwLmFkZCgmY3VlRGF0YSwgJmN1ZSk7Ci0g
ICAgbV9jdWVUb0RhdGFNYXAuYWRkKCZjdWUsICZjdWVEYXRhKTsKKyAgICBtX2RhdGFUb0N1ZU1h
cC5hZGQoaW5iYW5kQ3VlLnVuaXF1ZUlkKCksICZwdWJsaWNDdWUpOworICAgIG1fY3VlVG9EYXRh
TWFwLmFkZCgmcHVibGljQ3VlLCBpbmJhbmRDdWUudW5pcXVlSWQoKSk7CiB9CiAKLVRleHRUcmFj
a0N1ZUdlbmVyaWMqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoR2VuZXJpY0N1ZURhdGEm
IGN1ZURhdGEpCitUZXh0VHJhY2tDdWVHZW5lcmljKiBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpm
aW5kKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIHsKLSAgICByZXR1cm4gbV9kYXRhVG9D
dWVNYXAuZ2V0KCZjdWVEYXRhKTsKKyAgICByZXR1cm4gbV9kYXRhVG9DdWVNYXAuZ2V0KGluYmFu
ZEN1ZS51bmlxdWVJZCgpKTsKIH0KIAotR2VuZXJpY0N1ZURhdGEqIEdlbmVyaWNUZXh0VHJhY2tD
dWVNYXA6OmZpbmQoVGV4dFRyYWNrQ3VlJiBjdWUpCit2b2lkIEdlbmVyaWNUZXh0VHJhY2tDdWVN
YXA6OnJlbW92ZShJbmJhbmRHZW5lcmljQ3VlJiBpbmJhbmRDdWUpCiB7Ci0gICAgcmV0dXJuIG1f
Y3VlVG9EYXRhTWFwLmdldCgmY3VlKTsKKyAgICBpZiAoYXV0byBwdWJsaWNDdWUgPSBtX2RhdGFU
b0N1ZU1hcC50YWtlKGluYmFuZEN1ZS51bmlxdWVJZCgpKSkKKyAgICAgICAgbV9jdWVUb0RhdGFN
YXAucmVtb3ZlKHB1YmxpY0N1ZSk7CiB9CiAKLXZvaWQgR2VuZXJpY1RleHRUcmFja0N1ZU1hcDo6
cmVtb3ZlKEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBHZW5lcmljVGV4dFRyYWNrQ3Vl
TWFwOjpyZW1vdmUoVGV4dFRyYWNrQ3VlJiBwdWJsaWNDdWUpCiB7Ci0gICAgaWYgKGF1dG8gY3Vl
ID0gbV9kYXRhVG9DdWVNYXAudGFrZSgmY3VlRGF0YSkpCi0gICAgICAgIG1fY3VlVG9EYXRhTWFw
LnJlbW92ZShjdWUpOwotfQotCi12b2lkIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OnJlbW92ZShU
ZXh0VHJhY2tDdWUmIGN1ZSkKLXsKLSAgICBpZiAoYXV0byBkYXRhID0gbV9jdWVUb0RhdGFNYXAu
dGFrZSgmY3VlKSkKLSAgICAgICAgbV9kYXRhVG9DdWVNYXAucmVtb3ZlKGRhdGEpOworICAgIGlm
IChhdXRvIGN1ZUlkZW50aWZpZXIgPSBtX2N1ZVRvRGF0YU1hcC50YWtlKCZwdWJsaWNDdWUpKQor
ICAgICAgICBtX2RhdGFUb0N1ZU1hcC5yZW1vdmUoY3VlSWRlbnRpZmllcik7CiB9CiAKIGlubGlu
ZSBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCkBAIC04MCw3ICs3NSw3IEBAIFJlZjxJbmJh
bmRHZW5lcmljVGV4dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4CiAKIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6On5JbmJhbmRHZW5lcmlj
VGV4dFRyYWNrKCkgPSBkZWZhdWx0OwogCi12b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVw
ZGF0ZUN1ZUZyb21DdWVEYXRhKFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSwgR2VuZXJpY0N1ZURh
dGEmIGN1ZURhdGEpCit2b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUN1ZUZyb21D
dWVEYXRhKFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSwgSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0
YSkKIHsKICAgICBjdWUud2lsbENoYW5nZSgpOwogCkBAIC0xMDgsMTggKzEwMywxOCBAQCB2b2lk
IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKFRleHRUcmFja0N1
ZUdlbmVyaWMmIGN1ZSwgR2VuZQogICAgIGlmIChjdWVEYXRhLmhpZ2hsaWdodENvbG9yKCkuaXNW
YWxpZCgpKQogICAgICAgICBjdWUuc2V0SGlnaGxpZ2h0Q29sb3IoY3VlRGF0YS5oaWdobGlnaHRD
b2xvcigpLnJnYigpKTsKIAotICAgIGlmIChjdWVEYXRhLmFsaWduKCkgPT0gR2VuZXJpY0N1ZURh
dGE6OlN0YXJ0KQorICAgIGlmIChjdWVEYXRhLmFsaWduKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkFs
aWdubWVudDo6U3RhcnQpCiAgICAgICAgIGN1ZS5zZXRBbGlnbigic3RhcnQiX3MpOwotICAgIGVs
c2UgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6TWlkZGxlKQorICAgIGVs
c2UgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpNaWRk
bGUpCiAgICAgICAgIGN1ZS5zZXRBbGlnbigibWlkZGxlIl9zKTsKLSAgICBlbHNlIGlmIChjdWVE
YXRhLmFsaWduKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkVuZCkKKyAgICBlbHNlIGlmIChjdWVEYXRh
LmFsaWduKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6RW5kKQogICAgICAgICBjdWUu
c2V0QWxpZ24oImVuZCJfcyk7CiAgICAgY3VlLnNldFNuYXBUb0xpbmVzKGZhbHNlKTsKIAogICAg
IGN1ZS5kaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRH
ZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4
dFRyYWNrOjphZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7CiAgICAg
aWYgKG1fY3VlTWFwLmZpbmQoY3VlRGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMywxMyAr
MTI4LDEzIEBAIHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6YWRkR2VuZXJpY0N1ZShHZW5l
cmljQ3VlRGF0YSYgY3VlRGF0YSkKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRl
ZCBjdWU6ICIsIGN1ZS5nZXQoKSk7CiAKLSAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSAhPSBHZW5l
cmljQ3VlRGF0YTo6Q29tcGxldGUpCisgICAgaWYgKGN1ZURhdGEuc3RhdHVzKCkgIT0gR2VuZXJp
Y0N1ZURhdGE6OlN0YXR1czo6Q29tcGxldGUpCiAgICAgICAgIG1fY3VlTWFwLmFkZChjdWVEYXRh
LCBjdWUpOwogCiAgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSk7CiB9CiAKLXZvaWQgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYgY3VlRGF0YSkK
K3ZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5l
cmljQ3VlJiBjdWVEYXRhKQogewogICAgIGF1dG8gY3VlID0gbWFrZVJlZlB0cihtX2N1ZU1hcC5m
aW5kKGN1ZURhdGEpKTsKICAgICBpZiAoIWN1ZSkKQEAgLTE0NywxMSArMTQyLDExIEBAIHZvaWQg
SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYg
Y3VlRGF0YSkKIAogICAgIHVwZGF0ZUN1ZUZyb21DdWVEYXRhKCpjdWUsIGN1ZURhdGEpOwogCi0g
ICAgaWYgKGN1ZURhdGEuc3RhdHVzKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKQorICAg
IGlmIChjdWVEYXRhLnN0YXR1cygpID09IEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRl
KQogICAgICAgICBtX2N1ZU1hcC5yZW1vdmUoY3VlRGF0YSk7CiB9CiAKLXZvaWQgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYgY3VlRGF0YSkK
K3ZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5l
cmljQ3VlJiBjdWVEYXRhKQogewogICAgIGF1dG8gY3VlID0gbWFrZVJlZlB0cihtX2N1ZU1hcC5m
aW5kKGN1ZURhdGEpKTsKICAgICBpZiAoY3VlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCmluZGV4IDIyMTJmOTU3N2YyNmY1ODA3
MDhhODJjYTIwNTFmY2I4ODVlZWE4OGEuLjgzY2EyMThkNzAyOTgwYzExNTBjNjAzNTU5YzJkMTQx
NGZjODE5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjay5oCkBAIC0zNSwxNyArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwIHsKIHB1YmxpYzoKLSAgICB2b2lkIGFkZChH
ZW5lcmljQ3VlRGF0YSYsIFRleHRUcmFja0N1ZUdlbmVyaWMmKTsKKyAgICB2b2lkIGFkZChJbmJh
bmRHZW5lcmljQ3VlJiwgVGV4dFRyYWNrQ3VlR2VuZXJpYyYpOwogCiAgICAgdm9pZCByZW1vdmUo
VGV4dFRyYWNrQ3VlJik7Ci0gICAgdm9pZCByZW1vdmUoR2VuZXJpY0N1ZURhdGEmKTsKKyAgICB2
b2lkIHJlbW92ZShJbmJhbmRHZW5lcmljQ3VlJik7CiAKLSAgICBHZW5lcmljQ3VlRGF0YSogZmlu
ZChUZXh0VHJhY2tDdWUmKTsKLSAgICBUZXh0VHJhY2tDdWVHZW5lcmljKiBmaW5kKEdlbmVyaWND
dWVEYXRhJik7CisgICAgVGV4dFRyYWNrQ3VlR2VuZXJpYyogZmluZChJbmJhbmRHZW5lcmljQ3Vl
Jik7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgQ3VlVG9EYXRhTWFwID0gSGFzaE1hcDxSZWZQdHI8
VGV4dFRyYWNrQ3VlPiwgUmVmUHRyPEdlbmVyaWNDdWVEYXRhPj47Ci0gICAgdXNpbmcgQ3VlRGF0
YVRvQ3VlTWFwID0gSGFzaE1hcDxSZWZQdHI8R2VuZXJpY0N1ZURhdGE+LCBSZWZQdHI8VGV4dFRy
YWNrQ3VlR2VuZXJpYz4+OworICAgIHVzaW5nIEN1ZVRvRGF0YU1hcCA9IEhhc2hNYXA8UmVmUHRy
PFRleHRUcmFja0N1ZT4sIHVpbnQ2NF90PjsKKyAgICB1c2luZyBDdWVEYXRhVG9DdWVNYXAgPSBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VGV4dFRyYWNrQ3VlR2VuZXJpYz4+OwogCiAgICAgQ3Vl
VG9EYXRhTWFwIG1fY3VlVG9EYXRhTWFwOwogICAgIEN1ZURhdGFUb0N1ZU1hcCBtX2RhdGFUb0N1
ZU1hcDsKQEAgLTYwLDEyICs1OSwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRleHRUcmFja0NsaWVudCYs
IEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5l
cmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3Vl
RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYp
IGZpbmFsOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZpbmFsOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmKSBmaW5hbDsKIAotICAgIHZv
aWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYsIEdlbmVyaWNDdWVE
YXRhJik7CisgICAgdm9pZCB1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJhY2tDdWVHZW5lcmlj
JiwgSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBwYXJzZXIoKTsKICAg
ICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCA4ZmVmOWYzNGFlYWJl
MDM1NTE0OTNiNjQ1ZWMxYTZlNWU0ZjM4YTkxLi4zMGZjMjUyN2YwNTJiNDdmODA0N2QxNjI3OTJm
ZTdkN2FiZjI5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmgKQEAgLTc3LDkgKzc3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZSYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAotICAg
IHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KLSAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEm
KSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdm9pZCByZW1vdmVHZW5l
cmljQ3VlKEdlbmVyaWNDdWVEYXRhJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRH
ZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQg
cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYp
IG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIHBhcnNlV2ViVlRU
Q3VlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
YmFuZEdlbmVyaWNDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kR2VuZXJpY0N1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUzNzE4MGI4MTBhNTkwZjNmYTI3ZGIwYTc1
N2NkNzZkMDNiNmY1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkluYmFuZEdlbmVyaWNDdWUuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VpbnQ2NF90IEluYmFuZEdlbmVyaWNDdWU6
OnNfbmV4dFVuaXF1ZUlkID0gMDsKKworSW5iYW5kR2VuZXJpY0N1ZTo6SW5iYW5kR2VuZXJpY0N1
ZSgpCit7CisgICAgbV9jdWVEYXRhLm1fdW5pcXVlSWQgPSArK3NfbmV4dFVuaXF1ZUlkOworfQor
CitTdHJpbmcgSW5iYW5kR2VuZXJpY0N1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKK3sKKyAgICBh
dXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisKKyNpZiAhTE9HX0RJU0FCTEVE
CisgICAgb2JqZWN0LT5zZXRTdHJpbmcoInRleHQiX3MsIG1fY3VlRGF0YS5tX2NvbnRlbnQpOwor
I2VuZGlmCisgICAgb2JqZWN0LT5zZXREb3VibGUoInN0YXJ0Il9zLCBtX2N1ZURhdGEubV9zdGFy
dFRpbWUudG9Eb3VibGUoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoImVuZCJfcywgbV9jdWVE
YXRhLm1fZW5kVGltZS50b0RvdWJsZSgpKTsKKworICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKKyAg
ICBzd2l0Y2ggKG1fY3VlRGF0YS5tX3N0YXR1cykgeworICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6
OlN0YXR1czo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQi
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlBhcnRp
YWw6CisgICAgICAgIHN0YXR1cyA9ICJQYXJ0aWFsIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZToKKyAgICAgICAgc3RhdHVzID0gIkNv
bXBsZXRlIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG9iamVjdC0+c2V0U3RyaW5nKCJz
dGF0dXMiLCBzdGF0dXMpOworCisgICAgaWYgKCFtX2N1ZURhdGEubV9pZC5pc0VtcHR5KCkpCisg
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJpZCIsIG1fY3VlRGF0YS5tX2lkKTsKKworICAgIGlm
IChtX2N1ZURhdGEubV9saW5lID4gMCkKKyAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoImxpbmUi
X3MsIG1fY3VlRGF0YS5tX2xpbmUpOworCisgICAgaWYgKG1fY3VlRGF0YS5tX3NpemUgPiAwKQor
ICAgICAgICBvYmplY3QtPnNldERvdWJsZSgic2l6ZSJfcywgbV9jdWVEYXRhLm1fc2l6ZSk7CisK
KyAgICBpZiAobV9jdWVEYXRhLm1fcG9zaXRpb24gPiAwKQorICAgICAgICBvYmplY3QtPnNldERv
dWJsZSgicG9zaXRpb24iX3MsIG1fY3VlRGF0YS5tX3Bvc2l0aW9uKTsKKworICAgIGlmIChtX2N1
ZURhdGEubV9hbGlnbiAhPSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpOb25lKSB7CisgICAg
ICAgIGNvbnN0IGNoYXIqIGFsaWduOworICAgICAgICBzd2l0Y2ggKG1fY3VlRGF0YS5tX2FsaWdu
KSB7CisgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6U3RhcnQ6CisgICAg
ICAgICAgICBhbGlnbiA9ICJTdGFydCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpNaWRkbGU6CisgICAgICAgICAgICBhbGlnbiA9
ICJNaWRkbGUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURh
dGE6OkFsaWdubWVudDo6RW5kOgorICAgICAgICAgICAgYWxpZ24gPSAiRW5kIjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6Ok5vbmU6
CisgICAgICAgICAgICBhbGlnbiA9ICJOb25lIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJhbGlnbiJfcywgYWxpZ24pOworICAgIH0K
KworICAgIGlmIChtX2N1ZURhdGEubV9mb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAg
ICBvYmplY3QtPnNldFN0cmluZygiZm9yZWdyb3VuZENvbG9yIl9zLCBtX2N1ZURhdGEubV9mb3Jl
Z3JvdW5kQ29sb3Iuc2VyaWFsaXplZCgpKTsKKworICAgIGlmIChtX2N1ZURhdGEubV9iYWNrZ3Jv
dW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICBvYmplY3QtPnNldFN0cmluZygiYmFja2dyb3Vu
ZENvbG9yIl9zLCBtX2N1ZURhdGEubV9iYWNrZ3JvdW5kQ29sb3Iuc2VyaWFsaXplZCgpKTsKKwor
ICAgIGlmIChtX2N1ZURhdGEubV9oaWdobGlnaHRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJoaWdobGlnaHRDb2xvciJfcywgbV9jdWVEYXRhLm1faGlnaGxpZ2h0
Q29sb3Iuc2VyaWFsaXplZCgpKTsKKworICAgIGlmIChtX2N1ZURhdGEubV9iYXNlRm9udFNpemUp
CisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJiYXNlRm9udFNpemUiX3MsIG1fY3VlRGF0YS5t
X2Jhc2VGb250U2l6ZSk7CisKKyAgICBpZiAobV9jdWVEYXRhLm1fcmVsYXRpdmVGb250U2l6ZSkK
KyAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInJlbGF0aXZlRm9udFNpemUiX3MsIG1fY3VlRGF0
YS5tX3JlbGF0aXZlRm9udFNpemUpOworCisgICAgaWYgKCFtX2N1ZURhdGEubV9mb250TmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJmb250Il9zLCBtX2N1ZURhdGEu
bV9mb250TmFtZSk7CisKKyAgICByZXR1cm4gb2JqZWN0LT50b0pTT05TdHJpbmcoKTsKK30KKwor
Ym9vbCBHZW5lcmljQ3VlRGF0YTo6ZXF1YWxOb3RDb25zaWRlcmluZ1RpbWVzT3JJZChjb25zdCBH
ZW5lcmljQ3VlRGF0YSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVsYXRpdmVGb250U2l6
ZSAhPSBvdGhlci5tX3JlbGF0aXZlRm9udFNpemUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9iYXNlRm9udFNpemUgIT0gb3RoZXIubV9iYXNlRm9udFNpemUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9wb3NpdGlvbiAhPSBvdGhlci5tX3Bvc2l0aW9uKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbGluZSAhPSBvdGhlci5tX2xpbmUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9zaXplICE9IG90aGVyLm1fc2l6ZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2FsaWduICE9IG90aGVyLm1fYWxpZ24pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mb3JlZ3JvdW5kQ29sb3IgIT0gb3RoZXIubV9m
b3JlZ3JvdW5kQ29sb3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9iYWNrZ3Jv
dW5kQ29sb3IgIT0gb3RoZXIubV9iYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9oaWdobGlnaHRDb2xvciAhPSBvdGhlci5tX2hpZ2hsaWdodENvbG9yKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZm9udE5hbWUgIT0gb3RoZXIubV9mb250
TmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lkICE9IG90aGVyLm1faWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jb250ZW50ICE9IG90aGVyLm1fY29u
dGVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bmJhbmRHZW5lcmljQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJh
bmRHZW5lcmljQ3VlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkNzRmNDZlODA4ZTBiNTc1ZTE3NjdjZGYxNjI3
MDUyZTc3MjNkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaApAQCAtMCwwICsxLDMyOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlIDx3dGYvTWVk
aWFUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdlbmVyaWNDdWVEYXRh
IHsKKworICAgIGVudW0gY2xhc3MgQWxpZ25tZW50IDogdWludDhfdCB7IE5vbmUsIFN0YXJ0LCBN
aWRkbGUsIEVuZCB9OworICAgIGVudW0gY2xhc3MgU3RhdHVzIDogdWludDhfdCB7IFVuaW5pdGlh
bGl6ZWQsIFBhcnRpYWwsIENvbXBsZXRlIH07CisKKyAgICBHZW5lcmljQ3VlRGF0YSgpID0gZGVm
YXVsdDsKKyAgICBHZW5lcmljQ3VlRGF0YSh1aW50NjRfdCB1bmlxdWVJZCwgY29uc3QgTWVkaWFU
aW1lJiBzdGFydFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSwgY29uc3QgU3RyaW5nJiBp
ZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUg
bGluZSwgZG91YmxlIHBvc2l0aW9uLCBkb3VibGUgc2l6ZSwgZG91YmxlIGJhc2VGb250U2l6ZSwg
ZG91YmxlIHJlbGF0aXZlRm9udFNpemUsIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IsIGNv
bnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENvbG9yJiBoaWdobGlnaHRDb2xvciwg
R2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudCBhbGlnbiwgR2VuZXJpY0N1ZURhdGE6OlN0YXR1cyBz
dGF0dXMpCisgICAgICAgIDogbV91bmlxdWVJZCh1bmlxdWVJZCkKKyAgICAgICAgLCBtX3N0YXJ0
VGltZShzdGFydFRpbWUpCisgICAgICAgICwgbV9lbmRUaW1lKGVuZFRpbWUpCisgICAgICAgICwg
bV9pZChpZCkKKyAgICAgICAgLCBtX2NvbnRlbnQoY29udGVudCkKKyAgICAgICAgLCBtX2ZvbnRO
YW1lKGZvbnROYW1lKQorICAgICAgICAsIG1fbGluZShsaW5lKQorICAgICAgICAsIG1fcG9zaXRp
b24ocG9zaXRpb24pCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgICAgICwgbV9iYXNlRm9u
dFNpemUoYmFzZUZvbnRTaXplKQorICAgICAgICAsIG1fcmVsYXRpdmVGb250U2l6ZShyZWxhdGl2
ZUZvbnRTaXplKQorICAgICAgICAsIG1fZm9yZWdyb3VuZENvbG9yKGZvcmVncm91bmRDb2xvcikK
KyAgICAgICAgLCBtX2JhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgICwg
bV9oaWdobGlnaHRDb2xvcihoaWdobGlnaHRDb2xvcikKKyAgICAgICAgLCBtX2FsaWduKGFsaWdu
KQorICAgICAgICAsIG1fc3RhdHVzKHN0YXR1cykKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1Zh
bGlkKCkpOworICAgIH0KKworICAgIHN0YXRpYyB1aW50NjRfdCBpbnZhbGlkVW5pcXVlSWQoKSB7
IHJldHVybiAwOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVJ
ZCAhPSBpbnZhbGlkVW5pcXVlSWQoKTsgfQorICAgIGJvb2wgZXF1YWxOb3RDb25zaWRlcmluZ1Rp
bWVzT3JJZChjb25zdCBHZW5lcmljQ3VlRGF0YSYpIGNvbnN0OworCisgICAgdWludDY0X3QgbV91
bmlxdWVJZCB7IGludmFsaWRVbmlxdWVJZCgpIH07CisgICAgTWVkaWFUaW1lIG1fc3RhcnRUaW1l
OworICAgIE1lZGlhVGltZSBtX2VuZFRpbWU7CisgICAgU3RyaW5nIG1faWQ7CisgICAgU3RyaW5n
IG1fY29udGVudDsKKyAgICBTdHJpbmcgbV9mb250TmFtZTsKKyAgICBkb3VibGUgbV9saW5lIHsg
LTEgfTsKKyAgICBkb3VibGUgbV9wb3NpdGlvbiB7IC0xIH07CisgICAgZG91YmxlIG1fc2l6ZSB7
IC0xIH07CisgICAgZG91YmxlIG1fYmFzZUZvbnRTaXplIHsgMCB9OworICAgIGRvdWJsZSBtX3Jl
bGF0aXZlRm9udFNpemUgeyAwIH07CisgICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7CisgICAg
Q29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgQ29sb3IgbV9oaWdobGlnaHRDb2xvcjsKKyAg
ICBBbGlnbm1lbnQgbV9hbGlnbiB7IEFsaWdubWVudDo6Tm9uZSB9OworICAgIFN0YXR1cyBtX3N0
YXR1cyB7IFN0YXR1czo6VW5pbml0aWFsaXplZCB9OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxHZW5lcmljQ3VlRGF0YT4gZGVjb2RlKERlY29kZXImKTsK
K307CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+
IEdlbmVyaWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25h
bDx1aW50NjRfdD4gdW5pcXVlSWQ7CisgICAgZGVjb2RlciA+PiB1bmlxdWVJZDsKKyAgICBpZiAo
IXVuaXF1ZUlkKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
TWVkaWFUaW1lPiBzdGFydFRpbWU7CisgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CisgICAgaWYg
KCFzdGFydFRpbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxNZWRpYVRpbWU+IGVuZFRpbWU7CisgICAgZGVjb2RlciA+PiBlbmRUaW1lOworICAgIGlmICgh
ZW5kVGltZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0
cmluZz4gaWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFp
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
U3RyaW5nPiBjb250ZW50OworICAgIGRlY29kZXIgPj4gY29udGVudDsKKyAgICBpZiAoIWNvbnRl
bnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+
IGZvbnROYW1lOworICAgIGRlY29kZXIgPj4gZm9udE5hbWU7CisgICAgaWYgKCFmb250TmFtZSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPGRvdWJsZT4gbGlu
ZTsKKyAgICBkZWNvZGVyID4+IGxpbmU7CisgICAgaWYgKCFsaW5lKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8ZG91YmxlPiBwb3NpdGlvbjsKKyAgICBkZWNv
ZGVyID4+IHBvc2l0aW9uOworICAgIGlmICghcG9zaXRpb24pCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxkb3VibGU+IHNpemU7CisgICAgZGVjb2RlciA+PiBz
aXplOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPGRvdWJsZT4gYmFzZUZvbnRTaXplOworICAgIGRlY29kZXIgPj4gYmFzZUZvbnRT
aXplOworICAgIGlmICghYmFzZUZvbnRTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgT3B0aW9uYWw8ZG91YmxlPiByZWxhdGl2ZUZvbnRTaXplOworICAgIGRlY29kZXIg
Pj4gcmVsYXRpdmVGb250U2l6ZTsKKyAgICBpZiAoIXJlbGF0aXZlRm9udFNpemUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gZm9yZWdyb3VuZENv
bG9yOworICAgIGRlY29kZXIgPj4gZm9yZWdyb3VuZENvbG9yOworICAgIGlmICghZm9yZWdyb3Vu
ZENvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBkZWNvZGVyID4+IGJhY2tncm91bmRDb2xvcjsKKyAg
ICBpZiAoIWJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPENvbG9yPiBoaWdobGlnaHRDb2xvcjsKKyAgICBkZWNvZGVyID4+IGhpZ2hs
aWdodENvbG9yOworICAgIGlmICghaGlnaGxpZ2h0Q29sb3IpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxBbGlnbm1lbnQ+IGFsaWdubWVudDsKKyAgICBkZWNv
ZGVyID4+IGFsaWdubWVudDsKKyAgICBpZiAoIWFsaWdubWVudCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0YXR1cz4gc3RhdHVzOworICAgIGRlY29kZXIg
Pj4gc3RhdHVzOworICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgR2VuZXJpY0N1ZURhdGEgZGF0YSA9IHsKKworICAgICAgICBXVEZNb3ZlKCp1bmlx
dWVJZCksCisKKyAgICAgICAgV1RGTW92ZSgqc3RhcnRUaW1lKSwKKyAgICAgICAgV1RGTW92ZSgq
ZW5kVGltZSksCisKKyAgICAgICAgV1RGTW92ZSgqaWRlbnRpZmllciksCisgICAgICAgIFdURk1v
dmUoKmNvbnRlbnQpLAorICAgICAgICBXVEZNb3ZlKCpmb250TmFtZSksCisKKyAgICAgICAgV1RG
TW92ZSgqbGluZSksCisgICAgICAgIFdURk1vdmUoKnBvc2l0aW9uKSwKKyAgICAgICAgV1RGTW92
ZSgqc2l6ZSksCisgICAgICAgIFdURk1vdmUoKmJhc2VGb250U2l6ZSksCisgICAgICAgIFdURk1v
dmUoKnJlbGF0aXZlRm9udFNpemUpLAorCisgICAgICAgIFdURk1vdmUoKmZvcmVncm91bmRDb2xv
ciksCisgICAgICAgIFdURk1vdmUoKmJhY2tncm91bmRDb2xvciksCisgICAgICAgIFdURk1vdmUo
KmhpZ2hsaWdodENvbG9yKSwKKworICAgICAgICBXVEZNb3ZlKCphbGlnbm1lbnQpLAorICAgICAg
ICBXVEZNb3ZlKCpzdGF0dXMpLAorCisgICAgfTsKKworICAgIGlmICghZGF0YS5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR2VuZXJpY0N1ZURhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV91bmlxdWVJZDsKKyAgICBl
bmNvZGVyIDw8IG1fc3RhcnRUaW1lOworICAgIGVuY29kZXIgPDwgbV9lbmRUaW1lOworICAgIGVu
Y29kZXIgPDwgbV9pZDsKKyAgICBlbmNvZGVyIDw8IG1fY29udGVudDsKKyAgICBlbmNvZGVyIDw8
IG1fZm9udE5hbWU7CisgICAgZW5jb2RlciA8PCBtX2xpbmU7CisgICAgZW5jb2RlciA8PCBtX3Bv
c2l0aW9uOworICAgIGVuY29kZXIgPDwgbV9zaXplOworICAgIGVuY29kZXIgPDwgbV9iYXNlRm9u
dFNpemU7CisgICAgZW5jb2RlciA8PCBtX3JlbGF0aXZlRm9udFNpemU7CisgICAgZW5jb2RlciA8
PCBtX2ZvcmVncm91bmRDb2xvcjsKKyAgICBlbmNvZGVyIDw8IG1fYmFja2dyb3VuZENvbG9yOwor
ICAgIGVuY29kZXIgPDwgbV9oaWdobGlnaHRDb2xvcjsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9hbGlnbik7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fc3RhdHVzKTsKK30KKworY2xhc3Mg
SW5iYW5kR2VuZXJpY0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluYmFuZEdlbmVyaWNDdWU+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEluYmFuZEdlbmVyaWNDdWU+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY0N1ZSk7IH0KKyAgICBzdGF0aWMgUmVmPElu
YmFuZEdlbmVyaWNDdWU+IGNyZWF0ZShHZW5lcmljQ3VlRGF0YSYmIGN1ZURhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY0N1ZShXVEZNb3ZlKGN1ZURhdGEpKSk7IH0KKwor
ICAgIGV4cGxpY2l0IEluYmFuZEdlbmVyaWNDdWUoKTsKKworICAgIHVpbnQ2NF90IHVuaXF1ZUlk
KCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fdW5pcXVlSWQ7IH0KKworICAgIE1lZGlhVGlt
ZSBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9zdGFydFRpbWU7IH0KKyAg
ICB2b2lkIHNldFN0YXJ0VGltZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0VGltZSkgeyBtX2N1ZURh
dGEubV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KKworICAgIE1lZGlhVGltZSBlbmRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fZW5kVGltZTsgfQorICAgIHZvaWQgc2V0RW5kVGlt
ZShjb25zdCBNZWRpYVRpbWUmIGVuZFRpbWUpIHsgbV9jdWVEYXRhLm1fZW5kVGltZSA9IGVuZFRp
bWU7IH0KKworICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEu
bV9pZDsgfQorICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2N1ZURhdGEubV9p
ZCA9IGlkOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBt
X2N1ZURhdGEubV9jb250ZW50OyB9CisgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYg
Y29udGVudCkgeyBtX2N1ZURhdGEubV9jb250ZW50ID0gY29udGVudDsgfQorCisgICAgZG91Ymxl
IGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9saW5lOyB9CisgICAgdm9pZCBzZXRM
aW5lKGRvdWJsZSBsaW5lKSB7IG1fY3VlRGF0YS5tX2xpbmUgPSBsaW5lOyB9CisKKyAgICBkb3Vi
bGUgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9wb3NpdGlvbjsgfQorICAg
IHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIHBvc2l0aW9uKSB7IG1fY3VlRGF0YS5tX3Bvc2l0aW9u
ID0gcG9zaXRpb247IH0KKworICAgIGRvdWJsZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdWVE
YXRhLm1fc2l6ZTsgfQorICAgIHZvaWQgc2V0U2l6ZShkb3VibGUgc2l6ZSkgeyBtX2N1ZURhdGEu
bV9zaXplID0gc2l6ZTsgfQorCisgICAgR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudCBhbGlnbigp
IGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX2FsaWduOyB9CisgICAgdm9pZCBzZXRBbGlnbihH
ZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50IGFsaWduKSB7IG1fY3VlRGF0YS5tX2FsaWduID0gYWxp
Z247IH0KKworICAgIGNvbnN0IFN0cmluZyYgZm9udE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1
ZURhdGEubV9mb250TmFtZTsgfQorICAgIHZvaWQgc2V0Rm9udE5hbWUoY29uc3QgU3RyaW5nJiBm
b250TmFtZSkgeyBtX2N1ZURhdGEubV9mb250TmFtZSA9IGZvbnROYW1lOyB9CisKKyAgICBkb3Vi
bGUgYmFzZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fYmFzZUZvbnRTaXpl
OyB9CisgICAgdm9pZCBzZXRCYXNlRm9udFNpemUoZG91YmxlIGJhc2VGb250U2l6ZSkgeyBtX2N1
ZURhdGEubV9iYXNlRm9udFNpemUgPSBiYXNlRm9udFNpemU7IH0KKworICAgIGRvdWJsZSByZWxh
dGl2ZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fcmVsYXRpdmVGb250U2l6
ZTsgfQorICAgIHZvaWQgc2V0UmVsYXRpdmVGb250U2l6ZShkb3VibGUgcmVsYXRpdmVGb250U2l6
ZSkgeyBtX2N1ZURhdGEubV9yZWxhdGl2ZUZvbnRTaXplID0gcmVsYXRpdmVGb250U2l6ZTsgfQor
CisgICAgY29uc3QgQ29sb3ImIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY3Vl
RGF0YS5tX2ZvcmVncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikgeyBtX2N1ZURhdGEubV9mb3JlZ3JvdW5kQ29sb3IgPSBjb2xvcjsg
fQorCisgICAgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VlRGF0YS5tX2JhY2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2N1ZURhdGEubV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xv
cjsgfQorCisgICAgY29uc3QgQ29sb3ImIGhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9jdWVEYXRhLm1faGlnaGxpZ2h0Q29sb3I7IH0KKyAgICB2b2lkIHNldEhpZ2hsaWdodENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2N1ZURhdGEubV9oaWdobGlnaHRDb2xvciA9IGNvbG9y
OyB9CisKKyAgICBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzIHN0YXR1cygpIHsgcmV0dXJuIG1fY3Vl
RGF0YS5tX3N0YXR1czsgfQorICAgIHZvaWQgc2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpTdGF0
dXMgc3RhdHVzKSB7IG1fY3VlRGF0YS5tX3N0YXR1cyA9IHN0YXR1czsgfQorCisgICAgYm9vbCBk
b2VzRXh0ZW5kQ3VlRGF0YShjb25zdCBJbmJhbmRHZW5lcmljQ3VlJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9jdWVEYXRhLmVxdWFsTm90Q29uc2lkZXJpbmdUaW1lc09ySWQob3RoZXIubV9jdWVE
YXRhKTsgfQorCisgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OworCisgICAgY29uc3Qg
R2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGE7IH0KKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgdWludDY0X3Qgc19uZXh0VW5pcXVlSWQ7CisKKyAgICBleHBs
aWNpdCBJbmJhbmRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiYgY3VlRGF0YSkKKyAgICAgICAg
OiBtX2N1ZURhdGEoV1RGTW92ZShjdWVEYXRhKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2N1
ZURhdGEuaXNWYWxpZCgpKTsKKyAgICB9CisKKyAgICBHZW5lcmljQ3VlRGF0YSBtX2N1ZURhdGE7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7Cit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU+IHsKKyAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmIGN1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBjdWUudG9KU09OU3RyaW5nKCk7CisgICAgfQorfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxpZ25t
ZW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudCwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURh
dGE6OkFsaWdubWVudDo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OkFs
aWdubWVudDo6U3RhcnQsCisgICAgICAgIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpBbGlnbm1l
bnQ6Ok1pZGRsZSwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6
RW5kCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OlN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXMsCisgICAgICAgIFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlVuaW5pdGlhbGl6ZWQsCisgICAgICAgIFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlBhcnRpYWwsCisgICAgICAgIFdlYkNvcmU6Okdl
bmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRlCisgICAgPjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCBmNDMw
NjQ1MThkZjQxOTYxYjNmNmM2M2E3NmM5OTEzZDE3NjdhZWJjLi5mZDMzZWI5YzBiMTExNmJlOGIz
Njg3ZDA5ZjIyZjA0NmNiZDNhY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ29s
b3IuaCIKKyNpbmNsdWRlICJJbmJhbmRHZW5lcmljQ3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2
YXRlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgpAQCAtNDEsMTg3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBJU09XZWJWVFRDdWU7CiAKLWNsYXNzIEdl
bmVyaWNDdWVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8R2VuZXJpY0N1ZURhdGE+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNDdWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEdlbmVyaWNDdWVEYXRhKTsgfQotCi0gICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9Ci0gICAgdm9pZCBzZXRTdGFydFRpbWUoY29u
c3QgTWVkaWFUaW1lJiBzdGFydFRpbWUpIHsgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KLQot
ICAgIE1lZGlhVGltZSBlbmRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRUaW1lOyB9Ci0gICAg
dm9pZCBzZXRFbmRUaW1lKGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSkgeyBtX2VuZFRpbWUgPSBl
bmRUaW1lOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQotICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KLQotICAg
IGNvbnN0IFN0cmluZyYgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudDsgfQotICAg
IHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpIHsgbV9jb250ZW50ID0gY29u
dGVudDsgfQotCi0gICAgZG91YmxlIGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KLSAg
ICB2b2lkIHNldExpbmUoZG91YmxlIGxpbmUpIHsgbV9saW5lID0gbGluZTsgfQotCi0gICAgZG91
YmxlIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0
UG9zaXRpb24oZG91YmxlIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQotCi0g
ICAgZG91YmxlIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB2b2lkIHNldFNp
emUoZG91YmxlIHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQotCi0gICAgZW51bSBBbGlnbm1lbnQg
eyBOb25lLCBTdGFydCwgTWlkZGxlLCBFbmQgfTsKLSAgICBBbGlnbm1lbnQgYWxpZ24oKSBjb25z
dCB7IHJldHVybiBtX2FsaWduOyB9Ci0gICAgdm9pZCBzZXRBbGlnbihBbGlnbm1lbnQgYWxpZ24p
IHsgbV9hbGlnbiA9IGFsaWduOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9mb250TmFtZTsgfQotICAgIHZvaWQgc2V0Rm9udE5hbWUoY29uc3QgU3Ry
aW5nJiBmb250TmFtZSkgeyBtX2ZvbnROYW1lID0gZm9udE5hbWU7IH0KLQotICAgIGRvdWJsZSBi
YXNlRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VGb250U2l6ZTsgfQotICAgIHZvaWQg
c2V0QmFzZUZvbnRTaXplKGRvdWJsZSBiYXNlRm9udFNpemUpIHsgbV9iYXNlRm9udFNpemUgPSBi
YXNlRm9udFNpemU7IH0KLQotICAgIGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWxhdGl2ZUZvbnRTaXplOyB9Ci0gICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXpl
KGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKSB7IG1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZl
Rm9udFNpemU7IH0KLQotICAgIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvciA9IGNvbG9yOyB9Ci0KLSAg
ICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQotCi0gICAgY29uc3QgQ29sb3ImIGhp
Z2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZv
aWQgc2V0SGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29s
b3IgPSBjb2xvcjsgfQotCi0gICAgZW51bSBTdGF0dXMgeyBVbmluaXRpYWxpemVkLCBQYXJ0aWFs
LCBDb21wbGV0ZSB9OwotICAgIFN0YXR1cyBzdGF0dXMoKSB7IHJldHVybiBtX3N0YXR1czsgfQot
ICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyBzdGF0dXMpIHsgbV9zdGF0dXMgPSBzdGF0dXM7IH0K
LQotICAgIGJvb2wgZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1ZURhdGEmKSBjb25z
dDsKLQotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBH
ZW5lcmljQ3VlRGF0YSgpID0gZGVmYXVsdDsKLQotICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsK
LSAgICBNZWRpYVRpbWUgbV9lbmRUaW1lOwotICAgIFN0cmluZyBtX2lkOwotICAgIFN0cmluZyBt
X2NvbnRlbnQ7Ci0gICAgZG91YmxlIG1fbGluZSB7IC0xIH07Ci0gICAgZG91YmxlIG1fcG9zaXRp
b24geyAtMSB9OwotICAgIGRvdWJsZSBtX3NpemUgeyAtMSB9OwotICAgIEFsaWdubWVudCBtX2Fs
aWduIHsgTm9uZSB9OwotICAgIFN0cmluZyBtX2ZvbnROYW1lOwotICAgIGRvdWJsZSBtX2Jhc2VG
b250U2l6ZSB7IDAgfTsKLSAgICBkb3VibGUgbV9yZWxhdGl2ZUZvbnRTaXplIHsgMCB9OwotICAg
IENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOwotICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwot
ICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7Ci0gICAgU3RhdHVzIG1fc3RhdHVzIHsgVW5pbml0
aWFsaXplZCB9OwotfTsKLQotaW5saW5lIFN0cmluZyBHZW5lcmljQ3VlRGF0YTo6dG9KU09OU3Ry
aW5nKCkgY29uc3QKLXsKLSAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgb2JqZWN0LT5zZXRTdHJpbmcoInRleHQiX3MsIG1f
Y29udGVudCk7Ci0jZW5kaWYKLSAgICBvYmplY3QtPnNldERvdWJsZSgic3RhcnQiX3MsIG1fc3Rh
cnRUaW1lLnRvRG91YmxlKCkpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fZW5k
VGltZS50b0RvdWJsZSgpKTsKLQotICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKLSAgICBzd2l0Y2gg
KG1fc3RhdHVzKSB7Ci0gICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6VW5pbml0aWFsaXplZDoKLSAg
ICAgICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEdlbmVyaWNDdWVEYXRhOjpQYXJ0aWFsOgotICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlOgotICAgICAg
ICBzdGF0dXMgPSAiQ29tcGxldGUiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgb2JqZWN0
LT5zZXRTdHJpbmcoInN0YXR1cyIsIHN0YXR1cyk7Ci0KLSAgICBpZiAoIW1faWQuaXNFbXB0eSgp
KQotICAgICAgICBvYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2lkKTsKLQotICAgIGlmIChtX2xp
bmUgPiAwKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgibGluZSJfcywgbV9saW5lKTsKLQot
ICAgIGlmIChtX3NpemUgPiAwKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgic2l6ZSJfcywg
bV9zaXplKTsKLQotICAgIGlmIChtX3Bvc2l0aW9uID4gMCkKLSAgICAgICAgb2JqZWN0LT5zZXRE
b3VibGUoInBvc2l0aW9uIl9zLCBtX3Bvc2l0aW9uKTsKLQotICAgIGlmIChtX2FsaWduICE9IE5v
bmUpIHsKLSAgICAgICAgY29uc3QgY2hhciogYWxpZ247Ci0gICAgICAgIHN3aXRjaCAobV9hbGln
bikgewotICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGFydDoKLSAgICAgICAgICAgIGFs
aWduID0gIlN0YXJ0IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdlbmVyaWND
dWVEYXRhOjpNaWRkbGU6Ci0gICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkVuZDoKLSAgICAgICAgICAg
IGFsaWduID0gIkVuZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHZW5lcmlj
Q3VlRGF0YTo6Tm9uZToKLSAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImFsaWduIl9zLCBh
bGlnbik7Ci0gICAgfQotCi0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAg
ICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImZvcmVncm91bmRDb2xvciJfcywgbV9mb3JlZ3JvdW5k
Q29sb3Iuc2VyaWFsaXplZCgpKTsKLQotICAgIGlmIChtX2JhY2tncm91bmRDb2xvci5pc1ZhbGlk
KCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJiYWNrZ3JvdW5kQ29sb3IiX3MsIG1fYmFj
a2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0KLSAgICBpZiAobV9oaWdobGlnaHRDb2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJoaWdobGlnaHRDb2xvciJfcywg
bV9oaWdobGlnaHRDb2xvci5zZXJpYWxpemVkKCkpOwotCi0gICAgaWYgKG1fYmFzZUZvbnRTaXpl
KQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgiYmFzZUZvbnRTaXplIl9zLCBtX2Jhc2VGb250
U2l6ZSk7Ci0KLSAgICBpZiAobV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICBvYmplY3QtPnNl
dERvdWJsZSgicmVsYXRpdmVGb250U2l6ZSJfcywgbV9yZWxhdGl2ZUZvbnRTaXplKTsKLQotICAg
IGlmICghbV9mb250TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJm
b250Il9zLCBtX2ZvbnROYW1lKTsKLQotICAgIHJldHVybiBvYmplY3QtPnRvSlNPTlN0cmluZygp
OwotfQotCi1pbmxpbmUgYm9vbCBHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEoY29u
c3QgR2VuZXJpY0N1ZURhdGEmIG90aGVyKSBjb25zdAotewotICAgIGlmIChtX3JlbGF0aXZlRm9u
dFNpemUgIT0gb3RoZXIubV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKG1fYmFzZUZvbnRTaXplICE9IG90aGVyLm1fYmFzZUZvbnRTaXplKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2xpbmUgIT0gb3RoZXIubV9saW5lKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fc2l6ZSAhPSBvdGhlci5tX3NpemUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9hbGlnbiAhPSBvdGhlci5tX2FsaWduKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yICE9IG90aGVy
Lm1fZm9yZWdyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fYmFj
a2dyb3VuZENvbG9yICE9IG90aGVyLm1fYmFja2dyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKG1faGlnaGxpZ2h0Q29sb3IgIT0gb3RoZXIubV9oaWdobGlnaHRDb2xv
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2ZvbnROYW1lICE9IG90aGVyLm1f
Zm9udE5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9pZCAhPSBvdGhlci5t
X2lkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fY29udGVudCAhPSBvdGhlci5t
X2NvbnRlbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLSAgICAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgOiBwdWJsaWMgVHJh
Y2tQcml2YXRlQmFzZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTIzNCw5ICs1NCw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpID0gMDsKICNl
bmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYm
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRU
Q3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKQEAgLTI0NSwx
OSArNjUsNCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNl
IFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ7Ci0K
LXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+
IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVE
YXRhJiBjdWUpCi0gICAgewotICAgICAgICByZXR1cm4gY3VlLnRvSlNPTlN0cmluZygpOwotICAg
IH0KLX07Ci0KLX0KLQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDli
NTI4YjRjY2JlZmNhNWEwZDJmODA0NThkNDI2YjQ0YTRjNGE1MDYuLjJjZDQyYTk5YWY0Yzg5NWFl
MTFmYzE4MDg2ZDdmZDgzYTQ2NzU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGJvb2wgbWFr
ZVJHQkEzMkZyb21BUkdCQ0ZBcnJheShDRkFycmF5UmVmIGNvbG9yQXJyYXksIFJHQkEzMiYgY29s
b3IpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRT
dHJpbmcsIEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmli
dXRlZFN0cmluZywgSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsKICAgICB1c2luZyBuYW1l
c3BhY2UgUEFMOwogICAgIC8vIFNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMgd2UgdHJhbnNsYXRlIGlu
dG8gcGVyLWN1ZSBXZWJWVFQgc2V0dGluZ3MgYXJlIHJlcGVhdGVkIG9uIGVhY2ggcGFydCBvZiBh
biBhdHRyaWJ1dGVkIHN0cmluZyBzbyBvbmx5CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2b2lkIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRl
ZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBBbGlnbjsKIAog
ICAgICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRN
YXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAg
ICAgICAgICAgICAgICAgY3VlRGF0YS5zZXRBbGlnbihHZW5lcmljQ3VlRGF0YTo6U3RhcnQpOwor
ICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLnNldEFsaWduKEdlbmVyaWNDdWVEYXRhOjpBbGln
bm1lbnQ6OlN0YXJ0KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBhcmUo
dmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgMCkgPT0ga0NG
Q29tcGFyZUVxdWFsVG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2Vu
ZXJpY0N1ZURhdGE6Ok1pZGRsZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxp
Z24oR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlKTsKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1l
bnRUeXBlX0VuZCwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgICAgICAgICAgICAg
IGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkVuZCk7CisgICAgICAgICAgICAgICAg
ICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6RW5kKTsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
Ojpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICBp
ZiAoY291bnQpCiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRlZCAiLCBjb3Vu
dCwgY291bnQgPiAxID8gIiBjdWVzIiA6ICIgY3VlIiwgIiBhdCB0aW1lICIsIHRpbWUpOwogCi0g
ICAgVmVjdG9yPFJlZjxHZW5lcmljQ3VlRGF0YT4+IGFycml2aW5nQ3VlczsKKyAgICBWZWN0b3I8
UmVmPEluYmFuZEdlbmVyaWNDdWU+PiBhcnJpdmluZ0N1ZXM7CiAgICAgaWYgKGNvdW50KSB7CiAg
ICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAg
IENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nID0gc3RhdGljX2Nhc3Q8Q0ZB
dHRyaWJ1dGVkU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dHJpYnV0ZWRTdHJp
bmdzLCBpKSk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAg
ICAgICAgICAgIGlmICghYXR0cmlidXRlZFN0cmluZyB8fCAhQ0ZBdHRyaWJ1dGVkU3RyaW5nR2V0
TGVuZ3RoKGF0dHJpYnV0ZWRTdHJpbmcpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgICAgICBhdXRvIGN1ZURhdGEgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBhdXRvIGN1ZURhdGEgPSBJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoKTsKICAgICAg
ICAgICAgIHByb2Nlc3NDdWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZWRTdHJpbmcsIGN1ZURhdGEuZ2V0
KCkpOwogICAgICAgICAgICAgaWYgKCFjdWVEYXRhLT5jb250ZW50KCkubGVuZ3RoKCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRy
aWJ1dGVkU3QKICAgICAgICAgICAgIGlmIChjdWVEYXRhLT5wb3NpdGlvbigpID49IDAgJiYgY3Vl
RGF0YS0+c2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRQb3NpdGlvbihj
dWVEYXRhLT5wb3NpdGlvbigpIC0gY3VlRGF0YS0+c2l6ZSgpIC8gMik7CiAKLSAgICAgICAgICAg
IGN1ZURhdGEtPnNldFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6UGFydGlhbCk7CisgICAgICAgICAg
ICBjdWVEYXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbCk7CiAK
ICAgICAgICAgICAgIGFycml2aW5nQ3Vlcy5hcHBlbmQoV1RGTW92ZShjdWVEYXRhKSk7CiAgICAg
ICAgIH0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NBdHRyaWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogICAgICAg
ICBpZiAobV9jdXJyZW50Q3VlRW5kVGltZSA+PSBtX2N1cnJlbnRDdWVTdGFydFRpbWUpIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgY3VlRGF0YSA6IG1fY3VlcykgewogICAgICAgICAgICAgICAg
IC8vIFNlZSBpZiBvbmUgb2YgdGhlIG5ld2x5LWFycml2ZWQgY3VlcyBpcyBhbiBleHRlbnNpb24g
b2YgdGhpcyBjdWUuCi0gICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxHZW5lcmljQ3VlRGF0YT4+
IG5vbkV4dGVuc2lvbkN1ZXM7CisgICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxJbmJhbmRHZW5l
cmljQ3VlPj4gbm9uRXh0ZW5zaW9uQ3VlczsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGFy
cml2aW5nQ3VlIDogYXJyaXZpbmdDdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJy
aXZpbmdDdWUtPmRvZXNFeHRlbmRDdWVEYXRhKCpjdWVEYXRhKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vbkV4dGVuc2lvbkN1ZXMuYXBwZW5kKFdURk1vdmUoYXJyaXZpbmdDdWUpKTsKQEAg
LTM3NCw3ICszNzQsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NB
dHRyaWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogCiAgICAgICAgICAgICAg
ICAgaWYgKG1fcGVuZGluZ0N1ZVN0YXR1cyA9PSBWYWxpZCkgewogICAgICAgICAgICAgICAgICAg
ICBjdWVEYXRhLT5zZXRFbmRUaW1lKG1fY3VycmVudEN1ZUVuZFRpbWUpOwotICAgICAgICAgICAg
ICAgICAgICBjdWVEYXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpTdGF0
dXM6OkNvbXBsZXRlKTsKIAogICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAidXBkYXRpbmcgY3VlICIsICpjdWVEYXRhKTsKIApAQCAtNDI2LDcgKzQyNiw3IEBAIHZv
aWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3ZlQ29tcGxldGVkQ3VlcygpCiAgICAg
ICAgIGxvbmcgY3VycmVudEN1ZSA9IG1fY3Vlcy5zaXplKCkgLSAxOwogICAgICAgICBmb3IgKDsg
Y3VycmVudEN1ZSA+PSAwOyAtLWN1cnJlbnRDdWUpIHsKICAgICAgICAgICAgIGF1dG8mIGN1ZSA9
IG1fY3Vlc1tjdXJyZW50Q3VlXTsKLSAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9IEdl
bmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKKyAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9
IEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRlKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3ZpbmcgY3Vl
ICIsICpjdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgKaW5kZXggNWQ4NzEwNzM3YTM0ZjdhNTNiODhmNWIzY2ViMzBiNGRhZmM5M2ViOC4uNjM0M2U0
NTczN2VjZTg1MmIwMThjOWFiYmMwMDJmYzYxMTlmOGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRyYWNr
UGFyZW50KiwgQ3VlRm9ybWF0KTsKIAotICAgIHZvaWQgcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZB
dHRyaWJ1dGVkU3RyaW5nUmVmLCBHZW5lcmljQ3VlRGF0YSYpOworICAgIHZvaWQgcHJvY2Vzc0N1
ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmLCBJbmJhbmRHZW5lcmljQ3VlJik7CiAg
ICAgdm9pZCBwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiwgY29uc3QgTWVkaWFU
aW1lJik7CiAgICAgdm9pZCBwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmLCBjb25zdCBN
ZWRpYVRpbWUmKTsKICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZEN1ZXMoKTsKQEAgLTk2LDcgKzk2
LDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgbV9jdXJyZW50Q3VlU3RhcnRUaW1lOwogICAg
IE1lZGlhVGltZSBtX2N1cnJlbnRDdWVFbmRUaW1lOwogCi0gICAgVmVjdG9yPFJlZlB0cjxHZW5l
cmljQ3VlRGF0YT4+IG1fY3VlczsKKyAgICBWZWN0b3I8UmVmUHRyPEluYmFuZEdlbmVyaWNDdWU+
PiBtX2N1ZXM7CiAgICAgQVZGSW5iYW5kVHJhY2tQYXJlbnQqIG1fb3duZXI7CiAKICAgICBlbnVt
IFBlbmRpbmdDdWVTdGF0dXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDQzZTY5YjA2N2E3MGUxNjdl
ODNlODRmZDdhNjZhMjk0YWZhYTAzNzguLmY1YTU0YWZiZmE2Njg4NDg0MjI2MzdlN2JjNGRiYjA0
ZTA1YjkwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
ICAgICBjbGllbnQoKS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBkYXRhLCBsZW5ndGgpOwogICAg
IH0KIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYgZGF0YSkKKyAgICB2
b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgZGF0YSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjdWVGb3JtYXQoKSA9PSBDdWVGb3JtYXQ6OkdlbmVyaWMpOwogICAgICAgICBjbGll
bnQoKS0+YWRkR2VuZXJpY0N1ZShkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggODc0ZWQ1ZjE4YTIyOWFkNzczYmUxYzJlYTRhMmUw
YmE2NDlhM2Q5Mi4uNjYyYzk5MDk2MjdkZjJiYTlmMzNlMGJkNTI2ZjIxYTgxYmM4MWQ0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI0
MzUsNyArMjQzNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNz
VGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiB7CiAgICAgQVNTRVJUKGVu
dHJ5KTsKIAotICAgIGF1dG8gY3VlID0gR2VuZXJpY0N1ZURhdGE6OmNyZWF0ZSgpOworICAgIGF1
dG8gY3VlID0gSW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRlKCk7CiAKICAgICBnaW50NjQgc3RhcnQg
PSAtMSwgc3RvcCA9IC0xOwogICAgIGdzdF90b2NfZW50cnlfZ2V0X3N0YXJ0X3N0b3BfdGltZXMo
ZW50cnksICZzdGFydCwgJnN0b3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggMzJjOWI3ZTEyZTVhNzJj
YjBiYmJkMGE5NWUwMzExOGUwNzI0MGJjMS4uYWY2NGM4MmI5MDIzYWQyMzQxNDIzY2Y4NWRiNDk1
YTc2YzRjNmI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCkBAIC0xMTgsMTkgKzExOCwxOSBAQCB2b2lkIFJl
bW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZQogfQogI2VuZGlmCiAKLXZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6
OmFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94
eTo6YWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiBjdWUpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OkFkZEdlbmVyaWNDdWUobV9pZGVudGlmaWVyLCBjdWUuY3Vl
RGF0YSgpKSwgbV9wbGF5ZXIuaWRlbmRpZmllcigpKTsKIH0KIAotdm9pZCBSZW1vdGVUZXh0VHJh
Y2tQcm94eTo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpCit2b2lkIFJlbW90ZVRl
eHRUcmFja1Byb3h5Ojp1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGN1ZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6VXBkYXRlR2VuZXJpY0N1ZShtX2lk
ZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkpLCBtX3BsYXllci5pZGVuZGlmaWVyKCkpOwogfQogCi12
b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRh
JikKK3ZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2Vu
ZXJpY0N1ZSYgY3VlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpSZW1v
dmVHZW5lcmljQ3VlKG1faWRlbnRpZmllciwgY3VlLmN1ZURhdGEoKSksIG1fcGxheWVyLmlkZW5k
aWZpZXIoKSk7CiB9CiAKIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRURmls
ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCmluZGV4IGUyODZlYzQ4OTQ2NzNhNGYy
YjU2MWQyMzhiMDZmNjI3NTM2Y2ZlNDUuLjBiZTE1NDUxZDlhYjg0OWI5YWE0OWI1NGMzMTU5NDRj
ZDZmOGY3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVUZXh0VHJhY2tQcm94eS5oCkBAIC02MSw5ICs2MSw5IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKICNlbmRpZgogCi0gICAg
dmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJik7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
ZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlR2Vu
ZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJW
VFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAyNjA0OTBmYjdiNTZhODhjZmYwZDliODljMWE3
MTY4YWVkMGQxODVjLi4zNzJiNWQyZDdlOWY3NzE3MzlmN2RmYjViNzBhMmY1MjA3MzExNWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTU2Myw2ICs1NjMs
NyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwnOiBbJzxXZWJDb3JlL1NoYXJlRGF0YS5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6Rm9udENoYW5nZXMnOiBbJzxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUxvYWRUeXBlJzogWyc8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSc6IFsnPFdl
YkNvcmUvSW5iYW5kR2VuZXJpY0N1ZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6R3JhbW1hckRl
dGFpbCc6IFsnPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudCc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6SGlnaGxpZ2h0JzogWyc8V2ViQ29yZS9JbnNwZWN0b3JPdmVy
bGF5Lmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNmY2M2IyMzBmNjI3
ZDEyY2M2ZWMzZWY3ZGQ2Y2U2YWQxMjk3YWE2YS4uODRhOTZlNjU0YTMyYjM1OGQ4OTliN2FjMjE5
NDk2YTc3YjgwYWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTE2LDE4
ICsxMTYsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KICAgICBpZiAodXJsLmlzTG9jYWxG
aWxlKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICAgICAg
ICAgYXV0byBmaWxlU3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVtUGF0aCgpOwotICAgICAgICBi
b29sIGNyZWF0ZWRFeHRlbnNpb24gPSBmYWxzZTsKIAorICAgICAgICBhdXRvIGNyZWF0ZUV4dGVu
c2lvbiA9IFsmXSB7CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BS
T0NFU1NfQllfQVVESVRfVE9LRU4pCi0gICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdl
ci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKTsKLSAgICAgICAgQVNTRVJUKGF1
ZGl0VG9rZW4pOwotICAgICAgICBpZiAoYXVkaXRUb2tlbikKLSAgICAgICAgICAgIGNyZWF0ZWRF
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRv
a2VuKGZpbGVTeXN0ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRsZSk7Ci0gICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGlmIChhdXRvIGF1ZGl0VG9rZW4gPSBtX21hbmFnZXIuZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oZmlsZVN5c3Rl
bVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKICNlbmRpZgotICAgICAgICBjcmVh
dGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1Q
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKIAotICAgICAg
ICBpZiAoIWNyZWF0ZWRFeHRlbnNpb24pIHsKKyAgICAgICAgICAgIHJldHVybiBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRPbmx5LCBoYW5kbGUpOworICAgICAgICB9OworCisgICAgICAgIGlmICghY3JlYXRl
RXh0ZW5zaW9uKCkpIHsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVW5hYmxlIHRvIGNyZWF0
ZSBzYW5kYm94IGV4dGVuc2lvbiBoYW5kbGUgZm9yIEdQVVByb2Nlc3MgdXJsLlxuIik7CiAgICAg
ICAgICAgICBtX2NhY2hlZFN0YXRlLm5ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkZvcm1hdEVycm9yOwogICAgICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNo
YW5nZWQoKTsKQEAgLTUyNSw2ICs1MjQsMzAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnJlbW92ZURhdGFDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGkKIH0K
ICNlbmRpZgogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZShU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdlbmVyaWNDdWVEYXRhJiYg
Y3VlRGF0YSkKK3sKKyAgICBBU1NFUlQobV90ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKKworICAgIGlmIChjb25zdCBhdXRvJiB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRp
ZmllcikpCisgICAgICAgIHRyYWNrLT5hZGRHZW5lcmljQ3VlKFdURk1vdmUoSW5iYW5kR2VuZXJp
Y0N1ZTo6Y3JlYXRlKFdURk1vdmUoY3VlRGF0YSkpLmdldCgpKSk7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVHZW5lcmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgR2VuZXJpY0N1ZURhdGEmJiBjdWVEYXRhKQoreworICAgIEFT
U0VSVChtX3RleHRUcmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgaWYgKGNvbnN0
IGF1dG8mIHRyYWNrID0gbV90ZXh0VHJhY2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdHJh
Y2stPnVwZGF0ZUdlbmVyaWNDdWUoV1RGTW92ZShJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoV1RG
TW92ZShjdWVEYXRhKSkuZ2V0KCkpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnJlbW92ZUdlbmVyaWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBHZW5lcmljQ3VlRGF0YSYmIGN1ZURhdGEpCit7CisgICAgQVNTRVJUKG1fdGV4dFRyYWNr
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBpZiAoY29uc3QgYXV0byYgdHJhY2sgPSBt
X3RleHRUcmFja3MuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB0cmFjay0+cmVtb3ZlR2VuZXJp
Y0N1ZShXVEZNb3ZlKEluYmFuZEdlbmVyaWNDdWU6OmNyZWF0ZShXVEZNb3ZlKGN1ZURhdGEpKS5n
ZXQoKSkpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkUmVtb3RlVmlk
ZW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV92aWRlb1RyYWNrcy5lbnN1cmUoaWRlbnRpZmllciwgWyZdIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCmluZGV4IDEzMmYzMGFiMjliNmU1MDlmMTEzOTQ5MjU4MGE2ZTM2NzFj
Yzc5MDkuLjU2OGMxNjhmNTBiNGU4ZGM1NzcxNTFkYWNhNjc0ODJhNzc0MDg1MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgR2VuZXJpY0N1ZURhdGE7CiBjbGFz
cyBJU09XZWJWVFRDdWU7CiBjbGFzcyBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU7CiB9
CkBAIC0xMjIsNiArMTIzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGFDdWUoVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYm
IGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYpOwogI2VuZGlm
CiAKKyAgICB2b2lkIGFkZEdlbmVyaWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEmJik7CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKFRy
YWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiYpOwor
ICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSYmKTsKKwogICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKFJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlc291cmNlTm90U3VwcG9ydGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IGU4ODk3
YjZhMTBhMTBkNGI3MDA5Mjk4YzdhYTI3MjhiZmUxMTI5N2EuLjNmZmNmMzZlZmUyNGIzZDA4NTBl
ZWEyODZlMmNlNzI4ZTRhMmZjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Lm1lc3NhZ2VzLmluCkBAIC01Nyw5ICs1Nyw5IEBAIG1lc3NhZ2VzIC0+IE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKICAgICBSZW1vdmVEYXRhQ3VlKFdlYktpdDo6VHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBNZWRpYVRpbWUgc3RhcnQsIE1lZGlh
VGltZSBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZSBjdWVEYXRh
KQogI2VuZGlmCiAKLSAgICAjIyBBZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
IGN1ZSkKLSAgICAjIyBVcGRhdGVHZW5lcmljQ3VlKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhIGN1
ZSkKLSAgICAjIyBSZW1vdmVHZW5lcmljQ3VlKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhIGN1ZSkK
KyAgICBBZGRHZW5lcmljQ3VlKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0
cmFja0lELCBzdHJ1Y3QgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQorICAgIFVwZGF0ZUdl
bmVyaWNDdWUoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIHN0
cnVjdCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCisgICAgUmVtb3ZlR2VuZXJpY0N1ZShX
ZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgc3RydWN0IFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhIGN1ZSkKIAogICAgIEFkZFJlbW90ZVZpZGVvVHJhY2soV2ViS2l0
OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OlRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAgICBSZW1vdmVS
ZW1vdGVWaWRlb1RyYWNrKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFj
a0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNmE2NjIyYTM5NTQ5OTAwNzEwNmJk
NDkwOTcxMTA1ZDU4YjgzYTk2ZS4uNzI1MjE3ZDcyNGJkZWI5OGUzYmMwZGI2NWM1NjFlZDdlZTYw
NTMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC04OCwyMiArODgsMjcgQEAgdm9p
ZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRleHRUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmEKICAgICBtX2lzRGVmYXVsdCA9IGNvbmZpZ3VyYXRpb24uaXNE
ZWZhdWx0OwogfQogCi12b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OmFkZEdlbmVyaWNDdWUo
R2VuZXJpY0N1ZURhdGEmKQordm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGRHZW5lcmlj
Q3VlKEluYmFuZEdlbmVyaWNDdWUmJiBjdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBBU1NFUlQoY2xpZW50KCkpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQo
KSkKKyAgICAgICAgY2xpZW50LT5hZGRHZW5lcmljQ3VlKGN1ZSk7CiB9CiAKLXZvaWQgVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpCit2b2lk
IFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1
ZSYmIGN1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChjbGllbnQoKSk7
CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQt
PnVwZGF0ZUdlbmVyaWNDdWUoY3VlKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3Rl
OjpyZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiYgY3VlKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKGNsaWVudCgpKTsKKyAgICBpZiAoYXV0byog
Y2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVtb3ZlR2VuZXJpY0N1
ZShjdWUpOwogfQogCi0KIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRG
aWxlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIHsKICAgICBBU1NFUlQoY2xpZW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2
YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuaAppbmRleCA3YjdmNzAzY2I0OTdkZWRlYTM5MWRiNTljYzkyYmVjZTE1
YTU5MmUzLi5iYjJmNDE0NGJkNjkwYjk3YjU3OWI3NTgzYjQ1M2Y2OWIzY2M1NGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHZW5l
cmljQ3VlRGF0YTsKK2NsYXNzIEluYmFuZEdlbmVyaWNDdWU7CiBjbGFzcyBJU09XZWJWVFRDdWU7
CiB9CiAKQEAgLTU3LDkgKzU3LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0YUN1ZShN
ZWRpYVRpbWUmJiBzdGFydCwgTWVkaWFUaW1lJiYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWUmJik7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YSYpOwotICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YSYpOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmlj
Q3VlRGF0YSYpOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiYpOwor
ICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiYpOworICAgIHZvaWQg
cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiYpOwogCiAgICAgdm9pZCBwYXJzZVdl
YlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpOwogICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwYTc2Mzc4YWZiNDdlZGY1ZmFjY2Zm
YjhiMzcwN2NlYzc4MmZjOGYuLjJkMDZmNTg3YjlmZmViMmFlYjg1N2JkNTcwYjIxYjNkZDdhZmMw
ZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMi0yMSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLWJhbmQgZ2VuZXJpYyBj
dWVzIHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAyLTI2
ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9T
IHdrMiBSZWxlYXNlIF0gZmFzdC90ZXh0LWF1dG9zaXppbmcvaW9zL2lkZW1wb3RlbnRtb2RlL3Zp
ZXdwb3J0LWNoYW5nZS1yZWxheW91dC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MTNhNWQ0NDg0MmZhYjljZTQ3MzRi
ZGRmMzdjNGVhZTVkMjA3NWU4Li42NDg0ODEzNmM3NDYzMDhlZWNmZmUzZjVlNjVjODcxMDkwYTk5
YWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIzMiw2
ICsyMzIsMTMgQEAgaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXdlYnZ0dC10cmFja3MuaHRtbCBb
IFBhc3MgXQogaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS5odG1s
IFsgUGFzcyBdCiBodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLWNy
YXNoLmh0bWwgWyBQYXNzIF0KIAorbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1jdWVzLWFkZGVk
LW9uY2UuaHRtbCBbIFBhc3MgXQorbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS5odG1s
IFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLWR1cGxpY2F0ZS10cmFja3Mtd2hl
bi1zb3VyY2UtY2hhbmdlcy5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5k
LWxlZ2FjeS1hcGkuaHRtbCBbIFBhc3MgXQorbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC5odG1s
IFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLW1ldGFkYXRhLWRpc3BsYXktb3Jk
ZXIuaHRtbCBbIFBhc3MgXQorCiBhY2Nlc3NpYmlsaXR5L21lZGlhLWVsZW1lbnQuaHRtbCBbIFNr
aXAgXQogZmFzdC9ibG9jay9mbG9hdC9saXN0LW1hcmtlci1pcy1mbG9hdC1jcmFzaC5odG1sIFsg
U2tpcCBdCiBmYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbi1yZXBsYWNlZC1pbi10YWJsZS1kaXNw
bGF5LWNyYXNoLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391851</attachid>
            <date>2020-02-27 05:49:31 -0800</date>
            <delta_ts>2020-02-27 17:40:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208080-20200227054930.patch</filename>
            <type>text/plain</type>
            <size>64746</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdkMGU3NzhhYzAwM2Rm
OGYyOTJmODVkNDk1NWRhZTViZmY4YTFhYi4uY2M5OTk5ZThiNTI2MWFhMmRjYmQyNzZmNTI0YWIz
ZDM3NzRlNjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0wMi0yMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGlu
LWJhbmQgZ2VuZXJpYyBjdWVzIHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBl
bmFibGVkIGZvciBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRU
cmFja0N1ZU1hcDo6ZmluZEluZGV4T2ZQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNU
ZXh0VHJhY2tDdWVNYXA6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1RleHRUcmFj
a0N1ZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRTdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZW5kVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRF
bmRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmlkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldElkKToKKyAgICAgICAgKFdl
YkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnNldExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6cG9z
aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OmFsaWduIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNDdWU6OmZvbnROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OnNldEZvbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmJhc2VGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlOjpzZXRCYXNlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1
ZTo6cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljQ3VlOjpzZXRSZWxhdGl2ZUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNDdWU6OmZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kR2VuZXJpY0N1ZTo6YmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNDdWU6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRHZW5lcmljQ3VlOjpoaWdobGlnaHRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY0N1ZTo6c2V0U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OmN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
SW5iYW5kR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjp0
b0pTT05TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6
ZG9lc0V4dGVuZEN1ZURhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJD
b3JlOjpJbmJhbmRHZW5lcmljQ3VlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdlbmVyaWNDdWVEYXRhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2Vu
ZXJpY0N1ZURhdGE6OnN0YXJ0VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6c2V0U3RhcnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjplbmRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRFbmRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjppZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OmNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldENvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OmxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldExpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OnBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmFsaWduIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRBbGlnbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9udE5hbWUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEZvbnROYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpiYXNlRm9udFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEJh
c2VGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6
cmVsYXRpdmVGb250U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0UmVsYXRpdmVGb250U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6Zm9yZWdyb3VuZENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmJhY2tncm91bmRDb2xvciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0QmFj
a2dyb3VuZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
OjpoaWdobGlnaHRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c2V0SGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YTo6c2V0U3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyaWNDdWVEYXRhOjp0b0pTT05TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OmRvZXNFeHRlbmRDdWVEYXRhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+Ojp0b1N0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNv
bXBsZXRlZEN1ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorCiAyMDIwLTAy
LTI2ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIG5vbi11bmlmaWVkIGJ1aWxkcyB3aXRoIGFzc2Vy
dGlvbnMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzY1OGUxNDhmZDdmOTkzNDhjNWM4MmM1NzgxNTQ5
MDg0ZjY2Y2YxZS4uYzQ5ZjNjYTY2YmNiMWIxYzQ5ZDhjYTFiNmM2Y2VlZTY4OTU4ZWEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wMi0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLWJhbmQgZ2VuZXJpYyBjdWVz
IHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZEdlbmVyaWNDdWUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6dXBkYXRlR2VuZXJpY0N1ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVHZW5lcmljQ3VlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5Lmg6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFkZEdlbmVyaWND
dWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZUdl
bmVyaWNDdWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJl
bW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViS2l0
OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpyZW1vdmVHZW5lcmljQ3VlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmg6CisKIDIwMjAtMDIt
MjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVVByb2Nl
c3Mgc2hvdWxkIGJlIG1hZGUgYXdhcmUgb2YgZGV2aWNlIG9yaWVudGF0aW9uIGZvciBjb3JyZWN0
IHZpZGVvIGNhcHR1cmUgZnJhbWUgcm90YXRpb24gY29tcHV0YXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IDZkYjVjZTBmMGQ2OWVhNjg0YTJhMDU3MTQ3OTQ0MDBiMjM5NjQyMjkuLjQzMzg1M2Y2
MmZlODRmZGIxNzQwMzNjYmZiOTc5NmQ3ODA1NzA3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
MTEwMCw2ICsxMTAwLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBl
cy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UG9pbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZmNhYWIzYTFkM2U1MzA4MTdkYjBmYzRjMzQ1
ZmIxOTQ4ODEwM2MwLi42OGMyNmY5MzdmYTYwZDdiY2UwMzcxNzQ0ODc5MzIxZGJiNjgxZWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTg3NCw2ICsxODc0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE1MzNiNjk3N2Y5ZDU4MThhZDhi
NDdiMGZlNGEwODM1M2E0ODYzNC4uNzYwYjgzNzM0MTlkYjFhM2I1YzI3MTA3YWEzMWI2MDQ1ODFh
ZGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTQ1LDYgKzE0NSw3IEBACiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5oICovOyB9OwogCQkwNzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFj
a0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
Nzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJCTA3ODQ2
Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyog
SlNUcmFja0N1c3RvbS5oICovOyB9OworCQkwNzg2MzNFOTIzRkYzNDdCMDA4N0FFMjEgLyogSW5i
YW5kR2VuZXJpY0N1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8qIEluYmFuZEdlbmVyaWNDdWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzg3QzQ2QTFC
RkJERjZGMDA2RENEN0YgLyogSlNNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODdDNDY4MUJGQkRG
NkYwMDZEQ0Q3RiAvKiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9Owog
CQkwNzhFMDkxNTE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjIxQjREMTdDRUMzMjcwMDg0OEU1
MSAvKiBNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzhFMDkxODE3RDE0RDFDMDA0MjBBQTEgLyog
TWVkaWFTdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcyMjFCNTUxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtVHJhY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTQ5Miw2
ICs1NDkzLDggQEAKIAkJMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJh
Y2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUcmFja0N1c3Rv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg2MzNENzIzRkUwOTY0MDA4N0FF
MjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8qIEluYmFuZEdlbmVyaWNDdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5iYW5kR2VuZXJpY0N1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzg2MzNGODI0MDcxNUQyMDA4N0FFMjEgLyogSW5iYW5kR2VuZXJpY0N1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmJhbmRHZW5lcmljQ3VlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc4N0M0NjcxQkZCREY2RjAwNkRDRDdGIC8qIEpTTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc4N0M0NjgxQkZCREY2RjAwNkRDRDdGIC8qIEpTTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFU
cmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3OEUwOTQ4MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjUwNzIsNiArMjUwNzUsOCBAQAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFn
ZVNvdXJjZS5jcHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291
cmNlLmggKi8sCiAJCQkJNTU1MENCNDExRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAq
LywKKwkJCQkwNzg2MzNGODI0MDcxNUQyMDA4N0FFMjEgLyogSW5iYW5kR2VuZXJpY0N1ZS5jcHAg
Ki8sCisJCQkJMDc4NjMzREUyM0ZFREYyMjAwODdBRTIxIC8qIEluYmFuZEdlbmVyaWNDdWUuaCAq
LywKIAkJCQkwNzk0MTc5MzE2NkVBMDRFMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oICovLAogCQkJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50LmggKi8sCiAJCQkJMkQ0NkYwNEQxN0I5NkZCRDAwNTY0N0YwIC8qIEludFBv
aW50LmNwcCAqLywKQEAgLTMwMzExLDYgKzMwMzE2LDcgQEAKIAkJCQkyNkY3NTZCNTFCM0I2OEYy
MDAwNURENzkgLyogSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxNkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkU5NjFDNTUxOEFEMzM4QzAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJh
Y2suaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODYzM0U5MjNGRjM0N0IwMDg3QUUyMSAvKiBJbmJh
bmRHZW5lcmljQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTE2QzU5MzE3Q0ZFMTcyMDA4NTJD
MDQgLyogSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFOUUx
MkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTIxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRl
eHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCA2NTFiYmMxYjA3NGFjODNjYTI4
ZjQ2MWJiMWY0ZTQ5N2I3YmU5NTcxLi4zNjFjM2FmMWU2Njc0NGMxMjBjZjZmYTYwYmVjZGYxODE2
MTRlMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVy
aWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjay5jcHAKQEAgLTQwLDMyICs0MCwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJhbmRHZW5lcmljVGV4dFRyYWNrKTsK
IAotdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjphZGQoR2VuZXJpY0N1ZURhdGEmIGN1ZURh
dGEsIFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKK3ZvaWQgR2VuZXJpY1RleHRUcmFja0N1ZU1h
cDo6YWRkKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSwgVGV4dFRyYWNrQ3VlR2VuZXJpYyYg
cHVibGljQ3VlKQogewotICAgIG1fZGF0YVRvQ3VlTWFwLmFkZCgmY3VlRGF0YSwgJmN1ZSk7Ci0g
ICAgbV9jdWVUb0RhdGFNYXAuYWRkKCZjdWUsICZjdWVEYXRhKTsKKyAgICBtX2RhdGFUb0N1ZU1h
cC5hZGQoaW5iYW5kQ3VlLnVuaXF1ZUlkKCksICZwdWJsaWNDdWUpOworICAgIG1fY3VlVG9EYXRh
TWFwLmFkZCgmcHVibGljQ3VlLCBpbmJhbmRDdWUudW5pcXVlSWQoKSk7CiB9CiAKLVRleHRUcmFj
a0N1ZUdlbmVyaWMqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoR2VuZXJpY0N1ZURhdGEm
IGN1ZURhdGEpCitUZXh0VHJhY2tDdWVHZW5lcmljKiBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpm
aW5kKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIHsKLSAgICByZXR1cm4gbV9kYXRhVG9D
dWVNYXAuZ2V0KCZjdWVEYXRhKTsKKyAgICByZXR1cm4gbV9kYXRhVG9DdWVNYXAuZ2V0KGluYmFu
ZEN1ZS51bmlxdWVJZCgpKTsKIH0KIAotR2VuZXJpY0N1ZURhdGEqIEdlbmVyaWNUZXh0VHJhY2tD
dWVNYXA6OmZpbmQoVGV4dFRyYWNrQ3VlJiBjdWUpCit2b2lkIEdlbmVyaWNUZXh0VHJhY2tDdWVN
YXA6OnJlbW92ZShJbmJhbmRHZW5lcmljQ3VlJiBpbmJhbmRDdWUpCiB7Ci0gICAgcmV0dXJuIG1f
Y3VlVG9EYXRhTWFwLmdldCgmY3VlKTsKKyAgICBpZiAoYXV0byBwdWJsaWNDdWUgPSBtX2RhdGFU
b0N1ZU1hcC50YWtlKGluYmFuZEN1ZS51bmlxdWVJZCgpKSkKKyAgICAgICAgbV9jdWVUb0RhdGFN
YXAucmVtb3ZlKHB1YmxpY0N1ZSk7CiB9CiAKLXZvaWQgR2VuZXJpY1RleHRUcmFja0N1ZU1hcDo6
cmVtb3ZlKEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBHZW5lcmljVGV4dFRyYWNrQ3Vl
TWFwOjpyZW1vdmUoVGV4dFRyYWNrQ3VlJiBwdWJsaWNDdWUpCiB7Ci0gICAgaWYgKGF1dG8gY3Vl
ID0gbV9kYXRhVG9DdWVNYXAudGFrZSgmY3VlRGF0YSkpCi0gICAgICAgIG1fY3VlVG9EYXRhTWFw
LnJlbW92ZShjdWUpOwotfQotCi12b2lkIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OnJlbW92ZShU
ZXh0VHJhY2tDdWUmIGN1ZSkKLXsKLSAgICBpZiAoYXV0byBkYXRhID0gbV9jdWVUb0RhdGFNYXAu
dGFrZSgmY3VlKSkKLSAgICAgICAgbV9kYXRhVG9DdWVNYXAucmVtb3ZlKGRhdGEpOworICAgIGlm
IChhdXRvIGN1ZUlkZW50aWZpZXIgPSBtX2N1ZVRvRGF0YU1hcC50YWtlKCZwdWJsaWNDdWUpKQor
ICAgICAgICBtX2RhdGFUb0N1ZU1hcC5yZW1vdmUoY3VlSWRlbnRpZmllcik7CiB9CiAKIGlubGlu
ZSBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCkBAIC04MCw3ICs3NSw3IEBAIFJlZjxJbmJh
bmRHZW5lcmljVGV4dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4CiAKIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6On5JbmJhbmRHZW5lcmlj
VGV4dFRyYWNrKCkgPSBkZWZhdWx0OwogCi12b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVw
ZGF0ZUN1ZUZyb21DdWVEYXRhKFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSwgR2VuZXJpY0N1ZURh
dGEmIGN1ZURhdGEpCit2b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUN1ZUZyb21D
dWVEYXRhKFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSwgSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0
YSkKIHsKICAgICBjdWUud2lsbENoYW5nZSgpOwogCkBAIC0xMDgsMTggKzEwMywxOCBAQCB2b2lk
IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKFRleHRUcmFja0N1
ZUdlbmVyaWMmIGN1ZSwgR2VuZQogICAgIGlmIChjdWVEYXRhLmhpZ2hsaWdodENvbG9yKCkuaXNW
YWxpZCgpKQogICAgICAgICBjdWUuc2V0SGlnaGxpZ2h0Q29sb3IoY3VlRGF0YS5oaWdobGlnaHRD
b2xvcigpLnJnYigpKTsKIAotICAgIGlmIChjdWVEYXRhLmFsaWduKCkgPT0gR2VuZXJpY0N1ZURh
dGE6OlN0YXJ0KQorICAgIGlmIChjdWVEYXRhLmFsaWduKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkFs
aWdubWVudDo6U3RhcnQpCiAgICAgICAgIGN1ZS5zZXRBbGlnbigic3RhcnQiX3MpOwotICAgIGVs
c2UgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6TWlkZGxlKQorICAgIGVs
c2UgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpNaWRk
bGUpCiAgICAgICAgIGN1ZS5zZXRBbGlnbigibWlkZGxlIl9zKTsKLSAgICBlbHNlIGlmIChjdWVE
YXRhLmFsaWduKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkVuZCkKKyAgICBlbHNlIGlmIChjdWVEYXRh
LmFsaWduKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6RW5kKQogICAgICAgICBjdWUu
c2V0QWxpZ24oImVuZCJfcyk7CiAgICAgY3VlLnNldFNuYXBUb0xpbmVzKGZhbHNlKTsKIAogICAg
IGN1ZS5kaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRH
ZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4
dFRyYWNrOjphZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGN1ZURhdGEpCiB7CiAgICAg
aWYgKG1fY3VlTWFwLmZpbmQoY3VlRGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMywxMyAr
MTI4LDEzIEBAIHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6YWRkR2VuZXJpY0N1ZShHZW5l
cmljQ3VlRGF0YSYgY3VlRGF0YSkKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRl
ZCBjdWU6ICIsIGN1ZS5nZXQoKSk7CiAKLSAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSAhPSBHZW5l
cmljQ3VlRGF0YTo6Q29tcGxldGUpCisgICAgaWYgKGN1ZURhdGEuc3RhdHVzKCkgIT0gR2VuZXJp
Y0N1ZURhdGE6OlN0YXR1czo6Q29tcGxldGUpCiAgICAgICAgIG1fY3VlTWFwLmFkZChjdWVEYXRh
LCBjdWUpOwogCiAgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSk7CiB9CiAKLXZvaWQgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYgY3VlRGF0YSkK
K3ZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5l
cmljQ3VlJiBjdWVEYXRhKQogewogICAgIGF1dG8gY3VlID0gbWFrZVJlZlB0cihtX2N1ZU1hcC5m
aW5kKGN1ZURhdGEpKTsKICAgICBpZiAoIWN1ZSkKQEAgLTE0NywxMSArMTQyLDExIEBAIHZvaWQg
SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYg
Y3VlRGF0YSkKIAogICAgIHVwZGF0ZUN1ZUZyb21DdWVEYXRhKCpjdWUsIGN1ZURhdGEpOwogCi0g
ICAgaWYgKGN1ZURhdGEuc3RhdHVzKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKQorICAg
IGlmIChjdWVEYXRhLnN0YXR1cygpID09IEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRl
KQogICAgICAgICBtX2N1ZU1hcC5yZW1vdmUoY3VlRGF0YSk7CiB9CiAKLXZvaWQgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYgY3VlRGF0YSkK
K3ZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5l
cmljQ3VlJiBjdWVEYXRhKQogewogICAgIGF1dG8gY3VlID0gbWFrZVJlZlB0cihtX2N1ZU1hcC5m
aW5kKGN1ZURhdGEpKTsKICAgICBpZiAoY3VlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCmluZGV4IDIyMTJmOTU3N2YyNmY1ODA3
MDhhODJjYTIwNTFmY2I4ODVlZWE4OGEuLjgzY2EyMThkNzAyOTgwYzExNTBjNjAzNTU5YzJkMTQx
NGZjODE5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjay5oCkBAIC0zNSwxNyArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwIHsKIHB1YmxpYzoKLSAgICB2b2lkIGFkZChH
ZW5lcmljQ3VlRGF0YSYsIFRleHRUcmFja0N1ZUdlbmVyaWMmKTsKKyAgICB2b2lkIGFkZChJbmJh
bmRHZW5lcmljQ3VlJiwgVGV4dFRyYWNrQ3VlR2VuZXJpYyYpOwogCiAgICAgdm9pZCByZW1vdmUo
VGV4dFRyYWNrQ3VlJik7Ci0gICAgdm9pZCByZW1vdmUoR2VuZXJpY0N1ZURhdGEmKTsKKyAgICB2
b2lkIHJlbW92ZShJbmJhbmRHZW5lcmljQ3VlJik7CiAKLSAgICBHZW5lcmljQ3VlRGF0YSogZmlu
ZChUZXh0VHJhY2tDdWUmKTsKLSAgICBUZXh0VHJhY2tDdWVHZW5lcmljKiBmaW5kKEdlbmVyaWND
dWVEYXRhJik7CisgICAgVGV4dFRyYWNrQ3VlR2VuZXJpYyogZmluZChJbmJhbmRHZW5lcmljQ3Vl
Jik7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgQ3VlVG9EYXRhTWFwID0gSGFzaE1hcDxSZWZQdHI8
VGV4dFRyYWNrQ3VlPiwgUmVmUHRyPEdlbmVyaWNDdWVEYXRhPj47Ci0gICAgdXNpbmcgQ3VlRGF0
YVRvQ3VlTWFwID0gSGFzaE1hcDxSZWZQdHI8R2VuZXJpY0N1ZURhdGE+LCBSZWZQdHI8VGV4dFRy
YWNrQ3VlR2VuZXJpYz4+OworICAgIHVzaW5nIEN1ZVRvRGF0YU1hcCA9IEhhc2hNYXA8UmVmUHRy
PFRleHRUcmFja0N1ZT4sIHVpbnQ2NF90PjsKKyAgICB1c2luZyBDdWVEYXRhVG9DdWVNYXAgPSBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VGV4dFRyYWNrQ3VlR2VuZXJpYz4+OwogCiAgICAgQ3Vl
VG9EYXRhTWFwIG1fY3VlVG9EYXRhTWFwOwogICAgIEN1ZURhdGFUb0N1ZU1hcCBtX2RhdGFUb0N1
ZU1hcDsKQEAgLTYwLDEyICs1OSwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRleHRUcmFja0NsaWVudCYs
IEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5l
cmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3Vl
RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYp
IGZpbmFsOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZpbmFsOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmKSBmaW5hbDsKIAotICAgIHZv
aWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYsIEdlbmVyaWNDdWVE
YXRhJik7CisgICAgdm9pZCB1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJhY2tDdWVHZW5lcmlj
JiwgSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBwYXJzZXIoKTsKICAg
ICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCA4ZmVmOWYzNGFlYWJl
MDM1NTE0OTNiNjQ1ZWMxYTZlNWU0ZjM4YTkxLi4zMGZjMjUyN2YwNTJiNDdmODA0N2QxNjI3OTJm
ZTdkN2FiZjI5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmgKQEAgLTc3LDkgKzc3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZSYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAotICAg
IHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KLSAgICB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEm
KSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdm9pZCByZW1vdmVHZW5l
cmljQ3VlKEdlbmVyaWNDdWVEYXRhJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRH
ZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQg
cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYp
IG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIHBhcnNlV2ViVlRU
Q3VlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
YmFuZEdlbmVyaWNDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kR2VuZXJpY0N1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUzNzE4MGI4MTBhNTkwZjNmYTI3ZGIwYTc1
N2NkNzZkMDNiNmY1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkluYmFuZEdlbmVyaWNDdWUuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VpbnQ2NF90IEluYmFuZEdlbmVyaWNDdWU6
OnNfbmV4dFVuaXF1ZUlkID0gMDsKKworSW5iYW5kR2VuZXJpY0N1ZTo6SW5iYW5kR2VuZXJpY0N1
ZSgpCit7CisgICAgbV9jdWVEYXRhLm1fdW5pcXVlSWQgPSArK3NfbmV4dFVuaXF1ZUlkOworfQor
CitTdHJpbmcgSW5iYW5kR2VuZXJpY0N1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKK3sKKyAgICBh
dXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisKKyNpZiAhTE9HX0RJU0FCTEVE
CisgICAgb2JqZWN0LT5zZXRTdHJpbmcoInRleHQiX3MsIG1fY3VlRGF0YS5tX2NvbnRlbnQpOwor
I2VuZGlmCisgICAgb2JqZWN0LT5zZXREb3VibGUoInN0YXJ0Il9zLCBtX2N1ZURhdGEubV9zdGFy
dFRpbWUudG9Eb3VibGUoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoImVuZCJfcywgbV9jdWVE
YXRhLm1fZW5kVGltZS50b0RvdWJsZSgpKTsKKworICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKKyAg
ICBzd2l0Y2ggKG1fY3VlRGF0YS5tX3N0YXR1cykgeworICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6
OlN0YXR1czo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQi
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlBhcnRp
YWw6CisgICAgICAgIHN0YXR1cyA9ICJQYXJ0aWFsIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZToKKyAgICAgICAgc3RhdHVzID0gIkNv
bXBsZXRlIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG9iamVjdC0+c2V0U3RyaW5nKCJz
dGF0dXMiLCBzdGF0dXMpOworCisgICAgaWYgKCFtX2N1ZURhdGEubV9pZC5pc0VtcHR5KCkpCisg
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJpZCIsIG1fY3VlRGF0YS5tX2lkKTsKKworICAgIGlm
IChtX2N1ZURhdGEubV9saW5lID4gMCkKKyAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoImxpbmUi
X3MsIG1fY3VlRGF0YS5tX2xpbmUpOworCisgICAgaWYgKG1fY3VlRGF0YS5tX3NpemUgPiAwKQor
ICAgICAgICBvYmplY3QtPnNldERvdWJsZSgic2l6ZSJfcywgbV9jdWVEYXRhLm1fc2l6ZSk7CisK
KyAgICBpZiAobV9jdWVEYXRhLm1fcG9zaXRpb24gPiAwKQorICAgICAgICBvYmplY3QtPnNldERv
dWJsZSgicG9zaXRpb24iX3MsIG1fY3VlRGF0YS5tX3Bvc2l0aW9uKTsKKworICAgIGlmIChtX2N1
ZURhdGEubV9hbGlnbiAhPSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpOb25lKSB7CisgICAg
ICAgIGNvbnN0IGNoYXIqIGFsaWduOworICAgICAgICBzd2l0Y2ggKG1fY3VlRGF0YS5tX2FsaWdu
KSB7CisgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6U3RhcnQ6CisgICAg
ICAgICAgICBhbGlnbiA9ICJTdGFydCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpNaWRkbGU6CisgICAgICAgICAgICBhbGlnbiA9
ICJNaWRkbGUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURh
dGE6OkFsaWdubWVudDo6RW5kOgorICAgICAgICAgICAgYWxpZ24gPSAiRW5kIjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6Ok5vbmU6
CisgICAgICAgICAgICBhbGlnbiA9ICJOb25lIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJhbGlnbiJfcywgYWxpZ24pOworICAgIH0K
KworICAgIGlmIChtX2N1ZURhdGEubV9mb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAg
ICBvYmplY3QtPnNldFN0cmluZygiZm9yZWdyb3VuZENvbG9yIl9zLCBtX2N1ZURhdGEubV9mb3Jl
Z3JvdW5kQ29sb3Iuc2VyaWFsaXplZCgpKTsKKworICAgIGlmIChtX2N1ZURhdGEubV9iYWNrZ3Jv
dW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICBvYmplY3QtPnNldFN0cmluZygiYmFja2dyb3Vu
ZENvbG9yIl9zLCBtX2N1ZURhdGEubV9iYWNrZ3JvdW5kQ29sb3Iuc2VyaWFsaXplZCgpKTsKKwor
ICAgIGlmIChtX2N1ZURhdGEubV9oaWdobGlnaHRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJoaWdobGlnaHRDb2xvciJfcywgbV9jdWVEYXRhLm1faGlnaGxpZ2h0
Q29sb3Iuc2VyaWFsaXplZCgpKTsKKworICAgIGlmIChtX2N1ZURhdGEubV9iYXNlRm9udFNpemUp
CisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJiYXNlRm9udFNpemUiX3MsIG1fY3VlRGF0YS5t
X2Jhc2VGb250U2l6ZSk7CisKKyAgICBpZiAobV9jdWVEYXRhLm1fcmVsYXRpdmVGb250U2l6ZSkK
KyAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInJlbGF0aXZlRm9udFNpemUiX3MsIG1fY3VlRGF0
YS5tX3JlbGF0aXZlRm9udFNpemUpOworCisgICAgaWYgKCFtX2N1ZURhdGEubV9mb250TmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJmb250Il9zLCBtX2N1ZURhdGEu
bV9mb250TmFtZSk7CisKKyAgICByZXR1cm4gb2JqZWN0LT50b0pTT05TdHJpbmcoKTsKK30KKwor
Ym9vbCBHZW5lcmljQ3VlRGF0YTo6ZXF1YWxOb3RDb25zaWRlcmluZ1RpbWVzT3JJZChjb25zdCBH
ZW5lcmljQ3VlRGF0YSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVsYXRpdmVGb250U2l6
ZSAhPSBvdGhlci5tX3JlbGF0aXZlRm9udFNpemUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9iYXNlRm9udFNpemUgIT0gb3RoZXIubV9iYXNlRm9udFNpemUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9wb3NpdGlvbiAhPSBvdGhlci5tX3Bvc2l0aW9uKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbGluZSAhPSBvdGhlci5tX2xpbmUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9zaXplICE9IG90aGVyLm1fc2l6ZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2FsaWduICE9IG90aGVyLm1fYWxpZ24pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mb3JlZ3JvdW5kQ29sb3IgIT0gb3RoZXIubV9m
b3JlZ3JvdW5kQ29sb3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9iYWNrZ3Jv
dW5kQ29sb3IgIT0gb3RoZXIubV9iYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9oaWdobGlnaHRDb2xvciAhPSBvdGhlci5tX2hpZ2hsaWdodENvbG9yKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZm9udE5hbWUgIT0gb3RoZXIubV9mb250
TmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lkICE9IG90aGVyLm1faWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jb250ZW50ICE9IG90aGVyLm1fY29u
dGVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bmJhbmRHZW5lcmljQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJh
bmRHZW5lcmljQ3VlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkNzRmNDZlODA4ZTBiNTc1ZTE3NjdjZGYxNjI3
MDUyZTc3MjNkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaApAQCAtMCwwICsxLDMyOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlIDx3dGYvTWVk
aWFUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdlbmVyaWNDdWVEYXRh
IHsKKworICAgIGVudW0gY2xhc3MgQWxpZ25tZW50IDogdWludDhfdCB7IE5vbmUsIFN0YXJ0LCBN
aWRkbGUsIEVuZCB9OworICAgIGVudW0gY2xhc3MgU3RhdHVzIDogdWludDhfdCB7IFVuaW5pdGlh
bGl6ZWQsIFBhcnRpYWwsIENvbXBsZXRlIH07CisKKyAgICBHZW5lcmljQ3VlRGF0YSgpID0gZGVm
YXVsdDsKKyAgICBHZW5lcmljQ3VlRGF0YSh1aW50NjRfdCB1bmlxdWVJZCwgY29uc3QgTWVkaWFU
aW1lJiBzdGFydFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSwgY29uc3QgU3RyaW5nJiBp
ZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUg
bGluZSwgZG91YmxlIHBvc2l0aW9uLCBkb3VibGUgc2l6ZSwgZG91YmxlIGJhc2VGb250U2l6ZSwg
ZG91YmxlIHJlbGF0aXZlRm9udFNpemUsIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IsIGNv
bnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENvbG9yJiBoaWdobGlnaHRDb2xvciwg
R2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudCBhbGlnbiwgR2VuZXJpY0N1ZURhdGE6OlN0YXR1cyBz
dGF0dXMpCisgICAgICAgIDogbV91bmlxdWVJZCh1bmlxdWVJZCkKKyAgICAgICAgLCBtX3N0YXJ0
VGltZShzdGFydFRpbWUpCisgICAgICAgICwgbV9lbmRUaW1lKGVuZFRpbWUpCisgICAgICAgICwg
bV9pZChpZCkKKyAgICAgICAgLCBtX2NvbnRlbnQoY29udGVudCkKKyAgICAgICAgLCBtX2ZvbnRO
YW1lKGZvbnROYW1lKQorICAgICAgICAsIG1fbGluZShsaW5lKQorICAgICAgICAsIG1fcG9zaXRp
b24ocG9zaXRpb24pCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgICAgICwgbV9iYXNlRm9u
dFNpemUoYmFzZUZvbnRTaXplKQorICAgICAgICAsIG1fcmVsYXRpdmVGb250U2l6ZShyZWxhdGl2
ZUZvbnRTaXplKQorICAgICAgICAsIG1fZm9yZWdyb3VuZENvbG9yKGZvcmVncm91bmRDb2xvcikK
KyAgICAgICAgLCBtX2JhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgICwg
bV9oaWdobGlnaHRDb2xvcihoaWdobGlnaHRDb2xvcikKKyAgICAgICAgLCBtX2FsaWduKGFsaWdu
KQorICAgICAgICAsIG1fc3RhdHVzKHN0YXR1cykKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1Zh
bGlkKCkpOworICAgIH0KKworICAgIHN0YXRpYyB1aW50NjRfdCBpbnZhbGlkVW5pcXVlSWQoKSB7
IHJldHVybiAwOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVJ
ZCAhPSBpbnZhbGlkVW5pcXVlSWQoKTsgfQorICAgIGJvb2wgZXF1YWxOb3RDb25zaWRlcmluZ1Rp
bWVzT3JJZChjb25zdCBHZW5lcmljQ3VlRGF0YSYpIGNvbnN0OworCisgICAgdWludDY0X3QgbV91
bmlxdWVJZCB7IGludmFsaWRVbmlxdWVJZCgpIH07CisgICAgTWVkaWFUaW1lIG1fc3RhcnRUaW1l
OworICAgIE1lZGlhVGltZSBtX2VuZFRpbWU7CisgICAgU3RyaW5nIG1faWQ7CisgICAgU3RyaW5n
IG1fY29udGVudDsKKyAgICBTdHJpbmcgbV9mb250TmFtZTsKKyAgICBkb3VibGUgbV9saW5lIHsg
LTEgfTsKKyAgICBkb3VibGUgbV9wb3NpdGlvbiB7IC0xIH07CisgICAgZG91YmxlIG1fc2l6ZSB7
IC0xIH07CisgICAgZG91YmxlIG1fYmFzZUZvbnRTaXplIHsgMCB9OworICAgIGRvdWJsZSBtX3Jl
bGF0aXZlRm9udFNpemUgeyAwIH07CisgICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7CisgICAg
Q29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgQ29sb3IgbV9oaWdobGlnaHRDb2xvcjsKKyAg
ICBBbGlnbm1lbnQgbV9hbGlnbiB7IEFsaWdubWVudDo6Tm9uZSB9OworICAgIFN0YXR1cyBtX3N0
YXR1cyB7IFN0YXR1czo6VW5pbml0aWFsaXplZCB9OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxHZW5lcmljQ3VlRGF0YT4gZGVjb2RlKERlY29kZXImKTsK
K307CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+
IEdlbmVyaWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25h
bDx1aW50NjRfdD4gdW5pcXVlSWQ7CisgICAgZGVjb2RlciA+PiB1bmlxdWVJZDsKKyAgICBpZiAo
IXVuaXF1ZUlkKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
TWVkaWFUaW1lPiBzdGFydFRpbWU7CisgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CisgICAgaWYg
KCFzdGFydFRpbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxNZWRpYVRpbWU+IGVuZFRpbWU7CisgICAgZGVjb2RlciA+PiBlbmRUaW1lOworICAgIGlmICgh
ZW5kVGltZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0
cmluZz4gaWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFp
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
U3RyaW5nPiBjb250ZW50OworICAgIGRlY29kZXIgPj4gY29udGVudDsKKyAgICBpZiAoIWNvbnRl
bnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+
IGZvbnROYW1lOworICAgIGRlY29kZXIgPj4gZm9udE5hbWU7CisgICAgaWYgKCFmb250TmFtZSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPGRvdWJsZT4gbGlu
ZTsKKyAgICBkZWNvZGVyID4+IGxpbmU7CisgICAgaWYgKCFsaW5lKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8ZG91YmxlPiBwb3NpdGlvbjsKKyAgICBkZWNv
ZGVyID4+IHBvc2l0aW9uOworICAgIGlmICghcG9zaXRpb24pCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxkb3VibGU+IHNpemU7CisgICAgZGVjb2RlciA+PiBz
aXplOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPGRvdWJsZT4gYmFzZUZvbnRTaXplOworICAgIGRlY29kZXIgPj4gYmFzZUZvbnRT
aXplOworICAgIGlmICghYmFzZUZvbnRTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgT3B0aW9uYWw8ZG91YmxlPiByZWxhdGl2ZUZvbnRTaXplOworICAgIGRlY29kZXIg
Pj4gcmVsYXRpdmVGb250U2l6ZTsKKyAgICBpZiAoIXJlbGF0aXZlRm9udFNpemUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gZm9yZWdyb3VuZENv
bG9yOworICAgIGRlY29kZXIgPj4gZm9yZWdyb3VuZENvbG9yOworICAgIGlmICghZm9yZWdyb3Vu
ZENvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBkZWNvZGVyID4+IGJhY2tncm91bmRDb2xvcjsKKyAg
ICBpZiAoIWJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPENvbG9yPiBoaWdobGlnaHRDb2xvcjsKKyAgICBkZWNvZGVyID4+IGhpZ2hs
aWdodENvbG9yOworICAgIGlmICghaGlnaGxpZ2h0Q29sb3IpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxBbGlnbm1lbnQ+IGFsaWdubWVudDsKKyAgICBkZWNv
ZGVyID4+IGFsaWdubWVudDsKKyAgICBpZiAoIWFsaWdubWVudCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0YXR1cz4gc3RhdHVzOworICAgIGRlY29kZXIg
Pj4gc3RhdHVzOworICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgR2VuZXJpY0N1ZURhdGEgZGF0YSA9IHsKKworICAgICAgICBXVEZNb3ZlKCp1bmlx
dWVJZCksCisKKyAgICAgICAgV1RGTW92ZSgqc3RhcnRUaW1lKSwKKyAgICAgICAgV1RGTW92ZSgq
ZW5kVGltZSksCisKKyAgICAgICAgV1RGTW92ZSgqaWRlbnRpZmllciksCisgICAgICAgIFdURk1v
dmUoKmNvbnRlbnQpLAorICAgICAgICBXVEZNb3ZlKCpmb250TmFtZSksCisKKyAgICAgICAgV1RG
TW92ZSgqbGluZSksCisgICAgICAgIFdURk1vdmUoKnBvc2l0aW9uKSwKKyAgICAgICAgV1RGTW92
ZSgqc2l6ZSksCisgICAgICAgIFdURk1vdmUoKmJhc2VGb250U2l6ZSksCisgICAgICAgIFdURk1v
dmUoKnJlbGF0aXZlRm9udFNpemUpLAorCisgICAgICAgIFdURk1vdmUoKmZvcmVncm91bmRDb2xv
ciksCisgICAgICAgIFdURk1vdmUoKmJhY2tncm91bmRDb2xvciksCisgICAgICAgIFdURk1vdmUo
KmhpZ2hsaWdodENvbG9yKSwKKworICAgICAgICBXVEZNb3ZlKCphbGlnbm1lbnQpLAorICAgICAg
ICBXVEZNb3ZlKCpzdGF0dXMpLAorCisgICAgfTsKKworICAgIGlmICghZGF0YS5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR2VuZXJpY0N1ZURhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV91bmlxdWVJZDsKKyAgICBl
bmNvZGVyIDw8IG1fc3RhcnRUaW1lOworICAgIGVuY29kZXIgPDwgbV9lbmRUaW1lOworICAgIGVu
Y29kZXIgPDwgbV9pZDsKKyAgICBlbmNvZGVyIDw8IG1fY29udGVudDsKKyAgICBlbmNvZGVyIDw8
IG1fZm9udE5hbWU7CisgICAgZW5jb2RlciA8PCBtX2xpbmU7CisgICAgZW5jb2RlciA8PCBtX3Bv
c2l0aW9uOworICAgIGVuY29kZXIgPDwgbV9zaXplOworICAgIGVuY29kZXIgPDwgbV9iYXNlRm9u
dFNpemU7CisgICAgZW5jb2RlciA8PCBtX3JlbGF0aXZlRm9udFNpemU7CisgICAgZW5jb2RlciA8
PCBtX2ZvcmVncm91bmRDb2xvcjsKKyAgICBlbmNvZGVyIDw8IG1fYmFja2dyb3VuZENvbG9yOwor
ICAgIGVuY29kZXIgPDwgbV9oaWdobGlnaHRDb2xvcjsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9hbGlnbik7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fc3RhdHVzKTsKK30KKworY2xhc3Mg
SW5iYW5kR2VuZXJpY0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluYmFuZEdlbmVyaWNDdWU+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEluYmFuZEdlbmVyaWNDdWU+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY0N1ZSk7IH0KKyAgICBzdGF0aWMgUmVmPElu
YmFuZEdlbmVyaWNDdWU+IGNyZWF0ZShHZW5lcmljQ3VlRGF0YSYmIGN1ZURhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY0N1ZShXVEZNb3ZlKGN1ZURhdGEpKSk7IH0KKwor
ICAgIGV4cGxpY2l0IEluYmFuZEdlbmVyaWNDdWUoKTsKKworICAgIHVpbnQ2NF90IHVuaXF1ZUlk
KCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fdW5pcXVlSWQ7IH0KKworICAgIE1lZGlhVGlt
ZSBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9zdGFydFRpbWU7IH0KKyAg
ICB2b2lkIHNldFN0YXJ0VGltZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0VGltZSkgeyBtX2N1ZURh
dGEubV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KKworICAgIE1lZGlhVGltZSBlbmRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fZW5kVGltZTsgfQorICAgIHZvaWQgc2V0RW5kVGlt
ZShjb25zdCBNZWRpYVRpbWUmIGVuZFRpbWUpIHsgbV9jdWVEYXRhLm1fZW5kVGltZSA9IGVuZFRp
bWU7IH0KKworICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEu
bV9pZDsgfQorICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2N1ZURhdGEubV9p
ZCA9IGlkOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBt
X2N1ZURhdGEubV9jb250ZW50OyB9CisgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYg
Y29udGVudCkgeyBtX2N1ZURhdGEubV9jb250ZW50ID0gY29udGVudDsgfQorCisgICAgZG91Ymxl
IGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9saW5lOyB9CisgICAgdm9pZCBzZXRM
aW5lKGRvdWJsZSBsaW5lKSB7IG1fY3VlRGF0YS5tX2xpbmUgPSBsaW5lOyB9CisKKyAgICBkb3Vi
bGUgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9wb3NpdGlvbjsgfQorICAg
IHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIHBvc2l0aW9uKSB7IG1fY3VlRGF0YS5tX3Bvc2l0aW9u
ID0gcG9zaXRpb247IH0KKworICAgIGRvdWJsZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdWVE
YXRhLm1fc2l6ZTsgfQorICAgIHZvaWQgc2V0U2l6ZShkb3VibGUgc2l6ZSkgeyBtX2N1ZURhdGEu
bV9zaXplID0gc2l6ZTsgfQorCisgICAgR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudCBhbGlnbigp
IGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX2FsaWduOyB9CisgICAgdm9pZCBzZXRBbGlnbihH
ZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50IGFsaWduKSB7IG1fY3VlRGF0YS5tX2FsaWduID0gYWxp
Z247IH0KKworICAgIGNvbnN0IFN0cmluZyYgZm9udE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1
ZURhdGEubV9mb250TmFtZTsgfQorICAgIHZvaWQgc2V0Rm9udE5hbWUoY29uc3QgU3RyaW5nJiBm
b250TmFtZSkgeyBtX2N1ZURhdGEubV9mb250TmFtZSA9IGZvbnROYW1lOyB9CisKKyAgICBkb3Vi
bGUgYmFzZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fYmFzZUZvbnRTaXpl
OyB9CisgICAgdm9pZCBzZXRCYXNlRm9udFNpemUoZG91YmxlIGJhc2VGb250U2l6ZSkgeyBtX2N1
ZURhdGEubV9iYXNlRm9udFNpemUgPSBiYXNlRm9udFNpemU7IH0KKworICAgIGRvdWJsZSByZWxh
dGl2ZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fcmVsYXRpdmVGb250U2l6
ZTsgfQorICAgIHZvaWQgc2V0UmVsYXRpdmVGb250U2l6ZShkb3VibGUgcmVsYXRpdmVGb250U2l6
ZSkgeyBtX2N1ZURhdGEubV9yZWxhdGl2ZUZvbnRTaXplID0gcmVsYXRpdmVGb250U2l6ZTsgfQor
CisgICAgY29uc3QgQ29sb3ImIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY3Vl
RGF0YS5tX2ZvcmVncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikgeyBtX2N1ZURhdGEubV9mb3JlZ3JvdW5kQ29sb3IgPSBjb2xvcjsg
fQorCisgICAgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VlRGF0YS5tX2JhY2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2N1ZURhdGEubV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xv
cjsgfQorCisgICAgY29uc3QgQ29sb3ImIGhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9jdWVEYXRhLm1faGlnaGxpZ2h0Q29sb3I7IH0KKyAgICB2b2lkIHNldEhpZ2hsaWdodENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2N1ZURhdGEubV9oaWdobGlnaHRDb2xvciA9IGNvbG9y
OyB9CisKKyAgICBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzIHN0YXR1cygpIHsgcmV0dXJuIG1fY3Vl
RGF0YS5tX3N0YXR1czsgfQorICAgIHZvaWQgc2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpTdGF0
dXMgc3RhdHVzKSB7IG1fY3VlRGF0YS5tX3N0YXR1cyA9IHN0YXR1czsgfQorCisgICAgYm9vbCBk
b2VzRXh0ZW5kQ3VlRGF0YShjb25zdCBJbmJhbmRHZW5lcmljQ3VlJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9jdWVEYXRhLmVxdWFsTm90Q29uc2lkZXJpbmdUaW1lc09ySWQob3RoZXIubV9jdWVE
YXRhKTsgfQorCisgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OworCisgICAgY29uc3Qg
R2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGE7IH0KKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgdWludDY0X3Qgc19uZXh0VW5pcXVlSWQ7CisKKyAgICBleHBs
aWNpdCBJbmJhbmRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiYgY3VlRGF0YSkKKyAgICAgICAg
OiBtX2N1ZURhdGEoV1RGTW92ZShjdWVEYXRhKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2N1
ZURhdGEuaXNWYWxpZCgpKTsKKyAgICB9CisKKyAgICBHZW5lcmljQ3VlRGF0YSBtX2N1ZURhdGE7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7Cit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU+IHsKKyAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmIGN1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBjdWUudG9KU09OU3RyaW5nKCk7CisgICAgfQorfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxpZ25t
ZW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudCwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURh
dGE6OkFsaWdubWVudDo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OkFs
aWdubWVudDo6U3RhcnQsCisgICAgICAgIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpBbGlnbm1l
bnQ6Ok1pZGRsZSwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6
RW5kCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OlN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXMsCisgICAgICAgIFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlVuaW5pdGlhbGl6ZWQsCisgICAgICAgIFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlBhcnRpYWwsCisgICAgICAgIFdlYkNvcmU6Okdl
bmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRlCisgICAgPjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCBmNDMw
NjQ1MThkZjQxOTYxYjNmNmM2M2E3NmM5OTEzZDE3NjdhZWJjLi5mZDMzZWI5YzBiMTExNmJlOGIz
Njg3ZDA5ZjIyZjA0NmNiZDNhY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ29s
b3IuaCIKKyNpbmNsdWRlICJJbmJhbmRHZW5lcmljQ3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2
YXRlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgpAQCAtNDEsMTg3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBJU09XZWJWVFRDdWU7CiAKLWNsYXNzIEdl
bmVyaWNDdWVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8R2VuZXJpY0N1ZURhdGE+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNDdWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEdlbmVyaWNDdWVEYXRhKTsgfQotCi0gICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9Ci0gICAgdm9pZCBzZXRTdGFydFRpbWUoY29u
c3QgTWVkaWFUaW1lJiBzdGFydFRpbWUpIHsgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KLQot
ICAgIE1lZGlhVGltZSBlbmRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRUaW1lOyB9Ci0gICAg
dm9pZCBzZXRFbmRUaW1lKGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSkgeyBtX2VuZFRpbWUgPSBl
bmRUaW1lOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQotICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KLQotICAg
IGNvbnN0IFN0cmluZyYgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudDsgfQotICAg
IHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpIHsgbV9jb250ZW50ID0gY29u
dGVudDsgfQotCi0gICAgZG91YmxlIGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KLSAg
ICB2b2lkIHNldExpbmUoZG91YmxlIGxpbmUpIHsgbV9saW5lID0gbGluZTsgfQotCi0gICAgZG91
YmxlIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0
UG9zaXRpb24oZG91YmxlIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQotCi0g
ICAgZG91YmxlIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB2b2lkIHNldFNp
emUoZG91YmxlIHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQotCi0gICAgZW51bSBBbGlnbm1lbnQg
eyBOb25lLCBTdGFydCwgTWlkZGxlLCBFbmQgfTsKLSAgICBBbGlnbm1lbnQgYWxpZ24oKSBjb25z
dCB7IHJldHVybiBtX2FsaWduOyB9Ci0gICAgdm9pZCBzZXRBbGlnbihBbGlnbm1lbnQgYWxpZ24p
IHsgbV9hbGlnbiA9IGFsaWduOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9mb250TmFtZTsgfQotICAgIHZvaWQgc2V0Rm9udE5hbWUoY29uc3QgU3Ry
aW5nJiBmb250TmFtZSkgeyBtX2ZvbnROYW1lID0gZm9udE5hbWU7IH0KLQotICAgIGRvdWJsZSBi
YXNlRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VGb250U2l6ZTsgfQotICAgIHZvaWQg
c2V0QmFzZUZvbnRTaXplKGRvdWJsZSBiYXNlRm9udFNpemUpIHsgbV9iYXNlRm9udFNpemUgPSBi
YXNlRm9udFNpemU7IH0KLQotICAgIGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWxhdGl2ZUZvbnRTaXplOyB9Ci0gICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXpl
KGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKSB7IG1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZl
Rm9udFNpemU7IH0KLQotICAgIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvciA9IGNvbG9yOyB9Ci0KLSAg
ICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQotCi0gICAgY29uc3QgQ29sb3ImIGhp
Z2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZv
aWQgc2V0SGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29s
b3IgPSBjb2xvcjsgfQotCi0gICAgZW51bSBTdGF0dXMgeyBVbmluaXRpYWxpemVkLCBQYXJ0aWFs
LCBDb21wbGV0ZSB9OwotICAgIFN0YXR1cyBzdGF0dXMoKSB7IHJldHVybiBtX3N0YXR1czsgfQot
ICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyBzdGF0dXMpIHsgbV9zdGF0dXMgPSBzdGF0dXM7IH0K
LQotICAgIGJvb2wgZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1ZURhdGEmKSBjb25z
dDsKLQotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBH
ZW5lcmljQ3VlRGF0YSgpID0gZGVmYXVsdDsKLQotICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsK
LSAgICBNZWRpYVRpbWUgbV9lbmRUaW1lOwotICAgIFN0cmluZyBtX2lkOwotICAgIFN0cmluZyBt
X2NvbnRlbnQ7Ci0gICAgZG91YmxlIG1fbGluZSB7IC0xIH07Ci0gICAgZG91YmxlIG1fcG9zaXRp
b24geyAtMSB9OwotICAgIGRvdWJsZSBtX3NpemUgeyAtMSB9OwotICAgIEFsaWdubWVudCBtX2Fs
aWduIHsgTm9uZSB9OwotICAgIFN0cmluZyBtX2ZvbnROYW1lOwotICAgIGRvdWJsZSBtX2Jhc2VG
b250U2l6ZSB7IDAgfTsKLSAgICBkb3VibGUgbV9yZWxhdGl2ZUZvbnRTaXplIHsgMCB9OwotICAg
IENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOwotICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwot
ICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7Ci0gICAgU3RhdHVzIG1fc3RhdHVzIHsgVW5pbml0
aWFsaXplZCB9OwotfTsKLQotaW5saW5lIFN0cmluZyBHZW5lcmljQ3VlRGF0YTo6dG9KU09OU3Ry
aW5nKCkgY29uc3QKLXsKLSAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgb2JqZWN0LT5zZXRTdHJpbmcoInRleHQiX3MsIG1f
Y29udGVudCk7Ci0jZW5kaWYKLSAgICBvYmplY3QtPnNldERvdWJsZSgic3RhcnQiX3MsIG1fc3Rh
cnRUaW1lLnRvRG91YmxlKCkpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fZW5k
VGltZS50b0RvdWJsZSgpKTsKLQotICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKLSAgICBzd2l0Y2gg
KG1fc3RhdHVzKSB7Ci0gICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6VW5pbml0aWFsaXplZDoKLSAg
ICAgICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEdlbmVyaWNDdWVEYXRhOjpQYXJ0aWFsOgotICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlOgotICAgICAg
ICBzdGF0dXMgPSAiQ29tcGxldGUiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgb2JqZWN0
LT5zZXRTdHJpbmcoInN0YXR1cyIsIHN0YXR1cyk7Ci0KLSAgICBpZiAoIW1faWQuaXNFbXB0eSgp
KQotICAgICAgICBvYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2lkKTsKLQotICAgIGlmIChtX2xp
bmUgPiAwKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgibGluZSJfcywgbV9saW5lKTsKLQot
ICAgIGlmIChtX3NpemUgPiAwKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgic2l6ZSJfcywg
bV9zaXplKTsKLQotICAgIGlmIChtX3Bvc2l0aW9uID4gMCkKLSAgICAgICAgb2JqZWN0LT5zZXRE
b3VibGUoInBvc2l0aW9uIl9zLCBtX3Bvc2l0aW9uKTsKLQotICAgIGlmIChtX2FsaWduICE9IE5v
bmUpIHsKLSAgICAgICAgY29uc3QgY2hhciogYWxpZ247Ci0gICAgICAgIHN3aXRjaCAobV9hbGln
bikgewotICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGFydDoKLSAgICAgICAgICAgIGFs
aWduID0gIlN0YXJ0IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdlbmVyaWND
dWVEYXRhOjpNaWRkbGU6Ci0gICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkVuZDoKLSAgICAgICAgICAg
IGFsaWduID0gIkVuZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHZW5lcmlj
Q3VlRGF0YTo6Tm9uZToKLSAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImFsaWduIl9zLCBh
bGlnbik7Ci0gICAgfQotCi0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAg
ICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImZvcmVncm91bmRDb2xvciJfcywgbV9mb3JlZ3JvdW5k
Q29sb3Iuc2VyaWFsaXplZCgpKTsKLQotICAgIGlmIChtX2JhY2tncm91bmRDb2xvci5pc1ZhbGlk
KCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJiYWNrZ3JvdW5kQ29sb3IiX3MsIG1fYmFj
a2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0KLSAgICBpZiAobV9oaWdobGlnaHRDb2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJoaWdobGlnaHRDb2xvciJfcywg
bV9oaWdobGlnaHRDb2xvci5zZXJpYWxpemVkKCkpOwotCi0gICAgaWYgKG1fYmFzZUZvbnRTaXpl
KQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgiYmFzZUZvbnRTaXplIl9zLCBtX2Jhc2VGb250
U2l6ZSk7Ci0KLSAgICBpZiAobV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICBvYmplY3QtPnNl
dERvdWJsZSgicmVsYXRpdmVGb250U2l6ZSJfcywgbV9yZWxhdGl2ZUZvbnRTaXplKTsKLQotICAg
IGlmICghbV9mb250TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJm
b250Il9zLCBtX2ZvbnROYW1lKTsKLQotICAgIHJldHVybiBvYmplY3QtPnRvSlNPTlN0cmluZygp
OwotfQotCi1pbmxpbmUgYm9vbCBHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEoY29u
c3QgR2VuZXJpY0N1ZURhdGEmIG90aGVyKSBjb25zdAotewotICAgIGlmIChtX3JlbGF0aXZlRm9u
dFNpemUgIT0gb3RoZXIubV9yZWxhdGl2ZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKG1fYmFzZUZvbnRTaXplICE9IG90aGVyLm1fYmFzZUZvbnRTaXplKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2xpbmUgIT0gb3RoZXIubV9saW5lKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fc2l6ZSAhPSBvdGhlci5tX3NpemUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9hbGlnbiAhPSBvdGhlci5tX2FsaWduKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fZm9yZWdyb3VuZENvbG9yICE9IG90aGVy
Lm1fZm9yZWdyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fYmFj
a2dyb3VuZENvbG9yICE9IG90aGVyLm1fYmFja2dyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKG1faGlnaGxpZ2h0Q29sb3IgIT0gb3RoZXIubV9oaWdobGlnaHRDb2xv
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2ZvbnROYW1lICE9IG90aGVyLm1f
Zm9udE5hbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9pZCAhPSBvdGhlci5t
X2lkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fY29udGVudCAhPSBvdGhlci5t
X2NvbnRlbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLSAgICAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgOiBwdWJsaWMgVHJh
Y2tQcml2YXRlQmFzZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTIzNCw5ICs1NCw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpID0gMDsKICNl
bmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYm
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRU
Q3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKQEAgLTI0NSwx
OSArNjUsNCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNl
IFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ7Ci0K
LXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+
IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVE
YXRhJiBjdWUpCi0gICAgewotICAgICAgICByZXR1cm4gY3VlLnRvSlNPTlN0cmluZygpOwotICAg
IH0KLX07Ci0KLX0KLQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDli
NTI4YjRjY2JlZmNhNWEwZDJmODA0NThkNDI2YjQ0YTRjNGE1MDYuLjJjZDQyYTk5YWY0Yzg5NWFl
MTFmYzE4MDg2ZDdmZDgzYTQ2NzU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGJvb2wgbWFr
ZVJHQkEzMkZyb21BUkdCQ0ZBcnJheShDRkFycmF5UmVmIGNvbG9yQXJyYXksIFJHQkEzMiYgY29s
b3IpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRT
dHJpbmcsIEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmli
dXRlZFN0cmluZywgSW5iYW5kR2VuZXJpY0N1ZSYgY3VlRGF0YSkKIHsKICAgICB1c2luZyBuYW1l
c3BhY2UgUEFMOwogICAgIC8vIFNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMgd2UgdHJhbnNsYXRlIGlu
dG8gcGVyLWN1ZSBXZWJWVFQgc2V0dGluZ3MgYXJlIHJlcGVhdGVkIG9uIGVhY2ggcGFydCBvZiBh
biBhdHRyaWJ1dGVkIHN0cmluZyBzbyBvbmx5CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2b2lkIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRl
ZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBBbGlnbjsKIAog
ICAgICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRN
YXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAg
ICAgICAgICAgICAgICAgY3VlRGF0YS5zZXRBbGlnbihHZW5lcmljQ3VlRGF0YTo6U3RhcnQpOwor
ICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLnNldEFsaWduKEdlbmVyaWNDdWVEYXRhOjpBbGln
bm1lbnQ6OlN0YXJ0KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBhcmUo
dmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgMCkgPT0ga0NG
Q29tcGFyZUVxdWFsVG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2Vu
ZXJpY0N1ZURhdGE6Ok1pZGRsZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxp
Z24oR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlKTsKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcsIGtDTVRleHRNYXJrdXBBbGlnbm1l
bnRUeXBlX0VuZCwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgICAgICAgICAgICAg
IGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkVuZCk7CisgICAgICAgICAgICAgICAg
ICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6RW5kKTsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
Ojpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICBp
ZiAoY291bnQpCiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRlZCAiLCBjb3Vu
dCwgY291bnQgPiAxID8gIiBjdWVzIiA6ICIgY3VlIiwgIiBhdCB0aW1lICIsIHRpbWUpOwogCi0g
ICAgVmVjdG9yPFJlZjxHZW5lcmljQ3VlRGF0YT4+IGFycml2aW5nQ3VlczsKKyAgICBWZWN0b3I8
UmVmPEluYmFuZEdlbmVyaWNDdWU+PiBhcnJpdmluZ0N1ZXM7CiAgICAgaWYgKGNvdW50KSB7CiAg
ICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAg
IENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nID0gc3RhdGljX2Nhc3Q8Q0ZB
dHRyaWJ1dGVkU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dHJpYnV0ZWRTdHJp
bmdzLCBpKSk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAg
ICAgICAgICAgIGlmICghYXR0cmlidXRlZFN0cmluZyB8fCAhQ0ZBdHRyaWJ1dGVkU3RyaW5nR2V0
TGVuZ3RoKGF0dHJpYnV0ZWRTdHJpbmcpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgICAgICBhdXRvIGN1ZURhdGEgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBhdXRvIGN1ZURhdGEgPSBJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoKTsKICAgICAg
ICAgICAgIHByb2Nlc3NDdWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZWRTdHJpbmcsIGN1ZURhdGEuZ2V0
KCkpOwogICAgICAgICAgICAgaWYgKCFjdWVEYXRhLT5jb250ZW50KCkubGVuZ3RoKCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRy
aWJ1dGVkU3QKICAgICAgICAgICAgIGlmIChjdWVEYXRhLT5wb3NpdGlvbigpID49IDAgJiYgY3Vl
RGF0YS0+c2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRQb3NpdGlvbihj
dWVEYXRhLT5wb3NpdGlvbigpIC0gY3VlRGF0YS0+c2l6ZSgpIC8gMik7CiAKLSAgICAgICAgICAg
IGN1ZURhdGEtPnNldFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6UGFydGlhbCk7CisgICAgICAgICAg
ICBjdWVEYXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbCk7CiAK
ICAgICAgICAgICAgIGFycml2aW5nQ3Vlcy5hcHBlbmQoV1RGTW92ZShjdWVEYXRhKSk7CiAgICAg
ICAgIH0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NBdHRyaWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogICAgICAg
ICBpZiAobV9jdXJyZW50Q3VlRW5kVGltZSA+PSBtX2N1cnJlbnRDdWVTdGFydFRpbWUpIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgY3VlRGF0YSA6IG1fY3VlcykgewogICAgICAgICAgICAgICAg
IC8vIFNlZSBpZiBvbmUgb2YgdGhlIG5ld2x5LWFycml2ZWQgY3VlcyBpcyBhbiBleHRlbnNpb24g
b2YgdGhpcyBjdWUuCi0gICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxHZW5lcmljQ3VlRGF0YT4+
IG5vbkV4dGVuc2lvbkN1ZXM7CisgICAgICAgICAgICAgICAgVmVjdG9yPFJlZjxJbmJhbmRHZW5l
cmljQ3VlPj4gbm9uRXh0ZW5zaW9uQ3VlczsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGFy
cml2aW5nQ3VlIDogYXJyaXZpbmdDdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJy
aXZpbmdDdWUtPmRvZXNFeHRlbmRDdWVEYXRhKCpjdWVEYXRhKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vbkV4dGVuc2lvbkN1ZXMuYXBwZW5kKFdURk1vdmUoYXJyaXZpbmdDdWUpKTsKQEAg
LTM3NCw3ICszNzQsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NB
dHRyaWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogCiAgICAgICAgICAgICAg
ICAgaWYgKG1fcGVuZGluZ0N1ZVN0YXR1cyA9PSBWYWxpZCkgewogICAgICAgICAgICAgICAgICAg
ICBjdWVEYXRhLT5zZXRFbmRUaW1lKG1fY3VycmVudEN1ZUVuZFRpbWUpOwotICAgICAgICAgICAg
ICAgICAgICBjdWVEYXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpTdGF0
dXM6OkNvbXBsZXRlKTsKIAogICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAidXBkYXRpbmcgY3VlICIsICpjdWVEYXRhKTsKIApAQCAtNDI2LDcgKzQyNiw3IEBAIHZv
aWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3ZlQ29tcGxldGVkQ3VlcygpCiAgICAg
ICAgIGxvbmcgY3VycmVudEN1ZSA9IG1fY3Vlcy5zaXplKCkgLSAxOwogICAgICAgICBmb3IgKDsg
Y3VycmVudEN1ZSA+PSAwOyAtLWN1cnJlbnRDdWUpIHsKICAgICAgICAgICAgIGF1dG8mIGN1ZSA9
IG1fY3Vlc1tjdXJyZW50Q3VlXTsKLSAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9IEdl
bmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKKyAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9
IEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRlKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3ZpbmcgY3Vl
ICIsICpjdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgKaW5kZXggNWQ4NzEwNzM3YTM0ZjdhNTNiODhmNWIzY2ViMzBiNGRhZmM5M2ViOC4uNjM0M2U0
NTczN2VjZTg1MmIwMThjOWFiYmMwMDJmYzYxMTlmOGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRyYWNr
UGFyZW50KiwgQ3VlRm9ybWF0KTsKIAotICAgIHZvaWQgcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZB
dHRyaWJ1dGVkU3RyaW5nUmVmLCBHZW5lcmljQ3VlRGF0YSYpOworICAgIHZvaWQgcHJvY2Vzc0N1
ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmLCBJbmJhbmRHZW5lcmljQ3VlJik7CiAg
ICAgdm9pZCBwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiwgY29uc3QgTWVkaWFU
aW1lJik7CiAgICAgdm9pZCBwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmLCBjb25zdCBN
ZWRpYVRpbWUmKTsKICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZEN1ZXMoKTsKQEAgLTk2LDcgKzk2
LDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgbV9jdXJyZW50Q3VlU3RhcnRUaW1lOwogICAg
IE1lZGlhVGltZSBtX2N1cnJlbnRDdWVFbmRUaW1lOwogCi0gICAgVmVjdG9yPFJlZlB0cjxHZW5l
cmljQ3VlRGF0YT4+IG1fY3VlczsKKyAgICBWZWN0b3I8UmVmUHRyPEluYmFuZEdlbmVyaWNDdWU+
PiBtX2N1ZXM7CiAgICAgQVZGSW5iYW5kVHJhY2tQYXJlbnQqIG1fb3duZXI7CiAKICAgICBlbnVt
IFBlbmRpbmdDdWVTdGF0dXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDQzZTY5YjA2N2E3MGUxNjdl
ODNlODRmZDdhNjZhMjk0YWZhYTAzNzguLmY1YTU0YWZiZmE2Njg4NDg0MjI2MzdlN2JjNGRiYjA0
ZTA1YjkwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
ICAgICBjbGllbnQoKS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBkYXRhLCBsZW5ndGgpOwogICAg
IH0KIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYgZGF0YSkKKyAgICB2
b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgZGF0YSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjdWVGb3JtYXQoKSA9PSBDdWVGb3JtYXQ6OkdlbmVyaWMpOwogICAgICAgICBjbGll
bnQoKS0+YWRkR2VuZXJpY0N1ZShkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggODc0ZWQ1ZjE4YTIyOWFkNzczYmUxYzJlYTRhMmUw
YmE2NDlhM2Q5Mi4uNjYyYzk5MDk2MjdkZjJiYTlmMzNlMGJkNTI2ZjIxYTgxYmM4MWQ0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI0
MzUsNyArMjQzNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNz
VGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiB7CiAgICAgQVNTRVJUKGVu
dHJ5KTsKIAotICAgIGF1dG8gY3VlID0gR2VuZXJpY0N1ZURhdGE6OmNyZWF0ZSgpOworICAgIGF1
dG8gY3VlID0gSW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRlKCk7CiAKICAgICBnaW50NjQgc3RhcnQg
PSAtMSwgc3RvcCA9IC0xOwogICAgIGdzdF90b2NfZW50cnlfZ2V0X3N0YXJ0X3N0b3BfdGltZXMo
ZW50cnksICZzdGFydCwgJnN0b3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggMzJjOWI3ZTEyZTVhNzJj
YjBiYmJkMGE5NWUwMzExOGUwNzI0MGJjMS4uYWY2NGM4MmI5MDIzYWQyMzQxNDIzY2Y4NWRiNDk1
YTc2YzRjNmI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCkBAIC0xMTgsMTkgKzExOCwxOSBAQCB2b2lkIFJl
bW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZQogfQogI2VuZGlmCiAKLXZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6
OmFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94
eTo6YWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiBjdWUpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OkFkZEdlbmVyaWNDdWUobV9pZGVudGlmaWVyLCBjdWUuY3Vl
RGF0YSgpKSwgbV9wbGF5ZXIuaWRlbmRpZmllcigpKTsKIH0KIAotdm9pZCBSZW1vdGVUZXh0VHJh
Y2tQcm94eTo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpCit2b2lkIFJlbW90ZVRl
eHRUcmFja1Byb3h5Ojp1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGN1ZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6VXBkYXRlR2VuZXJpY0N1ZShtX2lk
ZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkpLCBtX3BsYXllci5pZGVuZGlmaWVyKCkpOwogfQogCi12
b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRh
JikKK3ZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2Vu
ZXJpY0N1ZSYgY3VlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpSZW1v
dmVHZW5lcmljQ3VlKG1faWRlbnRpZmllciwgY3VlLmN1ZURhdGEoKSksIG1fcGxheWVyLmlkZW5k
aWZpZXIoKSk7CiB9CiAKIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRURmls
ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCmluZGV4IGUyODZlYzQ4OTQ2NzNhNGYy
YjU2MWQyMzhiMDZmNjI3NTM2Y2ZlNDUuLjBiZTE1NDUxZDlhYjg0OWI5YWE0OWI1NGMzMTU5NDRj
ZDZmOGY3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVUZXh0VHJhY2tQcm94eS5oCkBAIC02MSw5ICs2MSw5IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKICNlbmRpZgogCi0gICAg
dmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJik7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
ZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlR2Vu
ZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJW
VFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAyNjA0OTBmYjdiNTZhODhjZmYwZDliODljMWE3
MTY4YWVkMGQxODVjLi4zNzJiNWQyZDdlOWY3NzE3MzlmN2RmYjViNzBhMmY1MjA3MzExNWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTU2Myw2ICs1NjMs
NyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwnOiBbJzxXZWJDb3JlL1NoYXJlRGF0YS5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6Rm9udENoYW5nZXMnOiBbJzxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUxvYWRUeXBlJzogWyc8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSc6IFsnPFdl
YkNvcmUvSW5iYW5kR2VuZXJpY0N1ZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6R3JhbW1hckRl
dGFpbCc6IFsnPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudCc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6SGlnaGxpZ2h0JzogWyc8V2ViQ29yZS9JbnNwZWN0b3JPdmVy
bGF5Lmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNmY2M2IyMzBmNjI3
ZDEyY2M2ZWMzZWY3ZGQ2Y2U2YWQxMjk3YWE2YS4uODRhOTZlNjU0YTMyYjM1OGQ4OTliN2FjMjE5
NDk2YTc3YjgwYWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTE2LDE4
ICsxMTYsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KICAgICBpZiAodXJsLmlzTG9jYWxG
aWxlKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICAgICAg
ICAgYXV0byBmaWxlU3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVtUGF0aCgpOwotICAgICAgICBi
b29sIGNyZWF0ZWRFeHRlbnNpb24gPSBmYWxzZTsKIAorICAgICAgICBhdXRvIGNyZWF0ZUV4dGVu
c2lvbiA9IFsmXSB7CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BS
T0NFU1NfQllfQVVESVRfVE9LRU4pCi0gICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdl
ci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKTsKLSAgICAgICAgQVNTRVJUKGF1
ZGl0VG9rZW4pOwotICAgICAgICBpZiAoYXVkaXRUb2tlbikKLSAgICAgICAgICAgIGNyZWF0ZWRF
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRv
a2VuKGZpbGVTeXN0ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRsZSk7Ci0gICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGlmIChhdXRvIGF1ZGl0VG9rZW4gPSBtX21hbmFnZXIuZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oZmlsZVN5c3Rl
bVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKICNlbmRpZgotICAgICAgICBjcmVh
dGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1Q
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKIAotICAgICAg
ICBpZiAoIWNyZWF0ZWRFeHRlbnNpb24pIHsKKyAgICAgICAgICAgIHJldHVybiBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRPbmx5LCBoYW5kbGUpOworICAgICAgICB9OworCisgICAgICAgIGlmICghY3JlYXRl
RXh0ZW5zaW9uKCkpIHsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVW5hYmxlIHRvIGNyZWF0
ZSBzYW5kYm94IGV4dGVuc2lvbiBoYW5kbGUgZm9yIEdQVVByb2Nlc3MgdXJsLlxuIik7CiAgICAg
ICAgICAgICBtX2NhY2hlZFN0YXRlLm5ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGU6OkZvcm1hdEVycm9yOwogICAgICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNo
YW5nZWQoKTsKQEAgLTUyNSw2ICs1MjQsMzAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnJlbW92ZURhdGFDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGkKIH0K
ICNlbmRpZgogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZShU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdlbmVyaWNDdWVEYXRhJiYg
Y3VlRGF0YSkKK3sKKyAgICBBU1NFUlQobV90ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKKworICAgIGlmIChjb25zdCBhdXRvJiB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRp
ZmllcikpCisgICAgICAgIHRyYWNrLT5hZGRHZW5lcmljQ3VlKFdURk1vdmUoSW5iYW5kR2VuZXJp
Y0N1ZTo6Y3JlYXRlKFdURk1vdmUoY3VlRGF0YSkpLmdldCgpKSk7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVHZW5lcmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgR2VuZXJpY0N1ZURhdGEmJiBjdWVEYXRhKQoreworICAgIEFT
U0VSVChtX3RleHRUcmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgaWYgKGNvbnN0
IGF1dG8mIHRyYWNrID0gbV90ZXh0VHJhY2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdHJh
Y2stPnVwZGF0ZUdlbmVyaWNDdWUoV1RGTW92ZShJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoV1RG
TW92ZShjdWVEYXRhKSkuZ2V0KCkpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnJlbW92ZUdlbmVyaWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBHZW5lcmljQ3VlRGF0YSYmIGN1ZURhdGEpCit7CisgICAgQVNTRVJUKG1fdGV4dFRyYWNr
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBpZiAoY29uc3QgYXV0byYgdHJhY2sgPSBt
X3RleHRUcmFja3MuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB0cmFjay0+cmVtb3ZlR2VuZXJp
Y0N1ZShXVEZNb3ZlKEluYmFuZEdlbmVyaWNDdWU6OmNyZWF0ZShXVEZNb3ZlKGN1ZURhdGEpKS5n
ZXQoKSkpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkUmVtb3RlVmlk
ZW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV92aWRlb1RyYWNrcy5lbnN1cmUoaWRlbnRpZmllciwgWyZdIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCmluZGV4IDEzMmYzMGFiMjliNmU1MDlmMTEzOTQ5MjU4MGE2ZTM2NzFj
Yzc5MDkuLjU2OGMxNjhmNTBiNGU4ZGM1NzcxNTFkYWNhNjc0ODJhNzc0MDg1MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgR2VuZXJpY0N1ZURhdGE7CiBjbGFz
cyBJU09XZWJWVFRDdWU7CiBjbGFzcyBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU7CiB9
CkBAIC0xMjIsNiArMTIzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGFDdWUoVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYm
IGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYpOwogI2VuZGlm
CiAKKyAgICB2b2lkIGFkZEdlbmVyaWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEmJik7CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKFRy
YWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiYpOwor
ICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSYmKTsKKwogICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKFJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlc291cmNlTm90U3VwcG9ydGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IGU4ODk3
YjZhMTBhMTBkNGI3MDA5Mjk4YzdhYTI3MjhiZmUxMTI5N2EuLjNmZmNmMzZlZmUyNGIzZDA4NTBl
ZWEyODZlMmNlNzI4ZTRhMmZjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Lm1lc3NhZ2VzLmluCkBAIC01Nyw5ICs1Nyw5IEBAIG1lc3NhZ2VzIC0+IE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKICAgICBSZW1vdmVEYXRhQ3VlKFdlYktpdDo6VHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBNZWRpYVRpbWUgc3RhcnQsIE1lZGlh
VGltZSBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZSBjdWVEYXRh
KQogI2VuZGlmCiAKLSAgICAjIyBBZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
IGN1ZSkKLSAgICAjIyBVcGRhdGVHZW5lcmljQ3VlKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhIGN1
ZSkKLSAgICAjIyBSZW1vdmVHZW5lcmljQ3VlKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhIGN1ZSkK
KyAgICBBZGRHZW5lcmljQ3VlKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0
cmFja0lELCBzdHJ1Y3QgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQorICAgIFVwZGF0ZUdl
bmVyaWNDdWUoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIHN0
cnVjdCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCisgICAgUmVtb3ZlR2VuZXJpY0N1ZShX
ZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgc3RydWN0IFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhIGN1ZSkKIAogICAgIEFkZFJlbW90ZVZpZGVvVHJhY2soV2ViS2l0
OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OlRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAgICBSZW1vdmVS
ZW1vdGVWaWRlb1RyYWNrKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFj
a0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNmE2NjIyYTM5NTQ5OTAwNzEwNmJk
NDkwOTcxMTA1ZDU4YjgzYTk2ZS4uNzI1MjE3ZDcyNGJkZWI5OGUzYmMwZGI2NWM1NjFlZDdlZTYw
NTMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC04OCwyMiArODgsMjcgQEAgdm9p
ZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRleHRUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmEKICAgICBtX2lzRGVmYXVsdCA9IGNvbmZpZ3VyYXRpb24uaXNE
ZWZhdWx0OwogfQogCi12b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OmFkZEdlbmVyaWNDdWUo
R2VuZXJpY0N1ZURhdGEmKQordm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGRHZW5lcmlj
Q3VlKEluYmFuZEdlbmVyaWNDdWUmJiBjdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBBU1NFUlQoY2xpZW50KCkpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQo
KSkKKyAgICAgICAgY2xpZW50LT5hZGRHZW5lcmljQ3VlKGN1ZSk7CiB9CiAKLXZvaWQgVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpCit2b2lk
IFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1
ZSYmIGN1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChjbGllbnQoKSk7
CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQt
PnVwZGF0ZUdlbmVyaWNDdWUoY3VlKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3Rl
OjpyZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiYgY3VlKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKGNsaWVudCgpKTsKKyAgICBpZiAoYXV0byog
Y2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVtb3ZlR2VuZXJpY0N1
ZShjdWUpOwogfQogCi0KIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRG
aWxlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIHsKICAgICBBU1NFUlQoY2xpZW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2
YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuaAppbmRleCA3YjdmNzAzY2I0OTdkZWRlYTM5MWRiNTljYzkyYmVjZTE1
YTU5MmUzLi4xZjY4OTg2Y2Q4ZTRhNjc4NDNiNWIyYWVlMTlmYTFiODQ2YmQwN2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHZW5l
cmljQ3VlRGF0YTsKK2NsYXNzIEluYmFuZEdlbmVyaWNDdWU7CiBjbGFzcyBJU09XZWJWVFRDdWU7
CiB9CiAKQEAgLTU3LDkgKzU3LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0YUN1ZShN
ZWRpYVRpbWUmJiBzdGFydCwgTWVkaWFUaW1lJiYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWUmJik7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YSYpOwotICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YSYpOwotICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmlj
Q3VlRGF0YSYpOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlJiYpOworICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlJiYpOworICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
Q3VlJiYpOwogCiAgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpOwogICAg
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGUwYTc2Mzc4YWZiNDdlZGY1ZmFjY2ZmYjhiMzcwN2NlYzc4MmZjOGYuLjJkMDZmNTg3Yjlm
ZmViMmFlYjg1N2JkNTcwYjIxYjNkZDdhZmMwZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wMi0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IGluLWJhbmQgZ2VuZXJpYyBjdWVzIHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUg
R1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODA4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIwLTAyLTI2ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpA
YXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBSZWxlYXNlIF0gZmFzdC90ZXh0LWF1dG9z
aXppbmcvaW9zL2lkZW1wb3RlbnRtb2RlL3ZpZXdwb3J0LWNoYW5nZS1yZWxheW91dC5odG1sIGlz
IGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA5MTNhNWQ0NDg0MmZhYjljZTQ3MzRiZGRmMzdjNGVhZTVkMjA3NWU4Li42NDg0ODEzNmM3
NDYzMDhlZWNmZmUzZjVlNjVjODcxMDkwYTk5YWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIzMiw2ICsyMzIsMTMgQEAgaHR0cC90ZXN0cy9tZWRpYS9o
bHMvaGxzLXdlYnZ0dC10cmFja3MuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9tZWRpYS90cmFj
ay1pbi1iYW5kLWhscy1tZXRhZGF0YS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL21lZGlhL3Ry
YWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLWNyYXNoLmh0bWwgWyBQYXNzIF0KIAorbWVkaWEvdHJh
Y2svdHJhY2staW4tYmFuZC1jdWVzLWFkZGVkLW9uY2UuaHRtbCBbIFBhc3MgXQorbWVkaWEvdHJh
Y2svdHJhY2staW4tYmFuZC1zdHlsZS5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1p
bi1iYW5kLWR1cGxpY2F0ZS10cmFja3Mtd2hlbi1zb3VyY2UtY2hhbmdlcy5odG1sIFsgUGFzcyBd
CittZWRpYS90cmFjay90cmFjay1pbi1iYW5kLWxlZ2FjeS1hcGkuaHRtbCBbIFBhc3MgXQorbWVk
aWEvdHJhY2svdHJhY2staW4tYmFuZC5odG1sIFsgUGFzcyBdCittZWRpYS90cmFjay90cmFjay1p
bi1iYW5kLW1ldGFkYXRhLWRpc3BsYXktb3JkZXIuaHRtbCBbIFBhc3MgXQorCiBhY2Nlc3NpYmls
aXR5L21lZGlhLWVsZW1lbnQuaHRtbCBbIFNraXAgXQogZmFzdC9ibG9jay9mbG9hdC9saXN0LW1h
cmtlci1pcy1mbG9hdC1jcmFzaC5odG1sIFsgU2tpcCBdCiBmYXN0L2Nzcy9yZWxhdGl2ZS1wb3Np
dGlvbi1yZXBsYWNlZC1pbi10YWJsZS1kaXNwbGF5LWNyYXNoLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391946</attachid>
            <date>2020-02-27 17:40:26 -0800</date>
            <delta_ts>2020-02-27 19:06:05 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208080-20200227174026.patch</filename>
            <type>text/plain</type>
            <size>83137</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uZjY4NTA0NWQxODFjNTkyZTcwOTQxZmY2OTE0ZjQw
ZDhlYmExYjY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0wMi0yMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGlu
LWJhbmQgZ2VuZXJpYyBjdWVzIHdoZW4gbG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk2ODc5NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WW91ZW5uIEZhYmxldC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIHRlc3RzIGVu
YWJsZWQgZm9yIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC90
cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNUZXh0VHJhY2tDdWVNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljVGV4dFRy
YWNrQ3VlTWFwOjpmaW5kSW5kZXhPZlBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1Rl
eHRUcmFja0N1ZU1hcDo6ZmluZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljVGV4dFRyYWNr
Q3VlTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFj
azo6dXBkYXRlQ3VlRnJvbUN1ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJp
Y1RleHRUcmFjazo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5k
VGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJp
Y0N1ZTo6c3RhcnRUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OnNldFN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpl
bmRUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldEVu
ZFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6aWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0SWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6Y29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNDdWU6OmxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJp
Y0N1ZTo6c2V0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpwb3Np
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzZXRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6YWxpZ24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY0N1ZTo6c2V0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY0N1ZTo6Zm9udE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2Vu
ZXJpY0N1ZTo6c2V0Rm9udE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1
ZTo6YmFzZUZvbnRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWU6OnNldEJhc2VGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3Vl
OjpyZWxhdGl2ZUZvbnRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWU6OnNldFJlbGF0aXZlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2Vu
ZXJpY0N1ZTo6Zm9yZWdyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNDdWU6OnNldEZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRHZW5lcmljQ3VlOjpiYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kR2VuZXJpY0N1ZTo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNDdWU6OmhpZ2hsaWdodENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNDdWU6OnNldEhpZ2hsaWdodENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNDdWU6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRH
ZW5lcmljQ3VlOjpzZXRTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1
ZTo6Y3VlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpJ
bmJhbmRHZW5lcmljQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU6OnRv
SlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOjpk
b2VzRXh0ZW5kQ3VlRGF0YSBjb25zdCk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNDdWU+Ojp0b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0N1ZURhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5l
cmljQ3VlRGF0YTo6c3RhcnRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdlbmVyaWNDdWVEYXRhOjpzZXRTdGFydFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OmVuZFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEVuZFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRJZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YTo6Y29udGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6c2V0Q29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6bGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6c2V0TGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YTo6cG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6YWxpZ24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEFsaWduKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpmb250TmFtZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0Rm9udE5hbWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmJhc2VGb250U2l6ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0QmFz
ZUZvbnRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpy
ZWxhdGl2ZUZvbnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNDdWVEYXRhOjpzZXRSZWxhdGl2ZUZvbnRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpmb3JlZ3JvdW5kQ29sb3IgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEZvcmVncm91bmRDb2xvcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6YmFja2dyb3VuZENvbG9yIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRCYWNr
Z3JvdW5kQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6
OmhpZ2hsaWdodENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNDdWVEYXRhOjpzZXRIaWdobGlnaHRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YTo6c3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyaWNDdWVEYXRhOjpzZXRTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2Vu
ZXJpY0N1ZURhdGE6OnRvSlNPTlN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YT46OnRvU3Ry
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3ZlQ29t
cGxldGVkQ3Vlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg6CisKIDIwMjAtMDIt
MjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3JlYXRlIEF1
ZGlvRGVzdGluYXRpb24gaW4gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY5MjU5NzUxNWY2
ODU5MDRkZjE3YmFhNjhmZWE5Yzc3ODJlN2M4MTcuLjk2MDI1YWM4MTRlMDczY2FmOGEwMWFmMDFh
N2RjZmQyNmJkNGQ0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMDItMjEgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBp
bi1iYW5kIGdlbmVyaWMgY3VlcyB3aGVuIGxvYWRpbmcgbWVkaWEgaW4gdGhlIEdQVSBQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwODAK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5Njg3OTQzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OmFk
ZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6dXBk
YXRlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFja1Byb3h5Ojpy
ZW1vdmVHZW5lcmljQ3VlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUp
OgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpyZW1vdmVHZW5lcmlj
Q3VlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVt
b3RlLmg6CisKIDIwMjAtMDItMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFubm90YXRlIG1lZGlhVHlwZSB3aXRoIGFuIGF2YWlsYWJpbGl0eSBtYWNyby4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCmluZGV4IGRjMTNhOGMwM2Q4Y2Y0NWYyODIxZmNjNmFlMjI4N2NiZTBh
ZmIzNTYuLjc2ZWJhZWFkYzM4YzIwZDg5ZjQ4MWU4NTFlMWEzNTc5NzBlOGE0YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQpAQCAtMTEwNiw2ICsxMTA2LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25z
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VUeXBlcy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1
ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZjQ1YzUxOTcxNWI1
YmY4OGEzMTEzMjMxNzlmYzNhNGJlNmVhYjA2Li43MjZlOGM5MTMyYTQxMWRjNWM1MmEwMjQ2MTY2
ZmEwYjA2YWVlYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTg3NSw2ICsxODc1LDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VEZWNvZGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJp
Y0N1ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTdlMDBk
YjAzYWQwZDViNDdjZjJiNGFhODE0MjI2MmEyMDJkYTFjMi4uODc3OTU1YjdlMzkyNDg5M2IzMjE3
ZDYzZjAzMGMxZGE0YjQxMGIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODUsNiArODUsNyBAQAogCQkwNzA0QTQwODFENkRF
OUYxMDA4NkRDREIgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDRBNDA1MUQ2REU5RjEwMDg2RENEQiAvKiBP
dmVyY29uc3RyYWluZWRFcnJvci5oICovOyB9OwogCQkwNzA0QTQwQzFENkRGQzY5MDA4NkRDREIg
LyogSlNPdmVyY29uc3RyYWluZWRFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcwNEE0MEExRDZERkM2OTAwODZEQ0RCIC8qIEpTT3ZlcmNvbnN0
cmFpbmVkRXJyb3IuaCAqLzsgfTsKIAkJMDcwNEE0MTYxRDZGMzlGQjAwODZEQ0RCIC8qIEpTT3Zl
cmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwNEE0MTQxRDZGMzlGQjAwODZEQ0RCIC8qIEpTT3ZlcmNvbnN0cmFp
bmVkRXJyb3JFdmVudC5oICovOyB9OworCQkwNzA2QTBEOTI0MDgzMEE3MDBFOTM4MTggLyogSW5i
YW5kR2VuZXJpY0N1ZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDZBMEQ3MjQwODMwQTYwMEU5MzgxOCAvKiBJbmJhbmRHZW5lcmlj
Q3VlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA3MDc1NjhDMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTY4OTE0
MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5oICovOyB9OwogCQkwNzA3NTY5NTE0
MjI2NjhEMDA0MTQxNjEgLyogSlNUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NjhGMTQyMjY2OEMwMDQxNDE2MSAvKiBKU1RleHRU
cmFjay5oICovOyB9OwogCQkwNzA3NTZENDE0MjM5QTRGMDA0MTQxNjEgLyogSlNIVE1MVHJhY2tF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzA3NTZEMjE0MjM5QTRFMDA0MTQxNjEgLyogSlNIVE1MVHJhY2tFbGVtZW50LmggKi87IH07CkBA
IC0xNDUsNiArMTQ2LDcgQEAKIAkJMDc4MzIyODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmggKi87IH07CiAJCTA3ODQ2MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1
QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4
RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3Vz
dG9tLmggKi87IH07CisJCTA3ODYzM0U5MjNGRjM0N0IwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmlj
Q3VlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg2
MzNERTIzRkVERjIyMDA4N0FFMjEgLyogSW5iYW5kR2VuZXJpY0N1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3ODdDNDZBMUJGQkRGNkYwMDZE
Q0Q3RiAvKiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4N0M0NjgxQkZCREY2RjAwNkRDRDdG
IC8qIEpTTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CiAJCTA3OEUwOTE1
MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlh
U3RyZWFtLmggKi87IH07CiAJCTA3OEUwOTE4MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVh
bVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzIyMUI1NTE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1UcmFjay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MzM2LDYgKzUzMzgsNyBA
QAogCQkwNzA0QTQwQTFENkRGQzY5MDA4NkRDREIgLyogSlNPdmVyY29uc3RyYWluZWRFcnJvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU092ZXJjb25zdHJhaW5lZEVycm9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDRBNDEzMUQ2RjM5RkIwMDg2RENE
QiAvKiBKU092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNEE0MTQxRDZGMzlGQjAwODZEQ0RCIC8qIEpTT3Zl
cmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcwNkEwRDcyNDA4MzBBNjAwRTkzODE4IC8qIEluYmFuZEdlbmVyaWNDdWVJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZEdlbmVyaWNDdWVJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDc1Njg4MTQyMjYy
RDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhUTUxUcmFja0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzA3NTY4OTE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVHJhY2tFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDc1NjhBMTQyMjYyRDYwMDQxNDE2MSAvKiBI
VE1MVHJhY2tFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MVHJhY2tFbGVt
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0OTQsNiArNTQ5Nyw4IEBA
CiAJCTA3ODQ2MzQxMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUcmFja0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHJhY2tDdXN0b20uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NjMzRDcyM0ZFMDk2NDAwODdBRTIxIC8qIFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3ODYzM0RF
MjNGRURGMjIwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmljQ3VlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
YmFuZEdlbmVyaWNDdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc4NjMzRjgy
NDA3MTVEMjAwODdBRTIxIC8qIEluYmFuZEdlbmVyaWNDdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5iYW5kR2VuZXJpY0N1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
ODdDNDY3MUJGQkRGNkYwMDZEQ0Q3RiAvKiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
ODdDNDY4MUJGQkRGNkYwMDZEQ0Q3RiAvKiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhVHJhY2tTdXBwb3J0
ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0ODE3
RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDc3LDYgKzI1
MDgyLDkgQEAKIAkJCQk1NTQ2NzU3NzFGRDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuY3Bw
ICovLAogCQkJCTU1NDY3NTc4MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oICovLAog
CQkJCTU1NTBDQjQxMUU5NTVFM0MwMDExMUFBMCAvKiBJbWFnZVR5cGVzLmggKi8sCisJCQkJMDc4
NjMzRjgyNDA3MTVEMjAwODdBRTIxIC8qIEluYmFuZEdlbmVyaWNDdWUuY3BwICovLAorCQkJCTA3
ODYzM0RFMjNGRURGMjIwMDg3QUUyMSAvKiBJbmJhbmRHZW5lcmljQ3VlLmggKi8sCisJCQkJMDcw
NkEwRDcyNDA4MzBBNjAwRTkzODE4IC8qIEluYmFuZEdlbmVyaWNDdWVJZGVudGlmaWVyLmggKi8s
CiAJCQkJMDc5NDE3OTMxNjZFQTA0RTAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGUu
aCAqLywKIAkJCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudC5oICovLAogCQkJCTJENDZGMDREMTdCOTZGQkQwMDU2NDdGMCAvKiBJbnRQb2lu
dC5jcHAgKi8sCkBAIC0zMDMxOCw2ICszMDMyNiw4IEBACiAJCQkJMjZGNzU2QjUxQjNCNjhGMjAw
MDVERDc5IC8qIEltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTZGRTExODBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJFOTYxQzU1MThBRDMzOEMwMEQwN0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzg2MzNFOTIzRkYzNDdCMDA4N0FFMjEgLyogSW5iYW5k
R2VuZXJpY0N1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNkEwRDkyNDA4MzBBNzAwRTkzODE4
IC8qIEluYmFuZEdlbmVyaWNDdWVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTE2
QzU5MzE3Q0ZFMTcyMDA4NTJDMDQgLyogSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTIxNjZFODU1RjAw
OTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCA2
NTFiYmMxYjA3NGFjODNjYTI4ZjQ2MWJiMWY0ZTQ5N2I3YmU5NTcxLi5jOTU2OGFkZGM2ZjM1YTBi
MWZjNTY1ZGFmNzgzMWU0NmIxYzNkZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTQwLDMyICs0MCwyNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJhbmRH
ZW5lcmljVGV4dFRyYWNrKTsKIAotdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjphZGQoR2Vu
ZXJpY0N1ZURhdGEmIGN1ZURhdGEsIFRleHRUcmFja0N1ZUdlbmVyaWMmIGN1ZSkKK3ZvaWQgR2Vu
ZXJpY1RleHRUcmFja0N1ZU1hcDo6YWRkKEluYmFuZEdlbmVyaWNDdWVJZGVudGlmaWVyIGluYmFu
ZEN1ZUlkZW50aWZpZXIsIFRleHRUcmFja0N1ZUdlbmVyaWMmIHB1YmxpY0N1ZSkKIHsKLSAgICBt
X2RhdGFUb0N1ZU1hcC5hZGQoJmN1ZURhdGEsICZjdWUpOwotICAgIG1fY3VlVG9EYXRhTWFwLmFk
ZCgmY3VlLCAmY3VlRGF0YSk7CisgICAgbV9kYXRhVG9DdWVNYXAuYWRkKGluYmFuZEN1ZUlkZW50
aWZpZXIsICZwdWJsaWNDdWUpOworICAgIG1fY3VlVG9EYXRhTWFwLmFkZCgmcHVibGljQ3VlLCBp
bmJhbmRDdWVJZGVudGlmaWVyKTsKIH0KIAotVGV4dFRyYWNrQ3VlR2VuZXJpYyogR2VuZXJpY1Rl
eHRUcmFja0N1ZU1hcDo6ZmluZChHZW5lcmljQ3VlRGF0YSYgY3VlRGF0YSkKK1RleHRUcmFja0N1
ZUdlbmVyaWMqIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OmZpbmQoSW5iYW5kR2VuZXJpY0N1ZUlk
ZW50aWZpZXIgaW5iYW5kQ3VlSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gbV9kYXRhVG9DdWVN
YXAuZ2V0KCZjdWVEYXRhKTsKKyAgICByZXR1cm4gbV9kYXRhVG9DdWVNYXAuZ2V0KGluYmFuZEN1
ZUlkZW50aWZpZXIpOwogfQogCi1HZW5lcmljQ3VlRGF0YSogR2VuZXJpY1RleHRUcmFja0N1ZU1h
cDo6ZmluZChUZXh0VHJhY2tDdWUmIGN1ZSkKK3ZvaWQgR2VuZXJpY1RleHRUcmFja0N1ZU1hcDo6
cmVtb3ZlKEluYmFuZEdlbmVyaWNDdWVJZGVudGlmaWVyIGluYmFuZEN1ZUlkZW50aWZpZXIpCiB7
Ci0gICAgcmV0dXJuIG1fY3VlVG9EYXRhTWFwLmdldCgmY3VlKTsKKyAgICBpZiAoYXV0byBwdWJs
aWNDdWUgPSBtX2RhdGFUb0N1ZU1hcC50YWtlKGluYmFuZEN1ZUlkZW50aWZpZXIpKQorICAgICAg
ICBtX2N1ZVRvRGF0YU1hcC5yZW1vdmUocHVibGljQ3VlLmdldCgpKTsKIH0KIAotdm9pZCBHZW5l
cmljVGV4dFRyYWNrQ3VlTWFwOjpyZW1vdmUoR2VuZXJpY0N1ZURhdGEmIGN1ZURhdGEpCit2b2lk
IEdlbmVyaWNUZXh0VHJhY2tDdWVNYXA6OnJlbW92ZShUZXh0VHJhY2tDdWUmIHB1YmxpY0N1ZSkK
IHsKLSAgICBpZiAoYXV0byBjdWUgPSBtX2RhdGFUb0N1ZU1hcC50YWtlKCZjdWVEYXRhKSkKLSAg
ICAgICAgbV9jdWVUb0RhdGFNYXAucmVtb3ZlKGN1ZSk7Ci19Ci0KLXZvaWQgR2VuZXJpY1RleHRU
cmFja0N1ZU1hcDo6cmVtb3ZlKFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmIChhdXRvIGRh
dGEgPSBtX2N1ZVRvRGF0YU1hcC50YWtlKCZjdWUpKQotICAgICAgICBtX2RhdGFUb0N1ZU1hcC5y
ZW1vdmUoZGF0YSk7CisgICAgaWYgKGF1dG8gY3VlSWRlbnRpZmllciA9IG1fY3VlVG9EYXRhTWFw
LnRha2UoJnB1YmxpY0N1ZSkpCisgICAgICAgIG1fZGF0YVRvQ3VlTWFwLnJlbW92ZShjdWVJZGVu
dGlmaWVyKTsKIH0KIAogaW5saW5lIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OkluYmFuZEdlbmVy
aWNUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGV4dFRyYWNrQ2xp
ZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKQEAgLTgw
LDUyICs3NSw1MiBAQCBSZWY8SW5iYW5kR2VuZXJpY1RleHRUcmFjaz4gSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogCiBJbmJhbmRHZW5lcmljVGV4
dFRyYWNrOjp+SW5iYW5kR2VuZXJpY1RleHRUcmFjaygpID0gZGVmYXVsdDsKIAotdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJhY2tDdWVHZW5l
cmljJiBjdWUsIEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRhKQordm9pZCBJbmJhbmRHZW5lcmljVGV4
dFRyYWNrOjp1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJhY2tDdWVHZW5lcmljJiBjdWUsIElu
YmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIHsKICAgICBjdWUud2lsbENoYW5nZSgpOwogCi0g
ICAgY3VlLnNldFN0YXJ0VGltZShjdWVEYXRhLnN0YXJ0VGltZSgpKTsKLSAgICBNZWRpYVRpbWUg
ZW5kVGltZSA9IGN1ZURhdGEuZW5kVGltZSgpOworICAgIGN1ZS5zZXRTdGFydFRpbWUoaW5iYW5k
Q3VlLnN0YXJ0VGltZSgpKTsKKyAgICBNZWRpYVRpbWUgZW5kVGltZSA9IGluYmFuZEN1ZS5lbmRU
aW1lKCk7CiAgICAgaWYgKGVuZFRpbWUuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgbWVkaWFFbGVt
ZW50KCkpCiAgICAgICAgIGVuZFRpbWUgPSBtZWRpYUVsZW1lbnQoKS0+ZHVyYXRpb25NZWRpYVRp
bWUoKTsKICAgICBjdWUuc2V0RW5kVGltZShlbmRUaW1lKTsKLSAgICBjdWUuc2V0VGV4dChjdWVE
YXRhLmNvbnRlbnQoKSk7Ci0gICAgY3VlLnNldElkKGN1ZURhdGEuaWQoKSk7Ci0gICAgY3VlLnNl
dEJhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodChjdWVEYXRhLmJhc2VGb250U2l6ZSgp
KTsKLSAgICBjdWUuc2V0Rm9udFNpemVNdWx0aXBsaWVyKGN1ZURhdGEucmVsYXRpdmVGb250U2l6
ZSgpKTsKLSAgICBjdWUuc2V0Rm9udE5hbWUoY3VlRGF0YS5mb250TmFtZSgpKTsKLQotICAgIGlm
IChjdWVEYXRhLnBvc2l0aW9uKCkgPiAwKQotICAgICAgICBjdWUuc2V0UG9zaXRpb24oc3RkOjpy
b3VuZChjdWVEYXRhLnBvc2l0aW9uKCkpKTsKLSAgICBpZiAoY3VlRGF0YS5saW5lKCkgPiAwKQot
ICAgICAgICBjdWUuc2V0TGluZShzdGQ6OnJvdW5kKGN1ZURhdGEubGluZSgpKSk7Ci0gICAgaWYg
KGN1ZURhdGEuc2l6ZSgpID4gMCkKLSAgICAgICAgY3VlLnNldFNpemUoc3RkOjpyb3VuZChjdWVE
YXRhLnNpemUoKSkpOwotICAgIGlmIChjdWVEYXRhLmJhY2tncm91bmRDb2xvcigpLmlzVmFsaWQo
KSkKLSAgICAgICAgY3VlLnNldEJhY2tncm91bmRDb2xvcihjdWVEYXRhLmJhY2tncm91bmRDb2xv
cigpLnJnYigpKTsKLSAgICBpZiAoY3VlRGF0YS5mb3JlZ3JvdW5kQ29sb3IoKS5pc1ZhbGlkKCkp
Ci0gICAgICAgIGN1ZS5zZXRGb3JlZ3JvdW5kQ29sb3IoY3VlRGF0YS5mb3JlZ3JvdW5kQ29sb3Io
KS5yZ2IoKSk7Ci0gICAgaWYgKGN1ZURhdGEuaGlnaGxpZ2h0Q29sb3IoKS5pc1ZhbGlkKCkpCi0g
ICAgICAgIGN1ZS5zZXRIaWdobGlnaHRDb2xvcihjdWVEYXRhLmhpZ2hsaWdodENvbG9yKCkucmdi
KCkpOwotCi0gICAgaWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6U3RhcnQp
CisgICAgY3VlLnNldFRleHQoaW5iYW5kQ3VlLmNvbnRlbnQoKSk7CisgICAgY3VlLnNldElkKGlu
YmFuZEN1ZS5pZCgpKTsKKyAgICBjdWUuc2V0QmFzZUZvbnRTaXplUmVsYXRpdmVUb1ZpZGVvSGVp
Z2h0KGluYmFuZEN1ZS5iYXNlRm9udFNpemUoKSk7CisgICAgY3VlLnNldEZvbnRTaXplTXVsdGlw
bGllcihpbmJhbmRDdWUucmVsYXRpdmVGb250U2l6ZSgpKTsKKyAgICBjdWUuc2V0Rm9udE5hbWUo
aW5iYW5kQ3VlLmZvbnROYW1lKCkpOworCisgICAgaWYgKGluYmFuZEN1ZS5wb3NpdGlvbigpID4g
MCkKKyAgICAgICAgY3VlLnNldFBvc2l0aW9uKHN0ZDo6cm91bmQoaW5iYW5kQ3VlLnBvc2l0aW9u
KCkpKTsKKyAgICBpZiAoaW5iYW5kQ3VlLmxpbmUoKSA+IDApCisgICAgICAgIGN1ZS5zZXRMaW5l
KHN0ZDo6cm91bmQoaW5iYW5kQ3VlLmxpbmUoKSkpOworICAgIGlmIChpbmJhbmRDdWUuc2l6ZSgp
ID4gMCkKKyAgICAgICAgY3VlLnNldFNpemUoc3RkOjpyb3VuZChpbmJhbmRDdWUuc2l6ZSgpKSk7
CisgICAgaWYgKGluYmFuZEN1ZS5iYWNrZ3JvdW5kQ29sb3IoKS5pc1ZhbGlkKCkpCisgICAgICAg
IGN1ZS5zZXRCYWNrZ3JvdW5kQ29sb3IoaW5iYW5kQ3VlLmJhY2tncm91bmRDb2xvcigpLnJnYigp
KTsKKyAgICBpZiAoaW5iYW5kQ3VlLmZvcmVncm91bmRDb2xvcigpLmlzVmFsaWQoKSkKKyAgICAg
ICAgY3VlLnNldEZvcmVncm91bmRDb2xvcihpbmJhbmRDdWUuZm9yZWdyb3VuZENvbG9yKCkucmdi
KCkpOworICAgIGlmIChpbmJhbmRDdWUuaGlnaGxpZ2h0Q29sb3IoKS5pc1ZhbGlkKCkpCisgICAg
ICAgIGN1ZS5zZXRIaWdobGlnaHRDb2xvcihpbmJhbmRDdWUuaGlnaGxpZ2h0Q29sb3IoKS5yZ2Io
KSk7CisKKyAgICBpZiAoaW5iYW5kQ3VlLmFsaWduKCkgPT0gR2VuZXJpY0N1ZURhdGE6OkFsaWdu
bWVudDo6U3RhcnQpCiAgICAgICAgIGN1ZS5zZXRBbGlnbigic3RhcnQiX3MpOwotICAgIGVsc2Ug
aWYgKGN1ZURhdGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6TWlkZGxlKQorICAgIGVsc2Ug
aWYgKGluYmFuZEN1ZS5hbGlnbigpID09IEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6Ok1pZGRs
ZSkKICAgICAgICAgY3VlLnNldEFsaWduKCJtaWRkbGUiX3MpOwotICAgIGVsc2UgaWYgKGN1ZURh
dGEuYWxpZ24oKSA9PSBHZW5lcmljQ3VlRGF0YTo6RW5kKQorICAgIGVsc2UgaWYgKGluYmFuZEN1
ZS5hbGlnbigpID09IEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OkVuZCkKICAgICAgICAgY3Vl
LnNldEFsaWduKCJlbmQiX3MpOwogICAgIGN1ZS5zZXRTbmFwVG9MaW5lcyhmYWxzZSk7CiAKICAg
ICBjdWUuZGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6YWRk
R2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYgY3VlRGF0YSkKK3ZvaWQgSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6YWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiBpbmJhbmRDdWUpCiB7Ci0g
ICAgaWYgKG1fY3VlTWFwLmZpbmQoY3VlRGF0YSkpCisgICAgaWYgKG1fY3VlTWFwLmZpbmQoaW5i
YW5kQ3VlLnVuaXF1ZUlkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGN1ZSA9IFRl
eHRUcmFja0N1ZUdlbmVyaWM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjdWVE
YXRhLnN0YXJ0VGltZSgpLCBjdWVEYXRhLmVuZFRpbWUoKSwgY3VlRGF0YS5jb250ZW50KCkpOwot
ICAgIHVwZGF0ZUN1ZUZyb21DdWVEYXRhKGN1ZS5nZXQoKSwgY3VlRGF0YSk7CisgICAgYXV0byBj
dWUgPSBUZXh0VHJhY2tDdWVHZW5lcmljOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgaW5iYW5kQ3VlLnN0YXJ0VGltZSgpLCBpbmJhbmRDdWUuZW5kVGltZSgpLCBpbmJhbmRDdWUu
Y29udGVudCgpKTsKKyAgICB1cGRhdGVDdWVGcm9tQ3VlRGF0YShjdWUuZ2V0KCksIGluYmFuZEN1
ZSk7CiAgICAgaWYgKGhhc0N1ZShjdWUucHRyKCksIFRleHRUcmFja0N1ZTo6SWdub3JlRHVyYXRp
b24pKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJpZ25vcmluZyBhbHJlYWR5
IGFkZGVkIGN1ZTogIiwgY3VlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTMzLDMyICsx
MjgsMzIgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRHZW5lcmljQ3VlKEdlbmVy
aWNDdWVEYXRhJiBjdWVEYXRhKQogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImFkZGVk
IGN1ZTogIiwgY3VlLmdldCgpKTsKIAotICAgIGlmIChjdWVEYXRhLnN0YXR1cygpICE9IEdlbmVy
aWNDdWVEYXRhOjpDb21wbGV0ZSkKLSAgICAgICAgbV9jdWVNYXAuYWRkKGN1ZURhdGEsIGN1ZSk7
CisgICAgaWYgKGluYmFuZEN1ZS5zdGF0dXMoKSAhPSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpD
b21wbGV0ZSkKKyAgICAgICAgbV9jdWVNYXAuYWRkKGluYmFuZEN1ZS51bmlxdWVJZCgpLCBjdWUp
OwogCiAgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSk7CiB9CiAKLXZvaWQgSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYgY3VlRGF0YSkKK3ZvaWQg
SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3Vl
JiBpbmJhbmRDdWUpCiB7Ci0gICAgYXV0byBjdWUgPSBtYWtlUmVmUHRyKG1fY3VlTWFwLmZpbmQo
Y3VlRGF0YSkpOworICAgIGF1dG8gY3VlID0gbWFrZVJlZlB0cihtX2N1ZU1hcC5maW5kKGluYmFu
ZEN1ZS51bmlxdWVJZCgpKSk7CiAgICAgaWYgKCFjdWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHVwZGF0ZUN1ZUZyb21DdWVEYXRhKCpjdWUsIGN1ZURhdGEpOworICAgIHVwZGF0ZUN1ZUZyb21D
dWVEYXRhKCpjdWUsIGluYmFuZEN1ZSk7CiAKLSAgICBpZiAoY3VlRGF0YS5zdGF0dXMoKSA9PSBH
ZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUpCi0gICAgICAgIG1fY3VlTWFwLnJlbW92ZShjdWVEYXRh
KTsKKyAgICBpZiAoaW5iYW5kQ3VlLnN0YXR1cygpID09IEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6
OkNvbXBsZXRlKQorICAgICAgICBtX2N1ZU1hcC5yZW1vdmUoaW5iYW5kQ3VlLnVuaXF1ZUlkKCkp
OwogfQogCi12b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92ZUdlbmVyaWNDdWUoR2Vu
ZXJpY0N1ZURhdGEmIGN1ZURhdGEpCit2b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92
ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgaW5iYW5kQ3VlKQogewotICAgIGF1dG8gY3Vl
ID0gbWFrZVJlZlB0cihtX2N1ZU1hcC5maW5kKGN1ZURhdGEpKTsKKyAgICBhdXRvIGN1ZSA9IG1h
a2VSZWZQdHIobV9jdWVNYXAuZmluZChpbmJhbmRDdWUudW5pcXVlSWQoKSkpOwogICAgIGlmIChj
dWUpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgKmN1ZSk7CiAgICAgICAgIHJl
bW92ZUN1ZSgqY3VlKTsKICAgICB9IGVsc2UKLSAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgIlVOQUJMRSB0byBmaW5kIGN1ZTogIiwgY3VlRGF0YSk7CisgICAgICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIsICJVTkFCTEUgdG8gZmluZCBjdWU6ICIsIGluYmFuZEN1ZSk7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRy
YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2su
aAppbmRleCAyMjEyZjk1NzdmMjZmNTgwNzA4YTgyY2EyMDUxZmNiODg1ZWVhODhhLi5iMWY0MzBj
NWFmNDBjYjA0MmM5ODI0MThjMWRjMjE4NjUzZTM1MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaApAQCAtMzUsMTcgKzM1LDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VuZXJpY1RleHRUcmFja0N1ZU1hcCB7
CiBwdWJsaWM6Ci0gICAgdm9pZCBhZGQoR2VuZXJpY0N1ZURhdGEmLCBUZXh0VHJhY2tDdWVHZW5l
cmljJik7CisgICAgdm9pZCBhZGQoSW5iYW5kR2VuZXJpY0N1ZUlkZW50aWZpZXIsIFRleHRUcmFj
a0N1ZUdlbmVyaWMmKTsKIAogICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFja0N1ZSYpOwotICAgIHZv
aWQgcmVtb3ZlKEdlbmVyaWNDdWVEYXRhJik7CisgICAgdm9pZCByZW1vdmUoSW5iYW5kR2VuZXJp
Y0N1ZUlkZW50aWZpZXIpOwogCi0gICAgR2VuZXJpY0N1ZURhdGEqIGZpbmQoVGV4dFRyYWNrQ3Vl
Jik7Ci0gICAgVGV4dFRyYWNrQ3VlR2VuZXJpYyogZmluZChHZW5lcmljQ3VlRGF0YSYpOworICAg
IFRleHRUcmFja0N1ZUdlbmVyaWMqIGZpbmQoSW5iYW5kR2VuZXJpY0N1ZUlkZW50aWZpZXIpOwog
CiBwcml2YXRlOgotICAgIHVzaW5nIEN1ZVRvRGF0YU1hcCA9IEhhc2hNYXA8UmVmUHRyPFRleHRU
cmFja0N1ZT4sIFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4+OwotICAgIHVzaW5nIEN1ZURhdGFUb0N1
ZU1hcCA9IEhhc2hNYXA8UmVmUHRyPEdlbmVyaWNDdWVEYXRhPiwgUmVmUHRyPFRleHRUcmFja0N1
ZUdlbmVyaWM+PjsKKyAgICB1c2luZyBDdWVUb0RhdGFNYXAgPSBIYXNoTWFwPFRleHRUcmFja0N1
ZSosIEluYmFuZEdlbmVyaWNDdWVJZGVudGlmaWVyPjsKKyAgICB1c2luZyBDdWVEYXRhVG9DdWVN
YXAgPSBIYXNoTWFwPEluYmFuZEdlbmVyaWNDdWVJZGVudGlmaWVyLCBSZWZQdHI8VGV4dFRyYWNr
Q3VlR2VuZXJpYz4+OwogCiAgICAgQ3VlVG9EYXRhTWFwIG1fY3VlVG9EYXRhTWFwOwogICAgIEN1
ZURhdGFUb0N1ZU1hcCBtX2RhdGFUb0N1ZU1hcDsKQEAgLTYwLDEyICs1OSwxMiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEluYmFuZEdlbmVyaWNUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAotICAg
IHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgdXBk
YXRlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlR2Vu
ZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJ
bmJhbmRHZW5lcmljQ3VlJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2Vu
ZXJpY0N1ZSYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUN1ZShUZXh0VHJh
Y2tDdWUmKSBmaW5hbDsKIAotICAgIHZvaWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNr
Q3VlR2VuZXJpYyYsIEdlbmVyaWNDdWVEYXRhJik7CisgICAgdm9pZCB1cGRhdGVDdWVGcm9tQ3Vl
RGF0YShUZXh0VHJhY2tDdWVHZW5lcmljJiwgSW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgV2Vi
VlRUUGFyc2VyJiBwYXJzZXIoKTsKICAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJW
VFRDdWUmJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suaAppbmRleCA4ZmVmOWYzNGFlYWJlMDM1NTE0OTNiNjQ1ZWMxYTZlNWU0ZjM4YTkxLi4zMGZj
MjUyN2YwNTJiNDdmODA0N2QxNjI3OTJmZTdkN2FiZjI5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKQEAgLTc3LDkgKzc3LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1l
JiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0
YSYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2b2lkIHVwZGF0ZUdl
bmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9Ci0gICAgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikgb3ZlcnJpZGUg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRH
ZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQg
dXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3Vl
Jikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBwYXJzZVdl
YlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92
ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTAx
ZDIzZDU3MjJhZTczNzQ1NTJjYTQxYTQ0MTJmODNlZGIzMDE0NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwCkBA
IC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluYmFuZEdlbmVyaWNDdWUuaCIK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKwor
SW5iYW5kR2VuZXJpY0N1ZTo6SW5iYW5kR2VuZXJpY0N1ZSgpCit7CisgICAgbV9jdWVEYXRhLm1f
dW5pcXVlSWQgPSBJbmJhbmRHZW5lcmljQ3VlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKK30KKwor
U3RyaW5nIEluYmFuZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZygpIGNvbnN0Cit7CisgICAgYXV0
byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworCisjaWYgIUxPR19ESVNBQkxFRAor
ICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0ZXh0Il9zLCBtX2N1ZURhdGEubV9jb250ZW50KTsKKyNl
bmRpZgorICAgIG9iamVjdC0+c2V0SW50ZWdlcigiaWRlbnRpZmllciJfcywgbV9jdWVEYXRhLm1f
dW5pcXVlSWQudG9VSW50NjQoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoInN0YXJ0Il9zLCBt
X2N1ZURhdGEubV9zdGFydFRpbWUudG9Eb3VibGUoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUo
ImVuZCJfcywgbV9jdWVEYXRhLm1fZW5kVGltZS50b0RvdWJsZSgpKTsKKworICAgIGNvbnN0IGNo
YXIqIHN0YXR1cyA9ICIiOworICAgIHN3aXRjaCAobV9jdWVEYXRhLm1fc3RhdHVzKSB7CisgICAg
Y2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpVbmluaXRpYWxpemVkOgorICAgICAgICBzdGF0
dXMgPSAiVW5pbml0aWFsaXplZCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2VuZXJpY0N1
ZURhdGE6OlN0YXR1czo6UGFydGlhbDoKKyAgICAgICAgc3RhdHVzID0gIlBhcnRpYWwiOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRlOgor
ICAgICAgICBzdGF0dXMgPSAiQ29tcGxldGUiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
b2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1cyIsIHN0YXR1cyk7CisKKyAgICBpZiAoIW1fY3VlRGF0
YS5tX2lkLmlzRW1wdHkoKSkKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImlkIiwgbV9jdWVE
YXRhLm1faWQpOworCisgICAgaWYgKG1fY3VlRGF0YS5tX2xpbmUgPiAwKQorICAgICAgICBvYmpl
Y3QtPnNldERvdWJsZSgibGluZSJfcywgbV9jdWVEYXRhLm1fbGluZSk7CisKKyAgICBpZiAobV9j
dWVEYXRhLm1fc2l6ZSA+IDApCisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJzaXplIl9zLCBt
X2N1ZURhdGEubV9zaXplKTsKKworICAgIGlmIChtX2N1ZURhdGEubV9wb3NpdGlvbiA+IDApCisg
ICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJwb3NpdGlvbiJfcywgbV9jdWVEYXRhLm1fcG9zaXRp
b24pOworCisgICAgaWYgKG1fY3VlRGF0YS5tX2FsaWduICE9IEdlbmVyaWNDdWVEYXRhOjpBbGln
bm1lbnQ6Ok5vbmUpIHsKKyAgICAgICAgY29uc3QgY2hhciogYWxpZ247CisgICAgICAgIHN3aXRj
aCAobV9jdWVEYXRhLm1fYWxpZ24pIHsKKyAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6QWxp
Z25tZW50OjpTdGFydDoKKyAgICAgICAgICAgIGFsaWduID0gIlN0YXJ0IjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6Ok1pZGRsZToK
KyAgICAgICAgICAgIGFsaWduID0gIk1pZGRsZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpFbmQ6CisgICAgICAgICAgICBhbGln
biA9ICJFbmQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURh
dGE6OkFsaWdubWVudDo6Tm9uZToKKyAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImFsaWdu
Il9zLCBhbGlnbik7CisgICAgfQorCisgICAgaWYgKG1fY3VlRGF0YS5tX2ZvcmVncm91bmRDb2xv
ci5pc1ZhbGlkKCkpCisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJmb3JlZ3JvdW5kQ29sb3Ii
X3MsIG1fY3VlRGF0YS5tX2ZvcmVncm91bmRDb2xvci5zZXJpYWxpemVkKCkpOworCisgICAgaWYg
KG1fY3VlRGF0YS5tX2JhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIG9iamVjdC0+
c2V0U3RyaW5nKCJiYWNrZ3JvdW5kQ29sb3IiX3MsIG1fY3VlRGF0YS5tX2JhY2tncm91bmRDb2xv
ci5zZXJpYWxpemVkKCkpOworCisgICAgaWYgKG1fY3VlRGF0YS5tX2hpZ2hsaWdodENvbG9yLmlz
VmFsaWQoKSkKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImhpZ2hsaWdodENvbG9yIl9zLCBt
X2N1ZURhdGEubV9oaWdobGlnaHRDb2xvci5zZXJpYWxpemVkKCkpOworCisgICAgaWYgKG1fY3Vl
RGF0YS5tX2Jhc2VGb250U2l6ZSkKKyAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoImJhc2VGb250
U2l6ZSJfcywgbV9jdWVEYXRhLm1fYmFzZUZvbnRTaXplKTsKKworICAgIGlmIChtX2N1ZURhdGEu
bV9yZWxhdGl2ZUZvbnRTaXplKQorICAgICAgICBvYmplY3QtPnNldERvdWJsZSgicmVsYXRpdmVG
b250U2l6ZSJfcywgbV9jdWVEYXRhLm1fcmVsYXRpdmVGb250U2l6ZSk7CisKKyAgICBpZiAoIW1f
Y3VlRGF0YS5tX2ZvbnROYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmco
ImZvbnQiX3MsIG1fY3VlRGF0YS5tX2ZvbnROYW1lKTsKKworICAgIHJldHVybiBvYmplY3QtPnRv
SlNPTlN0cmluZygpOworfQorCitib29sIEdlbmVyaWNDdWVEYXRhOjplcXVhbE5vdENvbnNpZGVy
aW5nVGltZXNPcklkKGNvbnN0IEdlbmVyaWNDdWVEYXRhJiBvdGhlcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZWxhdGl2ZUZvbnRTaXplID09IG90aGVyLm1fcmVsYXRpdmVGb250U2l6ZQorICAg
ICAgICAmJiBtX2Jhc2VGb250U2l6ZSA9PSBvdGhlci5tX2Jhc2VGb250U2l6ZQorICAgICAgICAm
JiBtX3Bvc2l0aW9uID09IG90aGVyLm1fcG9zaXRpb24KKyAgICAgICAgJiYgbV9saW5lID09IG90
aGVyLm1fbGluZQorICAgICAgICAmJiBtX3NpemUgPT0gb3RoZXIubV9zaXplCisgICAgICAgICYm
IG1fYWxpZ24gPT0gb3RoZXIubV9hbGlnbgorICAgICAgICAmJiBtX2ZvcmVncm91bmRDb2xvciA9
PSBvdGhlci5tX2ZvcmVncm91bmRDb2xvcgorICAgICAgICAmJiBtX2JhY2tncm91bmRDb2xvciA9
PSBvdGhlci5tX2JhY2tncm91bmRDb2xvcgorICAgICAgICAmJiBtX2hpZ2hsaWdodENvbG9yID09
IG90aGVyLm1faGlnaGxpZ2h0Q29sb3IKKyAgICAgICAgJiYgbV9mb250TmFtZSA9PSBvdGhlci5t
X2ZvbnROYW1lCisgICAgICAgICYmIG1faWQgPT0gb3RoZXIubV9pZAorICAgICAgICAmJiBtX2Nv
bnRlbnQgPT0gb3RoZXIubV9jb250ZW50OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMyYjVkNTE4YjUwMGM5MWM4Njk4NTRiNjU1NTEwOThlOGE5ZTRmZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3Vl
LmgKQEAgLTAsMCArMSwzMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW5iYW5kR2VuZXJpY0N1ZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Ry
dWN0IEdlbmVyaWNDdWVEYXRhIHsKKworICAgIGVudW0gY2xhc3MgQWxpZ25tZW50IDogdWludDhf
dCB7IE5vbmUsIFN0YXJ0LCBNaWRkbGUsIEVuZCB9OworICAgIGVudW0gY2xhc3MgU3RhdHVzIDog
dWludDhfdCB7IFVuaW5pdGlhbGl6ZWQsIFBhcnRpYWwsIENvbXBsZXRlIH07CisKKyAgICBHZW5l
cmljQ3VlRGF0YSgpID0gZGVmYXVsdDsKKyAgICBHZW5lcmljQ3VlRGF0YShJbmJhbmRHZW5lcmlj
Q3VlSWRlbnRpZmllciB1bmlxdWVJZCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydFRpbWUsIGNvbnN0
IE1lZGlhVGltZSYgZW5kVGltZSwgY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgbGluZSwgZG91YmxlIHBvc2l0aW9u
LCBkb3VibGUgc2l6ZSwgZG91YmxlIGJhc2VGb250U2l6ZSwgZG91YmxlIHJlbGF0aXZlRm9udFNp
emUsIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IsIGNvbnN0IENvbG9yJiBoaWdobGlnaHRDb2xvciwgR2VuZXJpY0N1ZURhdGE6OkFsaWdu
bWVudCBhbGlnbiwgR2VuZXJpY0N1ZURhdGE6OlN0YXR1cyBzdGF0dXMpCisgICAgICAgIDogbV91
bmlxdWVJZCh1bmlxdWVJZCkKKyAgICAgICAgLCBtX3N0YXJ0VGltZShzdGFydFRpbWUpCisgICAg
ICAgICwgbV9lbmRUaW1lKGVuZFRpbWUpCisgICAgICAgICwgbV9pZChpZCkKKyAgICAgICAgLCBt
X2NvbnRlbnQoY29udGVudCkKKyAgICAgICAgLCBtX2ZvbnROYW1lKGZvbnROYW1lKQorICAgICAg
ICAsIG1fbGluZShsaW5lKQorICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAg
ICwgbV9zaXplKHNpemUpCisgICAgICAgICwgbV9iYXNlRm9udFNpemUoYmFzZUZvbnRTaXplKQor
ICAgICAgICAsIG1fcmVsYXRpdmVGb250U2l6ZShyZWxhdGl2ZUZvbnRTaXplKQorICAgICAgICAs
IG1fZm9yZWdyb3VuZENvbG9yKGZvcmVncm91bmRDb2xvcikKKyAgICAgICAgLCBtX2JhY2tncm91
bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgICwgbV9oaWdobGlnaHRDb2xvcihoaWdo
bGlnaHRDb2xvcikKKyAgICAgICAgLCBtX2FsaWduKGFsaWduKQorICAgICAgICAsIG1fc3RhdHVz
KHN0YXR1cykKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIH0KKworICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV91bmlxdWVJZDsgfQorICAgIGJvb2wg
ZXF1YWxOb3RDb25zaWRlcmluZ1RpbWVzT3JJZChjb25zdCBHZW5lcmljQ3VlRGF0YSYpIGNvbnN0
OworCisgICAgSW5iYW5kR2VuZXJpY0N1ZUlkZW50aWZpZXIgbV91bmlxdWVJZDsKKyAgICBNZWRp
YVRpbWUgbV9zdGFydFRpbWU7CisgICAgTWVkaWFUaW1lIG1fZW5kVGltZTsKKyAgICBTdHJpbmcg
bV9pZDsKKyAgICBTdHJpbmcgbV9jb250ZW50OworICAgIFN0cmluZyBtX2ZvbnROYW1lOworICAg
IGRvdWJsZSBtX2xpbmUgeyAtMSB9OworICAgIGRvdWJsZSBtX3Bvc2l0aW9uIHsgLTEgfTsKKyAg
ICBkb3VibGUgbV9zaXplIHsgLTEgfTsKKyAgICBkb3VibGUgbV9iYXNlRm9udFNpemUgeyAwIH07
CisgICAgZG91YmxlIG1fcmVsYXRpdmVGb250U2l6ZSB7IDAgfTsKKyAgICBDb2xvciBtX2ZvcmVn
cm91bmRDb2xvcjsKKyAgICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKKyAgICBDb2xvciBtX2hp
Z2hsaWdodENvbG9yOworICAgIEFsaWdubWVudCBtX2FsaWduIHsgQWxpZ25tZW50OjpOb25lIH07
CisgICAgU3RhdHVzIG1fc3RhdHVzIHsgU3RhdHVzOjpVbmluaXRpYWxpemVkIH07CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdlbmVyaWNDdWVEYXRhPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CitPcHRpb25h
bDxHZW5lcmljQ3VlRGF0YT4gR2VuZXJpY0N1ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIE9wdGlvbmFsPEluYmFuZEdlbmVyaWNDdWVJZGVudGlmaWVyPiB1bmlxdWVJZDsK
KyAgICBkZWNvZGVyID4+IHVuaXF1ZUlkOworICAgIGlmICghdW5pcXVlSWQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZTsK
KyAgICBkZWNvZGVyID4+IHN0YXJ0VGltZTsKKyAgICBpZiAoIXN0YXJ0VGltZSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZW5kVGltZTsK
KyAgICBkZWNvZGVyID4+IGVuZFRpbWU7CisgICAgaWYgKCFlbmRUaW1lKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOworICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnQ7CisgICAg
ZGVjb2RlciA+PiBjb250ZW50OworICAgIGlmICghY29udGVudCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gZm9udE5hbWU7CisgICAgZGVjb2Rl
ciA+PiBmb250TmFtZTsKKyAgICBpZiAoIWZvbnROYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8ZG91YmxlPiBsaW5lOworICAgIGRlY29kZXIgPj4gbGlu
ZTsKKyAgICBpZiAoIWxpbmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxkb3VibGU+IHBvc2l0aW9uOworICAgIGRlY29kZXIgPj4gcG9zaXRpb247CisgICAg
aWYgKCFwb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPGRvdWJsZT4gc2l6ZTsKKyAgICBkZWNvZGVyID4+IHNpemU7CisgICAgaWYgKCFzaXplKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8ZG91YmxlPiBiYXNl
Rm9udFNpemU7CisgICAgZGVjb2RlciA+PiBiYXNlRm9udFNpemU7CisgICAgaWYgKCFiYXNlRm9u
dFNpemUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxkb3Vi
bGU+IHJlbGF0aXZlRm9udFNpemU7CisgICAgZGVjb2RlciA+PiByZWxhdGl2ZUZvbnRTaXplOwor
ICAgIGlmICghcmVsYXRpdmVGb250U2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPENvbG9yPiBmb3JlZ3JvdW5kQ29sb3I7CisgICAgZGVjb2RlciA+PiBm
b3JlZ3JvdW5kQ29sb3I7CisgICAgaWYgKCFmb3JlZ3JvdW5kQ29sb3IpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOwor
ICAgIGRlY29kZXIgPj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghYmFja2dyb3VuZENvbG9y
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Q29sb3I+IGhp
Z2hsaWdodENvbG9yOworICAgIGRlY29kZXIgPj4gaGlnaGxpZ2h0Q29sb3I7CisgICAgaWYgKCFo
aWdobGlnaHRDb2xvcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPEFsaWdubWVudD4gYWxpZ25tZW50OworICAgIGRlY29kZXIgPj4gYWxpZ25tZW50OworICAg
IGlmICghYWxpZ25tZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0
aW9uYWw8U3RhdHVzPiBzdGF0dXM7CisgICAgZGVjb2RlciA+PiBzdGF0dXM7CisgICAgaWYgKCFz
dGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBHZW5lcmljQ3VlRGF0
YSBkYXRhID0geworCisgICAgICAgIFdURk1vdmUoKnVuaXF1ZUlkKSwKKworICAgICAgICBXVEZN
b3ZlKCpzdGFydFRpbWUpLAorICAgICAgICBXVEZNb3ZlKCplbmRUaW1lKSwKKworICAgICAgICBX
VEZNb3ZlKCppZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZSgqY29udGVudCksCisgICAgICAg
IFdURk1vdmUoKmZvbnROYW1lKSwKKworICAgICAgICBXVEZNb3ZlKCpsaW5lKSwKKyAgICAgICAg
V1RGTW92ZSgqcG9zaXRpb24pLAorICAgICAgICBXVEZNb3ZlKCpzaXplKSwKKyAgICAgICAgV1RG
TW92ZSgqYmFzZUZvbnRTaXplKSwKKyAgICAgICAgV1RGTW92ZSgqcmVsYXRpdmVGb250U2l6ZSks
CisKKyAgICAgICAgV1RGTW92ZSgqZm9yZWdyb3VuZENvbG9yKSwKKyAgICAgICAgV1RGTW92ZSgq
YmFja2dyb3VuZENvbG9yKSwKKyAgICAgICAgV1RGTW92ZSgqaGlnaGxpZ2h0Q29sb3IpLAorCisg
ICAgICAgIFdURk1vdmUoKmFsaWdubWVudCksCisgICAgICAgIFdURk1vdmUoKnN0YXR1cyksCisK
KyAgICB9OworCisgICAgaWYgKCFkYXRhLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIHJldHVybiBkYXRhOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBHZW5lcmljQ3VlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBtX3VuaXF1ZUlkOworICAgIGVuY29kZXIgPDwgbV9zdGFydFRpbWU7
CisgICAgZW5jb2RlciA8PCBtX2VuZFRpbWU7CisgICAgZW5jb2RlciA8PCBtX2lkOworICAgIGVu
Y29kZXIgPDwgbV9jb250ZW50OworICAgIGVuY29kZXIgPDwgbV9mb250TmFtZTsKKyAgICBlbmNv
ZGVyIDw8IG1fbGluZTsKKyAgICBlbmNvZGVyIDw8IG1fcG9zaXRpb247CisgICAgZW5jb2RlciA8
PCBtX3NpemU7CisgICAgZW5jb2RlciA8PCBtX2Jhc2VGb250U2l6ZTsKKyAgICBlbmNvZGVyIDw8
IG1fcmVsYXRpdmVGb250U2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1fZm9yZWdyb3VuZENvbG9yOwor
ICAgIGVuY29kZXIgPDwgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgZW5jb2RlciA8PCBtX2hpZ2hs
aWdodENvbG9yOworICAgIGVuY29kZXIuZW5jb2RlRW51bShtX2FsaWduKTsKKyAgICBlbmNvZGVy
LmVuY29kZUVudW0obV9zdGF0dXMpOworfQorCitjbGFzcyBJbmJhbmRHZW5lcmljQ3VlIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW5iYW5kR2VuZXJpY0N1ZT4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8SW5iYW5kR2VuZXJpY0N1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJh
bmRHZW5lcmljQ3VlKTsgfQorICAgIHN0YXRpYyBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gY3JlYXRl
KEdlbmVyaWNDdWVEYXRhJiYgY3VlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRH
ZW5lcmljQ3VlKFdURk1vdmUoY3VlRGF0YSkpKTsgfQorCisgICAgSW5iYW5kR2VuZXJpY0N1ZUlk
ZW50aWZpZXIgdW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV91bmlxdWVJZDsg
fQorCisgICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5t
X3N0YXJ0VGltZTsgfQorICAgIHZvaWQgc2V0U3RhcnRUaW1lKGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnRUaW1lKSB7IG1fY3VlRGF0YS5tX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQorCisgICAgTWVk
aWFUaW1lIGVuZFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9lbmRUaW1lOyB9Cisg
ICAgdm9pZCBzZXRFbmRUaW1lKGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSkgeyBtX2N1ZURhdGEu
bV9lbmRUaW1lID0gZW5kVGltZTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VlRGF0YS5tX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBTdHJpbmcmIGlk
KSB7IG1fY3VlRGF0YS5tX2lkID0gaWQ7IH0KKworICAgIGNvbnN0IFN0cmluZyYgY29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX2NvbnRlbnQ7IH0KKyAgICB2b2lkIHNldENvbnRl
bnQoY29uc3QgU3RyaW5nJiBjb250ZW50KSB7IG1fY3VlRGF0YS5tX2NvbnRlbnQgPSBjb250ZW50
OyB9CisKKyAgICBkb3VibGUgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX2xpbmU7
IH0KKyAgICB2b2lkIHNldExpbmUoZG91YmxlIGxpbmUpIHsgbV9jdWVEYXRhLm1fbGluZSA9IGxp
bmU7IH0KKworICAgIGRvdWJsZSBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5t
X3Bvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUgcG9zaXRpb24pIHsgbV9j
dWVEYXRhLm1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQorCisgICAgZG91YmxlIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2N1ZURhdGEubV9zaXplOyB9CisgICAgdm9pZCBzZXRTaXplKGRvdWJsZSBz
aXplKSB7IG1fY3VlRGF0YS5tX3NpemUgPSBzaXplOyB9CisKKyAgICBHZW5lcmljQ3VlRGF0YTo6
QWxpZ25tZW50IGFsaWduKCkgY29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fYWxpZ247IH0KKyAg
ICB2b2lkIHNldEFsaWduKEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQgYWxpZ24pIHsgbV9jdWVE
YXRhLm1fYWxpZ24gPSBhbGlnbjsgfQorCisgICAgY29uc3QgU3RyaW5nJiBmb250TmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VlRGF0YS5tX2ZvbnROYW1lOyB9CisgICAgdm9pZCBzZXRGb250TmFt
ZShjb25zdCBTdHJpbmcmIGZvbnROYW1lKSB7IG1fY3VlRGF0YS5tX2ZvbnROYW1lID0gZm9udE5h
bWU7IH0KKworICAgIGRvdWJsZSBiYXNlRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBtX2N1ZURh
dGEubV9iYXNlRm9udFNpemU7IH0KKyAgICB2b2lkIHNldEJhc2VGb250U2l6ZShkb3VibGUgYmFz
ZUZvbnRTaXplKSB7IG1fY3VlRGF0YS5tX2Jhc2VGb250U2l6ZSA9IGJhc2VGb250U2l6ZTsgfQor
CisgICAgZG91YmxlIHJlbGF0aXZlRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEu
bV9yZWxhdGl2ZUZvbnRTaXplOyB9CisgICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXplKGRvdWJs
ZSByZWxhdGl2ZUZvbnRTaXplKSB7IG1fY3VlRGF0YS5tX3JlbGF0aXZlRm9udFNpemUgPSByZWxh
dGl2ZUZvbnRTaXplOyB9CisKKyAgICBjb25zdCBDb2xvciYgZm9yZWdyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fZm9yZWdyb3VuZENvbG9yOyB9CisgICAgdm9pZCBzZXRG
b3JlZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fY3VlRGF0YS5tX2ZvcmVncm91
bmRDb2xvciA9IGNvbG9yOyB9CisKKyAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jdWVEYXRhLm1fYmFja2dyb3VuZENvbG9yOyB9CisgICAgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fY3VlRGF0YS5tX2JhY2tn
cm91bmRDb2xvciA9IGNvbG9yOyB9CisKKyAgICBjb25zdCBDb2xvciYgaGlnaGxpZ2h0Q29sb3Io
KSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEubV9oaWdobGlnaHRDb2xvcjsgfQorICAgIHZvaWQg
c2V0SGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fY3VlRGF0YS5tX2hpZ2hs
aWdodENvbG9yID0gY29sb3I7IH0KKworICAgIEdlbmVyaWNDdWVEYXRhOjpTdGF0dXMgc3RhdHVz
KCkgeyByZXR1cm4gbV9jdWVEYXRhLm1fc3RhdHVzOyB9CisgICAgdm9pZCBzZXRTdGF0dXMoR2Vu
ZXJpY0N1ZURhdGE6OlN0YXR1cyBzdGF0dXMpIHsgbV9jdWVEYXRhLm1fc3RhdHVzID0gc3RhdHVz
OyB9CisKKyAgICBib29sIGRvZXNFeHRlbmRDdWVEYXRhKGNvbnN0IEluYmFuZEdlbmVyaWNDdWUm
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX2N1ZURhdGEuZXF1YWxOb3RDb25zaWRlcmluZ1RpbWVz
T3JJZChvdGhlci5tX2N1ZURhdGEpOyB9CisKKyAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29u
c3Q7CisKKyAgICBjb25zdCBHZW5lcmljQ3VlRGF0YSYgY3VlRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VlRGF0YTsgfQorCitwcml2YXRlOgorICAgIEluYmFuZEdlbmVyaWNDdWUoKTsKKyAgICBl
eHBsaWNpdCBJbmJhbmRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiYgY3VlRGF0YSkKKyAgICAg
ICAgOiBtX2N1ZURhdGEoV1RGTW92ZShjdWVEYXRhKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2N1ZURhdGEuaXNWYWxpZCgpKTsKKyAgICB9CisKKyAgICBHZW5lcmljQ3VlRGF0YSBtX2N1ZURh
dGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7Cit0ZW1wbGF0ZSA8Pgor
c3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWU+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmIGN1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBjdWUudG9KU09OU3RyaW5nKCk7CisgICAgfQorfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6QWxp
Z25tZW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudCwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1
ZURhdGE6OkFsaWdubWVudDo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6
OkFsaWdubWVudDo6U3RhcnQsCisgICAgICAgIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpBbGln
bm1lbnQ6Ok1pZGRsZSwKKyAgICAgICAgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OkFsaWdubWVu
dDo6RW5kCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OlN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXMsCisgICAgICAgIFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlVuaW5pdGlhbGl6ZWQsCisgICAgICAgIFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlBhcnRpYWwsCisgICAgICAgIFdlYkNvcmU6
OkdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OkNvbXBsZXRlCisgICAgPjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3VlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM0NmU3NDljOWM2MDYxZWMzNDg1ZGY3ZjA0ZGI2YzY4MzMzMDY4MjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3VlSWRl
bnRpZmllci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSAsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gSW5iYW5kR2VuZXJpY0N1ZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEluYmFu
ZEdlbmVyaWNDdWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbmJhbmRHZW5lcmljQ3Vl
SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVDbGllbnQuaAppbmRleCBmNDMwNjQ1MThkZjQxOTYxYjNmNmM2M2E3NmM5OTEzZDE3
NjdhZWJjLi5mZDMzZWI5YzBiMTExNmJlOGIzNjg3ZDA5ZjIyZjA0NmNiZDNhY2E4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbmJhbmRHZW5lcmlj
Q3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9KU09O
VmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgpAQCAtNDEsMTg3ICs0Miw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFz
cyBJU09XZWJWVFRDdWU7CiAKLWNsYXNzIEdlbmVyaWNDdWVEYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8R2VuZXJpY0N1ZURhdGE+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNDdWVE
YXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEdlbmVyaWNDdWVEYXRhKTsgfQot
Ci0gICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9
Ci0gICAgdm9pZCBzZXRTdGFydFRpbWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydFRpbWUpIHsgbV9z
dGFydFRpbWUgPSBzdGFydFRpbWU7IH0KLQotICAgIE1lZGlhVGltZSBlbmRUaW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmRUaW1lOyB9Ci0gICAgdm9pZCBzZXRFbmRUaW1lKGNvbnN0IE1lZGlhVGlt
ZSYgZW5kVGltZSkgeyBtX2VuZFRpbWUgPSBlbmRUaW1lOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcm
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5n
JiBpZCkgeyBtX2lkID0gaWQ7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgY29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudDsgfQotICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcm
IGNvbnRlbnQpIHsgbV9jb250ZW50ID0gY29udGVudDsgfQotCi0gICAgZG91YmxlIGxpbmUoKSBj
b25zdCB7IHJldHVybiBtX2xpbmU7IH0KLSAgICB2b2lkIHNldExpbmUoZG91YmxlIGxpbmUpIHsg
bV9saW5lID0gbGluZTsgfQotCi0gICAgZG91YmxlIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIHBvc2l0aW9uKSB7IG1f
cG9zaXRpb24gPSBwb3NpdGlvbjsgfQotCi0gICAgZG91YmxlIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KLSAgICB2b2lkIHNldFNpemUoZG91YmxlIHNpemUpIHsgbV9zaXplID0gc2l6
ZTsgfQotCi0gICAgZW51bSBBbGlnbm1lbnQgeyBOb25lLCBTdGFydCwgTWlkZGxlLCBFbmQgfTsK
LSAgICBBbGlnbm1lbnQgYWxpZ24oKSBjb25zdCB7IHJldHVybiBtX2FsaWduOyB9Ci0gICAgdm9p
ZCBzZXRBbGlnbihBbGlnbm1lbnQgYWxpZ24pIHsgbV9hbGlnbiA9IGFsaWduOyB9Ci0KLSAgICBj
b25zdCBTdHJpbmcmIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mb250TmFtZTsgfQotICAg
IHZvaWQgc2V0Rm9udE5hbWUoY29uc3QgU3RyaW5nJiBmb250TmFtZSkgeyBtX2ZvbnROYW1lID0g
Zm9udE5hbWU7IH0KLQotICAgIGRvdWJsZSBiYXNlRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBt
X2Jhc2VGb250U2l6ZTsgfQotICAgIHZvaWQgc2V0QmFzZUZvbnRTaXplKGRvdWJsZSBiYXNlRm9u
dFNpemUpIHsgbV9iYXNlRm9udFNpemUgPSBiYXNlRm9udFNpemU7IH0KLQotICAgIGRvdWJsZSBy
ZWxhdGl2ZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGl2ZUZvbnRTaXplOyB9Ci0g
ICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXplKGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKSB7IG1f
cmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0KLQotICAgIGNvbnN0IENvbG9y
JiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQot
ICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2ZvcmVn
cm91bmRDb2xvciA9IGNvbG9yOyB9Ci0KLSAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xv
cjsgfQotCi0gICAgY29uc3QgQ29sb3ImIGhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsgfQotCi0gICAgZW51bSBTdGF0
dXMgeyBVbmluaXRpYWxpemVkLCBQYXJ0aWFsLCBDb21wbGV0ZSB9OwotICAgIFN0YXR1cyBzdGF0
dXMoKSB7IHJldHVybiBtX3N0YXR1czsgfQotICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyBzdGF0
dXMpIHsgbV9zdGF0dXMgPSBzdGF0dXM7IH0KLQotICAgIGJvb2wgZG9lc0V4dGVuZEN1ZURhdGEo
Y29uc3QgR2VuZXJpY0N1ZURhdGEmKSBjb25zdDsKLQotICAgIFN0cmluZyB0b0pTT05TdHJpbmco
KSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmljQ3VlRGF0YSgpID0gZGVmYXVsdDsKLQot
ICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKLSAgICBNZWRpYVRpbWUgbV9lbmRUaW1lOwotICAg
IFN0cmluZyBtX2lkOwotICAgIFN0cmluZyBtX2NvbnRlbnQ7Ci0gICAgZG91YmxlIG1fbGluZSB7
IC0xIH07Ci0gICAgZG91YmxlIG1fcG9zaXRpb24geyAtMSB9OwotICAgIGRvdWJsZSBtX3NpemUg
eyAtMSB9OwotICAgIEFsaWdubWVudCBtX2FsaWduIHsgTm9uZSB9OwotICAgIFN0cmluZyBtX2Zv
bnROYW1lOwotICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZSB7IDAgfTsKLSAgICBkb3VibGUgbV9y
ZWxhdGl2ZUZvbnRTaXplIHsgMCB9OwotICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOwotICAg
IENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwotICAgIENvbG9yIG1faGlnaGxpZ2h0Q29sb3I7Ci0g
ICAgU3RhdHVzIG1fc3RhdHVzIHsgVW5pbml0aWFsaXplZCB9OwotfTsKLQotaW5saW5lIFN0cmlu
ZyBHZW5lcmljQ3VlRGF0YTo6dG9KU09OU3RyaW5nKCkgY29uc3QKLXsKLSAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoInRleHQiX3MsIG1fY29udGVudCk7Ci0jZW5kaWYKLSAgICBvYmplY3Qt
PnNldERvdWJsZSgic3RhcnQiX3MsIG1fc3RhcnRUaW1lLnRvRG91YmxlKCkpOwotICAgIG9iamVj
dC0+c2V0RG91YmxlKCJlbmQiX3MsIG1fZW5kVGltZS50b0RvdWJsZSgpKTsKLQotICAgIGNvbnN0
IGNoYXIqIHN0YXR1czsKLSAgICBzd2l0Y2ggKG1fc3RhdHVzKSB7Ci0gICAgY2FzZSBHZW5lcmlj
Q3VlRGF0YTo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQi
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpQYXJ0aWFsOgotICAg
ICAgICBzdGF0dXMgPSAiUGFydGlhbCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR2VuZXJp
Y0N1ZURhdGE6OkNvbXBsZXRlOgotICAgICAgICBzdGF0dXMgPSAiQ29tcGxldGUiOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1cyIsIHN0YXR1cyk7
Ci0KLSAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQotICAgICAgICBvYmplY3QtPnNldFN0cmluZygi
aWQiLCBtX2lkKTsKLQotICAgIGlmIChtX2xpbmUgPiAwKQotICAgICAgICBvYmplY3QtPnNldERv
dWJsZSgibGluZSJfcywgbV9saW5lKTsKLQotICAgIGlmIChtX3NpemUgPiAwKQotICAgICAgICBv
YmplY3QtPnNldERvdWJsZSgic2l6ZSJfcywgbV9zaXplKTsKLQotICAgIGlmIChtX3Bvc2l0aW9u
ID4gMCkKLSAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInBvc2l0aW9uIl9zLCBtX3Bvc2l0aW9u
KTsKLQotICAgIGlmIChtX2FsaWduICE9IE5vbmUpIHsKLSAgICAgICAgY29uc3QgY2hhciogYWxp
Z247Ci0gICAgICAgIHN3aXRjaCAobV9hbGlnbikgewotICAgICAgICBjYXNlIEdlbmVyaWNDdWVE
YXRhOjpTdGFydDoKLSAgICAgICAgICAgIGFsaWduID0gIlN0YXJ0IjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpNaWRkbGU6Ci0gICAgICAgICAgICBh
bGlnbiA9ICJNaWRkbGUiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR2VuZXJp
Y0N1ZURhdGE6OkVuZDoKLSAgICAgICAgICAgIGFsaWduID0gIkVuZCI7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6Tm9uZToKLSAgICAgICAgICAgIGFs
aWduID0gIk5vbmUiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbik7Ci0gICAgfQotCi0gICAgaWYgKG1fZm9y
ZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImZvcmVn
cm91bmRDb2xvciJfcywgbV9mb3JlZ3JvdW5kQ29sb3Iuc2VyaWFsaXplZCgpKTsKLQotICAgIGlm
IChtX2JhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5n
KCJiYWNrZ3JvdW5kQ29sb3IiX3MsIG1fYmFja2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0K
LSAgICBpZiAobV9oaWdobGlnaHRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG9iamVjdC0+c2V0
U3RyaW5nKCJoaWdobGlnaHRDb2xvciJfcywgbV9oaWdobGlnaHRDb2xvci5zZXJpYWxpemVkKCkp
OwotCi0gICAgaWYgKG1fYmFzZUZvbnRTaXplKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgi
YmFzZUZvbnRTaXplIl9zLCBtX2Jhc2VGb250U2l6ZSk7Ci0KLSAgICBpZiAobV9yZWxhdGl2ZUZv
bnRTaXplKQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgicmVsYXRpdmVGb250U2l6ZSJfcywg
bV9yZWxhdGl2ZUZvbnRTaXplKTsKLQotICAgIGlmICghbV9mb250TmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJmb250Il9zLCBtX2ZvbnROYW1lKTsKLQotICAgIHJl
dHVybiBvYmplY3QtPnRvSlNPTlN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBHZW5lcmljQ3Vl
RGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2VuZXJpY0N1ZURhdGEmIG90aGVyKSBjb25z
dAotewotICAgIGlmIChtX3JlbGF0aXZlRm9udFNpemUgIT0gb3RoZXIubV9yZWxhdGl2ZUZvbnRT
aXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fYmFzZUZvbnRTaXplICE9IG90
aGVyLm1fYmFzZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fcG9z
aXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChtX2xpbmUgIT0gb3RoZXIubV9saW5lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KG1fc2l6ZSAhPSBvdGhlci5tX3NpemUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
bV9hbGlnbiAhPSBvdGhlci5tX2FsaWduKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KG1fZm9yZWdyb3VuZENvbG9yICE9IG90aGVyLm1fZm9yZWdyb3VuZENvbG9yKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fYmFja2dyb3VuZENvbG9yICE9IG90aGVyLm1fYmFja2dy
b3VuZENvbG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1faGlnaGxpZ2h0Q29s
b3IgIT0gb3RoZXIubV9oaWdobGlnaHRDb2xvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChtX2ZvbnROYW1lICE9IG90aGVyLm1fZm9udE5hbWUpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAobV9pZCAhPSBvdGhlci5tX2lkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKG1fY29udGVudCAhPSBvdGhlci5tX2NvbnRlbnQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAKIGNsYXNzIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVDbGllbnQgOiBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCgpID0gZGVmYXVsdDsK
QEAgLTIzNCw5ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZSYpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGFkZEdl
bmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdl
bmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUdl
bmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZEdlbmVy
aWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2Vu
ZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVH
ZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpID0gMDsKQEAgLTI0NSwxOSArNjUsNCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ7Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTG9nQXJndW1l
bnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiBjdWUpCi0gICAgewotICAgICAgICByZXR1
cm4gY3VlLnRvSlNPTlN0cmluZygpOwotICAgIH0KLX07Ci0KLX0KLQotI2VuZGlmCisjZW5kaWYg
Ly8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDliNTI4YjRjY2JlZmNhNWEwZDJmODA0NThkNDI2YjQ0
YTRjNGE1MDYuLmRiZDEyYmVkYjlhMzFmOTcyOGQxODRlMjlmNGFkYTViYWRkN2I1MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgc3RhdGljIGJvb2wgbWFrZVJHQkEzMkZyb21BUkdCQ0ZBcnJheShDRkFycmF5
UmVmIGNvbG9yQXJyYXksIFJHQkEzMiYgY29sb3IpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRy
aWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcsIEdlbmVyaWNDdWVEYXRhJiBjdWVEYXRh
KQorUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nl
c3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nKQog
ewogICAgIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAgICAgLy8gU29tZSBvZiB0aGUgYXR0cmlidXRl
cyB3ZSB0cmFuc2xhdGUgaW50byBwZXItY3VlIFdlYlZUVCBzZXR0aW5ncyBhcmUgcmVwZWF0ZWQg
b24gZWFjaCBwYXJ0IG9mIGFuIGF0dHJpYnV0ZWQgc3RyaW5nIHNvIG9ubHkKQEAgLTk5LDExICs5
OSwxMyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1
dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaQogICAgIH07CiAgICAgdW5zaWduZWQgcHJv
Y2Vzc2VkID0gMDsKIAorICAgIGF1dG8gY3VlRGF0YSA9IEluYmFuZEdlbmVyaWNDdWU6OmNyZWF0
ZSgpOwogICAgIFN0cmluZ0J1aWxkZXIgY29udGVudDsKICAgICBTdHJpbmcgYXR0cmlidXRlZFN0
cmluZ1ZhbHVlID0gQ0ZBdHRyaWJ1dGVkU3RyaW5nR2V0U3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcp
OwogICAgIENGSW5kZXggbGVuZ3RoID0gYXR0cmlidXRlZFN0cmluZ1ZhbHVlLmxlbmd0aCgpOwog
ICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBjdWVEYXRh
OworCiAKICAgICBDRlJhbmdlIGVmZmVjdGl2ZVJhbmdlID0gQ0ZSYW5nZU1ha2UoMCwgMCk7CiAg
ICAgd2hpbGUgKChlZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiArIGVmZmVjdGl2ZVJhbmdlLmxlbmd0
aCkgPCBsZW5ndGgpIHsKQEAgLTEzNSwxMSArMTM3LDExIEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0
dHJpCiAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkIHw9IEFsaWduOwogCiAgICAgICAgICAgICAg
ICAgaWYgKENGU3RyaW5nQ29tcGFyZSh2YWx1ZVN0cmluZywga0NNVGV4dE1hcmt1cEFsaWdubWVu
dFR5cGVfU3RhcnQsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKQotICAgICAgICAgICAgICAgICAg
ICBjdWVEYXRhLnNldEFsaWduKEdlbmVyaWNDdWVEYXRhOjpTdGFydCk7CisgICAgICAgICAgICAg
ICAgICAgIGN1ZURhdGEtPnNldEFsaWduKEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0
KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBhcmUodmFsdWVTdHJpbmcs
IGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFs
VG8pCi0gICAgICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QWxpZ24oR2VuZXJpY0N1ZURhdGE6
Ok1pZGRsZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldEFsaWduKEdlbmVyaWND
dWVEYXRhOjpBbGlnbm1lbnQ6Ok1pZGRsZSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0ZT
dHJpbmdDb21wYXJlKHZhbHVlU3RyaW5nLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQs
IDApID09IGtDRkNvbXBhcmVFcXVhbFRvKQotICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLnNl
dEFsaWduKEdlbmVyaWNDdWVEYXRhOjpFbmQpOworICAgICAgICAgICAgICAgICAgICBjdWVEYXRh
LT5zZXRBbGlnbihHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpFbmQpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKQEAg
LTE4Myw3ICsxODUsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3ND
dWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAgICAgICAg
IENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVl
KTsKICAgICAgICAgICAgICAgICBkb3VibGUgbGluZTsKICAgICAgICAgICAgICAgICBDRk51bWJl
ckdldFZhbHVlKHZhbHVlTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0VHlwZSwgJmxpbmUpOwotICAg
ICAgICAgICAgICAgIGN1ZURhdGEuc2V0TGluZShsaW5lKTsKKyAgICAgICAgICAgICAgICBjdWVE
YXRhLT5zZXRMaW5lKGxpbmUpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogCkBAIC0xOTcsNyArMTk5LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
Ojpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmkKICAgICAg
ICAgICAgICAgICBDRk51bWJlclJlZiB2YWx1ZU51bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVy
UmVmPih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgZG91YmxlIHBvc2l0aW9uOwogICAgICAgICAg
ICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVOdW1iZXIsIGtDRk51bWJlckZsb2F0NjRUeXBl
LCAmcG9zaXRpb24pOwotICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0UG9zaXRpb24ocG9zaXRp
b24pOworICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjExLDcgKzIxMyw3
IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMo
Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpCiAgICAgICAgICAgICAgICAgQ0ZOdW1iZXJSZWYg
dmFsdWVOdW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOwogICAgICAgICAg
ICAgICAgIGRvdWJsZSBzaXplOwogICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFs
dWVOdW1iZXIsIGtDRk51bWJlckZsb2F0NjRUeXBlLCAmc2l6ZSk7Ci0gICAgICAgICAgICAgICAg
Y3VlRGF0YS5zZXRTaXplKHNpemUpOworICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldFNpemUo
c2l6ZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTIz
NCw3ICsyMzYsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVB
dHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAgICAgICAgIENG
TnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsK
ICAgICAgICAgICAgICAgICBkb3VibGUgYmFzZUZvbnRTaXplOwogICAgICAgICAgICAgICAgIENG
TnVtYmVyR2V0VmFsdWUodmFsdWVOdW1iZXIsIGtDRk51bWJlckZsb2F0NjRUeXBlLCAmYmFzZUZv
bnRTaXplKTsKLSAgICAgICAgICAgICAgICBjdWVEYXRhLnNldEJhc2VGb250U2l6ZShiYXNlRm9u
dFNpemUpOworICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldEJhc2VGb250U2l6ZShiYXNlRm9u
dFNpemUpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC0y
NDUsNyArMjQ3LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3Vl
QXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmkKICAgICAgICAgICAgICAgICBD
Rk51bWJlclJlZiB2YWx1ZU51bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgZG91YmxlIHJlbGF0aXZlRm9udFNpemU7CiAgICAgICAgICAgICAg
ICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZU51bWJlciwga0NGTnVtYmVyRmxvYXQ2NFR5cGUsICZy
ZWxhdGl2ZUZvbnRTaXplKTsKLSAgICAgICAgICAgICAgICBjdWVEYXRhLnNldFJlbGF0aXZlRm9u
dFNpemUocmVsYXRpdmVGb250U2l6ZSk7CisgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0UmVs
YXRpdmVGb250U2l6ZShyZWxhdGl2ZUZvbnRTaXplKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjU3LDcgKzI1OSw3IEBAIHZvaWQgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVm
IGF0dHJpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHBy
b2Nlc3NlZCB8PSBGb250TmFtZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBj
dWVEYXRhLnNldEZvbnROYW1lKHZhbHVlU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBjdWVEYXRh
LT5zZXRGb250TmFtZSh2YWx1ZVN0cmluZyk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAKQEAgLTI2OSw3ICsyNzEsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRy
aQogICAgICAgICAgICAgICAgIFJHQkEzMiBjb2xvcjsKICAgICAgICAgICAgICAgICBpZiAoIW1h
a2VSR0JBMzJGcm9tQVJHQkNGQXJyYXkoYXJyYXlWYWx1ZSwgY29sb3IpKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBjdWVEYXRhLnNldEZvcmVncm91bmRD
b2xvcihjb2xvcik7CisgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0Rm9yZWdyb3VuZENvbG9y
KGNvbG9yKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtMjgxLDcgKzI4Myw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpCiAgICAg
ICAgICAgICAgICAgUkdCQTMyIGNvbG9yOwogICAgICAgICAgICAgICAgIGlmICghbWFrZVJHQkEz
MkZyb21BUkdCQ0ZBcnJheShhcnJheVZhbHVlLCBjb2xvcikpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGN1ZURhdGEuc2V0QmFja2dyb3VuZENvbG9yKGNv
bG9yKTsKKyAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3Ip
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC0yOTMsNyAr
Mjk1LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmli
dXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmkKICAgICAgICAgICAgICAgICBSR0JBMzIg
Y29sb3I7CiAgICAgICAgICAgICAgICAgaWYgKCFtYWtlUkdCQTMyRnJvbUFSR0JDRkFycmF5KGFy
cmF5VmFsdWUsIGNvbG9yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgY3VlRGF0YS5zZXRIaWdobGlnaHRDb2xvcihjb2xvcik7CisgICAgICAgICAgICAg
ICAgY3VlRGF0YS0+c2V0SGlnaGxpZ2h0Q29sb3IoY29sb3IpOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMDQsNyArMzA2LDkgQEAgdm9p
ZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJp
YnV0ZWRTdHJpbmdSZWYgYXR0cmkKICAgICB9CiAKICAgICBpZiAoY29udGVudC5sZW5ndGgoKSkK
LSAgICAgICAgY3VlRGF0YS5zZXRDb250ZW50KGNvbnRlbnQudG9TdHJpbmcoKSk7CisgICAgICAg
IGN1ZURhdGEtPnNldENvbnRlbnQoY29udGVudC50b1N0cmluZygpKTsKKworICAgIHJldHVybiBj
dWVEYXRhOwogfQogCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUo
Q0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3RyaW5ncywgQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVzLCBj
b25zdCBNZWRpYVRpbWUmIHRpbWUpCkBAIC0zMjMsNyArMzI3LDcgQEAgdm9pZCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRy
aWJ1dGVkU3QKICAgICBpZiAoY291bnQpCiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJhZGRlZCAiLCBjb3VudCwgY291bnQgPiAxID8gIiBjdWVzIiA6ICIgY3VlIiwgIiBhdCB0aW1l
ICIsIHRpbWUpOwogCi0gICAgVmVjdG9yPFJlZjxHZW5lcmljQ3VlRGF0YT4+IGFycml2aW5nQ3Vl
czsKKyAgICBWZWN0b3I8UmVmPEluYmFuZEdlbmVyaWNDdWU+PiBhcnJpdmluZ0N1ZXM7CiAgICAg
aWYgKGNvdW50KSB7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKysp
IHsKICAgICAgICAgICAgIENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nID0g
c3RhdGljX2Nhc3Q8Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGF0dHJpYnV0ZWRTdHJpbmdzLCBpKSk7CkBAIC0zMzEsOCArMzM1LDcgQEAgdm9pZCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBh
dHRyaWJ1dGVkU3QKICAgICAgICAgICAgIGlmICghYXR0cmlidXRlZFN0cmluZyB8fCAhQ0ZBdHRy
aWJ1dGVkU3RyaW5nR2V0TGVuZ3RoKGF0dHJpYnV0ZWRTdHJpbmcpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGN1ZURhdGEgPSBHZW5lcmljQ3VlRGF0YTo6
Y3JlYXRlKCk7Ci0gICAgICAgICAgICBwcm9jZXNzQ3VlQXR0cmlidXRlcyhhdHRyaWJ1dGVkU3Ry
aW5nLCBjdWVEYXRhLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gY3VlRGF0YSA9IHByb2Nlc3ND
dWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZWRTdHJpbmcpOwogICAgICAgICAgICAgaWYgKCFjdWVEYXRh
LT5jb250ZW50KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTM0
NCw3ICszNDcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRy
aWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdAogICAgICAgICAgICAgaWYgKGN1
ZURhdGEtPnBvc2l0aW9uKCkgPj0gMCAmJiBjdWVEYXRhLT5zaXplKCkgPiAwKQogICAgICAgICAg
ICAgICAgIGN1ZURhdGEtPnNldFBvc2l0aW9uKGN1ZURhdGEtPnBvc2l0aW9uKCkgLSBjdWVEYXRh
LT5zaXplKCkgLyAyKTsKIAotICAgICAgICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWND
dWVEYXRhOjpQYXJ0aWFsKTsKKyAgICAgICAgICAgIGN1ZURhdGEtPnNldFN0YXR1cyhHZW5lcmlj
Q3VlRGF0YTo6U3RhdHVzOjpQYXJ0aWFsKTsKIAogICAgICAgICAgICAgYXJyaXZpbmdDdWVzLmFw
cGVuZChXVEZNb3ZlKGN1ZURhdGEpKTsKICAgICAgICAgfQpAQCAtMzU3LDEyICszNjAsMTIgQEAg
dm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3Mo
Q0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgaWYgKG1fY3VycmVudEN1ZUVuZFRpbWUg
Pj0gbV9jdXJyZW50Q3VlU3RhcnRUaW1lKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGN1ZURh
dGEgOiBtX2N1ZXMpIHsKICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgb25lIG9mIHRoZSBuZXds
eS1hcnJpdmVkIGN1ZXMgaXMgYW4gZXh0ZW5zaW9uIG9mIHRoaXMgY3VlLgotICAgICAgICAgICAg
ICAgIFZlY3RvcjxSZWY8R2VuZXJpY0N1ZURhdGE+PiBub25FeHRlbnNpb25DdWVzOworICAgICAg
ICAgICAgICAgIFZlY3RvcjxSZWY8SW5iYW5kR2VuZXJpY0N1ZT4+IG5vbkV4dGVuc2lvbkN1ZXM7
CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBhcnJpdmluZ0N1ZSA6IGFycml2aW5nQ3Vlcykg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoIWFycml2aW5nQ3VlLT5kb2VzRXh0ZW5kQ3VlRGF0
YSgqY3VlRGF0YSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghYXJyaXZpbmdDdWUtPmRvZXNF
eHRlbmRDdWVEYXRhKGN1ZURhdGEpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm9uRXh0ZW5z
aW9uQ3Vlcy5hcHBlbmQoV1RGTW92ZShhcnJpdmluZ0N1ZSkpOwogICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAi
Zm91bmQgYW4gZXh0ZW5zaW9uIGN1ZSAiLCAqY3VlRGF0YSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZm91bmQgYW4gZXh0ZW5zaW9uIGN1ZSAiLCBj
dWVEYXRhLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBib29s
IGN1cnJlbnRDdWVJc0V4dGVuZGVkID0gKGFycml2aW5nQ3Vlcy5zaXplKCkgIT0gbm9uRXh0ZW5z
aW9uQ3Vlcy5zaXplKCkpOwpAQCAtMzc0LDE1ICszNzcsMTUgQEAgdm9pZCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1
dGVkU3QKIAogICAgICAgICAgICAgICAgIGlmIChtX3BlbmRpbmdDdWVTdGF0dXMgPT0gVmFsaWQp
IHsKICAgICAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0RW5kVGltZShtX2N1cnJlbnRDdWVF
bmRUaW1lKTsKLSAgICAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWND
dWVEYXRhOjpDb21wbGV0ZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldFN0YXR1
cyhHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZSk7CiAKLSAgICAgICAgICAgICAgICAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInVwZGF0aW5nIGN1ZSAiLCAqY3VlRGF0YSk7Cisg
ICAgICAgICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ1cGRhdGluZyBjdWUg
IiwgY3VlRGF0YS5nZXQoKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50KCktPnVwZGF0
ZUdlbmVyaWNDdWUoKmN1ZURhdGEpOworICAgICAgICAgICAgICAgICAgICBjbGllbnQoKS0+dXBk
YXRlR2VuZXJpY0N1ZShjdWVEYXRhKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGFzc3VtZSB0aGF0IHRoZSBpbXBsaWNpdCBkdXJh
dGlvbiBpcyBpbnZhbGlkIGZvciBjdWVzIGRlbGl2ZXJlZCBkdXJpbmcgYSBzZWVrIGJlY2F1c2Ug
dGhlIEFWRiBkZWNvZGUgcGlwZWxpbmUgbWF5IG5vdAogICAgICAgICAgICAgICAgICAgICAvLyBz
ZWUgZXZlcnkgY3VlLCBzbyBETyBOT1QgdXBkYXRlIGN1ZSBkdXJhdGlvbiB3aGlsZSBzZWVraW5n
LgotICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiaWdub3Jpbmcg
Y3VlIGRlbGl2ZXJlZCBkdXJpbmcgc2VlayAiLCAqY3VlRGF0YSk7CisgICAgICAgICAgICAgICAg
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJpZ25vcmluZyBjdWUgZGVsaXZlcmVkIGR1cmlu
ZyBzZWVrICIsIGN1ZURhdGEuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlCkBAIC0zOTcsNyArNDAwLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1
dGVkU3QKICAgICBtX2N1cnJlbnRDdWVTdGFydFRpbWUgPSB0aW1lOwogCiAgICAgZm9yIChhdXRv
JiBjdWVEYXRhIDogYXJyaXZpbmdDdWVzKSB7Ci0gICAgICAgIG1fY3Vlcy5hcHBlbmQoY3VlRGF0
YS5wdHIoKSk7CisgICAgICAgIG1fY3Vlcy5hcHBlbmQoY3VlRGF0YS5nZXQoKSk7CiAgICAgICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgY3VlICIsIGN1ZURhdGEuZ2V0KCkpOwog
ICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZShjdWVEYXRhKTsKICAgICB9CkBAIC00MjYs
MTAgKzQyOSwxMCBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNvbXBs
ZXRlZEN1ZXMoKQogICAgICAgICBsb25nIGN1cnJlbnRDdWUgPSBtX2N1ZXMuc2l6ZSgpIC0gMTsK
ICAgICAgICAgZm9yICg7IGN1cnJlbnRDdWUgPj0gMDsgLS1jdXJyZW50Q3VlKSB7CiAgICAgICAg
ICAgICBhdXRvJiBjdWUgPSBtX2N1ZXNbY3VycmVudEN1ZV07Ci0gICAgICAgICAgICBpZiAoY3Vl
LT5zdGF0dXMoKSAhPSBHZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUpCisgICAgICAgICAgICBpZiAo
Y3VlLT5zdGF0dXMoKSAhPSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgInJlbW92aW5nIGN1ZSAiLCAqY3VlKTsKKyAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICJyZW1vdmluZyBjdWUgIiwgY3VlLmdldCgpKTsKIAogICAgICAgICAgICAgbV9jdWVz
LnJlbW92ZShjdXJyZW50Q3VlKTsKICAgICAgICAgfQpAQCAtNDQ5LDcgKzQ1Miw3IEBAIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVzZXRDdWVWYWx1ZXMoKQogCiAgICAgaWYgKGF1
dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY3VlIDog
bV9jdWVzKQotICAgICAgICAgICAgY2xpZW50LT5yZW1vdmVHZW5lcmljQ3VlKCpjdWUpOworICAg
ICAgICAgICAgY2xpZW50LT5yZW1vdmVHZW5lcmljQ3VlKGN1ZSk7CiAgICAgfQogCiAgICAgbV9j
dWVzLnNocmluaygwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRi5oCmluZGV4IDVkODcxMDczN2EzNGY3YTUzYjg4ZjViM2NlYjMwYjRkYWZjOTNlYjguLjA1
MDIyNDQxZmZlMWYyNzU4ZGVmMzdkODRiNmJjODdlMTlmMjIwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtODEsNyArODEsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihBVkZJbmJhbmRU
cmFja1BhcmVudCosIEN1ZUZvcm1hdCk7CiAKLSAgICB2b2lkIHByb2Nlc3NDdWVBdHRyaWJ1dGVz
KENGQXR0cmlidXRlZFN0cmluZ1JlZiwgR2VuZXJpY0N1ZURhdGEmKTsKKyAgICBSZWY8SW5iYW5k
R2VuZXJpY0N1ZT4gcHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmKTsK
ICAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmLCBjb25zdCBNZWRp
YVRpbWUmKTsKICAgICB2b2lkIHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlSZWYsIGNvbnN0
IE1lZGlhVGltZSYpOwogICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwpAQCAtOTYsNyAr
OTYsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBtX2N1cnJlbnRDdWVTdGFydFRpbWU7CiAg
ICAgTWVkaWFUaW1lIG1fY3VycmVudEN1ZUVuZFRpbWU7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEdl
bmVyaWNDdWVEYXRhPj4gbV9jdWVzOworICAgIFZlY3RvcjxSZWY8SW5iYW5kR2VuZXJpY0N1ZT4+
IG1fY3VlczsKICAgICBBVkZJbmJhbmRUcmFja1BhcmVudCogbV9vd25lcjsKIAogICAgIGVudW0g
UGVuZGluZ0N1ZVN0YXR1cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNDNlNjliMDY3YTcwZTE2N2U4
M2U4NGZkN2E2NmEyOTRhZmFhMDM3OC4uZjVhNTRhZmJmYTY2ODg0ODQyMjYzN2U3YmM0ZGJiMDRl
MDViOTBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNsaWVudCgpLT5hZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAg
fQogCi0gICAgdm9pZCBhZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQorICAgIHZv
aWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiBkYXRhKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGN1ZUZvcm1hdCgpID09IEN1ZUZvcm1hdDo6R2VuZXJpYyk7CiAgICAgICAgIGNsaWVu
dCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA4NzRlZDVmMThhMjI5YWQ3NzNiZTFjMmVhNGEyZTBi
YTY0OWEzZDkyLi42NjJjOTkwOTYyN2RmMmJhOWYzM2UwYmQ1MjZmMjFhODFiYzgxZDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjQz
NSw3ICsyNDM1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKIHsKICAgICBBU1NFUlQoZW50
cnkpOwogCi0gICAgYXV0byBjdWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0
byBjdWUgPSBJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoKTsKIAogICAgIGdpbnQ2NCBzdGFydCA9
IC0xLCBzdG9wID0gLTE7CiAgICAgZ3N0X3RvY19lbnRyeV9nZXRfc3RhcnRfc3RvcF90aW1lcyhl
bnRyeSwgJnN0YXJ0LCAmc3RvcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAppbmRleCAzMmM5YjdlMTJlNWE3MmNi
MGJiYmQwYTk1ZTAzMTE4ZTA3MjQwYmMxLi5hZjY0YzgyYjkwMjNhZDIzNDE0MjNjZjg1ZGI0OTVh
NzZjNGM2YjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTExOCwxOSArMTE4LDE5IEBAIHZvaWQgUmVt
b3RlVGV4dFRyYWNrUHJveHk6OnJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lCiB9CiAjZW5kaWYKIAotdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6
YWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpCit2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5
OjphZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGN1ZSkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6QWRkR2VuZXJpY0N1ZShtX2lkZW50aWZpZXIsIGN1ZS5jdWVE
YXRhKCkpLCBtX3BsYXllci5pZGVuZGlmaWVyKCkpOwogfQogCi12b2lkIFJlbW90ZVRleHRUcmFj
a1Byb3h5Ojp1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgUmVtb3RlVGV4
dFRyYWNrUHJveHk6OnVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpVcGRhdGVHZW5lcmljQ3VlKG1faWRl
bnRpZmllciwgY3VlLmN1ZURhdGEoKSksIG1fcGxheWVyLmlkZW5kaWZpZXIoKSk7CiB9CiAKLXZv
aWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnJlbW92ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEm
KQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5l
cmljQ3VlJiBjdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3dlYlByb2Nlc3ND
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlJlbW92
ZUdlbmVyaWNDdWUobV9pZGVudGlmaWVyLCBjdWUuY3VlRGF0YSgpKSwgbV9wbGF5ZXIuaWRlbmRp
ZmllcigpKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRGaWxl
SGVhZGVyKFN0cmluZyYmIGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKaW5kZXggZTI4NmVjNDg5NDY3M2E0ZjJi
NTYxZDIzOGIwNmY2Mjc1MzZjZmU0NS4uMGJlMTU0NTFkOWFiODQ5YjlhYTQ5YjU0YzMxNTk0NGNk
NmY4ZjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVRleHRUcmFja1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5LmgKQEAgLTYxLDkgKzYxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwogI2VuZGlmCiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpOwotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZUdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
R2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdl
bmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5l
cmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZU
VEZpbGVIZWFkZXIoU3RyaW5nJiYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURh
dGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDVkNDMyZjI4ZGFkMzExZDM1YWJiMDE2OTQyNmNm
YmJiNzE5ZTFmMTMuLjQ3YjU4NzgyN2YzMTg4MWU2MzA0ZTk0ZmQ3OWFlOTYzNzAxMjUwZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNTY5LDYgKzU2OSw3
IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6U2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCc6IFsnPFdlYkNvcmUvU2hhcmVEYXRhLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpGb250Q2hhbmdlcyc6IFsnPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4n
XSwKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lTG9hZFR5cGUnOiBbJzxXZWJDb3JlL0ZyYW1lTG9h
ZGVyVHlwZXMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJzogWyc8V2Vi
Q29yZS9JbmJhbmRHZW5lcmljQ3VlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpHcmFtbWFyRGV0
YWlsJzogWyc8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6SGFzSW5zZWN1cmVDb250ZW50JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpIaWdobGlnaHQnOiBbJzxXZWJDb3JlL0luc3BlY3Rvck92ZXJs
YXkuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZjYzYjIzMGY2Mjdk
MTJjYzZlYzNlZjdkZDZjZTZhZDEyOTdhYTZhLi4xYWI3MGU2NjRkZmQ5OTlkNmZmM2I1YmViODcy
Y2ZmN2M5YjNkN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0xMTYsMTgg
KzExNiwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjbwogICAgIGlmICh1cmwuaXNMb2NhbEZp
bGUoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwogICAgICAg
ICBhdXRvIGZpbGVTeXN0ZW1QYXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAgICAgIGJv
b2wgY3JlYXRlZEV4dGVuc2lvbiA9IGZhbHNlOwogCisgICAgICAgIGF1dG8gY3JlYXRlRXh0ZW5z
aW9uID0gWyZdIHsKICNpZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJT05fVE9fUFJP
Q0VTU19CWV9BVURJVF9UT0tFTikKLSAgICAgICAgYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpOwotICAgICAgICBBU1NFUlQoYXVk
aXRUb2tlbik7Ci0gICAgICAgIGlmIChhdWRpdFRva2VuKQotICAgICAgICAgICAgY3JlYXRlZEV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9r
ZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKLSAgICAgICAg
ZWxzZQorICAgICAgICAgICAgaWYgKGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdlci5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihmaWxlU3lzdGVt
UGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUpOwogI2VuZGlmCi0gICAgICAgIGNyZWF0
ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBh
dGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBoYW5kbGUpOwogCi0gICAgICAg
IGlmICghY3JlYXRlZEV4dGVuc2lvbikgeworICAgICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZE9ubHksIGhhbmRsZSk7CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKCFjcmVhdGVF
eHRlbnNpb24oKSkgewogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8gY3JlYXRl
IHNhbmRib3ggZXh0ZW5zaW9uIGhhbmRsZSBmb3IgR1BVUHJvY2VzcyB1cmwuXG4iKTsKICAgICAg
ICAgICAgIG1fY2FjaGVkU3RhdGUubmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAgICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hh
bmdlZCgpOwpAQCAtNDMyLDcgKzQzMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpyZW1vdGVBdWRpb1RyYWNrQ29uZmlndXJhdGlvbkNoYW5nZWQoVHJhY2tQcml2YXRlCiB7CiAg
ICAgQVNTRVJUKG1fYXVkaW9UcmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOwogCi0gICAgaWYg
KGNvbnN0IGF1dG8mIHRyYWNrID0gbV9hdWRpb1RyYWNrcy5nZXQoaWRlbnRpZmllcikpCisgICAg
aWYgKGF1dG8gdHJhY2sgPSBtX2F1ZGlvVHJhY2tzLmdldChpZGVudGlmaWVyKSkKICAgICAgICAg
dHJhY2stPnVwZGF0ZUNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiB9CiAK
QEAgLTQ2Myw3ICs0NjIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3Rl
VGV4dFRyYWNrQ29uZmlndXJhdGlvbkNoYW5nZWQoVHJhY2tQcml2YXRlUgogewogICAgIEFTU0VS
VChtX3RleHRUcmFja3MuY29udGFpbnMoaWQpKTsKIAotICAgIGlmIChjb25zdCBhdXRvJiB0cmFj
ayA9IG1fdGV4dFRyYWNrcy5nZXQoaWQpKQorICAgIGlmIChhdXRvIHRyYWNrID0gbV90ZXh0VHJh
Y2tzLmdldChpZCkpCiAgICAgICAgIHRyYWNrLT51cGRhdGVDb25maWd1cmF0aW9uKFdURk1vdmUo
Y29uZmlndXJhdGlvbikpOwogfQogCkBAIC00NzEsNyArNDcwLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnBhcnNlV2ViVlRURmlsZUhlYWRlcihUcmFja1ByaXZhdGVSZW1vdGVJ
ZGVudGlmaWUKIHsKICAgICBBU1NFUlQobV90ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKIAotICAgIGlmIChjb25zdCBhdXRvJiB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRp
ZmllcikpCisgICAgaWYgKGF1dG8gdHJhY2sgPSBtX3RleHRUcmFja3MuZ2V0KGlkZW50aWZpZXIp
KQogICAgICAgICB0cmFjay0+cGFyc2VXZWJWVFRGaWxlSGVhZGVyKFdURk1vdmUoaGVhZGVyKSk7
CiB9CiAKQEAgLTQ3OSw3ICs0NzgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGFyc2VXZWJWVFRDdWVEYXRhKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaQogewogICAg
IEFTU0VSVChtX3RleHRUcmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOwogCi0gICAgaWYgKGNv
bnN0IGF1dG8mIHRyYWNrID0gbV90ZXh0VHJhY2tzLmdldChpZGVudGlmaWVyKSkKKyAgICBpZiAo
YXV0byB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRpZmllcikpCiAgICAgICAgIHRyYWNr
LT5wYXJzZVdlYlZUVEN1ZURhdGEoV1RGTW92ZShkYXRhKSk7CiB9CiAKQEAgLTQ4Nyw3ICs0ODYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRDdWVEYXRhU3Ry
dWN0KFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aQogewogICAgIEFTU0VSVChtX3RleHRUcmFja3Mu
Y29udGFpbnMoaWRlbnRpZmllcikpOwogCi0gICAgaWYgKGNvbnN0IGF1dG8mIHRyYWNrID0gbV90
ZXh0VHJhY2tzLmdldChpZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byB0cmFjayA9IG1fdGV4dFRy
YWNrcy5nZXQoaWRlbnRpZmllcikpCiAgICAgICAgIHRyYWNrLT5wYXJzZVdlYlZUVEN1ZURhdGFT
dHJ1Y3QoV1RGTW92ZShkYXRhKSk7CiB9CiAKQEAgLTQ5NSw3ICs0OTQsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkRGF0YUN1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkZW50aWZpZQogewogICAgIEFTU0VSVChtX3RleHRUcmFja3MuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogCi0gICAgaWYgKGNvbnN0IGF1dG8mIHRyYWNrID0gbV90ZXh0VHJhY2tzLmdldChp
ZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRp
ZmllcikpCiAgICAgICAgIHRyYWNrLT5hZGREYXRhQ3VlKFdURk1vdmUoc3RhcnQpLCBXVEZNb3Zl
KGVuZCksIFdURk1vdmUoZGF0YSkpOwogfQogCkBAIC01MDQsNyArNTAzLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmFkZERhdGFDdWVXaXRoVHlwZShUcmFja1ByaXZhdGVSZW1v
dGVJZGVudGlmaWVyIGkKIHsKICAgICBBU1NFUlQobV90ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50
aWZpZXIpKTsKIAotICAgIGlmIChjb25zdCBhdXRvJiB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQo
aWRlbnRpZmllcikpCisgICAgaWYgKGF1dG8gdHJhY2sgPSBtX3RleHRUcmFja3MuZ2V0KGlkZW50
aWZpZXIpKQogICAgICAgICB0cmFjay0+YWRkRGF0YUN1ZVdpdGhUeXBlKFdURk1vdmUoc3RhcnQp
LCBXVEZNb3ZlKGVuZCksIFdURk1vdmUoZGF0YSksIFdURk1vdmUodHlwZSkpOwogfQogCkBAIC01
MTIsNyArNTExLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZURhdGFD
dWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGkKIHsKICAgICBBU1NFUlQobV90
ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGlmIChjb25zdCBhdXRvJiB0
cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRpZmllcikpCisgICAgaWYgKGF1dG8gdHJhY2sg
PSBtX3RleHRUcmFja3MuZ2V0KGlkZW50aWZpZXIpKQogICAgICAgICB0cmFjay0+dXBkYXRlRGF0
YUN1ZShXVEZNb3ZlKHN0YXJ0KSwgV1RGTW92ZShlbmQpLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIApA
QCAtNTIwLDExICs1MTksMzUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlbW92
ZURhdGFDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGkKIHsKICAgICBBU1NF
UlQobV90ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGlmIChjb25zdCBh
dXRvJiB0cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoaWRlbnRpZmllcikpCisgICAgaWYgKGF1dG8g
dHJhY2sgPSBtX3RleHRUcmFja3MuZ2V0KGlkZW50aWZpZXIpKQogICAgICAgICB0cmFjay0+cmVt
b3ZlRGF0YUN1ZShXVEZNb3ZlKHN0YXJ0KSwgV1RGTW92ZShlbmQpLCBXVEZNb3ZlKGRhdGEpKTsK
IH0KICNlbmRpZgogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkR2VuZXJpY0N1
ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdlbmVyaWNDdWVEYXRh
JiYgY3VlRGF0YSkKK3sKKyAgICBBU1NFUlQobV90ZXh0VHJhY2tzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKKworICAgIGlmIChhdXRvIHRyYWNrID0gbV90ZXh0VHJhY2tzLmdldChpZGVudGlmaWVy
KSkKKyAgICAgICAgdHJhY2stPmFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZTo6Y3JlYXRl
KFdURk1vdmUoY3VlRGF0YSkpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnVwZGF0ZUdlbmVyaWNDdWUoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBHZW5lcmljQ3VlRGF0YSYmIGN1ZURhdGEpCit7CisgICAgQVNTRVJUKG1fdGV4dFRyYWNrcy5j
b250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBpZiAoYXV0byB0cmFjayA9IG1fdGV4dFRyYWNr
cy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHRyYWNrLT51cGRhdGVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWU6OmNyZWF0ZShXVEZNb3ZlKGN1ZURhdGEpKSk7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpyZW1vdmVHZW5lcmljQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgR2VuZXJpY0N1ZURhdGEmJiBjdWVEYXRhKQoreworICAgIEFT
U0VSVChtX3RleHRUcmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgaWYgKGF1dG8g
dHJhY2sgPSBtX3RleHRUcmFja3MuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB0cmFjay0+cmVt
b3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlOjpjcmVhdGUoV1RGTW92ZShjdWVEYXRhKSkp
OworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWRkUmVtb3RlVmlkZW9UcmFj
ayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV92aWRlb1RyYWNrcy5lbnN1cmUoaWRlbnRpZmllciwgWyZdIHsKQEAgLTU1Miw3ICs1NzUs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3RlVmlkZW9UcmFja0NvbmZp
Z3VyYXRpb25DaGFuZ2VkKFRyYWNrUHJpdmF0ZQogewogICAgIEFTU0VSVChtX3ZpZGVvVHJhY2tz
LmNvbnRhaW5zKGlkKSk7CiAKLSAgICBpZiAoY29uc3QgYXV0byYgdHJhY2sgPSBtX3ZpZGVvVHJh
Y2tzLmdldChpZCkpCisgICAgaWYgKGF1dG8gdHJhY2sgPSBtX3ZpZGVvVHJhY2tzLmdldChpZCkp
CiAgICAgICAgIHRyYWNrLT51cGRhdGVDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCAxMzJmMzBhYjI5YjZlNTA5
ZjExMzk0OTI1ODBhNmUzNjcxY2M3OTA5Li41NjhjMTY4ZjUwYjRlOGRjNTc3MTUxZGFjYTY3NDgy
YTc3NDA4NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTQzLDYgKzQzLDcgQEAg
Y2xhc3MgTWFjaFNlbmRSaWdodDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEdl
bmVyaWNDdWVEYXRhOwogY2xhc3MgSVNPV2ViVlRUQ3VlOwogY2xhc3MgU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlOwogfQpAQCAtMTIyLDYgKzEyMywxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdmVEYXRhQ3VlKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIE1lZGlhVGltZSYm
IHN0YXJ0LCBNZWRpYVRpbWUmJiBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVWYWx1ZSYmKTsKICNlbmRpZgogCisgICAgdm9pZCBhZGRHZW5lcmljQ3VlKFRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiYpOworICAgIHZvaWQg
dXBkYXRlR2VuZXJpY0N1ZShUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YSYmKTsKKyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoVHJhY2tQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEmJik7CisKICAgICB2b2lk
IHJlcXVlc3RSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6
TG9hZE9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1v
dmVSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZXNv
dXJjZU5vdFN1cHBvcnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbgppbmRleCBlODg5N2I2YTEwYTEwZDRiNzAwOTI5OGM3YWEyNzI4YmZlMTEyOTdhLi4z
ZmZjZjM2ZWZlMjRiM2QwODUwZWVhMjg2ZTJjZTcyOGU0YTJmYzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtNTcsOSArNTcsOSBAQCBtZXNzYWdl
cyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAgICAgUmVtb3Zl
RGF0YUN1ZShXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgTWVk
aWFUaW1lIHN0YXJ0LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWUgY3VlRGF0YSkKICNlbmRpZgogCi0gICAgIyMgQWRkR2VuZXJpY0N1ZShXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCi0gICAgIyMgVXBkYXRlR2VuZXJpY0N1ZShXZWJDb3Jl
OjpHZW5lcmljQ3VlRGF0YSBjdWUpCi0gICAgIyMgUmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpH
ZW5lcmljQ3VlRGF0YSBjdWUpCisgICAgQWRkR2VuZXJpY0N1ZShXZWJLaXQ6OlRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgc3RydWN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
IGN1ZSkKKyAgICBVcGRhdGVHZW5lcmljQ3VlKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciB0cmFja0lELCBzdHJ1Y3QgV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQorICAg
IFJlbW92ZUdlbmVyaWNDdWUoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRy
YWNrSUQsIHN0cnVjdCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCiAKICAgICBBZGRSZW1v
dGVWaWRlb1RyYWNrKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lE
LCBzdHJ1Y3QgV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24pCiAgICAgUmVtb3ZlUmVtb3RlVmlkZW9UcmFjayhXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIgdHJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGI4
MDdhZmMwMDVmODAyYmNkMTA5ZmI1NWM1ZGRhNzkyMGExZmI4ZDguLjE1ZDU0OTkxMjE5OTU3ZDZi
M2JhMjAxYWNmOTYyYjFmNjBhMzhhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAt
OTAsMjIgKzkwLDI3IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmln
dXJhdGlvbihUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhCiAgICAgbV9pc0RlZmF1bHQg
PSBjb25maWd1cmF0aW9uLmlzRGVmYXVsdDsKIH0KIAotdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVt
b3RlOjphZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikKK3ZvaWQgVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZTo6YWRkR2VuZXJpY0N1ZShSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gY3VlKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKGNsaWVudCgpKTsKKyAgICBpZiAoYXV0byog
Y2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+YWRkR2VuZXJpY0N1ZShj
dWUpOwogfQogCi12b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUdlbmVyaWNDdWUo
R2VuZXJpY0N1ZURhdGEmKQordm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVHZW5l
cmljQ3VlKFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBjdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBBU1NFUlQoY2xpZW50KCkpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5j
bGllbnQoKSkKKyAgICAgICAgY2xpZW50LT51cGRhdGVHZW5lcmljQ3VlKGN1ZSk7CiB9CiAKLXZv
aWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0
YSYpCit2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnJlbW92ZUdlbmVyaWNDdWUoUmVmPElu
YmFuZEdlbmVyaWNDdWU+IGN1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VS
VChjbGllbnQoKSk7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAg
ICAgICBjbGllbnQtPnJlbW92ZUdlbmVyaWNDdWUoY3VlKTsKIH0KIAotCiB2b2lkIFRleHRUcmFj
a1ByaXZhdGVSZW1vdGU6OnBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiB7
CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggYTA3ZGQ5
OTRjY2Q4MDllNzUzZWNlMjhmM2I1NjJhZDIzZTljYmE5MC4uYjA3MDY0MmYzNjA0OTVmZWI4YmEx
N2Y5ZDc1MmQxYzlkY2JjNjM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgR2VuZXJpY0N1ZURhdGE7CitjbGFzcyBJbmJhbmRHZW5lcmljQ3VlOwogY2xhc3MgSVNPV2Vi
VlRUQ3VlOwogfQogCkBAIC00OSw5ICs0OSw2IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTsKIGNsYXNzIFRleHRUcmFja1ByaXZhdGVSZW1vdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZSkKIHB1YmxpYzoKLSAgICB1c2luZyBHZW5lcmljQ3VlRGF0YSA9
IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOwotICAgIHVzaW5nIElTT1dlYlZUVEN1ZSA9IFdlYkNv
cmU6OklTT1dlYlZUVEN1ZTsKLSAgICB1c2luZyBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFs
dWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU7CiAKICAgICBzdGF0
aWMgUmVmPFRleHRUcmFja1ByaXZhdGVSZW1vdGU+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVuZGlmaWVyLCBU
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiAgICAg
ewpAQCAtNjAsMTkgKzU3LDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkRGF0YUN1ZShNZWRp
YVRpbWUmJiBzdGFydCwgTWVkaWFUaW1lJiYgZW5kLCBJUEM6OkRhdGFSZWZlcmVuY2UmJik7CiAK
KyAgICB1c2luZyBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUgPSBXZWJDb3JlOjpTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU7CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0g
ICAgdm9pZCBhZGREYXRhQ3VlV2l0aFR5cGUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYm
IGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYsIFN0cmluZyYm
KTsKLSAgICB2b2lkIHVwZGF0ZURhdGFDdWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYm
IGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYpOwotICAgIHZv
aWQgcmVtb3ZlRGF0YUN1ZShNZWRpYVRpbWUmJiBzdGFydCwgTWVkaWFUaW1lJiYgZW5kLCBXZWJD
b3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmJik7CisgICAgdm9pZCBhZGREYXRh
Q3VlV2l0aFR5cGUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiYsIFN0cmluZyYmKTsKKyAgICB2b2lkIHVwZGF0ZURhdGFD
dWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZVZhbHVlJiYpOworICAgIHZvaWQgcmVtb3ZlRGF0YUN1ZShNZWRpYVRpbWUmJiBzdGFy
dCwgTWVkaWFUaW1lJiYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmJik7CiAj
ZW5kaWYKIAotICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSYp
OwotICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSYpOwot
ICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSYpOworICAg
IHVzaW5nIEluYmFuZEdlbmVyaWNDdWUgPSBXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlOworICAg
IHZvaWQgYWRkR2VuZXJpY0N1ZShSZWY8SW5iYW5kR2VuZXJpY0N1ZT4pOworICAgIHZvaWQgdXBk
YXRlR2VuZXJpY0N1ZShSZWY8SW5iYW5kR2VuZXJpY0N1ZT4pOworICAgIHZvaWQgcmVtb3ZlR2Vu
ZXJpY0N1ZShSZWY8SW5iYW5kR2VuZXJpY0N1ZT4pOwogCisgICAgdXNpbmcgSVNPV2ViVlRUQ3Vl
ID0gV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOwogICAgIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVy
KFN0cmluZyYmKTsKICAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKLSAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YVN0cnVjdChXZWJDb3JlOjpJ
U09XZWJWVFRDdWUmJik7CisgICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGFTdHJ1Y3QoSVNPV2Vi
VlRUQ3VlJiYpOwogCiAgICAgdm9pZCB1cGRhdGVDb25maWd1cmF0aW9uKFRleHRUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDBiNDYzNmE0MzRjNWFkYzc0MzIw
ZTRiMWQyMzk4YjlmMmQ5MjU1Ni4uMDQ4ZjgyMDkyMTc4NGNiZjYyN2FkZjgxODljOWQ3MDc3MGE0
YWY3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAyLTIxICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW4tYmFuZCBnZW5lcmlj
IGN1ZXMgd2hlbiBsb2FkaW5nIG1lZGlhIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDgwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTY4Nzk0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wMi0y
NiAgTmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgcGxhdGZvcm0gdGVzdHMgZm9yIFdlYiBTaGFyZSBBUEkgZmFpbCBpbmNvcnJlY3RseQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTEzYTVkNDQ4NDJmYWI5
Y2U0NzM0YmRkZjM3YzRlYWU1ZDIwNzVlOC4uNjQ4NDgxMzZjNzQ2MzA4ZWVjZmZlM2Y1ZTY1Yzg3
MTA5MGE5OWFkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBA
IC0yMzIsNiArMjMyLDEzIEBAIGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy13ZWJ2dHQtdHJhY2tz
Lmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRh
dGEuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRh
ZGF0YS1jcmFzaC5odG1sIFsgUGFzcyBdCiAKK21lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtY3Vl
cy1hZGRlZC1vbmNlLmh0bWwgWyBQYXNzIF0KK21lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5
bGUuaHRtbCBbIFBhc3MgXQorbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1kdXBsaWNhdGUtdHJh
Y2tzLXdoZW4tc291cmNlLWNoYW5nZXMuaHRtbCBbIFBhc3MgXQorbWVkaWEvdHJhY2svdHJhY2st
aW4tYmFuZC1sZWdhY3ktYXBpLmh0bWwgWyBQYXNzIF0KK21lZGlhL3RyYWNrL3RyYWNrLWluLWJh
bmQuaHRtbCBbIFBhc3MgXQorbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1tZXRhZGF0YS1kaXNw
bGF5LW9yZGVyLmh0bWwgWyBQYXNzIF0KKwogYWNjZXNzaWJpbGl0eS9tZWRpYS1lbGVtZW50Lmh0
bWwgWyBTa2lwIF0KIGZhc3QvYmxvY2svZmxvYXQvbGlzdC1tYXJrZXItaXMtZmxvYXQtY3Jhc2gu
aHRtbCBbIFNraXAgXQogZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb24tcmVwbGFjZWQtaW4tdGFi
bGUtZGlzcGxheS1jcmFzaC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>