<?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>189351</bug_id>
          
          <creation_ts>2018-09-06 07:54:10 -0700</creation_ts>
          <short_desc>[MediaStream] Include supported frame rates in video capture presets</short_desc>
          <delta_ts>2018-09-06 15:10:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1457082</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-06 07:54:10 -0700</bug_when>
    <thetext>Include supported frame rates in video capture presets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457163</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-06 11:27:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/44188917&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457213</commentid>
    <comment_count>2</comment_count>
      <attachid>349060</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-06 13:24:41 -0700</bug_when>
    <thetext>Created attachment 349060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457229</commentid>
    <comment_count>3</comment_count>
      <attachid>349060</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-06 13:47:14 -0700</bug_when>
    <thetext>Comment on attachment 349060
Patch

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

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:61
&gt; +void RealtimeVideoSource::setSupportedPresets(const RealtimeVideoSource::VideoPresets&amp;&amp; presets)

s/const//

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:63
&gt; +    m_presets = presets;

WTFMove(presets);

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:65
&gt; +        m_presets.begin(), m_presets.end(),

How about merging these two as one line?

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:67
&gt; +            return (a.first.width() * a.first.height()) &lt; (b.first.width() * b.first.height());

Using a pair makes things a bit more complex to read.
Can we go with s/first/size/ and s/second/frameRates/?

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:98
&gt; +    for (auto&amp; preset : m_presets) {

Could be const auto&amp; I guess.

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:106
&gt; +        for (auto&amp; rate : rates) {

const auto&amp; I guess.
s/rates/preset.second/

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:131
&gt; +    for (auto preset : m_presets) {

const auto&amp;

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:133
&gt; +        const auto&amp; rates = preset.second;

Moving below closer to the first use?

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:139
&gt; +            match.frameRate = rates[rates.size() - 1].maximum;

rates.last().
There is no automatic guarantee that rates is not empty, but this should obviously always be the case.

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:163
&gt; +    if (!width &amp;&amp; !height &amp;&amp; !size.isEmpty())

Maybe this check should be included in bestSupportedSizeAndFrameRate?

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.h:50
&gt; +    void setSizeAndFrameRate(std::optional&lt;int&gt; width, std::optional&lt;int&gt; height, std::optional&lt;double&gt;) final;

Add frameRate name as well?

&gt; Source/WebCore/platform/mock/MockMediaDevice.h:122
&gt;          return MockDisplayProperties { *defaultFrameRate, Color::lightGray };

s/Color::lightGray/*fillColor/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457257</commentid>
    <comment_count>4</comment_count>
      <attachid>349060</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-06 14:32:00 -0700</bug_when>
    <thetext>Comment on attachment 349060
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:61
&gt;&gt; +void RealtimeVideoSource::setSupportedPresets(const RealtimeVideoSource::VideoPresets&amp;&amp; presets)
&gt; 
&gt; s/const//

OK

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:63
&gt;&gt; +    m_presets = presets;
&gt; 
&gt; WTFMove(presets);

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:65
&gt;&gt; +        m_presets.begin(), m_presets.end(),
&gt; 
&gt; How about merging these two as one line?

Sure.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:67
&gt;&gt; +            return (a.first.width() * a.first.height()) &lt; (b.first.width() * b.first.height());
&gt; 
&gt; Using a pair makes things a bit more complex to read.
&gt; Can we go with s/first/size/ and s/second/frameRates/?

OK, I defined a struct.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:98
&gt;&gt; +    for (auto&amp; preset : m_presets) {
&gt; 
&gt; Could be const auto&amp; I guess.

OK

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:106
&gt;&gt; +        for (auto&amp; rate : rates) {
&gt; 
&gt; const auto&amp; I guess.
&gt; s/rates/preset.second/

Sure.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:131
&gt;&gt; +    for (auto preset : m_presets) {
&gt; 
&gt; const auto&amp;

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:133
&gt;&gt; +        const auto&amp; rates = preset.second;
&gt; 
&gt; Moving below closer to the first use?

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:163
&gt;&gt; +    if (!width &amp;&amp; !height &amp;&amp; !size.isEmpty())
&gt; 
&gt; Maybe this check should be included in bestSupportedSizeAndFrameRate?

I think it is better to have bestSupportedSizeAndFrameRate only return a matching preset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457258</commentid>
    <comment_count>5</comment_count>
      <attachid>349075</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-06 14:32:09 -0700</bug_when>
    <thetext>Created attachment 349075
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457281</commentid>
    <comment_count>6</comment_count>
      <attachid>349075</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-06 15:10:24 -0700</bug_when>
    <thetext>Comment on attachment 349075
Patch for landing

Clearing flags on attachment: 349075

Committed r235760: &lt;https://trac.webkit.org/changeset/235760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457282</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-06 15:10:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349060</attachid>
            <date>2018-09-06 13:24:41 -0700</date>
            <delta_ts>2018-09-06 14:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189351-20180906132441.patch</filename>
            <type>text/plain</type>
            <size>28967</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRhYWI0NmYwYTk5OWM1
ZDE3M2VhZTBhNmIyZjAwMzBhM2FkOTU5Ni4uM2ZhODk2Y2JiYWJkMDMxOThiYmRlOTViNTg5OWYz
YWNiZWM3ZGRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE4LTA5LTA2ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gSW5jbHVkZSBzdXBwb3J0ZWQgZnJhbWUgcmF0ZXMgaW4gdmlkZW8gY2FwdHVyZSBwcmVzZXRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzNTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTg4OTE3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0
eSBjaGFuZ2VkLgorCisgICAgICAgIEluY2x1ZGUgZnJhbWUgcmF0ZXMgYXMgd2VsbCBhcyB3aWR0
aC9oZWlnaHQgaW4gdmlkZW8gY2FwdHVyZSBwcmVzZXRzLCBzbyB0aGUgbW9jayB2aWRlbworICAg
ICAgICBjYXB0dXJlIGRldmljZXMgbW9kZWwgcmVhbCBjYW1lcmEgZGV2aWNlcyBtb3JlIGNsb3Nl
bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNpemVBbmRG
cmFtZVJhdGUpOiBSZW5hbWVkIGZyb20gYXBwbHlTaXplQW5kRnJhbWVSYXRlLiBVc2UKKyAgICAg
ICAgc2V0U2l6ZSBpbnN0ZWFkIG9mIHNldFdpZHRoIGFuZCBzZXRIZWlnaHQuCisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKTogYXBwbHlTaXpl
QW5kRnJhbWVSYXRlIC0+IHNldFNpemVBbmRGcmFtZVJhdGUuCisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlOjphcHBseVNpemVBbmRGcmFtZVJhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0V2lkdGgpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SGVpZ2h0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFN1cHBvcnRlZFBy
ZXNldHMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVNaW5NYXgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVWaWRlb1NvdXJjZTo6YWRkU3VwcG9ydGVkQ2FwYWJpbGl0aWVzIGNv
bnN0KTogQ2FsY3VsYXRlIGNhcGFiaWxpdGllcyBmcm9tCisgICAgICAgIHByZXNldHMuCisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJh
dGUpOiBVc2UgYmVzdFN1cHBvcnRlZFNpemVBbmRGcmFtZVJhdGUuCisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZVZpZGVvU291cmNlOjpiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0ZSk6IAor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjpzZXRTdXBwb3J0ZWRG
cmFtZVJhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OmJlc3RTdXBwb3J0ZWRDYXB0dXJlU2l6ZUZvcldpZHRoQW5kSGVpZ2h0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1l
UmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjpz
dXBwb3J0c0ZyYW1lUmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVWaWRl
b1NvdXJjZTo6c2V0U3VwcG9ydGVkQ2FwdHVyZVNpemVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c3Rv
cFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJl
U291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9D
YXB0dXJlU291cmNlOjphcHBseVNpemVBbmRGcmFtZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjcmVh
dGVEaXNwbGF5U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmlj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NhbWVyYVByb3BlcnRpZXM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ2FtZXJhUHJvcGVydGllczo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tEaXNwbGF5UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tEaXNwbGF5UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRlZmF1bHREZXZpY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y2FwYWJpbGl0aWVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzZXR0aW5ncyBjb25zdCk6CisKIDIw
MTgtMDktMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZD
XVtCRkNdIEFkZCBzdXBwb3J0IGZvciBtaW4obWF4KS13aWR0aApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cAppbmRleCAwNzExM2ZlMGEyZTRkZmY3NzdiY2E4OGMwZGM0NWE1OWY5YmMzNDZmLi5mMjc5M2Yz
OGMwNWE5YTMxYzcwOGUxZDQyMjMwM2U4NWQwNmE1ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cApAQCAtNDM4LDEyICs0MzgsMTQgQEAgc3RhdGljIHZvaWQgYXBwbHlOdW1lcmljQ29uc3RyYWlu
dChjb25zdCBOdW1lcmljQ29uc3RyYWludDxWYWx1ZVR5cGU+JiBjb25zdHJhaW4KICAgICAgICAg
KHNvdXJjZS4qYXBwbGllcikodmFsdWUpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0
aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxp
bnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gZnJhbWVSYXRlKQogeworICAgIEludFNpemUgc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBp
ZiAod2lkdGgpCi0gICAgICAgIHNldFdpZHRoKHdpZHRoLnZhbHVlKCkpOworICAgICAgICBzaXpl
LnNldFdpZHRoKHdpZHRoLnZhbHVlKCkpOwogICAgIGlmIChoZWlnaHQpCi0gICAgICAgIHNldEhl
aWdodChoZWlnaHQudmFsdWUoKSk7CisgICAgICAgIHNpemUuc2V0SGVpZ2h0KGhlaWdodC52YWx1
ZSgpKTsKKyAgICBzZXRTaXplKHNpemUpOwogICAgIGlmIChmcmFtZVJhdGUpCiAgICAgICAgIHNl
dEZyYW1lUmF0ZShmcmFtZVJhdGUudmFsdWUoKSk7CiB9CkBAIC04MTYsNyArODE4LDcgQEAgdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENv
bnN0cmFpbnQmIGNvbnN0cmFpbnQKICAgICB9CiAKICAgICBpZiAod2lkdGggfHwgaGVpZ2h0IHx8
IGZyYW1lUmF0ZSkKLSAgICAgICAgYXBwbHlTaXplQW5kRnJhbWVSYXRlKFdURk1vdmUod2lkdGgp
LCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUoZnJhbWVSYXRlKSk7CisgICAgICAgIHNldFNpemVB
bmRGcmFtZVJhdGUoV1RGTW92ZSh3aWR0aCksIFdURk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShmcmFt
ZVJhdGUpKTsKIAogICAgIGZvciAoYXV0byYgdmFyaWFudCA6IGNvbnN0cmFpbnRzKSB7CiAgICAg
ICAgIGlmICh2YXJpYW50LmNvbnN0cmFpbnRUeXBlKCkgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6
V2lkdGggfHwgdmFyaWFudC5jb25zdHJhaW50VHlwZSgpID09IE1lZGlhQ29uc3RyYWludFR5cGU6
OkhlaWdodCB8fCB2YXJpYW50LmNvbnN0cmFpbnRUeXBlKCkgPT0gTWVkaWFDb25zdHJhaW50VHlw
ZTo6RnJhbWVSYXRlKQpAQCAtODY1LDMwICs4NjcsNiBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBzZXR0aW5nc0RpZENoYW5nZShj
aGFuZ2VkKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRXaWR0aChpbnQgd2lk
dGgpCi17Ci0gICAgaWYgKHdpZHRoID09IG1fc2l6ZS53aWR0aCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3NpemUuc2V0V2lkdGgod2lkdGgpOwotICAgIGlmIChtX2FzcGVjdFJhdGlvKQot
ICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KHdpZHRoIC8gbV9hc3BlY3RSYXRpbyk7Ci0KLSAgICBz
ZXR0aW5nc0RpZENoYW5nZSh7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lk
dGgsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pOwotfQotCi12
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEhlaWdodChpbnQgaGVpZ2h0KQotewotICAgIGlm
IChoZWlnaHQgPT0gbV9zaXplLmhlaWdodCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bV9hc3BlY3RSYXRpbykKLSAgICAgICAgbV9zaXplLnNldFdpZHRoKGhlaWdodCAqIG1fYXNwZWN0
UmF0aW8pOwotICAgIG1fc2l6ZS5zZXRIZWlnaHQoaGVpZ2h0KTsKLQotICAgIHNldHRpbmdzRGlk
Q2hhbmdlKHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSk7Ci19Ci0KIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0RnJhbWVSYXRlKGRvdWJsZSByYXRlKQogewogICAgIGlmIChtX2Zy
YW1lUmF0ZSA9PSByYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IGUwOGU2NTZlM2U3MWUxMDZk
NjlkZmY5MDdmNzY4MjZiNmE3NDNkMmMuLjFlMWJiODJhZjUyNWZlNmRhM2FhMzA2MDNjNTI5NGI4
Y2IwMmVhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTE2NSw4ICsxNjUsNiBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKIAotICAgIHZvaWQg
c2V0V2lkdGgoaW50KTsKLSAgICB2b2lkIHNldEhlaWdodChpbnQpOwogICAgIHZvaWQgc2V0U2l6
ZShjb25zdCBJbnRTaXplJik7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQogCkBAIC0yMzMsNyArMjMxLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lk
dGgsIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPERv
dWJsZUNvbnN0cmFpbnQ+LCBTdHJpbmcmLCBkb3VibGUmIGZpdG5lc3NEaXN0YW5jZSk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50
PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8
aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPik7CiAKICAgICB2b2lkIG5vdGlmeU11dGVkT2JzZXJ2ZXJzKCkgY29uc3Q7CiAgICAgdm9p
ZCBub3RpZnlNdXRlZENoYW5nZShib29sIG11dGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5k
ZXggZjNmYzRlYTU1MWI4ZTdiMmEwYjMwMmIwODRkMjAwMWMxN2I1YWI1My4uMDcxOTVmZjQ2ZWMx
M2QxMjYxM2NhNDU5ZWE2NDM3MDYyMDYzZTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAg
LTU4LDg0ICs1OCwxMjAgQEAgdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpwcmVwYXJlVG9Qcm9k
dWNlRGF0YSgpCiAgICAgICAgIHNldFNpemUobV9kZWZhdWx0U2l6ZSk7CiB9CiAKLXZvaWQgUmVh
bHRpbWVWaWRlb1NvdXJjZTo6c2V0U3VwcG9ydGVkRnJhbWVSYXRlcyhWZWN0b3I8ZG91YmxlPiYm
IHJhdGVzKQordm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzZXRTdXBwb3J0ZWRQcmVzZXRzKGNv
bnN0IFJlYWx0aW1lVmlkZW9Tb3VyY2U6OlZpZGVvUHJlc2V0cyYmIHByZXNldHMpCiB7Ci0gICAg
bV9zdXBwb3J0ZWRGcmFtZVJhdGVzID0gV1RGTW92ZShyYXRlcyk7Ci0gICAgc3RkOjpzb3J0KG1f
c3VwcG9ydGVkRnJhbWVSYXRlcy5iZWdpbigpLCBtX3N1cHBvcnRlZEZyYW1lUmF0ZXMuZW5kKCkp
OworICAgIG1fcHJlc2V0cyA9IHByZXNldHM7CisgICAgc3RkOjpzb3J0KAorICAgICAgICBtX3By
ZXNldHMuYmVnaW4oKSwgbV9wcmVzZXRzLmVuZCgpLAorICAgICAgICBbJl0gKGNvbnN0IGF1dG8m
IGEsIGNvbnN0IGF1dG8mIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIChhLmZpcnN0
LndpZHRoKCkgKiBhLmZpcnN0LmhlaWdodCgpKSA8IChiLmZpcnN0LndpZHRoKCkgKiBiLmZpcnN0
LmhlaWdodCgpKTsKKyAgICB9KTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHByZXNldCA6IG1fcHJl
c2V0cykgeworICAgICAgICBzdGQ6OnNvcnQoCisgICAgICAgICAgICBwcmVzZXQuc2Vjb25kLmJl
Z2luKCksIHByZXNldC5zZWNvbmQuZW5kKCksCisgICAgICAgICAgICBbJl0gKGNvbnN0IGF1dG8m
IGEsIGNvbnN0IGF1dG8mIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiBhLm1p
bmltdW0gPCBiLm1pbmltdW07CisgICAgICAgIH0pOworICAgIH0KIH0KIAotdm9pZCBSZWFsdGlt
ZVZpZGVvU291cmNlOjphZGRTdXBwb3J0ZWRDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKSBjb25zdAordGVtcGxhdGUgPHR5cGVuYW1lIFZh
bHVlVHlwZT4KK3N0YXRpYyB2b2lkIHVwZGF0ZU1pbk1heChWYWx1ZVR5cGUmIG1pbiwgVmFsdWVU
eXBlJiBtYXgsIFZhbHVlVHlwZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQoIW1fc3VwcG9ydGVkQ2Fw
dHVyZVNpemVzLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFtX3N1cHBvcnRlZEZyYW1lUmF0ZXMu
aXNFbXB0eSgpKTsKKyAgICBtaW4gPSBzdGQ6Om1pbjxWYWx1ZVR5cGU+KG1pbiwgdmFsdWUpOwor
ICAgIG1heCA9IHN0ZDo6bWF4PFZhbHVlVHlwZT4obWF4LCB2YWx1ZSk7Cit9CiAKLSAgICBjYXBh
YmlsaXRpZXMuc2V0RnJhbWVSYXRlKHsgbV9zdXBwb3J0ZWRGcmFtZVJhdGVzWzBdLCBtX3N1cHBv
cnRlZEZyYW1lUmF0ZXNbbV9zdXBwb3J0ZWRGcmFtZVJhdGVzLnNpemUoKSAtIDFdIH0pOwordm9p
ZCBSZWFsdGltZVZpZGVvU291cmNlOjphZGRTdXBwb3J0ZWRDYXBhYmlsaXRpZXMoUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKSBjb25zdAoreworICAgIEFTU0VS
VCghbV9wcmVzZXRzLmlzRW1wdHkoKSk7CiAKICAgICBpbnQgbWluaW11bVdpZHRoID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKICAgICBpbnQgbWF4aW11bVdpZHRoID0gMDsKICAg
ICBpbnQgbWluaW11bUhlaWdodCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiAg
ICAgaW50IG1heGltdW1IZWlnaHQgPSAwOwotICAgIGZsb2F0IG1pbmltdW1Bc3BlY3RSYXRpbyA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKTsKLSAgICBmbG9hdCBtYXhpbXVtQXNw
ZWN0UmF0aW8gPSAwOwotICAgIGZvciAoY29uc3QgYXV0byYgc2l6ZSA6IG1fc3VwcG9ydGVkQ2Fw
dHVyZVNpemVzKSB7Ci0gICAgICAgIG1pbmltdW1XaWR0aCA9IHN0ZDo6bWluKG1pbmltdW1XaWR0
aCwgc2l6ZS53aWR0aCgpKTsKLSAgICAgICAgbWF4aW11bVdpZHRoID0gc3RkOjptYXgobWF4aW11
bVdpZHRoLCBzaXplLndpZHRoKCkpOwotCi0gICAgICAgIG1pbmltdW1IZWlnaHQgPSBzdGQ6Om1p
bihtaW5pbXVtSGVpZ2h0LCBzaXplLmhlaWdodCgpKTsKLSAgICAgICAgbWF4aW11bUhlaWdodCA9
IHN0ZDo6bWF4KG1heGltdW1IZWlnaHQsIHNpemUuaGVpZ2h0KCkpOwotCi0gICAgICAgIG1pbmlt
dW1Bc3BlY3RSYXRpbyA9IHN0ZDo6bWluKG1pbmltdW1Bc3BlY3RSYXRpbywgc2l6ZS5hc3BlY3RS
YXRpbygpKTsKLSAgICAgICAgbWF4aW11bUFzcGVjdFJhdGlvID0gc3RkOjptYXgobWF4aW11bUFz
cGVjdFJhdGlvLCBzaXplLmFzcGVjdFJhdGlvKCkpOworICAgIGRvdWJsZSBtaW5pbXVtQXNwZWN0
UmF0aW8gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpOworICAgIGRvdWJsZSBt
YXhpbXVtQXNwZWN0UmF0aW8gPSAwOworICAgIGRvdWJsZSBtaW5pbXVtRnJhbWVSYXRlID0gc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKKyAgICBkb3VibGUgbWF4aW11bUZyYW1l
UmF0ZSA9IDA7CisgICAgZm9yIChhdXRvJiBwcmVzZXQgOiBtX3ByZXNldHMpIHsKKyAgICAgICAg
Y29uc3QgYXV0byYgc2l6ZSA9IHByZXNldC5maXJzdDsKKyAgICAgICAgY29uc3QgYXV0byYgcmF0
ZXMgPSBwcmVzZXQuc2Vjb25kOworICAgICAgICB1cGRhdGVNaW5NYXgobWluaW11bVdpZHRoLCBt
YXhpbXVtV2lkdGgsIHNpemUud2lkdGgoKSk7CisgICAgICAgIHVwZGF0ZU1pbk1heChtaW5pbXVt
SGVpZ2h0LCBtYXhpbXVtSGVpZ2h0LCBzaXplLmhlaWdodCgpKTsKKworICAgICAgICB1cGRhdGVN
aW5NYXgobWluaW11bUFzcGVjdFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8sIHN0YXRpY19jYXN0
PGRvdWJsZT4oc2l6ZS53aWR0aCgpKSAvIHNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIGZvciAo
YXV0byYgcmF0ZSA6IHJhdGVzKSB7CisgICAgICAgICAgICB1cGRhdGVNaW5NYXgobWluaW11bUZy
YW1lUmF0ZSwgbWF4aW11bUZyYW1lUmF0ZSwgcmF0ZS5taW5pbXVtKTsKKyAgICAgICAgICAgIHVw
ZGF0ZU1pbk1heChtaW5pbXVtRnJhbWVSYXRlLCBtYXhpbXVtRnJhbWVSYXRlLCByYXRlLm1heGlt
dW0pOworICAgICAgICB9CiAgICAgfQotCiAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKHsgbWlu
aW11bVdpZHRoLCBtYXhpbXVtV2lkdGggfSk7CiAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodCh7
IG1pbmltdW1IZWlnaHQsIG1heGltdW1IZWlnaHQgfSk7CiAgICAgY2FwYWJpbGl0aWVzLnNldEFz
cGVjdFJhdGlvKHsgbWluaW11bUFzcGVjdFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8gfSk7Cisg
ICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZSh7IG1pbmltdW1GcmFtZVJhdGUsIG1heGltdW1G
cmFtZVJhdGUgfSk7CiB9CiAKIGJvb2wgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3VwcG9ydHNTaXpl
QW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+
IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKLSAgICBpZiAoIWhl
aWdodCAmJiAhd2lkdGggJiYgIWZyYW1lUmF0ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBpZiAoaGVpZ2h0IHx8IHdpZHRoKSB7Ci0gICAgICAgIGlmIChtX3N1cHBvcnRlZENhcHR1cmVT
aXplcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYg
KGJlc3RTdXBwb3J0ZWRDYXB0dXJlU2l6ZUZvcldpZHRoQW5kSGVpZ2h0KHdpZHRoLCBoZWlnaHQp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
IWZyYW1lUmF0ZSkKKyAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQgJiYgIWZyYW1lUmF0ZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gc3VwcG9ydHNGcmFtZVJhdGUoZnJhbWVS
YXRlLnZhbHVlKCkpOworICAgIHJldHVybiAhIWJlc3RTdXBwb3J0ZWRTaXplQW5kRnJhbWVSYXRl
KHdpZHRoLCBoZWlnaHQsIGZyYW1lUmF0ZSk7CiB9CiAKLUludFNpemUgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6YmVzdFN1cHBvcnRlZENhcHR1cmVTaXplRm9yV2lkdGhBbmRIZWlnaHQoc3RkOjpvcHRp
b25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0KQorc3RkOjpvcHRpb25h
bDxSZWFsdGltZVZpZGVvU291cmNlOjpDYXB0dXJlU2l6ZUFuZEZyYW1lUmF0ZT4gUmVhbHRpbWVW
aWRlb1NvdXJjZTo6YmVzdFN1cHBvcnRlZFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxp
bnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gZnJhbWVSYXRlKQogewotICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkKKyAgICBpZiAoIXdp
ZHRoICYmICFoZWlnaHQgJiYgIWZyYW1lUmF0ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IGZvciAoYXV0byBzaXplIDogbV9zdXBwb3J0ZWRDYXB0dXJlU2l6ZXMpIHsKLSAgICAgICAgaWYg
KCghd2lkdGggfHwgd2lkdGgudmFsdWUoKSA9PSBzaXplLndpZHRoKCkpICYmICghaGVpZ2h0IHx8
IGhlaWdodC52YWx1ZSgpID09IHNpemUuaGVpZ2h0KCkpKQotICAgICAgICAgICAgcmV0dXJuIHNp
emU7CisgICAgQ2FwdHVyZVNpemVBbmRGcmFtZVJhdGUgbWF0Y2g7CisgICAgZm9yIChhdXRvIHBy
ZXNldCA6IG1fcHJlc2V0cykgeworICAgICAgICBjb25zdCBhdXRvJiBzaXplID0gcHJlc2V0LmZp
cnN0OworICAgICAgICBjb25zdCBhdXRvJiByYXRlcyA9IHByZXNldC5zZWNvbmQ7CisgICAgICAg
IGlmICgod2lkdGggJiYgd2lkdGgudmFsdWUoKSAhPSBzaXplLndpZHRoKCkpIHx8IChoZWlnaHQg
JiYgaGVpZ2h0LnZhbHVlKCkgIT0gc2l6ZS5oZWlnaHQoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBtYXRjaC5zaXplID0gc2l6ZTsKKyAgICAgICAgaWYgKCFmcmFtZVJhdGUp
IHsKKyAgICAgICAgICAgIG1hdGNoLmZyYW1lUmF0ZSA9IHJhdGVzW3JhdGVzLnNpemUoKSAtIDFd
Lm1heGltdW07CisgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgIH0KKworICAgICAg
ICBjb25zdCBkb3VibGUgZXBzaWxvbiA9IDAuMDAxOworICAgICAgICBmb3IgKGF1dG8gcmF0ZSA6
IHJhdGVzKSB7CisgICAgICAgICAgICBpZiAoZnJhbWVSYXRlLnZhbHVlKCkgKyBlcHNpbG9uID49
IHJhdGUubWluaW11bSAmJiBmcmFtZVJhdGUudmFsdWUoKSAtIGVwc2lsb24gPD0gcmF0ZS5tYXhp
bXVtKSB7CisgICAgICAgICAgICAgICAgbWF0Y2guZnJhbWVSYXRlID0gZnJhbWVSYXRlLnZhbHVl
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9p
ZCBSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25h
bDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZnJhbWVSYXRlKQordm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzZXRTaXplQW5kRnJh
bWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdo
dCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKLSAgICBpZiAod2lkdGggfHwg
aGVpZ2h0KSB7Ci0gICAgICAgIEludFNpemUgc3VwcG9ydGVkU2l6ZSA9IGJlc3RTdXBwb3J0ZWRD
YXB0dXJlU2l6ZUZvcldpZHRoQW5kSGVpZ2h0KFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdo
dCkpOwotICAgICAgICBBU1NFUlQoIXN1cHBvcnRlZFNpemUuaXNFbXB0eSgpKTsKLSAgICAgICAg
aWYgKCFzdXBwb3J0ZWRTaXplLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHNldFNpemUoc3VwcG9y
dGVkU2l6ZSk7Ci0gICAgfQorICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVWaWRlb1NvdXJjZTo6
Q2FwdHVyZVNpemVBbmRGcmFtZVJhdGU+IG1hdGNoOworCisgICAgLy8gSWYgb25seSB0aGUgZnJh
bWVyYXRlIGlzIGNoYW5naW5nLCBmaXJzdCBzZWUgaWYgaXQgaXMgc3VwcG9ydGVkIHdpdGggdGhl
IGN1cnJlbnQgd2lkdGggYW5kIGhlaWdodC4KKyAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7
CisgICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0ICYmICFzaXplLmlzRW1wdHkoKSkKKyAgICAgICAg
bWF0Y2ggPSBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0ZShzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCksIGZyYW1lUmF0ZSk7CisKKyAgICBpZiAoIW1hdGNoKQorICAgICAgICBtYXRjaCA9
IGJlc3RTdXBwb3J0ZWRTaXplQW5kRnJhbWVSYXRlKHdpZHRoLCBoZWlnaHQsIGZyYW1lUmF0ZSk7
CiAKLSAgICBpZiAoZnJhbWVSYXRlKQotICAgICAgICBzZXRGcmFtZVJhdGUoZnJhbWVSYXRlLnZh
bHVlKCkpOworICAgIEFTU0VSVChtYXRjaCk7CisgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2V0U2l6ZShtYXRjaC0+c2l6ZSk7CisgICAgc2V0RnJhbWVSYXRlKG1hdGNo
LT5mcmFtZVJhdGUpOwogfQogCiB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmRpc3BhdGNoTWVk
aWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYgc2FtcGxlKQpAQCAtMTU3LDE2ICsxOTMs
NiBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2Vy
dmVycyhNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBs
ZSk7CiB9CiAKLWJvb2wgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3VwcG9ydHNGcmFtZVJhdGUoZG91
YmxlIGZyYW1lUmF0ZSkKLXsKLSAgICBkb3VibGUgZXBzaWxvbiA9IDAuMDAxOwotICAgIGZvciAo
YXV0byByYXRlIDogbV9zdXBwb3J0ZWRGcmFtZVJhdGVzKSB7Ci0gICAgICAgIGlmIChmcmFtZVJh
dGUgKyBlcHNpbG9uID49IHJhdGUgJiYgZnJhbWVSYXRlIC0gZXBzaWxvbiA8PSByYXRlKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaAppbmRleCA2YTJkNGExMWYzMmYwZTY3NWRhZDIwMjRkOTU5YjNmYjI3MGE2
NWM4Li45YTdmMDBmMDdmYWFjN2UwZjViMjBmNjBlYWI0NmM3NGI4OGQ5MTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5oCkBAIC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Ry
dWN0IEZyYW1lUmF0ZVJhbmdlOworCiBjbGFzcyBSZWFsdGltZVZpZGVvU291cmNlIDogcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlYWx0aW1lVmlk
ZW9Tb3VyY2UoKTsKQEAgLTQ1LDExICs0NywxNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHBy
ZXBhcmVUb1Byb2R1Y2VEYXRhKCk7CiAgICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUo
c3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwotICAgIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIHNldFNpemVBbmRGcmFtZVJhdGUo
c3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOworCisgICAgdXNpbmcgVmlkZW9QcmVzZXQgPSBzdGQ6
OnBhaXI8SW50U2l6ZSwgVmVjdG9yPEZyYW1lUmF0ZVJhbmdlPj47CisgICAgdXNpbmcgVmlkZW9Q
cmVzZXRzID0gVmVjdG9yPFZpZGVvUHJlc2V0PjsKKyAgICB2b2lkIHNldFN1cHBvcnRlZFByZXNl
dHMoY29uc3QgVmlkZW9QcmVzZXRzJiYpOwogCi0gICAgdm9pZCBzZXRTdXBwb3J0ZWRGcmFtZVJh
dGVzKFZlY3Rvcjxkb3VibGU+JiYpOwotICAgIHZvaWQgc2V0U3VwcG9ydGVkQ2FwdHVyZVNpemVz
KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYmIHNpemVzKSB7IG1fc3VwcG9ydGVkQ2FwdHVyZVNpemVz
ID0gc2l6ZXM7IH0KLSAgICBJbnRTaXplIGJlc3RTdXBwb3J0ZWRDYXB0dXJlU2l6ZUZvcldpZHRo
QW5kSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhl
aWdodCk7CisgICAgc3RydWN0IENhcHR1cmVTaXplQW5kRnJhbWVSYXRlIHsKKyAgICAgICAgSW50
U2l6ZSBzaXplOworICAgICAgICBkb3VibGUgZnJhbWVSYXRlOworICAgIH07CisgICAgc3RkOjpv
cHRpb25hbDxDYXB0dXJlU2l6ZUFuZEZyYW1lUmF0ZT4gYmVzdFN1cHBvcnRlZFNpemVBbmRGcmFt
ZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOwogCiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRDYXBhYmls
aXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIGNvbnN0OwogCkBAIC02MCwx
NSArNjgsNDQgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2Jz
ZXJ2ZXJzKE1lZGlhU2FtcGxlJik7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBzdXBwb3J0c0ZyYW1l
UmF0ZShkb3VibGUpOwogCi0gICAgVmVjdG9yPEludFNpemU+IG1fc3VwcG9ydGVkQ2FwdHVyZVNp
emVzOwotICAgIFZlY3Rvcjxkb3VibGU+IG1fc3VwcG9ydGVkRnJhbWVSYXRlczsKKyAgICBWaWRl
b1ByZXNldHMgbV9wcmVzZXRzOwogICAgIERlcXVlPGRvdWJsZT4gbV9vYnNlcnZlZEZyYW1lVGlt
ZVN0YW1wczsKICAgICBkb3VibGUgbV9vYnNlcnZlZEZyYW1lUmF0ZSB7IDAgfTsKICAgICBJbnRT
aXplIG1fZGVmYXVsdFNpemU7CiB9OwogCitzdHJ1Y3QgRnJhbWVSYXRlUmFuZ2UgeworICAgIGRv
dWJsZSBtaW5pbXVtOworICAgIGRvdWJsZSBtYXhpbXVtOworCisgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRnJhbWVSYXRlUmFu
Z2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbWlu
aW11bTsKKyAgICBlbmNvZGVyIDw8IG1heGltdW07Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNv
ZGVyPgorc3RkOjpvcHRpb25hbDxGcmFtZVJhdGVSYW5nZT4gRnJhbWVSYXRlUmFuZ2U6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtaW5pbXVt
OworICAgIGRlY29kZXIgPj4gbWluaW11bTsKKyAgICBpZiAoIW1pbmltdW0pCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bTsK
KyAgICBkZWNvZGVyID4+IG1heGltdW07CisgICAgaWYgKCFtYXhpbXVtKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIEZyYW1lUmF0ZVJhbmdlIHsgKm1pbmltdW0s
ICptYXhpbXVtIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGJlYThkYTk5MzI5Y2MxNmIxM2YzZTI4YTk0ZmJhOTY1
MTA2MGJmZGMuLjA3NThlNTQwYjQ0MWVjZjQ3MDNmMzU2NDA3OTVjZDcwYzFkNGE2MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBA
IC0xNDUsOCArMTQ1LDcgQEAgdm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQ
cm9kdWNpbmdEYXRhKCkKICAgICBtX2NhcHR1cmVyLT5zdG9wKCk7CiAKICAgICBHU1RfSU5GTygi
UmVzZXQgaGVpZ2h0IGFuZCB3aWR0aCBhZnRlciBzdG9wcGluZyBzb3VyY2UiKTsKLSAgICBzZXRI
ZWlnaHQoMCk7Ci0gICAgc2V0V2lkdGgoMCk7CisgICAgc2V0U2l6ZSh7IDAsIDAgfSk7CiB9CiAK
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEdTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
LmgKaW5kZXggZDExZDE1M2UxMTM0ZjMzNzA3YTQwMTZhZTg1NjhkYmRkYjA0MTcwMC4uZjU1ZmVm
OTJjN2NhOWNjYTY1MzNkNzhkZTQ0NWI2MzhhOTVkN2YyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNodXRkb3duQ2Fw
dHVyZVNlc3Npb24oKTsKIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgYXBwbHlTaXplQW5kRnJh
bWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdo
dCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIHNldFNpemVBbmRGcmFt
ZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogICAgIHZvaWQgc2V0RnJhbWVSYXRlKGRv
dWJsZSk7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggZmIxOWRmYzY3ZDRhNzYzYjMwNGViNzNkMDZj
ZjUwYzJlNDkzZDYyZi4uZjNiZDQxMDAyNDZkNTVlOTA3ODNmMmI0ZjFkMmY3ZTNlODUyYTA2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKICAgICByZXR1
cm47CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0
ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRp
b25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKICAg
ICBpZiAod2lkdGggfHwgaGVpZ2h0KQogICAgICAgICBzZXRQcmVzZXQoYmVzdFNlc3Npb25QcmVz
ZXRGb3JWaWRlb0RpbWVuc2lvbnMoV1RGTW92ZSh3aWR0aCksIFdURk1vdmUoaGVpZ2h0KSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVl
bkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tCmluZGV4IGU2ZTQ0
OGMzZWNhYWYwNTA4MzQ4MDkzMGQ1Y2RjNDAzMTBlOThhNGQuLmY3MTQ5M2Y1OTgzZGQ3MDY0M2M2
ZWEzNDg2OGQzOWFiOGEzZDQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWMubW0KQEAgLTEzNSw4ICsxMzUsNyBAQCBib29sIFNjcmVlbkRpc3BsYXlDYXB0
dXJlU291cmNlTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKCkKICAgICAgICAgICAgICAgICBjYXB0
dXJlRmFpbGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgc2V0V2lkdGgoc2NyZWVuV2lkdGgpOwotICAgICAgICAgICAgc2V0SGVp
Z2h0KHNjcmVlbkhlaWdodCk7CisgICAgICAgICAgICBzZXRTaXplKEludFNpemUoc2NyZWVuV2lk
dGgsIHNjcmVlbkhlaWdodCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2NhcHR1cmVR
dWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlh
RGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5o
CmluZGV4IDFkMDNjNWFmMTI3MmNiYzA1ZTRiYTllYTA5YTNmMjFhZDQyMDRiYjYuLmEzNmM2MTBk
NGRiNWI4N2QwMTIzZmNhNzk2ODM0M2ZjOGUwNTQ0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5j
bHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
KyNpbmNsdWRlICJSZWFsdGltZVZpZGVvU291cmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNTQsMTUgKzU1LDE1IEBAIHN0cnVjdCBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMgewog
ICAgIGludCBkZWZhdWx0U2FtcGxlUmF0ZSB7IDQ0MTAwIH07CiB9OwogCi0vLyBGSVhNRTogQWRk
IHN1cHBvcnQgZm9yIG90aGVyIHByb3BlcnRpZXMgYW5kIHNlcmlhbGl6YXRpb24gb2YgY29sb3Jz
LgorLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciBwcm9wZXJ0aWVzLgogc3RydWN0IE1v
Y2tDYW1lcmFQcm9wZXJ0aWVzIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVy
IDw8IGRlZmF1bHRGcmFtZVJhdGU7CiAgICAgICAgIGVuY29kZXIgPDwgZmFjaW5nTW9kZTsKLSAg
ICAgICAgZW5jb2RlciA8PCBmcmFtZVJhdGVzOwotICAgICAgICBlbmNvZGVyIDw8IGZyYW1lU2l6
ZXM7CisgICAgICAgIGVuY29kZXIgPDwgcHJlc2V0czsKKyAgICAgICAgZW5jb2RlciA8PCBmaWxs
Q29sb3I7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CkBAIC03OCwyMyAr
NzksMjIgQEAgc3RydWN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKICAgICAgICAgaWYgKCFmYWNp
bmdNb2RlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjxkb3VibGU+PiBmcmFtZVJhdGVzOwotICAgICAgICBkZWNvZGVyID4+
IGZyYW1lUmF0ZXM7Ci0gICAgICAgIGlmICghZnJhbWVSYXRlcykKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8c3RkOjpwYWlyPEludFNpemUsIFZlY3RvcjxGcmFtZVJhdGVSYW5nZT4+Pj4g
cHJlc2V0czsKKyAgICAgICAgZGVjb2RlciA+PiBwcmVzZXRzOworICAgICAgICBpZiAoIXByZXNl
dHMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPEludFNpemU+PiBmcmFtZVNpemVzOwotICAgICAgICBkZWNvZGVyID4+IGZy
YW1lU2l6ZXM7Ci0gICAgICAgIGlmICghZnJhbWVTaXplcykKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxDb2xvcj4gZmlsbENvbG9yOworICAgICAgICBkZWNvZGVyID4+IGZpbGxDb2xvcjsKKyAgICAg
ICAgaWYgKCFmaWxsQ29sb3IpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIHJldHVybiBNb2NrQ2FtZXJhUHJvcGVydGllcyB7ICpkZWZhdWx0RnJhbWVSYXRlLCAq
ZmFjaW5nTW9kZSwgV1RGTW92ZSgqZnJhbWVSYXRlcyksIFdURk1vdmUoKmZyYW1lU2l6ZXMpLCBD
b2xvcjo6YmxhY2sgfTsKKyAgICAgICAgcmV0dXJuIE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsgKmRl
ZmF1bHRGcmFtZVJhdGUsICpmYWNpbmdNb2RlLCBXVEZNb3ZlKCpwcmVzZXRzKSwgKmZpbGxDb2xv
ciB9OwogICAgIH0KIAogICAgIGRvdWJsZSBkZWZhdWx0RnJhbWVSYXRlIHsgMzAgfTsKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlIHsg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVzZXIgfTsKLSAg
ICBWZWN0b3I8ZG91YmxlPiBmcmFtZVJhdGVzIHsgMzAsIDE1IH07Ci0gICAgVmVjdG9yPEludFNp
emU+IGZyYW1lU2l6ZXMgeyB7IDY0MCwgNDgwIH0sIHsgMzUyLCAyODggfSwgeyAzMjAsIDI0MCB9
IH07CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxJbnRTaXplLCBWZWN0b3I8RnJhbWVSYXRlUmFuZ2U+
Pj4gcHJlc2V0cyB7IHsgeyA2NDAsIDQ4MCB9LCB7IHsgMzAsIDMwfSwgeyAxNSwgMTUgfSB9IH0g
fTsKICAgICBDb2xvciBmaWxsQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKIH07CiAKQEAgLTEwMyw2
ICsxMDMsNyBAQCBzdHJ1Y3QgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsKICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBkZWZh
dWx0RnJhbWVSYXRlOworICAgICAgICBlbmNvZGVyIDw8IGZpbGxDb2xvcjsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KQEAgLTExMyw2ICsxMTQsMTEgQEAgc3RydWN0IE1v
Y2tEaXNwbGF5UHJvcGVydGllcyB7CiAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lUmF0ZSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICAgICAgc3RkOjpvcHRpb25hbDxD
b2xvcj4gZmlsbENvbG9yOworICAgICAgICBkZWNvZGVyID4+IGZpbGxDb2xvcjsKKyAgICAgICAg
aWYgKCFmaWxsQ29sb3IpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAg
ICAgIHJldHVybiBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyAqZGVmYXVsdEZyYW1lUmF0ZSwgQ29s
b3I6OmxpZ2h0R3JheSB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRl
eCBkOWFiNzMzMWUyNmQ2NzUwMTUwMTFhODg4ZGRlNzY3NTJkYTk1NTVhLi42NDJkM2NhNmM4Y2Qz
MzI1OTU1ODYwMTU5NmRmMzg5YjRiN2Y1YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cApAQCAtNTIsMTggKzUyLDI5IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPE1vY2tNZWRpYURldmlj
ZT4gZGVmYXVsdERldmljZXMoKQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiMjM5YzI0YjIt
MmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Il9zLCAiTW9jayB2aWRlbyBkZXZpY2UgMSJfcywK
ICAgICAgICAgICAgIE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKICAgICAgICAgICAgICAgICAzMCwK
LSAgICAgICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5n
TW9kZTo6VXNlciwKLSAgICAgICAgICAgICAgICB7IDMwLjAwLCAyNy41MCwgMjUuMDAsIDIyLjUw
LCAyMC4wMCwgMTcuNTAsIDE1LjAwLCAxMi41MCwgMTAuMDAsIDcuNTAsIDUuMDAgfSwKLSAgICAg
ICAgICAgICAgICB7IHsgMzg0MCwgMjE2MCB9LCB7IDE5MjAsIDEwODAgfSwgeyAxMjgwLCA3MjAg
fSwgeyA5NjAsIDU0MCB9LCB7IDY0MCwgNDgwIH0sIHsgMzUyLCAyODggfSwgeyAzMjAsIDI0MCB9
IH0sCisgICAgICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0Zh
Y2luZ01vZGU6OlVzZXIsIHsKKyAgICAgICAgICAgICAgICAgICAgeyB7IDM4NDAsIDIxNjAgfSwg
eyB7IDMwLCAzMH0sIHsgMjcuNSwgMjcuNX0sIHsgMjUsIDI1fSwgeyAyMi41LCAyMi41fSwgeyAy
MCwgMjB9LCB7IDE3LjUsIDE3LjV9LCB7IDE1LCAxNX0sIHsgMTIuNSwgMTIuNX0sIHsgMTAsIDEw
fSwgeyA3LjUsIDcuNX0sIHsgNSwgNX0gfSB9LAorICAgICAgICAgICAgICAgICAgICB7IHsgMTky
MCwgMTA4MCB9LCB7IHsgMzAsIDMwfSwgeyAyNy41LCAyNy41fSwgeyAyNSwgMjV9LCB7IDIyLjUs
IDIyLjV9LCB7IDIwLCAyMH0sIHsgMTcuNSwgMTcuNX0sIHsgMTUsIDE1fSwgeyAxMi41LCAxMi41
fSwgeyAxMCwgMTB9LCB7IDcuNSwgNy41fSwgeyA1LCA1fSB9IH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgeyAxMjgwLCA3MjAgfSwgeyB7IDMwLCAzMH0sIHsgMjcuNSwgMjcuNX0sIHsgMjUsIDI1
fSwgeyAyMi41LCAyMi41fSwgeyAyMCwgMjB9LCB7IDE3LjUsIDE3LjV9LCB7IDE1LCAxNX0sIHsg
MTIuNSwgMTIuNX0sIHsgMTAsIDEwfSwgeyA3LjUsIDcuNX0sIHsgNSwgNX0gfSB9LAorICAgICAg
ICAgICAgICAgICAgICB7IHsgOTYwLCA1NDAgfSwgeyB7IDMwLCAzMH0sIHsgMjcuNSwgMjcuNX0s
IHsgMjUsIDI1fSwgeyAyMi41LCAyMi41fSwgeyAyMCwgMjB9LCB7IDE3LjUsIDE3LjV9LCB7IDE1
LCAxNX0sIHsgMTIuNSwgMTIuNX0sIHsgMTAsIDEwfSwgeyA3LjUsIDcuNX0sIHsgNSwgNX0gfSB9
LAorICAgICAgICAgICAgICAgICAgICB7IHsgNjQwLCA0ODAgfSwgeyB7IDMwLCAzMH0sIHsgMjcu
NSwgMjcuNX0sIHsgMjUsIDI1fSwgeyAyMi41LCAyMi41fSwgeyAyMCwgMjB9LCB7IDE3LjUsIDE3
LjV9LCB7IDE1LCAxNX0sIHsgMTIuNSwgMTIuNX0sIHsgMTAsIDEwfSwgeyA3LjUsIDcuNX0sIHsg
NSwgNX0gfSB9LAorICAgICAgICAgICAgICAgICAgICB7IHsgMzUyLCAyODggfSwgeyB7IDMwLCAz
MH0sIHsgMjcuNSwgMjcuNX0sIHsgMjUsIDI1fSwgeyAyMi41LCAyMi41fSwgeyAyMCwgMjB9LCB7
IDE3LjUsIDE3LjV9LCB7IDE1LCAxNX0sIHsgMTIuNSwgMTIuNX0sIHsgMTAsIDEwfSwgeyA3LjUs
IDcuNX0sIHsgNSwgNX0gfSB9LAorICAgICAgICAgICAgICAgICAgICB7IHsgMzIwLCAyNDAgfSwg
eyB7IDMwLCAzMH0sIHsgMjcuNSwgMjcuNX0sIHsgMjUsIDI1fSwgeyAyMi41LCAyMi41fSwgeyAy
MCwgMjB9LCB7IDE3LjUsIDE3LjV9LCB7IDE1LCAxNX0sIHsgMTIuNSwgMTIuNX0sIHsgMTAsIDEw
fSwgeyA3LjUsIDcuNX0sIHsgNSwgNX0gfSB9LAorICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgQ29sb3I6OmJsYWNrLAogICAgICAgICAgICAgfSB9LAogCiAgICAgICAgIE1vY2tN
ZWRpYURldmljZSB7ICIyMzljMjRiMy0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiX3MsICJN
b2NrIHZpZGVvIGRldmljZSAyIl9zLAogICAgICAgICAgICAgTW9ja0NhbWVyYVByb3BlcnRpZXMg
ewogICAgICAgICAgICAgICAgIDE1LAotICAgICAgICAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpFbnZpcm9ubWVudCwKLSAgICAgICAgICAgICAg
ICB7IDI1LjAwLCAyMi41MCwgMjAuMDAsIDE3LjUwLCAxNS4wMCwgMTIuNTAsIDEwLjAwLCA3LjUw
LCA1LjAwIH0sCi0gICAgICAgICAgICAgICAgeyB7IDEyODAsIDcyMCB9LCB7IDk2MCwgNTQwIH0s
IHsgNjQwLCA0ODAgfSwgeyAzNTIsIDI4OCB9LCB7IDMyMCwgMjQwIH0sIHsgMTYwLCAxMjAgfSB9
LAorICAgICAgICAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNp
bmdNb2RlOjpFbnZpcm9ubWVudCwgeworICAgICAgICAgICAgICAgICAgICB7IHsgMTI4MCwgNzIw
IH0sIHsgeyAzLCAxMjAgfSB9IH0sCisgICAgICAgICAgICAgICAgICAgIHsgeyA5NjAsIDU0MCB9
LCB7IHsgMywgNjAgfSB9IH0sCisgICAgICAgICAgICAgICAgICAgIHsgeyA2NDAsIDQ4MCB9LCB7
IHsgMiwgMzAgfSB9IH0sCisgICAgICAgICAgICAgICAgICAgIHsgeyAzNTIsIDI4OCB9LCB7IHsg
MiwgMzAgfSB9IH0sCisgICAgICAgICAgICAgICAgICAgIHsgeyAzMjAsIDI0MCB9LCB7IHsgMiwg
MzAgfSB9IH0sCisgICAgICAgICAgICAgICAgICAgIHsgeyAxNjAsIDEyMCB9LCB7IHsgMiwgMzAg
fSB9IH0sCisgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBDb2xvcjo6ZGFya0dy
YXksCiAgICAgICAgICAgICB9IH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggMmFlYWYyY2FmZTE3
MzcyNmU0NGRlNjM3N2YxMWZlYTE5YmM1ZTdkMy4uMGU3OGQ1NmM0NDBkNzkxNzY3YmFhZDBkZTI1
YzdiNGY4OThkNDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTEyOSwxMCArMTI5LDkgQEAgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKGNvbnN0IFN0cmlu
ZyYgZGV2aWNlSUQsIGNvbnN0IFMKICAgICB9CiAKICAgICBhdXRvJiBwcm9wZXJ0aWVzID0gV1RG
OjpnZXQ8TW9ja0NhbWVyYVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpOwotICAgIHNl
dEZyYW1lUmF0ZShwcm9wZXJ0aWVzLmZyYW1lUmF0ZXNbMF0pOworICAgIHNldEZyYW1lUmF0ZShw
cm9wZXJ0aWVzLmRlZmF1bHRGcmFtZVJhdGUpOwogICAgIHNldEZhY2luZ01vZGUocHJvcGVydGll
cy5mYWNpbmdNb2RlKTsKLSAgICBzZXRTdXBwb3J0ZWRGcmFtZVJhdGVzKFdURk1vdmUocHJvcGVy
dGllcy5mcmFtZVJhdGVzKSk7Ci0gICAgc2V0U3VwcG9ydGVkQ2FwdHVyZVNpemVzKFdURk1vdmUo
cHJvcGVydGllcy5mcmFtZVNpemVzKSk7CisgICAgc2V0U3VwcG9ydGVkUHJlc2V0cyhXVEZNb3Zl
KHByb3BlcnRpZXMucHJlc2V0cykpOwogICAgIG1fZmlsbENvbG9yID0gcHJvcGVydGllcy5maWxs
Q29sb3I7CiB9CiAKQEAgLTE0MiwxNSArMTQxLDE1IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjYXBhYmlsaXRpZXMoKSBj
CiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKHNl
dHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAKICAgICAgICAgY2FwYWJpbGl0aWVz
LnNldERldmljZUlkKGlkKCkpOwotICAgICAgICBpZiAobW9ja0NhbWVyYSgpKSB7CisgICAgICAg
IGlmIChtb2NrQ2FtZXJhKCkpCiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9k
ZShXVEY6OmdldDxNb2NrQ2FtZXJhUHJvcGVydGllcz4obV9kZXZpY2UucHJvcGVydGllcykuZmFj
aW5nTW9kZSk7Ci0gICAgICAgICAgICBhZGRTdXBwb3J0ZWRDYXBhYmlsaXRpZXMoY2FwYWJpbGl0
aWVzKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjYXBh
YmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg3MiwgMjg4MCkpOwogICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ1
LCAxODAwKSk7CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UoLjAxLCA2MC4wKSk7CiAgICAgICAgIH0KIAorICAgICAgICBhZGRTdXBw
b3J0ZWRDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKTsKICAgICAgICAgbV9jYXBhYmlsaXRpZXMg
PSBXVEZNb3ZlKGNhcGFiaWxpdGllcyk7CiAgICAgfQogICAgIHJldHVybiBtX2NhcGFiaWxpdGll
cy52YWx1ZSgpOwpAQCAtMTYxLDcgKzE2MCw2IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzKCkgY29uc3QKICAgICBp
ZiAobV9jdXJyZW50U2V0dGluZ3MpCiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52
YWx1ZSgpOwogCi0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3M7CiAg
ICAgaWYgKG1vY2tDYW1lcmEoKSkKICAgICAgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShmYWNp
bmdNb2RlKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349075</attachid>
            <date>2018-09-06 14:32:09 -0700</date>
            <delta_ts>2018-09-06 15:10:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189351-20180906143208.patch</filename>
            <type>text/plain</type>
            <size>29737</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRhYWI0NmYwYTk5OWM1
ZDE3M2VhZTBhNmIyZjAwMzBhM2FkOTU5Ni4uZjkxZjk2MWNjNjVlZjRiMjc5NmVmNWM4NDA4YWQ4
Mjk3MjIwZmJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE4LTA5LTA2ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gSW5jbHVkZSBzdXBwb3J0ZWQgZnJhbWUgcmF0ZXMgaW4gdmlkZW8gY2FwdHVyZSBwcmVzZXRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzNTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTg4OTE3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsaXR5
IGNoYW5nZWQuCisKKyAgICAgICAgSW5jbHVkZSBmcmFtZSByYXRlcyBhcyB3ZWxsIGFzIHdpZHRo
L2hlaWdodCBpbiB2aWRlbyBjYXB0dXJlIHByZXNldHMsIHNvIHRoZSBtb2NrIHZpZGVvCisgICAg
ICAgIGNhcHR1cmUgZGV2aWNlcyBtb2RlbCByZWFsIGNhbWVyYSBkZXZpY2VzIG1vcmUgY2xvc2Vs
eS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2l6ZUFuZEZy
YW1lUmF0ZSk6IFJlbmFtZWQgZnJvbSBhcHBseVNpemVBbmRGcmFtZVJhdGUuIFVzZQorICAgICAg
ICBzZXRTaXplIGluc3RlYWQgb2Ygc2V0V2lkdGggYW5kIHNldEhlaWdodC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOiBhcHBseVNpemVB
bmRGcmFtZVJhdGUgLT4gc2V0U2l6ZUFuZEZyYW1lUmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRXaWR0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoK
KworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U3VwcG9ydGVkUHJl
c2V0cyk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZU1pbk1heCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjphZGRTdXBwb3J0ZWRDYXBhYmlsaXRpZXMgY29u
c3QpOiBDYWxjdWxhdGUgY2FwYWJpbGl0aWVzIGZyb20KKyAgICAgICAgcHJlc2V0cy4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0
ZSk6IFVzZSBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OmJlc3RTdXBwb3J0ZWRTaXplQW5kRnJhbWVSYXRlKTogCisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFN1cHBvcnRlZEZy
YW1lUmF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVWaWRlb1NvdXJj
ZTo6YmVzdFN1cHBvcnRlZENhcHR1cmVTaXplRm9yV2lkdGhBbmRIZWlnaHQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlTaXplQW5kRnJhbWVS
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OnN1
cHBvcnRzRnJhbWVSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZVZpZGVvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVv
U291cmNlOjpzZXRTdXBwb3J0ZWRDYXB0dXJlU2l6ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0
ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ2FtZXJhUHJvcGVydGllczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDYW1lcmFQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZGVmYXVsdERldmljZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjYXBhYmlsaXRpZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzIGNvbnN0KToKKwogMjAx
OC0wOS0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0JGQ10gQWRkIHN1cHBvcnQgZm9yIG1pbihtYXgpLXdpZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CmluZGV4IDA3MTEzZmUwYTJlNGRmZjc3N2JjYTg4YzBkYzQ1YTU5ZjliYzM0NmYuLmYyNzkzZjM4
YzA1YTlhMzFjNzA4ZTFkNDIyMzAzZTg1ZDA2YTVmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CkBAIC00MzgsMTIgKzQzOCwxNCBAQCBzdGF0aWMgdm9pZCBhcHBseU51bWVyaWNDb25zdHJhaW50
KGNvbnN0IE51bWVyaWNDb25zdHJhaW50PFZhbHVlVHlwZT4mIGNvbnN0cmFpbgogICAgICAgICAo
c291cmNlLiphcHBsaWVyKSh2YWx1ZSk7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
YXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRp
b25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKK3ZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGlu
dD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBmcmFtZVJhdGUpCiB7CisgICAgSW50U2l6ZSBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIGlm
ICh3aWR0aCkKLSAgICAgICAgc2V0V2lkdGgod2lkdGgudmFsdWUoKSk7CisgICAgICAgIHNpemUu
c2V0V2lkdGgod2lkdGgudmFsdWUoKSk7CiAgICAgaWYgKGhlaWdodCkKLSAgICAgICAgc2V0SGVp
Z2h0KGhlaWdodC52YWx1ZSgpKTsKKyAgICAgICAgc2l6ZS5zZXRIZWlnaHQoaGVpZ2h0LnZhbHVl
KCkpOworICAgIHNldFNpemUoc2l6ZSk7CiAgICAgaWYgKGZyYW1lUmF0ZSkKICAgICAgICAgc2V0
RnJhbWVSYXRlKGZyYW1lUmF0ZS52YWx1ZSgpKTsKIH0KQEAgLTgxNiw3ICs4MTgsNyBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29u
c3RyYWludCYgY29uc3RyYWludAogICAgIH0KIAogICAgIGlmICh3aWR0aCB8fCBoZWlnaHQgfHwg
ZnJhbWVSYXRlKQotICAgICAgICBhcHBseVNpemVBbmRGcmFtZVJhdGUoV1RGTW92ZSh3aWR0aCks
IFdURk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShmcmFtZVJhdGUpKTsKKyAgICAgICAgc2V0U2l6ZUFu
ZEZyYW1lUmF0ZShXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpLCBXVEZNb3ZlKGZyYW1l
UmF0ZSkpOwogCiAgICAgZm9yIChhdXRvJiB2YXJpYW50IDogY29uc3RyYWludHMpIHsKICAgICAg
ICAgaWYgKHZhcmlhbnQuY29uc3RyYWludFR5cGUoKSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpX
aWR0aCB8fCB2YXJpYW50LmNvbnN0cmFpbnRUeXBlKCkgPT0gTWVkaWFDb25zdHJhaW50VHlwZTo6
SGVpZ2h0IHx8IHZhcmlhbnQuY29uc3RyYWludFR5cGUoKSA9PSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpGcmFtZVJhdGUpCkBAIC04NjUsMzAgKzg2Nyw2IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHNldHRpbmdzRGlkQ2hhbmdlKGNo
YW5nZWQpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFdpZHRoKGludCB3aWR0
aCkKLXsKLSAgICBpZiAod2lkdGggPT0gbV9zaXplLndpZHRoKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fc2l6ZS5zZXRXaWR0aCh3aWR0aCk7Ci0gICAgaWYgKG1fYXNwZWN0UmF0aW8pCi0g
ICAgICAgIG1fc2l6ZS5zZXRIZWlnaHQod2lkdGggLyBtX2FzcGVjdFJhdGlvKTsKLQotICAgIHNl
dHRpbmdzRGlkQ2hhbmdlKHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0
aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSk7Ci19Ci0KLXZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SGVpZ2h0KGludCBoZWlnaHQpCi17Ci0gICAgaWYg
KGhlaWdodCA9PSBtX3NpemUuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICht
X2FzcGVjdFJhdGlvKQotICAgICAgICBtX3NpemUuc2V0V2lkdGgoaGVpZ2h0ICogbV9hc3BlY3RS
YXRpbyk7Ci0gICAgbV9zaXplLnNldEhlaWdodChoZWlnaHQpOwotCi0gICAgc2V0dGluZ3NEaWRD
aGFuZ2UoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KTsKLX0KLQogdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXRGcmFtZVJhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgaWYgKG1fZnJh
bWVSYXRlID09IHJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggZTA4ZTY1NmUzZTcxZTEwNmQ2
OWRmZjkwN2Y3NjgyNmI2YTc0M2QyYy4uMWUxYmI4MmFmNTI1ZmU2ZGEzYWEzMDYwM2M1Mjk0Yjhj
YjAyZWE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTY1LDggKzE2NSw2IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYpOwogCi0gICAgdm9pZCBz
ZXRXaWR0aChpbnQpOwotICAgIHZvaWQgc2V0SGVpZ2h0KGludCk7CiAgICAgdm9pZCBzZXRTaXpl
KGNvbnN0IEludFNpemUmKTsKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CiAKQEAgLTIzMyw3ICsyMzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBz
dXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8RG91
YmxlQ29uc3RyYWludD4sIFN0cmluZyYsIGRvdWJsZSYgZml0bmVzc0Rpc3RhbmNlKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+
IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4p
OwotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxp
bnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4pOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8
aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+KTsKIAogICAgIHZvaWQgbm90aWZ5TXV0ZWRPYnNlcnZlcnMoKSBjb25zdDsKICAgICB2b2lk
IG5vdGlmeU11dGVkQ2hhbmdlKGJvb2wgbXV0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRl
eCBmM2ZjNGVhNTUxYjhlN2IyYTBiMzAyYjA4NGQyMDAxYzE3YjVhYjUzLi5iM2FkNmNiOWU0YTlh
ODAxOTQ5MzNiMTVjN2Y0YjQ1ZjIyMmY4YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAt
NTgsODQgKzU4LDExNiBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnByZXBhcmVUb1Byb2R1
Y2VEYXRhKCkKICAgICAgICAgc2V0U2l6ZShtX2RlZmF1bHRTaXplKTsKIH0KIAotdm9pZCBSZWFs
dGltZVZpZGVvU291cmNlOjpzZXRTdXBwb3J0ZWRGcmFtZVJhdGVzKFZlY3Rvcjxkb3VibGU+JiYg
cmF0ZXMpCit2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFN1cHBvcnRlZFByZXNldHMoUmVh
bHRpbWVWaWRlb1NvdXJjZTo6VmlkZW9QcmVzZXRzJiYgcHJlc2V0cykKIHsKLSAgICBtX3N1cHBv
cnRlZEZyYW1lUmF0ZXMgPSBXVEZNb3ZlKHJhdGVzKTsKLSAgICBzdGQ6OnNvcnQobV9zdXBwb3J0
ZWRGcmFtZVJhdGVzLmJlZ2luKCksIG1fc3VwcG9ydGVkRnJhbWVSYXRlcy5lbmQoKSk7CisgICAg
bV9wcmVzZXRzID0gV1RGTW92ZShwcmVzZXRzKTsKKyAgICBzdGQ6OnNvcnQobV9wcmVzZXRzLmJl
Z2luKCksIG1fcHJlc2V0cy5lbmQoKSwKKyAgICAgICAgWyZdIChjb25zdCBhdXRvJiBhLCBjb25z
dCBhdXRvJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiAoYS5zaXplLndpZHRoKCkg
KiBhLnNpemUuaGVpZ2h0KCkpIDwgKGIuc2l6ZS53aWR0aCgpICogYi5zaXplLmhlaWdodCgpKTsK
KyAgICB9KTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHByZXNldCA6IG1fcHJlc2V0cykgeworICAg
ICAgICBzdGQ6OnNvcnQocHJlc2V0LmZyYW1lUmF0ZVJhbmdlcy5iZWdpbigpLCBwcmVzZXQuZnJh
bWVSYXRlUmFuZ2VzLmVuZCgpLAorICAgICAgICAgICAgWyZdIChjb25zdCBhdXRvJiBhLCBjb25z
dCBhdXRvJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5taW5pbXVtIDwg
Yi5taW5pbXVtOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKLXZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6YWRkU3VwcG9ydGVkQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcykgY29uc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5cGU+
CitzdGF0aWMgdm9pZCB1cGRhdGVNaW5NYXgoVmFsdWVUeXBlJiBtaW4sIFZhbHVlVHlwZSYgbWF4
LCBWYWx1ZVR5cGUgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKCFtX3N1cHBvcnRlZENhcHR1cmVTaXpl
cy5pc0VtcHR5KCkpOwotICAgIEFTU0VSVCghbV9zdXBwb3J0ZWRGcmFtZVJhdGVzLmlzRW1wdHko
KSk7CisgICAgbWluID0gc3RkOjptaW48VmFsdWVUeXBlPihtaW4sIHZhbHVlKTsKKyAgICBtYXgg
PSBzdGQ6Om1heDxWYWx1ZVR5cGU+KG1heCwgdmFsdWUpOworfQogCi0gICAgY2FwYWJpbGl0aWVz
LnNldEZyYW1lUmF0ZSh7IG1fc3VwcG9ydGVkRnJhbWVSYXRlc1swXSwgbV9zdXBwb3J0ZWRGcmFt
ZVJhdGVzW21fc3VwcG9ydGVkRnJhbWVSYXRlcy5zaXplKCkgLSAxXSB9KTsKK3ZvaWQgUmVhbHRp
bWVWaWRlb1NvdXJjZTo6YWRkU3VwcG9ydGVkQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcykgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJl
c2V0cy5pc0VtcHR5KCkpOwogCiAgICAgaW50IG1pbmltdW1XaWR0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCk7CiAgICAgaW50IG1heGltdW1XaWR0aCA9IDA7CiAgICAgaW50IG1p
bmltdW1IZWlnaHQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwogICAgIGludCBt
YXhpbXVtSGVpZ2h0ID0gMDsKLSAgICBmbG9hdCBtaW5pbXVtQXNwZWN0UmF0aW8gPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7Ci0gICAgZmxvYXQgbWF4aW11bUFzcGVjdFJhdGlv
ID0gMDsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNpemUgOiBtX3N1cHBvcnRlZENhcHR1cmVTaXpl
cykgewotICAgICAgICBtaW5pbXVtV2lkdGggPSBzdGQ6Om1pbihtaW5pbXVtV2lkdGgsIHNpemUu
d2lkdGgoKSk7Ci0gICAgICAgIG1heGltdW1XaWR0aCA9IHN0ZDo6bWF4KG1heGltdW1XaWR0aCwg
c2l6ZS53aWR0aCgpKTsKLQotICAgICAgICBtaW5pbXVtSGVpZ2h0ID0gc3RkOjptaW4obWluaW11
bUhlaWdodCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIG1heGltdW1IZWlnaHQgPSBzdGQ6Om1h
eChtYXhpbXVtSGVpZ2h0LCBzaXplLmhlaWdodCgpKTsKLQotICAgICAgICBtaW5pbXVtQXNwZWN0
UmF0aW8gPSBzdGQ6Om1pbihtaW5pbXVtQXNwZWN0UmF0aW8sIHNpemUuYXNwZWN0UmF0aW8oKSk7
Ci0gICAgICAgIG1heGltdW1Bc3BlY3RSYXRpbyA9IHN0ZDo6bWF4KG1heGltdW1Bc3BlY3RSYXRp
bywgc2l6ZS5hc3BlY3RSYXRpbygpKTsKKyAgICBkb3VibGUgbWluaW11bUFzcGVjdFJhdGlvID0g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKKyAgICBkb3VibGUgbWF4aW11bUFz
cGVjdFJhdGlvID0gMDsKKyAgICBkb3VibGUgbWluaW11bUZyYW1lUmF0ZSA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bWF4KCk7CisgICAgZG91YmxlIG1heGltdW1GcmFtZVJhdGUgPSAw
OworICAgIGZvciAoY29uc3QgYXV0byYgcHJlc2V0IDogbV9wcmVzZXRzKSB7CisgICAgICAgIGNv
bnN0IGF1dG8mIHNpemUgPSBwcmVzZXQuc2l6ZTsKKyAgICAgICAgdXBkYXRlTWluTWF4KG1pbmlt
dW1XaWR0aCwgbWF4aW11bVdpZHRoLCBzaXplLndpZHRoKCkpOworICAgICAgICB1cGRhdGVNaW5N
YXgobWluaW11bUhlaWdodCwgbWF4aW11bUhlaWdodCwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICAg
ICAgdXBkYXRlTWluTWF4KG1pbmltdW1Bc3BlY3RSYXRpbywgbWF4aW11bUFzcGVjdFJhdGlvLCBz
dGF0aWNfY2FzdDxkb3VibGU+KHNpemUud2lkdGgoKSkgLyBzaXplLmhlaWdodCgpKTsKKworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHJhdGUgOiBwcmVzZXQuZnJhbWVSYXRlUmFuZ2VzKSB7Cisg
ICAgICAgICAgICB1cGRhdGVNaW5NYXgobWluaW11bUZyYW1lUmF0ZSwgbWF4aW11bUZyYW1lUmF0
ZSwgcmF0ZS5taW5pbXVtKTsKKyAgICAgICAgICAgIHVwZGF0ZU1pbk1heChtaW5pbXVtRnJhbWVS
YXRlLCBtYXhpbXVtRnJhbWVSYXRlLCByYXRlLm1heGltdW0pOworICAgICAgICB9CiAgICAgfQot
CiAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKHsgbWluaW11bVdpZHRoLCBtYXhpbXVtV2lkdGgg
fSk7CiAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodCh7IG1pbmltdW1IZWlnaHQsIG1heGltdW1I
ZWlnaHQgfSk7CiAgICAgY2FwYWJpbGl0aWVzLnNldEFzcGVjdFJhdGlvKHsgbWluaW11bUFzcGVj
dFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8gfSk7CisgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1l
UmF0ZSh7IG1pbmltdW1GcmFtZVJhdGUsIG1heGltdW1GcmFtZVJhdGUgfSk7CiB9CiAKIGJvb2wg
UmVhbHRpbWVWaWRlb1NvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9u
YWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGZyYW1lUmF0ZSkKIHsKLSAgICBpZiAoIWhlaWdodCAmJiAhd2lkdGggJiYgIWZyYW1l
UmF0ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoaGVpZ2h0IHx8IHdpZHRoKSB7
Ci0gICAgICAgIGlmIChtX3N1cHBvcnRlZENhcHR1cmVTaXplcy5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGJlc3RTdXBwb3J0ZWRDYXB0dXJlU2l6
ZUZvcldpZHRoQW5kSGVpZ2h0KHdpZHRoLCBoZWlnaHQpLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIWZyYW1lUmF0ZSkKKyAgICBpZiAoIXdp
ZHRoICYmICFoZWlnaHQgJiYgIWZyYW1lUmF0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICByZXR1cm4gc3VwcG9ydHNGcmFtZVJhdGUoZnJhbWVSYXRlLnZhbHVlKCkpOworICAgIHJldHVy
biAhIWJlc3RTdXBwb3J0ZWRTaXplQW5kRnJhbWVSYXRlKHdpZHRoLCBoZWlnaHQsIGZyYW1lUmF0
ZSk7CiB9CiAKLUludFNpemUgUmVhbHRpbWVWaWRlb1NvdXJjZTo6YmVzdFN1cHBvcnRlZENhcHR1
cmVTaXplRm9yV2lkdGhBbmRIZWlnaHQoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9w
dGlvbmFsPGludD4gaGVpZ2h0KQorc3RkOjpvcHRpb25hbDxSZWFsdGltZVZpZGVvU291cmNlOjpD
YXB0dXJlU2l6ZUFuZEZyYW1lUmF0ZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6YmVzdFN1cHBvcnRl
ZFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFs
PGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQogewotICAgIGlm
ICghd2lkdGggJiYgIWhlaWdodCkKKyAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQgJiYgIWZyYW1l
UmF0ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGZvciAoYXV0byBzaXplIDogbV9zdXBw
b3J0ZWRDYXB0dXJlU2l6ZXMpIHsKLSAgICAgICAgaWYgKCghd2lkdGggfHwgd2lkdGgudmFsdWUo
KSA9PSBzaXplLndpZHRoKCkpICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1ZSgpID09IHNpemUu
aGVpZ2h0KCkpKQotICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgQ2FwdHVyZVNpemVBbmRG
cmFtZVJhdGUgbWF0Y2g7CisgICAgZm9yIChjb25zdCBhdXRvJiBwcmVzZXQgOiBtX3ByZXNldHMp
IHsKKyAgICAgICAgY29uc3QgYXV0byYgc2l6ZSA9IHByZXNldC5zaXplOworICAgICAgICBpZiAo
KHdpZHRoICYmIHdpZHRoLnZhbHVlKCkgIT0gc2l6ZS53aWR0aCgpKSB8fCAoaGVpZ2h0ICYmIGhl
aWdodC52YWx1ZSgpICE9IHNpemUuaGVpZ2h0KCkpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgbWF0Y2guc2l6ZSA9IHNpemU7CisgICAgICAgIGlmICghZnJhbWVSYXRlKSB7Cisg
ICAgICAgICAgICBtYXRjaC5mcmFtZVJhdGUgPSBwcmVzZXQuZnJhbWVSYXRlUmFuZ2VzW3ByZXNl
dC5mcmFtZVJhdGVSYW5nZXMuc2l6ZSgpIC0gMV0ubWF4aW11bTsKKyAgICAgICAgICAgIHJldHVy
biBtYXRjaDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGRvdWJsZSBlcHNpbG9uID0gMC4w
MDE7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmF0ZSA6IHByZXNldC5mcmFtZVJhdGVSYW5n
ZXMpIHsKKyAgICAgICAgICAgIGlmIChmcmFtZVJhdGUudmFsdWUoKSArIGVwc2lsb24gPj0gcmF0
ZS5taW5pbXVtICYmIGZyYW1lUmF0ZS52YWx1ZSgpIC0gZXBzaWxvbiA8PSByYXRlLm1heGltdW0p
IHsKKyAgICAgICAgICAgICAgICBtYXRjaC5mcmFtZVJhdGUgPSBmcmFtZVJhdGUudmFsdWUoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFJl
YWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGlu
dD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBmcmFtZVJhdGUpCit2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJh
dGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQogewotICAgIGlmICh3aWR0aCB8fCBoZWln
aHQpIHsKLSAgICAgICAgSW50U2l6ZSBzdXBwb3J0ZWRTaXplID0gYmVzdFN1cHBvcnRlZENhcHR1
cmVTaXplRm9yV2lkdGhBbmRIZWlnaHQoV1RGTW92ZSh3aWR0aCksIFdURk1vdmUoaGVpZ2h0KSk7
Ci0gICAgICAgIEFTU0VSVCghc3VwcG9ydGVkU2l6ZS5pc0VtcHR5KCkpOwotICAgICAgICBpZiAo
IXN1cHBvcnRlZFNpemUuaXNFbXB0eSgpKQotICAgICAgICAgICAgc2V0U2l6ZShzdXBwb3J0ZWRT
aXplKTsKLSAgICB9CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZVZpZGVvU291cmNlOjpDYXB0
dXJlU2l6ZUFuZEZyYW1lUmF0ZT4gbWF0Y2g7CisKKyAgICAvLyBJZiBvbmx5IHRoZSBmcmFtZXJh
dGUgaXMgY2hhbmdpbmcsIGZpcnN0IHNlZSBpZiBpdCBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUgY3Vy
cmVudCB3aWR0aCBhbmQgaGVpZ2h0LgorICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAg
ICBpZiAoIXdpZHRoICYmICFoZWlnaHQgJiYgIXNpemUuaXNFbXB0eSgpKQorICAgICAgICBtYXRj
aCA9IGJlc3RTdXBwb3J0ZWRTaXplQW5kRnJhbWVSYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwgZnJhbWVSYXRlKTsKKworICAgIGlmICghbWF0Y2gpCisgICAgICAgIG1hdGNoID0gYmVz
dFN1cHBvcnRlZFNpemVBbmRGcmFtZVJhdGUod2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlKTsKIAot
ICAgIGlmIChmcmFtZVJhdGUpCi0gICAgICAgIHNldEZyYW1lUmF0ZShmcmFtZVJhdGUudmFsdWUo
KSk7CisgICAgQVNTRVJUKG1hdGNoKTsKKyAgICBpZiAoIW1hdGNoKQorICAgICAgICByZXR1cm47
CisKKyAgICBzZXRTaXplKG1hdGNoLT5zaXplKTsKKyAgICBzZXRGcmFtZVJhdGUobWF0Y2gtPmZy
YW1lUmF0ZSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZGlzcGF0Y2hNZWRpYVNh
bXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxlJiBzYW1wbGUpCkBAIC0xNTcsMTYgKzE4OSw2IEBA
IHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJz
KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlKTsK
IH0KIAotYm9vbCBSZWFsdGltZVZpZGVvU291cmNlOjpzdXBwb3J0c0ZyYW1lUmF0ZShkb3VibGUg
ZnJhbWVSYXRlKQotewotICAgIGRvdWJsZSBlcHNpbG9uID0gMC4wMDE7Ci0gICAgZm9yIChhdXRv
IHJhdGUgOiBtX3N1cHBvcnRlZEZyYW1lUmF0ZXMpIHsKLSAgICAgICAgaWYgKGZyYW1lUmF0ZSAr
IGVwc2lsb24gPj0gcmF0ZSAmJiBmcmFtZVJhdGUgLSBlcHNpbG9uIDw9IHJhdGUpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1Nv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5oCmluZGV4IDZhMmQ0YTExZjMyZjBlNjc1ZGFkMjAyNGQ5NTliM2ZiMjcwYTY1Yzgu
LjFmYjAzMzRjNzFjNWJhY2Q3ZTZkNmU4M2Y3MDNlYTU3OGRhMjc3MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291
cmNlLmgKQEAgLTM2LDYgKzM2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3Qg
RnJhbWVSYXRlUmFuZ2U7CitzdHJ1Y3QgVmlkZW9QcmVzZXQ7CisKIGNsYXNzIFJlYWx0aW1lVmlk
ZW9Tb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UmVhbHRpbWVWaWRlb1NvdXJjZSgpOwpAQCAtNDUsMTEgKzQ4LDE2IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZvaWQgcHJlcGFyZVRvUHJvZHVjZURhdGEoKTsKICAgICBib29sIHN1cHBvcnRz
U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7Ci0gICAgdm9pZCBhcHBs
eVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFs
PGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIHZvaWQgc2V0
U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CisKKyAgICB1c2luZyBW
aWRlb1ByZXNldHMgPSBWZWN0b3I8VmlkZW9QcmVzZXQ+OworICAgIHZvaWQgc2V0U3VwcG9ydGVk
UHJlc2V0cyhWaWRlb1ByZXNldHMmJik7CiAKLSAgICB2b2lkIHNldFN1cHBvcnRlZEZyYW1lUmF0
ZXMoVmVjdG9yPGRvdWJsZT4mJik7Ci0gICAgdm9pZCBzZXRTdXBwb3J0ZWRDYXB0dXJlU2l6ZXMo
Y29uc3QgVmVjdG9yPEludFNpemU+JiYgc2l6ZXMpIHsgbV9zdXBwb3J0ZWRDYXB0dXJlU2l6ZXMg
PSBzaXplczsgfQotICAgIEludFNpemUgYmVzdFN1cHBvcnRlZENhcHR1cmVTaXplRm9yV2lkdGhB
bmRIZWlnaHQoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVp
Z2h0KTsKKyAgICBzdHJ1Y3QgQ2FwdHVyZVNpemVBbmRGcmFtZVJhdGUgeworICAgICAgICBJbnRT
aXplIHNpemU7CisgICAgICAgIGRvdWJsZSBmcmFtZVJhdGU7CisgICAgfTsKKyAgICBzdGQ6Om9w
dGlvbmFsPENhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1l
UmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPik7CiAKICAgICB2b2lkIGFkZFN1cHBvcnRlZENhcGFiaWxp
dGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgY29uc3Q7CiAKQEAgLTYwLDE1
ICs2OCw3NSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNl
cnZlcnMoTWVkaWFTYW1wbGUmKTsKIAogcHJpdmF0ZToKLSAgICBib29sIHN1cHBvcnRzRnJhbWVS
YXRlKGRvdWJsZSk7CiAKLSAgICBWZWN0b3I8SW50U2l6ZT4gbV9zdXBwb3J0ZWRDYXB0dXJlU2l6
ZXM7Ci0gICAgVmVjdG9yPGRvdWJsZT4gbV9zdXBwb3J0ZWRGcmFtZVJhdGVzOworICAgIFZpZGVv
UHJlc2V0cyBtX3ByZXNldHM7CiAgICAgRGVxdWU8ZG91YmxlPiBtX29ic2VydmVkRnJhbWVUaW1l
U3RhbXBzOwogICAgIGRvdWJsZSBtX29ic2VydmVkRnJhbWVSYXRlIHsgMCB9OwogICAgIEludFNp
emUgbV9kZWZhdWx0U2l6ZTsKIH07CiAKK3N0cnVjdCBGcmFtZVJhdGVSYW5nZSB7CisgICAgZG91
YmxlIG1pbmltdW07CisgICAgZG91YmxlIG1heGltdW07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RnJhbWVSYXRlUmFuZ2U+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBGcmFtZVJhdGVSYW5n
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtaW5p
bXVtOworICAgIGVuY29kZXIgPDwgbWF4aW11bTsKK30KKwordGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBGcmFtZVJhdGVSYW5nZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1pbmltdW07
CisgICAgZGVjb2RlciA+PiBtaW5pbXVtOworICAgIGlmICghbWluaW11bSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtOwor
ICAgIGRlY29kZXIgPj4gbWF4aW11bTsKKyAgICBpZiAoIW1heGltdW0pCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRnJhbWVSYXRlUmFuZ2UgeyAqbWluaW11bSwg
Km1heGltdW0gfTsKK30KKworc3RydWN0IFZpZGVvUHJlc2V0IHsKKyAgICBJbnRTaXplIHNpemU7
CisgICAgVmVjdG9yPEZyYW1lUmF0ZVJhbmdlPiBmcmFtZVJhdGVSYW5nZXM7CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmlkZW9QcmVzZXQ+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBWaWRl
b1ByZXNldDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBzaXplOworICAgIGVuY29kZXIgPDwgZnJhbWVSYXRlUmFuZ2VzOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8VmlkZW9QcmVzZXQ+IFZpZGVvUHJlc2V0Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNp
emU7CisgICAgZGVjb2RlciA+PiBzaXplOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEZyYW1lUmF0ZVJhbmdl
Pj4gZnJhbWVSYXRlUmFuZ2VzOworICAgIGRlY29kZXIgPj4gZnJhbWVSYXRlUmFuZ2VzOworICAg
IGlmICghZnJhbWVSYXRlUmFuZ2VzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIFZpZGVvUHJlc2V0IHsgKnNpemUsICpmcmFtZVJhdGVSYW5nZXMgfTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAK
aW5kZXggYmVhOGRhOTkzMjljYzE2YjEzZjNlMjhhOTRmYmE5NjUxMDYwYmZkYy4uMDc1OGU1NDBi
NDQxZWNmNDcwM2YzNTY0MDc5NWNkNzBjMWQ0YTYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTE0NSw4ICsxNDUsNyBAQCB2
b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogICAg
IG1fY2FwdHVyZXItPnN0b3AoKTsKIAogICAgIEdTVF9JTkZPKCJSZXNldCBoZWlnaHQgYW5kIHdp
ZHRoIGFmdGVyIHN0b3BwaW5nIHNvdXJjZSIpOwotICAgIHNldEhlaWdodCgwKTsKLSAgICBzZXRX
aWR0aCgwKTsKKyAgICBzZXRTaXplKHsgMCwgMCB9KTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyYgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjYXBhYmls
aXRpZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCBkMTFkMTUzZTEx
MzRmMzM3MDdhNDAxNmFlODU2OGRiZGRiMDQxNzAwLi5mNTVmZWY5MmM3Y2E5Y2NhNjUzM2Q3OGRl
NDQ1YjYzOGE5NWQ3ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtNzIsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwogCiAg
ICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25h
bDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4pIGZpbmFsOworICAgIHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPikgZmluYWw7CiAgICAgdm9pZCBzZXRGcmFtZVJhdGUoZG91YmxlKTsKICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbQppbmRleCBmYjE5ZGZjNjdkNGE3NjNiMzA0ZWI3M2QwNmNmNTBjMmU0OTNkNjJmLi5mM2Jk
NDEwMDI0NmQ1NWU5MDc4M2YyYjRmMWQyZjdlM2U4NTJhMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0
dXJlU291cmNlLm1tCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6c2V0RnJhbWVSYXRlKGRvdWJsZSByYXRlKQogICAgIHJldHVybjsKIH0KIAotdm9pZCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50
PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGZyYW1lUmF0ZSkKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJh
dGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQogewogICAgIGlmICh3aWR0aCB8fCBoZWln
aHQpCiAgICAgICAgIHNldFByZXNldChiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9u
cyhXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW0KaW5kZXggZTZlNDQ4YzNlY2FhZjA1MDgzNDgwOTMw
ZDVjZGM0MDMxMGU5OGE0ZC4uZjcxNDkzZjU5ODNkZDcwNjQzYzZlYTM0ODY4ZDM5YWI4YTNkNDcx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Nj
cmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQpAQCAt
MTM1LDggKzEzNSw3IEBAIGJvb2wgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNyZWF0
ZURpc3BsYXlTdHJlYW0oKQogICAgICAgICAgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXRX
aWR0aChzY3JlZW5XaWR0aCk7Ci0gICAgICAgICAgICBzZXRIZWlnaHQoc2NyZWVuSGVpZ2h0KTsK
KyAgICAgICAgICAgIHNldFNpemUoSW50U2l6ZShzY3JlZW5XaWR0aCwgc2NyZWVuSGVpZ2h0KSk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fY2FwdHVyZVF1ZXVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKaW5kZXggMWQwM2M1YWYxMjcy
Y2JjMDVlNGJhOWVhMDlhM2YyMWFkNDIwNGJiNi4uOTEzNmU2MzJkOWUyMWRmYmRhOWYxMzE0ZmYz
MjcxNTI5YzJiMjE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrTWVkaWFEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tN
ZWRpYURldmljZS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDYXB0dXJlRGV2aWNl
LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
VmlkZW9Tb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCwxNSArNTUsMTUg
QEAgc3RydWN0IE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7CiAgICAgaW50IGRlZmF1bHRTYW1w
bGVSYXRlIHsgNDQxMDAgfTsKIH07CiAKLS8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIg
cHJvcGVydGllcyBhbmQgc2VyaWFsaXphdGlvbiBvZiBjb2xvcnMuCisvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIG90aGVyIHByb3BlcnRpZXMuCiBzdHJ1Y3QgTW9ja0NhbWVyYVByb3BlcnRpZXMg
ewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgZGVmYXVsdEZyYW1lUmF0
ZTsKICAgICAgICAgZW5jb2RlciA8PCBmYWNpbmdNb2RlOwotICAgICAgICBlbmNvZGVyIDw8IGZy
YW1lUmF0ZXM7Ci0gICAgICAgIGVuY29kZXIgPDwgZnJhbWVTaXplczsKKyAgICAgICAgZW5jb2Rl
ciA8PCBwcmVzZXRzOworICAgICAgICBlbmNvZGVyIDw8IGZpbGxDb2xvcjsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KQEAgLTc4LDIzICs3OSwyMiBAQCBzdHJ1Y3QgTW9j
a0NhbWVyYVByb3BlcnRpZXMgewogICAgICAgICBpZiAoIWZhY2luZ01vZGUpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGRv
dWJsZT4+IGZyYW1lUmF0ZXM7Ci0gICAgICAgIGRlY29kZXIgPj4gZnJhbWVSYXRlczsKLSAgICAg
ICAgaWYgKCFmcmFtZVJhdGVzKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxWaWRlb1By
ZXNldD4+IHByZXNldHM7CisgICAgICAgIGRlY29kZXIgPj4gcHJlc2V0czsKKyAgICAgICAgaWYg
KCFwcmVzZXRzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxJbnRTaXplPj4gZnJhbWVTaXplczsKLSAgICAgICAgZGVjb2Rl
ciA+PiBmcmFtZVNpemVzOwotICAgICAgICBpZiAoIWZyYW1lU2l6ZXMpCisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7
CisgICAgICAgIGlmICghZmlsbENvbG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICByZXR1cm4gTW9ja0NhbWVyYVByb3BlcnRpZXMgeyAqZGVmYXVsdEZyYW1l
UmF0ZSwgKmZhY2luZ01vZGUsIFdURk1vdmUoKmZyYW1lUmF0ZXMpLCBXVEZNb3ZlKCpmcmFtZVNp
emVzKSwgQ29sb3I6OmJsYWNrIH07CisgICAgICAgIHJldHVybiBNb2NrQ2FtZXJhUHJvcGVydGll
cyB7ICpkZWZhdWx0RnJhbWVSYXRlLCAqZmFjaW5nTW9kZSwgV1RGTW92ZSgqcHJlc2V0cyksICpm
aWxsQ29sb3IgfTsKICAgICB9CiAKICAgICBkb3VibGUgZGVmYXVsdEZyYW1lUmF0ZSB7IDMwIH07
CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgZmFjaW5n
TW9kZSB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2Vy
IH07Ci0gICAgVmVjdG9yPGRvdWJsZT4gZnJhbWVSYXRlcyB7IDMwLCAxNSB9OwotICAgIFZlY3Rv
cjxJbnRTaXplPiBmcmFtZVNpemVzIHsgeyA2NDAsIDQ4MCB9LCB7IDM1MiwgMjg4IH0sIHsgMzIw
LCAyNDAgfSB9OworICAgIFZlY3RvcjxWaWRlb1ByZXNldD4gcHJlc2V0cyB7IHsgeyA2NDAsIDQ4
MCB9LCB7IHsgMzAsIDMwfSwgeyAxNSwgMTUgfSB9IH0gfTsKICAgICBDb2xvciBmaWxsQ29sb3Ig
eyBDb2xvcjo6YmxhY2sgfTsKIH07CiAKQEAgLTEwMyw2ICsxMDMsNyBAQCBzdHJ1Y3QgTW9ja0Rp
c3BsYXlQcm9wZXJ0aWVzIHsKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBkZWZhdWx0RnJhbWVSYXRlOworICAgICAgICBl
bmNvZGVyIDw8IGZpbGxDb2xvcjsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rl
cj4KQEAgLTExMyw3ICsxMTQsMTIgQEAgc3RydWN0IE1vY2tEaXNwbGF5UHJvcGVydGllcyB7CiAg
ICAgICAgIGlmICghZGVmYXVsdEZyYW1lUmF0ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgcmV0dXJuIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7ICpkZWZhdWx0
RnJhbWVSYXRlLCBDb2xvcjo6bGlnaHRHcmF5IH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29s
b3I+IGZpbGxDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CisgICAgICAgIGlm
ICghZmlsbENvbG9yKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAg
ICByZXR1cm4gTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgKmRlZmF1bHRGcmFtZVJhdGUsICpmaWxs
Q29sb3IgfTsKICAgICB9CiAKICAgICBkb3VibGUgZGVmYXVsdEZyYW1lUmF0ZSB7IDMwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IGQ5YWI3MzMxZTI2ZDY3NTAxNTAxMWE4ODhk
ZGU3Njc1MmRhOTU1NWEuLjY0MmQzY2E2YzhjZDMzMjU5NTU4NjAxNTk2ZGYzODliNGI3ZjVjMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC01MiwxOCArNTIsMjkgQEAgc3RhdGlj
IGlubGluZSBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiBkZWZhdWx0RGV2aWNlcygpCiAgICAgICAg
IE1vY2tNZWRpYURldmljZSB7ICIyMzljMjRiMi0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYi
X3MsICJNb2NrIHZpZGVvIGRldmljZSAxIl9zLAogICAgICAgICAgICAgTW9ja0NhbWVyYVByb3Bl
cnRpZXMgewogICAgICAgICAgICAgICAgIDMwLAotICAgICAgICAgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2VyLAotICAgICAgICAgICAgICAg
IHsgMzAuMDAsIDI3LjUwLCAyNS4wMCwgMjIuNTAsIDIwLjAwLCAxNy41MCwgMTUuMDAsIDEyLjUw
LCAxMC4wMCwgNy41MCwgNS4wMCB9LAotICAgICAgICAgICAgICAgIHsgeyAzODQwLCAyMTYwIH0s
IHsgMTkyMCwgMTA4MCB9LCB7IDEyODAsIDcyMCB9LCB7IDk2MCwgNTQwIH0sIHsgNjQwLCA0ODAg
fSwgeyAzNTIsIDI4OCB9LCB7IDMyMCwgMjQwIH0gfSwKKyAgICAgICAgICAgICAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VXNlciwgeworICAgICAgICAg
ICAgICAgICAgICB7IHsgMzg0MCwgMjE2MCB9LCB7IHsgMzAsIDMwfSwgeyAyNy41LCAyNy41fSwg
eyAyNSwgMjV9LCB7IDIyLjUsIDIyLjV9LCB7IDIwLCAyMH0sIHsgMTcuNSwgMTcuNX0sIHsgMTUs
IDE1fSwgeyAxMi41LCAxMi41fSwgeyAxMCwgMTB9LCB7IDcuNSwgNy41fSwgeyA1LCA1fSB9IH0s
CisgICAgICAgICAgICAgICAgICAgIHsgeyAxOTIwLCAxMDgwIH0sIHsgeyAzMCwgMzB9LCB7IDI3
LjUsIDI3LjV9LCB7IDI1LCAyNX0sIHsgMjIuNSwgMjIuNX0sIHsgMjAsIDIwfSwgeyAxNy41LCAx
Ny41fSwgeyAxNSwgMTV9LCB7IDEyLjUsIDEyLjV9LCB7IDEwLCAxMH0sIHsgNy41LCA3LjV9LCB7
IDUsIDV9IH0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB7IDEyODAsIDcyMCB9LCB7IHsgMzAs
IDMwfSwgeyAyNy41LCAyNy41fSwgeyAyNSwgMjV9LCB7IDIyLjUsIDIyLjV9LCB7IDIwLCAyMH0s
IHsgMTcuNSwgMTcuNX0sIHsgMTUsIDE1fSwgeyAxMi41LCAxMi41fSwgeyAxMCwgMTB9LCB7IDcu
NSwgNy41fSwgeyA1LCA1fSB9IH0sCisgICAgICAgICAgICAgICAgICAgIHsgeyA5NjAsIDU0MCB9
LCB7IHsgMzAsIDMwfSwgeyAyNy41LCAyNy41fSwgeyAyNSwgMjV9LCB7IDIyLjUsIDIyLjV9LCB7
IDIwLCAyMH0sIHsgMTcuNSwgMTcuNX0sIHsgMTUsIDE1fSwgeyAxMi41LCAxMi41fSwgeyAxMCwg
MTB9LCB7IDcuNSwgNy41fSwgeyA1LCA1fSB9IH0sCisgICAgICAgICAgICAgICAgICAgIHsgeyA2
NDAsIDQ4MCB9LCB7IHsgMzAsIDMwfSwgeyAyNy41LCAyNy41fSwgeyAyNSwgMjV9LCB7IDIyLjUs
IDIyLjV9LCB7IDIwLCAyMH0sIHsgMTcuNSwgMTcuNX0sIHsgMTUsIDE1fSwgeyAxMi41LCAxMi41
fSwgeyAxMCwgMTB9LCB7IDcuNSwgNy41fSwgeyA1LCA1fSB9IH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgeyAzNTIsIDI4OCB9LCB7IHsgMzAsIDMwfSwgeyAyNy41LCAyNy41fSwgeyAyNSwgMjV9
LCB7IDIyLjUsIDIyLjV9LCB7IDIwLCAyMH0sIHsgMTcuNSwgMTcuNX0sIHsgMTUsIDE1fSwgeyAx
Mi41LCAxMi41fSwgeyAxMCwgMTB9LCB7IDcuNSwgNy41fSwgeyA1LCA1fSB9IH0sCisgICAgICAg
ICAgICAgICAgICAgIHsgeyAzMjAsIDI0MCB9LCB7IHsgMzAsIDMwfSwgeyAyNy41LCAyNy41fSwg
eyAyNSwgMjV9LCB7IDIyLjUsIDIyLjV9LCB7IDIwLCAyMH0sIHsgMTcuNSwgMTcuNX0sIHsgMTUs
IDE1fSwgeyAxMi41LCAxMi41fSwgeyAxMCwgMTB9LCB7IDcuNSwgNy41fSwgeyA1LCA1fSB9IH0s
CisgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBDb2xvcjo6YmxhY2ssCiAgICAg
ICAgICAgICB9IH0sCiAKICAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIjIzOWMyNGIzLTJiMTUt
MTFlMy04MjI0LTA4MDAyMDBjOWE2NiJfcywgIk1vY2sgdmlkZW8gZGV2aWNlIDIiX3MsCiAgICAg
ICAgICAgICBNb2NrQ2FtZXJhUHJvcGVydGllcyB7CiAgICAgICAgICAgICAgICAgMTUsCi0gICAg
ICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6
OkVudmlyb25tZW50LAotICAgICAgICAgICAgICAgIHsgMjUuMDAsIDIyLjUwLCAyMC4wMCwgMTcu
NTAsIDE1LjAwLCAxMi41MCwgMTAuMDAsIDcuNTAsIDUuMDAgfSwKLSAgICAgICAgICAgICAgICB7
IHsgMTI4MCwgNzIwIH0sIHsgOTYwLCA1NDAgfSwgeyA2NDAsIDQ4MCB9LCB7IDM1MiwgMjg4IH0s
IHsgMzIwLCAyNDAgfSwgeyAxNjAsIDEyMCB9IH0sCisgICAgICAgICAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVudmlyb25tZW50LCB7CisgICAg
ICAgICAgICAgICAgICAgIHsgeyAxMjgwLCA3MjAgfSwgeyB7IDMsIDEyMCB9IH0gfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyB7IDk2MCwgNTQwIH0sIHsgeyAzLCA2MCB9IH0gfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyB7IDY0MCwgNDgwIH0sIHsgeyAyLCAzMCB9IH0gfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyB7IDM1MiwgMjg4IH0sIHsgeyAyLCAzMCB9IH0gfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyB7IDMyMCwgMjQwIH0sIHsgeyAyLCAzMCB9IH0gfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyB7IDE2MCwgMTIwIH0sIHsgeyAyLCAzMCB9IH0gfSwKKyAgICAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgICAgIENvbG9yOjpkYXJrR3JheSwKICAgICAgICAgICAgIH0gfSwKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcAppbmRleCAyYWVhZjJjYWZlMTczNzI2ZTQ0ZGU2Mzc3ZjExZmVhMTliYzVlN2Qz
Li4wZTc4ZDU2YzQ0MGQ3OTE3NjdiYWFkMGRlMjVjN2I0Zjg5OGQ0NDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcApAQCAtMTI5LDEwICsxMjksOSBAQCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgUwogICAgIH0K
IAogICAgIGF1dG8mIHByb3BlcnRpZXMgPSBXVEY6OmdldDxNb2NrQ2FtZXJhUHJvcGVydGllcz4o
bV9kZXZpY2UucHJvcGVydGllcyk7Ci0gICAgc2V0RnJhbWVSYXRlKHByb3BlcnRpZXMuZnJhbWVS
YXRlc1swXSk7CisgICAgc2V0RnJhbWVSYXRlKHByb3BlcnRpZXMuZGVmYXVsdEZyYW1lUmF0ZSk7
CiAgICAgc2V0RmFjaW5nTW9kZShwcm9wZXJ0aWVzLmZhY2luZ01vZGUpOwotICAgIHNldFN1cHBv
cnRlZEZyYW1lUmF0ZXMoV1RGTW92ZShwcm9wZXJ0aWVzLmZyYW1lUmF0ZXMpKTsKLSAgICBzZXRT
dXBwb3J0ZWRDYXB0dXJlU2l6ZXMoV1RGTW92ZShwcm9wZXJ0aWVzLmZyYW1lU2l6ZXMpKTsKKyAg
ICBzZXRTdXBwb3J0ZWRQcmVzZXRzKFdURk1vdmUocHJvcGVydGllcy5wcmVzZXRzKSk7CiAgICAg
bV9maWxsQ29sb3IgPSBwcm9wZXJ0aWVzLmZpbGxDb2xvcjsKIH0KIApAQCAtMTQyLDE1ICsxNDEs
MTUgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGMKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoc2V0dGluZ3MoKS5zdXBwb3J0ZWRDb25zdHJhaW50
cygpKTsKIAogICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RGV2aWNlSWQoaWQoKSk7Ci0gICAgICAg
IGlmIChtb2NrQ2FtZXJhKCkpIHsKKyAgICAgICAgaWYgKG1vY2tDYW1lcmEoKSkKICAgICAgICAg
ICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0
aWVzPihtX2RldmljZS5wcm9wZXJ0aWVzKS5mYWNpbmdNb2RlKTsKLSAgICAgICAgICAgIGFkZFN1
cHBvcnRlZENhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpOwotICAgICAgICB9IGVsc2UgeworICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5
VmFsdWVPclJhbmdlKDcyLCAyODgwKSk7CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0SGVp
Z2h0KENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoNDUsIDE4MDApKTsKICAgICAgICAgICAgIGNhcGFi
aWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSguMDEsIDYwLjApKTsK
ICAgICAgICAgfQogCisgICAgICAgIGFkZFN1cHBvcnRlZENhcGFiaWxpdGllcyhjYXBhYmlsaXRp
ZXMpOwogICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKICAg
ICB9CiAgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7CkBAIC0xNjEsNyArMTYwLDYg
QEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c2V0dGluZ3MoKSBjb25zdAogICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncykKICAgICAg
ICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7CiAKLQogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5nczsKICAgICBpZiAobW9ja0NhbWVyYSgpKQogICAgICAg
ICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKGZhY2luZ01vZGUoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>