<?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>172427</bug_id>
          
          <creation_ts>2017-05-21 07:20:51 -0700</creation_ts>
          <short_desc>[GStreamerGL] Release GstVideoFrame when there is a flush event from the pipeline</short_desc>
          <delta_ts>2017-08-10 05:28:03 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>173410</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gwang Yoon Hwang">yoon</reporter>
          <assigned_to name="Gwang Yoon Hwang">yoon</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>magomez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1311126</commentid>
    <comment_count>0</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2017-05-21 07:20:51 -0700</bug_when>
    <thetext>[GStreamerGL] Release GstVideoFrame when there is a flush event from the pipeline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311127</commentid>
    <comment_count>1</comment_count>
      <attachid>310807</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2017-05-21 07:21:51 -0700</bug_when>
    <thetext>Created attachment 310807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315048</commentid>
    <comment_count>2</comment_count>
      <attachid>311826</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2017-06-02 08:09:27 -0700</bug_when>
    <thetext>Created attachment 311826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315050</commentid>
    <comment_count>3</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2017-06-02 08:10:43 -0700</bug_when>
    <thetext>(In reply to Gwang Yoon Hwang from comment #2)
&gt; Created attachment 311826 [details]
&gt; Patch

Fixed a memory leak while handling flush event from the gst pipeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315683</commentid>
    <comment_count>4</comment_count>
      <attachid>311826</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-05 06:27:40 -0700</bug_when>
    <thetext>Comment on attachment 311826
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:151
&gt; +void TextureMapperPlatformLayerProxy::appendToUnusedBuffers(std::unique_ptr&lt;TextureMapperPlatformLayerBuffer&gt; buffer)
&gt; +{
&gt; +    ASSERT(m_compositorThreadID == WTF::currentThread());
&gt; +    RunLoop::main().dispatch([this, protectedThis = makeRef(*this), buffer = WTFMove(buffer)] () mutable {
&gt; +        m_usedBuffers.append(WTFMove(buffer));
&gt; +        scheduleReleaseUnusedBuffers();
&gt; +    });
&gt; +}

Why does this have to be handled on the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315685</commentid>
    <comment_count>5</comment_count>
      <attachid>311826</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2017-06-05 06:57:01 -0700</bug_when>
    <thetext>Comment on attachment 311826
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:151
&gt;&gt; +}
&gt; 
&gt; Why does this have to be handled on the main thread?

AFAIU, RunLoop::TimerBase::start is not thread safe, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315695</commentid>
    <comment_count>6</comment_count>
      <attachid>311826</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-05 08:49:20 -0700</bug_when>
    <thetext>Comment on attachment 311826
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:151
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Why does this have to be handled on the main thread?
&gt; 
&gt; AFAIU, RunLoop::TimerBase::start is not thread safe, no?

Internally it is due to GSource being used underneath. But even externally, it&apos;s protected through m_lock. 

There&apos;s other problems in this class related to this, for instance the timer shouldn&apos;t be scheduled if the Proxy object isn&apos;t active anymore, otherwise the object can be destructed on one thread while releaseUnusedBuffersTimerFired() runs on a different thread. But this shouldn&apos;t need to dispatch to any other thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315699</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-05 09:10:44 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #6)
&gt; There&apos;s other problems in this class related to this, for instance the timer
&gt; shouldn&apos;t be scheduled if the Proxy object isn&apos;t active anymore, otherwise
&gt; the object can be destructed on one thread while
&gt; releaseUnusedBuffersTimerFired() runs on a different thread. But this
&gt; shouldn&apos;t need to dispatch to any other thread.

Will you handle making another bug report to make sure this doesn&apos;t get forgotten?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316436</commentid>
    <comment_count>8</comment_count>
      <attachid>312177</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2017-06-07 04:31:23 -0700</bug_when>
    <thetext>Created attachment 312177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316439</commentid>
    <comment_count>9</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2017-06-07 04:41:10 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #6)
&gt; Comment on attachment 311826 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311826&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:151
&gt; &gt;&gt;&gt; +}
&gt; &gt;&gt; 
&gt; &gt;&gt; Why does this have to be handled on the main thread?
&gt; &gt; 
&gt; &gt; AFAIU, RunLoop::TimerBase::start is not thread safe, no?
&gt; 
&gt; Internally it is due to GSource being used underneath. But even externally,
&gt; it&apos;s protected through m_lock. 
&gt; 
It is correct. Since PlatformLayerProxy uses locks to protect runLoop, it is thread-safe.
It is a side-topic, but we doesn&apos;t use locks in RunLoop::TimerBase::start while updating m_fireInterval and m_isRepeating. I think it is not thread safe at this point.
https://github.com/WebKit/webkit/blob/master/Source/WTF/wtf/glib/RunLoopGLib.cpp#L204

Anyway, I modified to fire the timer in compositing thread, also I changed release timer to be attached to the compositing run loop. Now all operations about m_usedBuffers works on the compositing thread.

&gt; There&apos;s other problems in this class related to this, for instance the timer
&gt; shouldn&apos;t be scheduled if the Proxy object isn&apos;t active anymore, otherwise
&gt; the object can be destructed on one thread while
&gt; releaseUnusedBuffersTimerFired() runs on a different thread. But this
&gt; shouldn&apos;t need to dispatch to any other thread.

I thought a bit more deeper about this problem.
But when the proxy became invalidated, we removes and stops all timers and then destructs objects on the compositing thread, so I think it is quite okay at this point.

But still needs improvements, regarding ::getAvailableBuffers, I made a patch to use the TexmapGL&apos;s bitmap texture pool, so it can be handled at different bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318605</commentid>
    <comment_count>10</comment_count>
      <attachid>312177</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-13 01:29:10 -0700</bug_when>
    <thetext>Comment on attachment 312177
Patch

Clearing flags on attachment: 312177

Committed r218170: &lt;http://trac.webkit.org/changeset/218170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318606</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-13 01:29:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310807</attachid>
            <date>2017-05-21 07:21:51 -0700</date>
            <delta_ts>2017-06-02 08:09:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172427-20170521162149.patch</filename>
            <type>text/plain</type>
            <size>24969</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgwYmM2MWM5ZDAzNmJk
YjVlYmU0NWZjOTA0OTAxMGIyYWFjNGY3My4uNGQ3ZmM2Mzg2NmVkYWUxNzBmYWNiZjI2NmE5NGIz
NDkxZTI1OGRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE3LTA1LTE5ICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJHTF0g
UmVsZWFzZSBHc3RWaWRlb0ZyYW1lIHdoZW4gdGhlcmUgaXMgYSBmbHVzaCBldmVudCBmcm9tIHRo
ZSBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcyNDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2l0aG91dCBHU3RyZWFtZXJHTCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgY29waWVz
IHRoZSB2aWRlbyBmcmFtZSBmcm9tCisgICAgICAgIHRoZSBkZWNvZGVyJ3MgYnVmZmVyIHRvIHRo
ZSB0ZXh0dXJlIHRvIGRpc3BsYXkgYSB2aWRlby4gU28gaXQgbWFrZXMgcG9zc2libGUKKyAgICAg
ICAgdG8gcmVsZWFzZSB0aGUgR3N0U2FtcGxlIHdoZW4gaXQgZ290IGEgZmx1c2ggc3RhcnQgZXZl
bnQgdG8gZnJlZSB0aGUgZGVjb2RlcidzCisgICAgICAgIGJ1ZmZlciB0byB0aGUgZGVjb2RlciB3
aXRob3V0IHNpZGUtZWZmZWN0cy4KKworICAgICAgICBVbmxpa2UgdGhlIHRyYWRpdGlvbmFsIHdh
eSB0byByZW5kZXIgdmlkZW8sIEdTdHJlYW1lciBHTCBkb2VzIG5vdCBjb3B5IGEKKyAgICAgICAg
dGV4dHVyZSBmcm9tIHRoZSBkZWNvZGVyIHRvIHRoZSB0ZXh0dXJlIG1hcHBlcidzIGJ1ZmZlciB0
byBkcmF3IHZpZGVvIGZyYW1lLgorICAgICAgICBJdCB1c2VzIHNhbWUgR3N0TWVtb3J5IHdpdGgg
dGhlIGdzdCBwaXBlbGluZSB0byBtYW5hZ2UgdGhlIHRleHR1cmUgdG8gcHJldmVudAorICAgICAg
ICBjb3B5IG9wZXJhdGlvbnMuIFNvIHdpdGhvdXQgcmVsZWFzaW5nIGEgbGF5ZXIgYnVmZmVyLCB0
aGVyZSBpcyBubyB3YXkgdG8KKyAgICAgICAgcmV0dXJuIEdzdE1lbW9yeSB0byB0aGUgYnVmZmVy
IHBvb2wuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWxlYXNlcyBjdXJyZW50IEdzdFNhbXBsZSB3
aGVuIHRoZSBwbGF5ZXIgZ290IHRoZSBmbHVzaCBzdGFydAorICAgICAgICBldmVudC4gIEl0IGRl
c3RydWN0cyB0aGUgcGxhdGZvcm0gbGF5ZXIgYnVmZmVyIGFueSB0aW1lIHRoZXJlIGlzIGEgZmx1
c2ggc3RhcnQKKyAgICAgICAgZXZlbnQuCisKKyAgICAgICAgSG93ZXZlciwgaXQgaXMgbm90IGVu
b3VnaCB0byByZWxlYXNlIHRoZSBHc3RNZW1vcnkuIFRoZSBwbGF0Zm9ybSBsYXllciBwcm94eQor
ICAgICAgICBzaG91bGQgY29weSBjdXJyZW50IGJ1ZmZlciB0byBzaG93IGl0IHRvIHRoZSBjb21w
b3NpdG9yIGluc3RlYWQgb2YgYSBibGFuaworICAgICAgICBmcmFtZS4gSXQgcHJldmVudHMgZmxp
Y2tlcmluZ3MgdW50aWwgZ2V0dGluZyBhIG5ldyBmcmFtZSBhZnRlciBoYW5kbGluZyBmbHVzaAor
ICAgICAgICBldmVudHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGVyZSBzaG91bGRuJ3Qg
YmUgYmVoYXZpb3IgY2hhbmdlcworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6
OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3Np
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OmZsdXNoQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVHTEFwcFNpbmspOiBBZGRzCisgICAgICAgIGhhbmRsZXIg
Zm9yIHRoZSBmbHVzaCBldmVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZUdMOjpjb3B5RnJvbUV4dGVybmFsVGV4dHVyZSk6IENvcGllcworICAgICAgICBh
IGV4dGVybmFsIHRleHR1cmUgdG8gdGhlIG1hbmFnZWQgdGV4dHVyZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmg6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZSk6CisgICAgICAgIFRvIGNyZWF0ZSB0aGUgbWFuYWdl
ZCB0ZXh0dXJlIHdpdGggc3BlY2lmaWMgZm9ybWF0LCB0aGlzIHBhdGNoIGFkZHMgYQorICAgICAg
ICBvcHRpb25hbCBwYXJhbWV0ZXIgZm9yIGEgdGV4dHVyZSBmb3JtYXQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRl
eHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6ZHJvcEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZp
bmdUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oOgorCiAyMDE3LTA1LTIwICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdW01hY10gU3VwcG9ydCBwYWludGluZyBN
U0UgdmlkZW8tZWxlbWVudCB0byBjYW52YXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1NTUyMWU4OTYyMjExZjE1
OGY5OWZiOTdlOGJlMzRiNmMxOGU2NTBmLi4yOWIyMGRkZTdlNmQ3MjdiM2Q4ODE1ODBmZTY0Zjdl
N2RhMDEwMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDUtMTkgIEd3YW5n
IFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lckdMXSBS
ZWxlYXNlIEdzdFZpZGVvRnJhbWUgd2hlbiB0aGVyZSBpcyBhIGZsdXNoIGV2ZW50IGZyb20gdGhl
IHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzI0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dGV4bWFwR0wp
OgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5oOgorICAgICAgICBQcm92aWRlcyBjdXJyZW50IHRleG1hcEdMIHRvIHBsYXRmb3Jt
IGxheWVyIHByb3hpZXMgdG8gY3JlYXRlIGFuZCBjb3B5CisgICAgICAgIGJpdG1hcCB0ZXh0dXJl
cy4KKwogMjAxNy0wNS0xOSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IFVzZSBXZWJQcm9jZXNzUG9vbDo6YWxs
UHJvY2Vzc1Bvb2xzKCkgd2hlbiBzZW5kaW5nIG1lc3NhZ2UgdG8gbmV0d29yayBwcm9jZXNzIGFi
b3V0IHBhcnRpdGlvbmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAyYmJhN2ZiZTU5NGZl
NmU2ZTgwNGI1MTY5NzRkYTI1YTk3MjY2ODllLi42OWE1M2FhZmFlNDM3ZDExYjMzOWFmMTQzOGU3
MGYwYTNhNTFmN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBA
IHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBpZiAoIW1f
Y29tcG9zaXRvclRleHR1cmUpIHsKICAgICAgICAgY3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpOwog
ICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsK
LSAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1
cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCkpOworICAgICAgICBtX3Bs
YXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBU
ZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBHTF9SR0JBKSk7CiAgICAgfQogCiAgICAgLy8g
SXQgd291bGQgYmUgZ3JlYXQgaWYgd2UgY291bGQganVzdCBzd2FwIHRoZSBidWZmZXJzIGhlcmUg
YXMgd2UgZG8gd2l0aCB3ZWJnbCwgYnV0IHRoYXQgYnJlYWtzIHRoZSBjYXNlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDlm
MzRkYjUxYTYxMmNiMTg4MGJlNDZkZGY2NGU3NDgyNjQ2NzFkZTcuLmNkMjM4YmJmZTk2YWE4MDBm
NGM3YTY2NjBiZmY5NTA0ZDYwODE0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkK
ICAgICBpZiAoVU5MSUtFTFkoIWZyYW1lSG9sZGVyLT5pc1ZhbGlkKCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4oZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpLCBmcmFtZUhvbGRlci0+c2l6ZSgp
LCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKSwg
ZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKTsKICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRl
cihXVEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hO
ZXh0QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICNlbHNlCkBAIC04NDEsNiArODQxLDIw
IEBAIEdzdEZsb3dSZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmV3UHJl
cm9sbENhbGxiYWNrKEdzdEVsZW1lbnQqIHNpCiAgICAgcGxheWVyLT50cmlnZ2VyUmVwYWludChz
YW1wbGUuZ2V0KCkpOwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpmbHVzaEN1cnJlbnRCdWZmZXIoKQoreworICAgIFdU
Rjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBtX3NhbXBs
ZS5jbGVhcigpOworCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BsYXRmb3Jt
TGF5ZXJQcm94eS0+bG9jaygpKTsKKworICAgICAgICBpZiAoIW1fcGxhdGZvcm1MYXllclByb3h5
LT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3BsYXRmb3Jt
TGF5ZXJQcm94eS0+ZHJvcEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZpbmdUZXh0dXJlKCk7Cit9
CiAjZW5kaWYKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0xMTAwLDYgKzExMTQsMTYgQEAgR3N0RWxlbWVudCog
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlR0xBcHBTaW5rKCkKICAgICBn
X3NpZ25hbF9jb25uZWN0KGFwcHNpbmssICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSyhuZXdTYW1w
bGVDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXBwc2luaywgIm5ldy1w
cmVyb2xsIiwgR19DQUxMQkFDSyhuZXdQcmVyb2xsQ2FsbGJhY2spLCB0aGlzKTsKIAorICAgIEdS
ZWZQdHI8R3N0UGFkPiBwYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQo
YXBwc2luaywgInNpbmsiKSk7CisgICAgZ3N0X3BhZF9hZGRfcHJvYmUgKHBhZC5nZXQoKSwgR1NU
X1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNILCBbXSAoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZv
KiBpbmZvLCAgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKKyAgICAg
ICAgaWYgKEdTVF9FVkVOVF9UWVBFIChHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQgKGluZm8pKSAh
PSBHU1RfRVZFTlRfRkxVU0hfU1RBUlQpCisgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9C
RV9PSzsKKworICAgICAgICBhdXRvKiBwbGF5ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlKj4odXNlckRhdGEpOworICAgICAgICBwbGF5ZXItPmZsdXNoQ3Vy
cmVudEJ1ZmZlcigpOworICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICB9LCB0
aGlzLCBudWxscHRyKTsKKwogICAgIHJldHVybiBhcHBzaW5rOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA2NWY2NWJkMTBk
MWQyMzQwODQ0ZWQ2ZjgzYzBiNmUyMjBiYzQ4NWVhLi40YjRkNTMxNGVhNTM5NGUzODczMmMzZTA1
NDAyNmQyZjM2YWI4YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmgKQEAgLTE1Miw2ICsxNTIsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNF
KEdTVFJFQU1FUl9HTCkKICAgICBzdGF0aWMgR3N0Rmxvd1JldHVybiBuZXdTYW1wbGVDYWxsYmFj
ayhHc3RFbGVtZW50KiwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSopOwogICAgIHN0
YXRpYyBHc3RGbG93UmV0dXJuIG5ld1ByZXJvbGxDYWxsYmFjayhHc3RFbGVtZW50KiwgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSopOworICAgIHZvaWQgZmx1c2hDdXJyZW50QnVmZmVy
KCk7CiAgICAgR3N0RWxlbWVudCogY3JlYXRlR0xBcHBTaW5rKCk7CiAgICAgR3N0RWxlbWVudCog
Y3JlYXRlVmlkZW9TaW5rR0woKTsKICAgICBHc3RHTENvbnRleHQqIGdzdEdMQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2xDb250ZXh0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmlu
ZGV4IDQ1MDk3N2QzNDI5MDY0MjI1MDNlNzZjZGQ4YTZhNTJmN2NmMzgwNGEuLmYyZWQwMWJmOWYw
ZWE5Y2VkZWM0N2Q0MTBhNTNmNGVmODM0Y2U0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBA
IC01Nyw5ICs1NywxNCBAQCBCaXRtYXBUZXh0dXJlR0wqIHRvQml0bWFwVGV4dHVyZUdMKEJpdG1h
cFRleHR1cmUqIHRleHR1cmUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVH
TCo+KHRleHR1cmUpOwogfQogCi1CaXRtYXBUZXh0dXJlR0w6OkJpdG1hcFRleHR1cmVHTChSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+JiYgY29udGV4dDNELCBjb25zdCBGbGFncyBmbGFncykKK0Jp
dG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4m
JiBjb250ZXh0M0QsIGNvbnN0IEZsYWdzIGZsYWdzLCBHQzNEaW50IGludGVybmFsRm9ybWF0KQog
ICAgIDogbV9jb250ZXh0M0QoV1RGTW92ZShjb250ZXh0M0QpKQogeworICAgIGlmIChpbnRlcm5h
bEZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RE9OVF9DQVJFKSB7CisgICAgICAgIG1faW50
ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaWYgKGZsYWdzICYgRkJPQXR0YWNobWVudCkKICAgICAgICAgbV9pbnRl
cm5hbEZvcm1hdCA9IG1fZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CiAgICAgZWxz
ZSB7CkBAIC0zNDIsNiArMzQ3LDM0IEBAIEludFNpemUgQml0bWFwVGV4dHVyZUdMOjpzaXplKCkg
Y29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlU2l6ZTsKIH0KIAorCit2b2lkIEJpdG1hcFRleHR1
cmVHTDo6Y29weUZyb21FeHRlcm5hbFRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCBzb3VyY2VUZXh0
dXJlSUQpCit7CisgICAgR0MzRGludCBib3VuZFRleHR1cmUgPSAwOworICAgIEdDM0RpbnQgYm91
bmRGcmFtZWJ1ZmZlciA9IDA7CisgICAgR0MzRGludCBib3VuZEFjdGl2ZVRleHR1cmUgPSAwOwor
CisgICAgbV9jb250ZXh0M0QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X0JJTkRJTkdfMkQsICZib3VuZFRleHR1cmUpOworICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQklORElORywgJmJvdW5kRnJhbWVidWZm
ZXIpOworICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6QUNU
SVZFX1RFWFRVUkUsICZib3VuZEFjdGl2ZVRleHR1cmUpOworCisgICAgbV9jb250ZXh0M0QtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBzb3VyY2VUZXh0dXJlSUQp
OworCisgICAgUGxhdGZvcm0zRE9iamVjdCBjb3B5RmJvID0gbV9jb250ZXh0M0QtPmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgICAgbV9jb250ZXh0M0QtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIGNvcHlGYm8pOworICAgIG1fY29udGV4dDNELT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHNvdXJjZVRleHR1cmVJRCwgMCk7CisKKyAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOworICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaWQoKSk7CisgICAgbV9jb250ZXh0M0Qt
PmNvcHlUZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAw
LCAwLCAwLCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCkpOwor
CisgICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBib3VuZFRleHR1cmUpOworICAgIG1fY29udGV4dDNELT5iaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBib3VuZEZyYW1lYnVmZmVyKTsKKyAgICBtX2Nv
bnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGJvdW5k
VGV4dHVyZSk7CisgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoYm91bmRBY3RpdmVUZXh0
dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+ZGVsZXRlRnJhbWVidWZmZXIoY29weUZibyk7Cit9CisK
IH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmgKaW5kZXggM2E0ZDgwNDczNDI2ZjIxNmZjOWVkMWViM2EwYjY3
Y2ZkNjg0YjM5Zi4uYWJiZmJkZTMyY2ZiN2UwNmJhYzk1YmY1ZTJhMTM4MDE5MTQ2Y2Y5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb247
CiAKIGNsYXNzIEJpdG1hcFRleHR1cmVHTCA6IHB1YmxpYyBCaXRtYXBUZXh0dXJlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250
ZXh0M0Q+JiYgY29udGV4dDNELCBjb25zdCBGbGFncyBmbGFncyA9IE5vRmxhZykKKyAgICBzdGF0
aWMgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250ZXh0M0Q+JiYgY29u
dGV4dDNELCBjb25zdCBGbGFncyBmbGFncyA9IE5vRmxhZywgR0MzRGludCBpbnRlcm5hbEZvcm1h
dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpET05UX0NBUkUpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCaXRtYXBUZXh0dXJlR0woV1RGTW92ZShjb250ZXh0M0QpLCBmbGFncykp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBUZXh0dXJlR0woV1RGTW92ZShj
b250ZXh0M0QpLCBmbGFncywgaW50ZXJuYWxGb3JtYXQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5CaXRtYXBUZXh0dXJlR0woKTsKQEAgLTc2LDggKzc2LDEwIEBAIHB1YmxpYzoKIAogICAgIEdD
M0RpbnQgaW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRm9ybWF0OyB9
CiAKKyAgICB2b2lkIGNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlEKTsKKwogcHJpdmF0ZToKLSAgICBCaXRtYXBUZXh0dXJlR0woUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiYmLCBjb25zdCBGbGFncyk7CisgICAgQml0bWFwVGV4dHVyZUdMKFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4mJiwgY29uc3QgRmxhZ3MsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQp
OwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX2lkIHsgMCB9OwogICAgIEludFNpemUgbV90ZXh0
dXJlU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDY3MzBkOGU3YmRhZmYxNjVlMDc4ODcyNjEwYzkx
ODA5NzIwZDJjM2UuLjI1NGQ3ODY0Y2E2MDM4MTFhMzE1NTQ0OWNlYmJmZjJjNmI4MTkwMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVy
ZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGVuZENsaXAoKSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKEdDM0RpbnQgaW50
ZXJuYWxGb3JtYXQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50
RmxhZ3MgPSAwKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5kUGFpbnRpbmcoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKaW5kZXggYTE2MmJi
ODUwM2NmYTgxNzBjNDBhMzE3MmY2ZGM4MTNhZDVkNTFlYS4uN2I1MzY5MWE0YWQ2NDI2YTczNDA5
NzY5YjU2MGVlMDY1YjM3NjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogCiAgICAgewogICAgICAgICBM
b2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsKLSAgICAgICAg
bV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0
dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHkt
PnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxh
Z3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2Nv
bnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA5
OGRjODQ1ZjAwZjI4MTYwZjQ0ODU4ZmQ0ODllYzVmYzIxMjY1ZDk3Li42NzQ0Njk0NGNhMjIyNDVm
YjQ3NTc2Zjg2Yzc2OGExM2E4ZWM4MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtNzQ2
LDkgKzc0Niw5IEBAIEludFJlY3QgVGV4dHVyZU1hcHBlckdMOjpjbGlwQm91bmRzKCkKICAgICBy
ZXR1cm4gY2xpcFN0YWNrKCkuY3VycmVudCgpLnNjaXNzb3JCb3g7CiB9CiAKLVJlZjxCaXRtYXBU
ZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoKQorUmVmPEJpdG1hcFRleHR1
cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZShHQzNEaW50IGludGVybmFsRm9ybWF0
KQogewotICAgIHJldHVybiBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZSgqbV9jb250ZXh0M0QpOwor
ICAgIHJldHVybiBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZSgqbV9jb250ZXh0M0QsIGludGVybmFs
Rm9ybWF0KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBw
ZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IGU3
YzgwZTkyNjk0NWEwZTVjYzlhNGY5NDljODg1N2QwMWUzOTRiZDUuLmFkYzY4YTlhNTFhNDY2ZDE1
YWNiZGQxNWU3NTFjZjk4NjU4OWYyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTcwLDcgKzcw
LDggQEAgcHVibGljOgogICAgIHZvaWQgZW5kQ2xpcCgpIG92ZXJyaWRlOwogICAgIEludFJlY3Qg
Y2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIEludFNpemUgbWF4VGV4dHVyZVNpemUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKDIwMDAsIDIwMDApOyB9Ci0gICAgUmVmPEJpdG1h
cFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBvdmVycmlkZTsKKyAgICBSZWY8Qml0bWFwVGV4dHVy
ZT4gY3JlYXRlVGV4dHVyZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGNyZWF0ZVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OkRPTlRfQ0FSRSk7IH0KKyAgICBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRl
VGV4dHVyZShHQzNEaW50IGludGVybmFsRm9ybWF0KSBvdmVycmlkZTsKICAgICBpbmxpbmUgR3Jh
cGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0M0QuZ2V0KCk7IH0KIAogICAgIHZvaWQgZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1
cmUmIHNvdXJjZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUqIGNvbnRlbnRUZXh0dXJlLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb24mLCBpbnQgcGFzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCA4ODg1MWZlNGIzMjI1Mjg4OGRi
YzJmOThmMDAwYzgyMTlkNTAzNTY3Li4xZmQwOWE1ZWQzNDg1NDkxYTFiZTkwNzE0MTA3Mjk2N2Q1
ZDFhODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5jcHAKQEAgLTI2LDE5ICsyNiwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCiAKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8
Qml0bWFwVGV4dHVyZT4mJiB0ZXh0dXJlKQorVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiYmIHRleHR1cmUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCiAgICAgOiBtX3RleHR1
cmUoV1RGTW92ZSh0ZXh0dXJlKSkKICAgICAsIG1fdGV4dHVyZUlEKDApCi0gICAgLCBtX2V4dHJh
RmxhZ3MoMCkKKyAgICAsIG1fZXh0cmFGbGFncyhmbGFncykKICAgICAsIG1faGFzTWFuYWdlZFRl
eHR1cmUodHJ1ZSkKIHsKIH0KIAotVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IElu
dFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCitUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1
aW50IHRleHR1cmVJRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncywgR0MzRGludCBpbnRlcm5hbEZvcm1hdCkKICAgICA6IG1fdGV4dHVyZUlEKHRleHR1
cmVJRCkKICAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9pbnRlcm5hbEZvcm1hdChpbnRlcm5h
bEZvcm1hdCkKICAgICAsIG1fZXh0cmFGbGFncyhmbGFncykKICAgICAsIG1faGFzTWFuYWdlZFRl
eHR1cmUoZmFsc2UpCiB7CkBAIC00OSw2ICs1MiwxOCBAQCBib29sIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXpl
LAogICAgIHJldHVybiBtX3RleHR1cmUgJiYgKG1fdGV4dHVyZS0+c2l6ZSgpID09IHNpemUpICYm
IChzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPihtX3RleHR1cmUuZ2V0KCkpLT5pbnRlcm5h
bEZvcm1hdCgpID09IGludGVybmFsRm9ybWF0IHx8IGludGVybmFsRm9ybWF0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpET05UX0NBUkUpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpj
bG9uZShUZXh0dXJlTWFwcGVyR0wmIHRleG1hcEdMKQoreworICAgIGlmIChtX2hhc01hbmFnZWRU
ZXh0dXJlIHx8ICFtX3RleHR1cmVJRCkgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRl
eHR1cmUgPSB0ZXhtYXBHTC5jcmVhdGVUZXh0dXJlKG1faW50ZXJuYWxGb3JtYXQpOworICAgIHRl
eHR1cmUtPnJlc2V0KG1fc2l6ZSk7CisgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
KnRleHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKKyAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RG
TW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKK30KKwogdm9pZCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIFRleHR1
cmVNYXBwZXJHTCYgdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0
dXJlTWFwcGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmgKaW5kZXggMmFmZTViMzA4YTM1OGVhZGJlOGMwMWEyNTdlNTNlYjg4Njc1NWQyZS4uOTY0
ZjQwMGRiODNlYmM2OTg0N2Q2NTI5ZGIyNmRkY2MwNTM1NjU2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKQEAgLTM4LDggKzM4LDggQEAgY2xh
c3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOwogcHVi
bGljOgotICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiYmKTsKLSAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQg
dGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyk7CisgICAg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYs
IFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgPSAwKTsKKyAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiwgVGV4dHVyZU1hcHBl
ckdMOjpGbGFncywgR0MzRGludCBpbnRlcm5hbEZvcm1hdCk7CiAKICAgICB2aXJ0dWFsIH5UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcigpID0gZGVmYXVsdDsKIApAQCAtNjMsNiArNjMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKHN0ZDo6
dW5pcXVlX3B0cjxVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyPiBob2xkZXIpIHsgbV91bm1hbmFn
ZWRCdWZmZXJEYXRhSG9sZGVyID0gV1RGTW92ZShob2xkZXIpOyB9CiAgICAgdm9pZCBzZXRFeHRy
YUZsYWdzKFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpIHsgbV9leHRyYUZsYWdzID0gZmxh
Z3M7IH0KIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4gY2xvbmUoVGV4dHVyZU1hcHBlckdMJik7CisKIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gbV90ZXh0dXJlOwpAQCAtNzAsNiArNzIsNyBAQCBwcml2YXRlOgogCiAg
ICAgR0x1aW50IG1fdGV4dHVyZUlEOwogICAgIEludFNpemUgbV9zaXplOworICAgIEdDM0RpbnQg
bV9pbnRlcm5hbEZvcm1hdDsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIG1fZXh0cmFGbGFn
czsKICAgICBib29sIG1faGFzTWFuYWdlZFRleHR1cmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVu
bWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXI+IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRleCBk
YzNlNzQ3ZWVkZGI2ZTc1YjhhMWY5MzNhMjY2MzE2YTI4YmMzZjU0Li5lMjkxMGMzNWJiMWZiZjU2
MjllM2NjMjAyMGU1ODNkOWM5ZmE0YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC0xNzgsNiArMTc4LDM2IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6c3dhcEJ1ZmZlcigpCiAgICAgICAgIG1fdXNlZEJ1
ZmZlcnMuYXBwZW5kKFdURk1vdmUocHJldkJ1ZmZlcikpOwogfQogCit2b2lkIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmRyb3BDdXJyZW50QnVmZmVyV2hpbGVQcmVzZXJ2aW5nVGV4
dHVyZSgpCit7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
ICAgICBpZiAobV9wZW5kaW5nQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAobV9wZW5kaW5nQnVm
ZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKQorICAgICAgICAgICAgICAgIG1fdXNlZEJ1ZmZlcnMu
YXBwZW5kKFdURk1vdmUobV9wZW5kaW5nQnVmZmVyKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgbV9wZW5kaW5nQnVmZmVyLnJlc2V0KCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzY2hlZHVsZVVwZGF0ZU9uQ29tcG9zaXRvclRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PigqdGhpcyldIHsKKworICAg
ICAgICBpZiAoIW1fY29tcG9zaXRvciB8fCAhbV90YXJnZXRMYXllcikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gbV9jb21wb3NpdG9y
LT50ZXhtYXBHTCgpOworICAgICAgICBpZiAoIXRleG1hcEdMIHx8ICFtX2N1cnJlbnRCdWZmZXIp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9IG1fY3VycmVu
dEJ1ZmZlci0+Y2xvbmUoKnRleG1hcEdMKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3YXBCdWZm
ZXIoKTsKKyAgICB9KTsKK30KKwogYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
OjpzY2hlZHVsZVVwZGF0ZU9uQ29tcG9zaXRvclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdXBk
YXRlRnVuY3Rpb24pCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IGI3MTBhYjRjZWRj
MjU1NjgwYjU4ZjIxYmRjMTdiNWYwMzdiNjY4NzguLjY0MmZiY2IyNWRkZjdiNjEyMjkzNDJiMjhk
NTViYTE2ZjNhYTc3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHkuaApAQCAtNDQsNiArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFRleHR1cmVNYXBwZXJHTDsKIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKIGNsYXNzIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjsKQEAgLTYwLDYgKzYxLDcgQEAgcHVibGljOgogICAgIGNsYXNzIENvbXBv
c2l0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG9uTmV3QnVmZmVyQXZh
aWxhYmxlKCkgPSAwOworICAgICAgICB2aXJ0dWFsIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wo
KSA9IDA7CiAgICAgfTsKIAogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKTsK
QEAgLTc3LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAg
dm9pZCBzd2FwQnVmZmVyKCk7CisgICAgdm9pZCBkcm9wQ3VycmVudEJ1ZmZlcldoaWxlUHJlc2Vy
dmluZ1RleHR1cmUoKTsKIAogICAgIGJvb2wgc2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJl
YWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKaW5kZXggMzQ5Njg2MmQ5OTNhZWE3ZTZiMWQzZTUwMmUxODExOTQ1Y2QyNDI0
My4uOGM2M2I0NTk4MzM3YTU1ZmU0MWJmZDQ5NDljNTY3OWQ0ZTNiYzEwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0xNjgsNiArMTY4LDE0IEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWlsYWJsZSgpCiB7CiAg
ICAgdXBkYXRlVmlld3BvcnQoKTsKIH0KKworVGV4dHVyZU1hcHBlckdMKiBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnRleG1hcEdMKCkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZU1h
cHBlckdMKj4obV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKK30KICNlbmRpZgogCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChUZXh0dXJl
TWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYg
c3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IGIyMDAw
NDdkNTA4MTExZDgxZGM0NWY1ODgzOTMyM2ZkMTNkYTY3MTkuLjgzNTMxZGI5ZjFkMzBjNjRjNjEw
Mjg3MWMxZjYxZGNmM2JkNDkxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5oCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eS5oPgogI2VuZGlmCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFRleHR1cmVNYXBwZXJHTDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOwpAQCAtMTQyLDYgKzE0Niw3IEBAIHByaXZhdGU6CiAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAgICAgdm9pZCBvbk5ld0J1ZmZl
ckF2YWlsYWJsZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTCogdGV4
bWFwR0woKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgLy8gUmVuZGVyIHF1ZXVlIGNhbiBiZSBh
Y2Nlc3NlZCBvbnkgZnJvbSBtYWluIHRocmVhZCBvciB1cGRhdGVQYWludE5vZGUgY2FsbCBzdGFj
ayEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311826</attachid>
            <date>2017-06-02 08:09:27 -0700</date>
            <delta_ts>2017-06-07 04:31:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172427-20170602170926.patch</filename>
            <type>text/plain</type>
            <size>26493</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U0NGUwZjA3YTAzMTI5
NmUyNzRjY2ZiMjhhZjBhYTc5NWNmODg4Yy4uYjExMGZkZDBmNTBmODE4MDc1NTExMWY5YjMwMWE1
ZjUyNTdiMmZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA2LTAyICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJHTF0g
UmVsZWFzZSBHc3RWaWRlb0ZyYW1lIHdoZW4gdGhlcmUgaXMgYSBmbHVzaCBldmVudCBmcm9tIHRo
ZSBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcyNDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2l0aG91dCBHU3RyZWFtZXJHTCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgY29waWVz
IHRoZSB2aWRlbyBmcmFtZSBmcm9tCisgICAgICAgIHRoZSBkZWNvZGVyJ3MgYnVmZmVyIHRvIHRo
ZSB0ZXh0dXJlIHRvIGRpc3BsYXkgYSB2aWRlby4gU28gaXQgbWFrZXMgcG9zc2libGUKKyAgICAg
ICAgdG8gcmVsZWFzZSB0aGUgR3N0U2FtcGxlIHdoZW4gaXQgZ290IGEgZmx1c2ggc3RhcnQgZXZl
bnQgdG8gZnJlZSB0aGUgZGVjb2RlcidzCisgICAgICAgIGJ1ZmZlciB0byB0aGUgZGVjb2RlciB3
aXRob3V0IHNpZGUtZWZmZWN0cy4KKworICAgICAgICBVbmxpa2UgdGhlIHRyYWRpdGlvbmFsIHdh
eSB0byByZW5kZXIgdmlkZW8sIEdTdHJlYW1lciBHTCBkb2VzIG5vdCBjb3B5IGEKKyAgICAgICAg
dGV4dHVyZSBmcm9tIHRoZSBkZWNvZGVyIHRvIHRoZSB0ZXh0dXJlIG1hcHBlcidzIGJ1ZmZlciB0
byBkcmF3IHZpZGVvIGZyYW1lLgorICAgICAgICBJdCB1c2VzIHNhbWUgR3N0TWVtb3J5IHdpdGgg
dGhlIGdzdCBwaXBlbGluZSB0byBtYW5hZ2UgdGhlIHRleHR1cmUgdG8gcHJldmVudAorICAgICAg
ICBjb3B5IG9wZXJhdGlvbnMuIFNvIHdpdGhvdXQgcmVsZWFzaW5nIGEgbGF5ZXIgYnVmZmVyLCB0
aGVyZSBpcyBubyB3YXkgdG8KKyAgICAgICAgcmV0dXJuIEdzdE1lbW9yeSB0byB0aGUgYnVmZmVy
IHBvb2wuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWxlYXNlcyBjdXJyZW50IEdzdFNhbXBsZSB3
aGVuIHRoZSBwbGF5ZXIgZ290IHRoZSBmbHVzaCBzdGFydAorICAgICAgICBldmVudC4gIEl0IGRl
c3RydWN0cyB0aGUgcGxhdGZvcm0gbGF5ZXIgYnVmZmVyIGFueSB0aW1lIHRoZXJlIGlzIGEgZmx1
c2ggc3RhcnQKKyAgICAgICAgZXZlbnQuCisKKyAgICAgICAgSG93ZXZlciwgaXQgaXMgbm90IGVu
b3VnaCB0byByZWxlYXNlIHRoZSBHc3RNZW1vcnkuIFRoZSBwbGF0Zm9ybSBsYXllciBwcm94eQor
ICAgICAgICBzaG91bGQgY29weSBjdXJyZW50IGJ1ZmZlciB0byBzaG93IGl0IHRvIHRoZSBjb21w
b3NpdG9yIGluc3RlYWQgb2YgYSBibGFuaworICAgICAgICBmcmFtZS4gSXQgcHJldmVudHMgZmxp
Y2tlcmluZ3MgdW50aWwgZ2V0dGluZyBhIG5ldyBmcmFtZSBhZnRlciBoYW5kbGluZyBmbHVzaAor
ICAgICAgICBldmVudHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGVyZSBzaG91bGRuJ3Qg
YmUgYmVoYXZpb3IgY2hhbmdlcworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6
OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3Np
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OmZsdXNoQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVHTEFwcFNpbmspOiBBZGRzCisgICAgICAgIGhhbmRsZXIg
Zm9yIHRoZSBmbHVzaCBldmVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZUdMOjpjb3B5RnJvbUV4dGVybmFsVGV4dHVyZSk6IENvcGllcworICAgICAgICBh
IGV4dGVybmFsIHRleHR1cmUgdG8gdGhlIG1hbmFnZWQgdGV4dHVyZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmg6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZSk6CisgICAgICAgIFRvIGNyZWF0ZSB0aGUgbWFuYWdl
ZCB0ZXh0dXJlIHdpdGggc3BlY2lmaWMgZm9ybWF0LCB0aGlzIHBhdGNoIGFkZHMgYQorICAgICAg
ICBvcHRpb25hbCBwYXJhbWV0ZXIgZm9yIGEgdGV4dHVyZSBmb3JtYXQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRl
eHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YXBwZW5kVG9VbnVzZWRCdWZmZXJzKTogQWRkZWQK
KyAgICAgICAgdG8gc2NoZWR1bGUgcmVsZWFzaW5nIHVudXNlZCBidWZmZXJzIGluIG1haW4gdGhy
ZWFkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
c3dhcEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5Ojpkcm9wQ3VycmVudEJ1ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5Lmg6CisKIDIwMTctMDYtMDIgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLK11bV1BFXSBBbGxvdyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSB0
byBwZXJmb3JtIGNvbG9yc3BhY2UgY29udmVyc2lvbnMgd2l0aCB0aGUgc291cmNlIHRleHR1cmUg
cGl4ZWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzJlNGI4ZWU0OWMwMmYwZWE4NDdkMWY0Yjk1N2VkNGJkODEy
MDEzMy4uNTQyYzE0YThiZDM2OGU5MmM4ZmE5MjdhZTEyNjA0Nzg1MWE1YWE1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE4IEBACiAyMDE3LTA2LTAyICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBp
Z2FsaWEuY29tPgogCisgICAgICAgIFtHU3RyZWFtZXJHTF0gUmVsZWFzZSBHc3RWaWRlb0ZyYW1l
IHdoZW4gdGhlcmUgaXMgYSBmbHVzaCBldmVudCBmcm9tIHRoZSBwaXBlbGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNDI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnRleG1hcEdMKToKKyAgICAgICAgKiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKyAgICAgICAg
UHJvdmlkZXMgY3VycmVudCB0ZXhtYXBHTCB0byBwbGF0Zm9ybSBsYXllciBwcm94aWVzIHRvIGNy
ZWF0ZSBhbmQgY29weQorICAgICAgICBiaXRtYXAgdGV4dHVyZXMuCisKKzIwMTctMDYtMDIgIEd3
YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CisKICAgICAgICAgUkVHUkVTU0lPTihy
MjE3MjE0KTogW0Nvb3JkaW5hdGVkIEdyYXBoaWNzXSBVcGRhdGVBdGxhcyBkaWRuJ3QgcmVsZWFz
ZWQgd2hpbGUgcmVzZXR0aW5nIHRlc3RydW5uZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mjc0NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IDJiYmE3ZmJlNTk0ZmU2ZTZlODA0YjUxNjk3NGRhMjVhOTcyNjY4OWUuLjY5YTUzYWFmYWU0Mzdk
MTFiMzM5YWYxNDM4ZTcwZjBhM2E1MWY3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnN3YXBCdWZmZXJzSWZOZWVkZWQo
KQogICAgIGlmICghbV9jb21wb3NpdG9yVGV4dHVyZSkgewogICAgICAgICBjcmVhdGVDb21wb3Np
dG9yQnVmZmVyKCk7CiAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclBy
b3h5LT5sb2NrKCkpOwotICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZm
ZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9j
b21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kKSk7
CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2Vf
dW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0
dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKICAg
ICB9CiAKICAgICAvLyBJdCB3b3VsZCBiZSBncmVhdCBpZiB3ZSBjb3VsZCBqdXN0IHN3YXAgdGhl
IGJ1ZmZlcnMgaGVyZSBhcyB3ZSBkbyB3aXRoIHdlYmdsLCBidXQgdGhhdCBicmVha3MgdGhlIGNh
c2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKaW5kZXggYTZkNzFjNTVkMzFmNzdlYTIyZTY2Yzg2OTE1ZjU4ODUxY2Y5NjY1ZC4uOTIz
YmEyNjYwNGRlN2VlODMwNmI3ZjVmMDE5NTdjMjMxYTMwNDkzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzI1LDcgKzcy
NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVU
b0NvbXBvc2l0b3IoKQogICAgIGlmIChVTkxJS0VMWSghZnJhbWVIb2xkZXItPmlzVmFsaWQoKSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCksIGZyYW1l
SG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oZnJhbWVIb2xkZXIt
PnRleHR1cmVJRCgpLCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFnZWRC
dWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICBtX3BsYXRmb3JtTGF5
ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogI2Vsc2UKQEAg
LTg0MSw2ICs4NDEsMTkgQEAgR3N0Rmxvd1JldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpuZXdQcmVyb2xsQ2FsbGJhY2soR3N0RWxlbWVudCogc2kKICAgICBwbGF5ZXItPnRy
aWdnZXJSZXBhaW50KHNhbXBsZS5nZXQoKSk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmZsdXNoQ3VycmVudEJ1ZmZl
cigpCit7CisgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgp
OworICAgIG1fc2FtcGxlLmNsZWFyKCk7CisKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworCisgICAgICAgIGlmIChtX3BsYXRm
b3JtTGF5ZXJQcm94eS0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fcGxhdGZvcm1MYXllclBy
b3h5LT5kcm9wQ3VycmVudEJ1ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUoKTsKKyAgICB9Cit9
CiAjZW5kaWYKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0xMDQ0LDYgKzEwNTcsMTYgQEAgR3N0RWxlbWVudCog
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlR0xBcHBTaW5rKCkKICAgICBn
X3NpZ25hbF9jb25uZWN0KGFwcHNpbmssICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSyhuZXdTYW1w
bGVDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXBwc2luaywgIm5ldy1w
cmVyb2xsIiwgR19DQUxMQkFDSyhuZXdQcmVyb2xsQ2FsbGJhY2spLCB0aGlzKTsKIAorICAgIEdS
ZWZQdHI8R3N0UGFkPiBwYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQo
YXBwc2luaywgInNpbmsiKSk7CisgICAgZ3N0X3BhZF9hZGRfcHJvYmUgKHBhZC5nZXQoKSwgR1NU
X1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNILCBbXSAoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZv
KiBpbmZvLCAgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKKyAgICAg
ICAgaWYgKEdTVF9FVkVOVF9UWVBFIChHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQgKGluZm8pKSAh
PSBHU1RfRVZFTlRfRkxVU0hfU1RBUlQpCisgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9C
RV9PSzsKKworICAgICAgICBhdXRvKiBwbGF5ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlKj4odXNlckRhdGEpOworICAgICAgICBwbGF5ZXItPmZsdXNoQ3Vy
cmVudEJ1ZmZlcigpOworICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICB9LCB0
aGlzLCBudWxscHRyKTsKKwogICAgIHJldHVybiBhcHBzaW5rOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA4OTkyZjQzNTIw
NjQ4ZDU5NTAzMDk5NmU5ZGNjM2RjOTM4MzQ5YjQ2Li41NDE0NWQwZmE5ZjQwMDQzYTk3YTFhYzNk
M2I2YmFkZDJmMmQ0NjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmgKQEAgLTE1Miw2ICsxNTIsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNF
KEdTVFJFQU1FUl9HTCkKICAgICBzdGF0aWMgR3N0Rmxvd1JldHVybiBuZXdTYW1wbGVDYWxsYmFj
ayhHc3RFbGVtZW50KiwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSopOwogICAgIHN0
YXRpYyBHc3RGbG93UmV0dXJuIG5ld1ByZXJvbGxDYWxsYmFjayhHc3RFbGVtZW50KiwgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSopOworICAgIHZvaWQgZmx1c2hDdXJyZW50QnVmZmVy
KCk7CiAgICAgR3N0RWxlbWVudCogY3JlYXRlR0xBcHBTaW5rKCk7CiAgICAgR3N0RWxlbWVudCog
Y3JlYXRlVmlkZW9TaW5rR0woKTsKICAgICBHc3RHTENvbnRleHQqIGdzdEdMQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2xDb250ZXh0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmlu
ZGV4IDQ1MDk3N2QzNDI5MDY0MjI1MDNlNzZjZGQ4YTZhNTJmN2NmMzgwNGEuLmYyZWQwMWJmOWYw
ZWE5Y2VkZWM0N2Q0MTBhNTNmNGVmODM0Y2U0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBA
IC01Nyw5ICs1NywxNCBAQCBCaXRtYXBUZXh0dXJlR0wqIHRvQml0bWFwVGV4dHVyZUdMKEJpdG1h
cFRleHR1cmUqIHRleHR1cmUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVH
TCo+KHRleHR1cmUpOwogfQogCi1CaXRtYXBUZXh0dXJlR0w6OkJpdG1hcFRleHR1cmVHTChSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+JiYgY29udGV4dDNELCBjb25zdCBGbGFncyBmbGFncykKK0Jp
dG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4m
JiBjb250ZXh0M0QsIGNvbnN0IEZsYWdzIGZsYWdzLCBHQzNEaW50IGludGVybmFsRm9ybWF0KQog
ICAgIDogbV9jb250ZXh0M0QoV1RGTW92ZShjb250ZXh0M0QpKQogeworICAgIGlmIChpbnRlcm5h
bEZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RE9OVF9DQVJFKSB7CisgICAgICAgIG1faW50
ZXJuYWxGb3JtYXQgPSBtX2Zvcm1hdCA9IGludGVybmFsRm9ybWF0OworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaWYgKGZsYWdzICYgRkJPQXR0YWNobWVudCkKICAgICAgICAgbV9pbnRl
cm5hbEZvcm1hdCA9IG1fZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CiAgICAgZWxz
ZSB7CkBAIC0zNDIsNiArMzQ3LDM0IEBAIEludFNpemUgQml0bWFwVGV4dHVyZUdMOjpzaXplKCkg
Y29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlU2l6ZTsKIH0KIAorCit2b2lkIEJpdG1hcFRleHR1
cmVHTDo6Y29weUZyb21FeHRlcm5hbFRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCBzb3VyY2VUZXh0
dXJlSUQpCit7CisgICAgR0MzRGludCBib3VuZFRleHR1cmUgPSAwOworICAgIEdDM0RpbnQgYm91
bmRGcmFtZWJ1ZmZlciA9IDA7CisgICAgR0MzRGludCBib3VuZEFjdGl2ZVRleHR1cmUgPSAwOwor
CisgICAgbV9jb250ZXh0M0QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X0JJTkRJTkdfMkQsICZib3VuZFRleHR1cmUpOworICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQklORElORywgJmJvdW5kRnJhbWVidWZm
ZXIpOworICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6QUNU
SVZFX1RFWFRVUkUsICZib3VuZEFjdGl2ZVRleHR1cmUpOworCisgICAgbV9jb250ZXh0M0QtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBzb3VyY2VUZXh0dXJlSUQp
OworCisgICAgUGxhdGZvcm0zRE9iamVjdCBjb3B5RmJvID0gbV9jb250ZXh0M0QtPmNyZWF0ZUZy
YW1lYnVmZmVyKCk7CisgICAgbV9jb250ZXh0M0QtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIGNvcHlGYm8pOworICAgIG1fY29udGV4dDNELT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHNvdXJjZVRleHR1cmVJRCwgMCk7CisKKyAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOworICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaWQoKSk7CisgICAgbV9jb250ZXh0M0Qt
PmNvcHlUZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAw
LCAwLCAwLCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCkpOwor
CisgICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBib3VuZFRleHR1cmUpOworICAgIG1fY29udGV4dDNELT5iaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBib3VuZEZyYW1lYnVmZmVyKTsKKyAgICBtX2Nv
bnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGJvdW5k
VGV4dHVyZSk7CisgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoYm91bmRBY3RpdmVUZXh0
dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+ZGVsZXRlRnJhbWVidWZmZXIoY29weUZibyk7Cit9CisK
IH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmgKaW5kZXggM2E0ZDgwNDczNDI2ZjIxNmZjOWVkMWViM2EwYjY3
Y2ZkNjg0YjM5Zi4uYWJiZmJkZTMyY2ZiN2UwNmJhYzk1YmY1ZTJhMTM4MDE5MTQ2Y2Y5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb247
CiAKIGNsYXNzIEJpdG1hcFRleHR1cmVHTCA6IHB1YmxpYyBCaXRtYXBUZXh0dXJlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250
ZXh0M0Q+JiYgY29udGV4dDNELCBjb25zdCBGbGFncyBmbGFncyA9IE5vRmxhZykKKyAgICBzdGF0
aWMgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250ZXh0M0Q+JiYgY29u
dGV4dDNELCBjb25zdCBGbGFncyBmbGFncyA9IE5vRmxhZywgR0MzRGludCBpbnRlcm5hbEZvcm1h
dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpET05UX0NBUkUpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCaXRtYXBUZXh0dXJlR0woV1RGTW92ZShjb250ZXh0M0QpLCBmbGFncykp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBUZXh0dXJlR0woV1RGTW92ZShj
b250ZXh0M0QpLCBmbGFncywgaW50ZXJuYWxGb3JtYXQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5CaXRtYXBUZXh0dXJlR0woKTsKQEAgLTc2LDggKzc2LDEwIEBAIHB1YmxpYzoKIAogICAgIEdD
M0RpbnQgaW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRm9ybWF0OyB9
CiAKKyAgICB2b2lkIGNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlEKTsKKwogcHJpdmF0ZToKLSAgICBCaXRtYXBUZXh0dXJlR0woUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiYmLCBjb25zdCBGbGFncyk7CisgICAgQml0bWFwVGV4dHVyZUdMKFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4mJiwgY29uc3QgRmxhZ3MsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQp
OwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX2lkIHsgMCB9OwogICAgIEludFNpemUgbV90ZXh0
dXJlU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDY3MzBkOGU3YmRhZmYxNjVlMDc4ODcyNjEwYzkx
ODA5NzIwZDJjM2UuLjI1NGQ3ODY0Y2E2MDM4MTFhMzE1NTQ0OWNlYmJmZjJjNmI4MTkwMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVy
ZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGVuZENsaXAoKSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKEdDM0RpbnQgaW50
ZXJuYWxGb3JtYXQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50
RmxhZ3MgPSAwKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5kUGFpbnRpbmcoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKaW5kZXggYTE2MmJi
ODUwM2NmYTgxNzBjNDBhMzE3MmY2ZGM4MTNhZDVkNTFlYS4uN2I1MzY5MWE0YWQ2NDI2YTczNDA5
NzY5YjU2MGVlMDY1YjM3NjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogCiAgICAgewogICAgICAgICBM
b2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsKLSAgICAgICAg
bV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0
dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHkt
PnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxh
Z3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2Nv
bnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBj
Zjc5OGY0YWFhYTA0MzdlZTc3ZTFkODFjYzhlOTA5ZjA3NTZkYjc3Li5jNmE3MWQ0MmI3MmFhMzQ1
NzkyM2FiODBjNDZlOWY1NjNjYjlkNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtNzU3
LDkgKzc1Nyw5IEBAIEludFJlY3QgVGV4dHVyZU1hcHBlckdMOjpjbGlwQm91bmRzKCkKICAgICBy
ZXR1cm4gY2xpcFN0YWNrKCkuY3VycmVudCgpLnNjaXNzb3JCb3g7CiB9CiAKLVJlZjxCaXRtYXBU
ZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoKQorUmVmPEJpdG1hcFRleHR1
cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZShHQzNEaW50IGludGVybmFsRm9ybWF0
KQogewotICAgIHJldHVybiBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZSgqbV9jb250ZXh0M0QpOwor
ICAgIHJldHVybiBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZSgqbV9jb250ZXh0M0QsIGludGVybmFs
Rm9ybWF0KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBw
ZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IGRh
MTg0YTNmYzJkN2JlMzhlN2VlODJiMDYzMzZhYjVlYWQ2ZjIxYjQuLmNjMGJkMWEwNTIyMGYyMzYw
MjY1NThmMjM2MmYyNTg5YzRlNTU4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTcxLDcgKzcx
LDggQEAgcHVibGljOgogICAgIHZvaWQgZW5kQ2xpcCgpIG92ZXJyaWRlOwogICAgIEludFJlY3Qg
Y2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIEludFNpemUgbWF4VGV4dHVyZVNpemUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKDIwMDAsIDIwMDApOyB9Ci0gICAgUmVmPEJpdG1h
cFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBvdmVycmlkZTsKKyAgICBSZWY8Qml0bWFwVGV4dHVy
ZT4gY3JlYXRlVGV4dHVyZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGNyZWF0ZVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OkRPTlRfQ0FSRSk7IH0KKyAgICBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRl
VGV4dHVyZShHQzNEaW50IGludGVybmFsRm9ybWF0KSBvdmVycmlkZTsKICAgICBpbmxpbmUgR3Jh
cGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0M0QuZ2V0KCk7IH0KIAogICAgIHZvaWQgZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1
cmUmIHNvdXJjZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUqIGNvbnRlbnRUZXh0dXJlLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb24mLCBpbnQgcGFzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCA4ODg1MWZlNGIzMjI1Mjg4OGRi
YzJmOThmMDAwYzgyMTlkNTAzNTY3Li4xZmQwOWE1ZWQzNDg1NDkxYTFiZTkwNzE0MTA3Mjk2N2Q1
ZDFhODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5jcHAKQEAgLTI2LDE5ICsyNiwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCiAKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8
Qml0bWFwVGV4dHVyZT4mJiB0ZXh0dXJlKQorVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiYmIHRleHR1cmUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCiAgICAgOiBtX3RleHR1
cmUoV1RGTW92ZSh0ZXh0dXJlKSkKICAgICAsIG1fdGV4dHVyZUlEKDApCi0gICAgLCBtX2V4dHJh
RmxhZ3MoMCkKKyAgICAsIG1fZXh0cmFGbGFncyhmbGFncykKICAgICAsIG1faGFzTWFuYWdlZFRl
eHR1cmUodHJ1ZSkKIHsKIH0KIAotVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IElu
dFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCitUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1
aW50IHRleHR1cmVJRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncywgR0MzRGludCBpbnRlcm5hbEZvcm1hdCkKICAgICA6IG1fdGV4dHVyZUlEKHRleHR1
cmVJRCkKICAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9pbnRlcm5hbEZvcm1hdChpbnRlcm5h
bEZvcm1hdCkKICAgICAsIG1fZXh0cmFGbGFncyhmbGFncykKICAgICAsIG1faGFzTWFuYWdlZFRl
eHR1cmUoZmFsc2UpCiB7CkBAIC00OSw2ICs1MiwxOCBAQCBib29sIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXpl
LAogICAgIHJldHVybiBtX3RleHR1cmUgJiYgKG1fdGV4dHVyZS0+c2l6ZSgpID09IHNpemUpICYm
IChzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPihtX3RleHR1cmUuZ2V0KCkpLT5pbnRlcm5h
bEZvcm1hdCgpID09IGludGVybmFsRm9ybWF0IHx8IGludGVybmFsRm9ybWF0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpET05UX0NBUkUpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpj
bG9uZShUZXh0dXJlTWFwcGVyR0wmIHRleG1hcEdMKQoreworICAgIGlmIChtX2hhc01hbmFnZWRU
ZXh0dXJlIHx8ICFtX3RleHR1cmVJRCkgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRl
eHR1cmUgPSB0ZXhtYXBHTC5jcmVhdGVUZXh0dXJlKG1faW50ZXJuYWxGb3JtYXQpOworICAgIHRl
eHR1cmUtPnJlc2V0KG1fc2l6ZSk7CisgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
KnRleHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKKyAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RG
TW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKK30KKwogdm9pZCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIFRleHR1
cmVNYXBwZXJHTCYgdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0
dXJlTWFwcGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmgKaW5kZXggMmFmZTViMzA4YTM1OGVhZGJlOGMwMWEyNTdlNTNlYjg4Njc1NWQyZS4uOTY0
ZjQwMGRiODNlYmM2OTg0N2Q2NTI5ZGIyNmRkY2MwNTM1NjU2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKQEAgLTM4LDggKzM4LDggQEAgY2xh
c3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOwogcHVi
bGljOgotICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiYmKTsKLSAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQg
dGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyk7CisgICAg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYs
IFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgPSAwKTsKKyAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiwgVGV4dHVyZU1hcHBl
ckdMOjpGbGFncywgR0MzRGludCBpbnRlcm5hbEZvcm1hdCk7CiAKICAgICB2aXJ0dWFsIH5UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcigpID0gZGVmYXVsdDsKIApAQCAtNjMsNiArNjMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKHN0ZDo6
dW5pcXVlX3B0cjxVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyPiBob2xkZXIpIHsgbV91bm1hbmFn
ZWRCdWZmZXJEYXRhSG9sZGVyID0gV1RGTW92ZShob2xkZXIpOyB9CiAgICAgdm9pZCBzZXRFeHRy
YUZsYWdzKFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpIHsgbV9leHRyYUZsYWdzID0gZmxh
Z3M7IH0KIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4gY2xvbmUoVGV4dHVyZU1hcHBlckdMJik7CisKIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gbV90ZXh0dXJlOwpAQCAtNzAsNiArNzIsNyBAQCBwcml2YXRlOgogCiAg
ICAgR0x1aW50IG1fdGV4dHVyZUlEOwogICAgIEludFNpemUgbV9zaXplOworICAgIEdDM0RpbnQg
bV9pbnRlcm5hbEZvcm1hdDsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIG1fZXh0cmFGbGFn
czsKICAgICBib29sIG1faGFzTWFuYWdlZFRleHR1cmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVu
bWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXI+IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRleCBk
YzNlNzQ3ZWVkZGI2ZTc1YjhhMWY5MzNhMjY2MzE2YTI4YmMzZjU0Li5mMzVhNDllNGYyYTU0Y2Ix
NmMyZWRiYmYxZDQ5NzI3OTgwMWVlNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC0xNDEsNiArMTQxLDE1IEBAIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94CiAgICAgcmV0dXJuIGF2YWlsYWJsZUJ1ZmZlcjsKIH0KIAordm9pZCBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphcHBlbmRUb1VudXNlZEJ1ZmZlcnMoc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBidWZmZXIpCit7Cisg
ICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgc2NoZWR1
bGVSZWxlYXNlVW51c2VkQnVmZmVycygpOworICAgIH0pOworfQorCiB2b2lkIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OnNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKQogewog
ICAgIGlmICghbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLmlzQWN0aXZlKCkpCkBAIC0xNzUs
NyArMTg0LDQxIEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6c3dhcEJ1
ZmZlcigpCiAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllcihtX2N1cnJlbnRCdWZm
ZXIuZ2V0KCkpOwogCiAgICAgaWYgKHByZXZCdWZmZXIgJiYgcHJldkJ1ZmZlci0+aGFzTWFuYWdl
ZFRleHR1cmUoKSkKLSAgICAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShwcmV2QnVm
ZmVyKSk7CisgICAgICAgIGFwcGVuZFRvVW51c2VkQnVmZmVycyhXVEZNb3ZlKHByZXZCdWZmZXIp
KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpkcm9wQ3VycmVu
dEJ1ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUoKQoreworICAgIEFTU0VSVChtX2xvY2suaXNI
ZWxkKCkpOworCisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlciAmJiBtX3BlbmRpbmdCdWZmZXItPmhh
c01hbmFnZWRUZXh0dXJlKCkpIHsKKyAgICAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92
ZShtX3BlbmRpbmdCdWZmZXIpKTsKKyAgICAgICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVy
cygpOworICAgIH0KKworICAgIGlmICghbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZUZ1bmN0aW9uID0K
KyAgICAgICAgW3RoaXNdIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisKKyAgICAgICAgICAgIGlmICghbV9jb21wb3NpdG9yIHx8ICFtX3RhcmdldExheWVyKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXht
YXBHTCA9IG1fY29tcG9zaXRvci0+dGV4bWFwR0woKTsKKyAgICAgICAgICAgIGlmICghdGV4bWFw
R0wgfHwgIW1fY3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9IG1fY3VycmVudEJ1ZmZlci0+Y2xvbmUoKnRleG1hcEdM
KTsKKyAgICAgICAgICAgIGF1dG8gcHJldkJ1ZmZlciA9IFdURk1vdmUobV9jdXJyZW50QnVmZmVy
KTsKKyAgICAgICAgICAgIG1fY3VycmVudEJ1ZmZlciA9IFdURk1vdmUobV9wZW5kaW5nQnVmZmVy
KTsKKyAgICAgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50
QnVmZmVyLmdldCgpKTsKKworICAgICAgICAgICAgaWYgKHByZXZCdWZmZXItPmhhc01hbmFnZWRU
ZXh0dXJlKCkpCisgICAgICAgICAgICAgICAgYXBwZW5kVG9VbnVzZWRCdWZmZXJzKFdURk1vdmUo
cHJldkJ1ZmZlcikpOworICAgICAgICB9OworICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRp
bWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoRnVuY3Rpb248dm9pZCgp
PiYmIHVwZGF0ZUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmgKaW5kZXggYjcxMGFiNGNlZGMyNTU2ODBiNThmMjFiZGMxN2I1ZjAzN2I2Njg3
OC4uMDYwNTc5YWI5MjQ2YjhiMjE3ZmI4ZDEwOTRhZDI2ZDZkYjA4MTQzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVGV4dHVyZU1hcHBlckdMOwogY2xhc3Mg
VGV4dHVyZU1hcHBlckxheWVyOwogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOwpAQCAtNjAsNiArNjEs
NyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ29tcG9zaXRvciB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgb25OZXdCdWZmZXJBdmFpbGFibGUoKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCgpID0gMDsKICAgICB9OwogCiAgICAgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpOwpAQCAtNzcsMTAgKzc5LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgc3dhcEJ1ZmZlcigpOworICAgIHZv
aWQgZHJvcEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZpbmdUZXh0dXJlKCk7CiAKICAgICBib29s
IHNjaGVkdWxlVXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAK
IHByaXZhdGU6CisgICAgdm9pZCBhcHBlbmRUb1VudXNlZEJ1ZmZlcnMoc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPik7CiAgICAgdm9pZCBzY2hlZHVsZVJl
bGVhc2VVbnVzZWRCdWZmZXJzKCk7CiAgICAgdm9pZCByZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVy
RmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5k
ZXggZjlkYmFhY2M0ZmNiNTU4YmI3MDIzMjEyN2U3ZDRlNGVkMmMwNGVhNy4uNGFiMGU1YWM2MmFk
ODZiNGNmNGRkMWE4N2JiZDA3ZTc1NmIyY2RhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0xNjgsNiArMTY4LDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWlsYWJsZSgpCiB7CiAgICAgdXBkYXRlVmlld3Bv
cnQoKTsKIH0KKworVGV4dHVyZU1hcHBlckdMKiBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnRl
eG1hcEdMKCkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4obV90ZXh0
dXJlTWFwcGVyLmdldCgpKTsKK30KICNlbmRpZgogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6c2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxh
eWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDZkZTdlZGE3ODk2MzAwZGZlNjRi
MzQyYTAzM2U5NWVjM2Y4NGE2NDEuLmRhZjg5YTFhYzNkNzE5YzM4NTM2YzdiY2VhZGMyNjJiYWJi
NjA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC00NCw2
ICs0NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5oPgogI2VuZGlmCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRleHR1cmVNYXBw
ZXJHTDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOwpAQCAtMTQyLDYgKzE0Niw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpCiAgICAgdm9pZCBvbk5ld0J1ZmZlckF2YWlsYWJsZSgpIG92
ZXJyaWRlOworICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0woKSBvdmVycmlk
ZTsKICNlbmRpZgogCiAgICAgLy8gUmVuZGVyIHF1ZXVlIGNhbiBiZSBhY2Nlc3NlZCBvbnkgZnJv
bSBtYWluIHRocmVhZCBvciB1cGRhdGVQYWludE5vZGUgY2FsbCBzdGFjayEK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312177</attachid>
            <date>2017-06-07 04:31:23 -0700</date>
            <delta_ts>2017-06-13 01:29:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172427-20170607133121.patch</filename>
            <type>text/plain</type>
            <size>29110</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJhMTAzNTA5YWQ3YzMx
ZDNmN2EyMGMwZDhlMGEzODZlZDJkNjE0ZC4uODQ4NTI0MmI2NTM0MTE4YTYyNmQ2NzNhNWZjN2Vh
OTBmOGI2NjA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA2LTAyICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJHTF0g
UmVsZWFzZSBHc3RWaWRlb0ZyYW1lIHdoZW4gdGhlcmUgaXMgYSBmbHVzaCBldmVudCBmcm9tIHRo
ZSBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcyNDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2l0aG91dCBHU3RyZWFtZXJHTCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgY29waWVz
IHRoZSB2aWRlbyBmcmFtZSBmcm9tCisgICAgICAgIHRoZSBkZWNvZGVyJ3MgYnVmZmVyIHRvIHRo
ZSB0ZXh0dXJlIHRvIGRpc3BsYXkgYSB2aWRlby4gU28gaXQgbWFrZXMgcG9zc2libGUKKyAgICAg
ICAgdG8gcmVsZWFzZSB0aGUgR3N0U2FtcGxlIHdoZW4gaXQgZ290IGEgZmx1c2ggc3RhcnQgZXZl
bnQgdG8gZnJlZSB0aGUgZGVjb2RlcidzCisgICAgICAgIGJ1ZmZlciB0byB0aGUgZGVjb2RlciB3
aXRob3V0IHNpZGUtZWZmZWN0cy4KKworICAgICAgICBVbmxpa2UgdGhlIHRyYWRpdGlvbmFsIHdh
eSB0byByZW5kZXIgdmlkZW8sIEdTdHJlYW1lciBHTCBkb2VzIG5vdCBjb3B5IGEKKyAgICAgICAg
dGV4dHVyZSBmcm9tIHRoZSBkZWNvZGVyIHRvIHRoZSB0ZXh0dXJlIG1hcHBlcidzIGJ1ZmZlciB0
byBkcmF3IHZpZGVvIGZyYW1lLgorICAgICAgICBJdCB1c2VzIHNhbWUgR3N0TWVtb3J5IHdpdGgg
dGhlIGdzdCBwaXBlbGluZSB0byBtYW5hZ2UgdGhlIHRleHR1cmUgdG8gcHJldmVudAorICAgICAg
ICBjb3B5IG9wZXJhdGlvbnMuIFNvIHdpdGhvdXQgcmVsZWFzaW5nIGEgbGF5ZXIgYnVmZmVyLCB0
aGVyZSBpcyBubyB3YXkgdG8KKyAgICAgICAgcmV0dXJuIEdzdE1lbW9yeSB0byB0aGUgYnVmZmVy
IHBvb2wuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWxlYXNlcyBjdXJyZW50IEdzdFNhbXBsZSB3
aGVuIHRoZSBwbGF5ZXIgZ290IHRoZSBmbHVzaCBzdGFydAorICAgICAgICBldmVudC4gIEl0IGRl
c3RydWN0cyB0aGUgcGxhdGZvcm0gbGF5ZXIgYnVmZmVyIGFueSB0aW1lIHRoZXJlIGlzIGEgZmx1
c2ggc3RhcnQKKyAgICAgICAgZXZlbnQuCisKKyAgICAgICAgSG93ZXZlciwgaXQgaXMgbm90IGVu
b3VnaCB0byByZWxlYXNlIHRoZSBHc3RNZW1vcnkuIFRoZSBwbGF0Zm9ybSBsYXllciBwcm94eQor
ICAgICAgICBzaG91bGQgY29weSBjdXJyZW50IGJ1ZmZlciB0byBzaG93IGl0IHRvIHRoZSBjb21w
b3NpdG9yIGluc3RlYWQgb2YgYSBibGFuaworICAgICAgICBmcmFtZS4gSXQgcHJldmVudHMgZmxp
Y2tlcmluZ3MgdW50aWwgZ2V0dGluZyBhIG5ldyBmcmFtZSBhZnRlciBoYW5kbGluZyBmbHVzaAor
ICAgICAgICBldmVudHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGVyZSBzaG91bGRuJ3Qg
YmUgYmVoYXZpb3IgY2hhbmdlcworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6
OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3Np
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OmZsdXNoQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVHTEFwcFNpbmspOiBBZGRzCisgICAgICAgIGhhbmRsZXIg
Zm9yIHRoZSBmbHVzaCBldmVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZUdMOjpjb3B5RnJvbUV4dGVybmFsVGV4dHVyZSk6IENvcGllcworICAgICAgICBh
IGV4dGVybmFsIHRleHR1cmUgdG8gdGhlIG1hbmFnZWQgdGV4dHVyZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmg6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZSk6CisgICAgICAgIFRvIGNyZWF0ZSB0aGUgbWFuYWdl
ZCB0ZXh0dXJlIHdpdGggc3BlY2lmaWMgZm9ybWF0LCB0aGlzIHBhdGNoIGFkZHMgYQorICAgICAg
ICBvcHRpb25hbCBwYXJhbWV0ZXIgZm9yIGEgdGV4dHVyZSBmb3JtYXQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRl
eHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YXBwZW5kVG9VbnVzZWRCdWZmZXJzKTogQWRkZWQK
KyAgICAgICAgdG8gc2NoZWR1bGUgcmVsZWFzaW5nIHVudXNlZCBidWZmZXJzIGluIG1haW4gdGhy
ZWFkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
c3dhcEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5Ojpkcm9wQ3VycmVudEJ1ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5Lmg6CisKIDIwMTctMDYtMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTWVyZ2UgVHJlZVNjb3BlQWRvcHRlciBpbnRvIFRyZWVTY29wZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDNiNTQxOGIwYTU4YWIyYWExMDJmOTIzNDJiOGEzODg1NjNhYzRiMGYuLjE4Njg1ZGM4MjNk
Y2NiOGQxYTIxMGQ5ZDA2NjdiNjBmNDc1ZmY1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxNy0wNi0wMiAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyR0xdIFJlbGVhc2UgR3N0VmlkZW9GcmFtZSB3aGVuIHRoZXJlIGlzIGEg
Zmx1c2ggZXZlbnQgZnJvbSB0aGUgcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjQyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjp0ZXhtYXBHTCk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAgIFByb3ZpZGVzIGN1cnJlbnQg
dGV4bWFwR0wgdG8gcGxhdGZvcm0gbGF5ZXIgcHJveGllcyB0byBjcmVhdGUgYW5kIGNvcHkKKyAg
ICAgICAgYml0bWFwIHRleHR1cmVzLgorCiAyMDE3LTA2LTA2ICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgYnVpbGRpbmcgd2l0aCB0aGUgbWFjT1MgMTAu
MTMgQXBwbGUgSW50ZXJuYWwgU0RLIHdoZW4gdGFyZ2V0aW5nIG1hY09TIDEwLjEyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcAppbmRleCAyYmJhN2ZiZTU5NGZlNmU2ZTgwNGI1MTY5NzRkYTI1YTk3MjY2
ODllLi42OWE1M2FhZmFlNDM3ZDExYjMzOWFmMTQzOGU3MGYwYTNhNTFmN2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpz
d2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBpZiAoIW1fY29tcG9zaXRvclRleHR1cmUpIHsKICAg
ICAgICAgY3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpOwogICAgICAgICBMb2NrSG9sZGVyIGhvbGRl
cihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVy
UHJveHktPnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBl
ckdMOjpTaG91bGRCbGVuZCkpOworICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5l
eHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJs
ZW5kLCBHTF9SR0JBKSk7CiAgICAgfQogCiAgICAgLy8gSXQgd291bGQgYmUgZ3JlYXQgaWYgd2Ug
Y291bGQganVzdCBzd2FwIHRoZSBidWZmZXJzIGhlcmUgYXMgd2UgZG8gd2l0aCB3ZWJnbCwgYnV0
IHRoYXQgYnJlYWtzIHRoZSBjYXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGQ1NjE1MmE5MzA1ZmExMTZhZTU3NzI5NGFm
OWMxYzJhNDJiMWIzZTcuLmQyZDRlNWMzNzBiMTdiNjY4NzU3MTNiYzdhMzM0ZmJlYjVkYzIwMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKICAgICBpZiAoVU5MSUtFTFkoIWZyYW1l
SG9sZGVyLT5pc1ZhbGlkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oZnJhbWVIb2xkZXIt
PnRleHR1cmVJRCgpLCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBs
YXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+KGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKSwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJh
bWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICBsYXllckJ1
ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9sZGVyKSk7
CiAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKFdURk1vdmUobGF5ZXJC
dWZmZXIpKTsKICNlbHNlCkBAIC04MTMsNyArODEzLDIwIEBAIEdzdEZsb3dSZXR1cm4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmV3UHJlcm9sbENhbGxiYWNrKEdzdEVsZW1lbnQq
IHNpCiAgICAgcGxheWVyLT50cmlnZ2VyUmVwYWludChzYW1wbGUuZ2V0KCkpOwogICAgIHJldHVy
biBHU1RfRkxPV19PSzsKIH0KLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX0dMKQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmZsdXNoQ3VycmVudEJ1ZmZlcigpCit7Cisg
ICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIG1f
c2FtcGxlLmNsZWFyKCk7CisKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGxh
dGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworCisgICAgICAgIGlmIChtX3BsYXRmb3JtTGF5ZXJQ
cm94eS0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5kcm9w
Q3VycmVudEJ1ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUoKTsKKyAgICB9Cit9CisjZW5kaWYK
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CkBAIC05NjUsNiArOTc4LDE2IEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZUdMQXBwU2luaygpCiAgICAgZ19zaWduYWxf
Y29ubmVjdChhcHBzaW5rLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0sobmV3U2FtcGxlQ2FsbGJh
Y2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGFwcHNpbmssICJuZXctcHJlcm9sbCIs
IEdfQ0FMTEJBQ0sobmV3UHJlcm9sbENhbGxiYWNrKSwgdGhpcyk7CiAKKyAgICBHUmVmUHRyPEdz
dFBhZD4gcGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGFwcHNpbmss
ICJzaW5rIikpOworICAgIGdzdF9wYWRfYWRkX3Byb2JlIChwYWQuZ2V0KCksIEdTVF9QQURfUFJP
QkVfVFlQRV9FVkVOVF9GTFVTSCwgW10gKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywg
IGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9iZVJldHVybiB7CisgICAgICAgIGlmIChH
U1RfRVZFTlRfVFlQRSAoR1NUX1BBRF9QUk9CRV9JTkZPX0VWRU5UIChpbmZvKSkgIT0gR1NUX0VW
RU5UX0ZMVVNIX1NUQVJUKQorICAgICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisK
KyAgICAgICAgYXV0byogcGxheWVyID0gc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZSo+KHVzZXJEYXRhKTsKKyAgICAgICAgcGxheWVyLT5mbHVzaEN1cnJlbnRCdWZm
ZXIoKTsKKyAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgfSwgdGhpcywgbnVs
bHB0cik7CisKICAgICByZXR1cm4gYXBwc2luazsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggMDEyNzY0YmRkNmFiZmM5ZWVj
NTk3NDZjNWIzYjA3ZWNhODcxNmZkZC4uNmEzYzhmZjU0NTgzYTlmYjQ2ZmMzMDIyMWJhYThhNjI1
NmI3YmYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oCkBAIC0xNDYsNiArMTQ2LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShHU1RSRUFN
RVJfR0wpCiAgICAgc3RhdGljIEdzdEZsb3dSZXR1cm4gbmV3U2FtcGxlQ2FsbGJhY2soR3N0RWxl
bWVudCosIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqKTsKICAgICBzdGF0aWMgR3N0
Rmxvd1JldHVybiBuZXdQcmVyb2xsQ2FsbGJhY2soR3N0RWxlbWVudCosIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UqKTsKKyAgICB2b2lkIGZsdXNoQ3VycmVudEJ1ZmZlcigpOwogICAg
IEdzdEVsZW1lbnQqIGNyZWF0ZUdMQXBwU2luaygpOwogICAgIEdzdEVsZW1lbnQqIGNyZWF0ZVZp
ZGVvU2lua0dMKCk7CiAgICAgR3N0R0xDb250ZXh0KiBnc3RHTENvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2dsQ29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA0NTA5
NzdkMzQyOTA2NDIyNTAzZTc2Y2RkOGE2YTUyZjdjZjM4MDRhLi5mMmVkMDFiZjlmMGVhOWNlZGVj
NDdkNDEwYTUzZjRlZjgzNGNlNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtNTcsOSAr
NTcsMTQgQEAgQml0bWFwVGV4dHVyZUdMKiB0b0JpdG1hcFRleHR1cmVHTChCaXRtYXBUZXh0dXJl
KiB0ZXh0dXJlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0
dXJlKTsKIH0KIAotQml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0woUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiYmIGNvbnRleHQzRCwgY29uc3QgRmxhZ3MgZmxhZ3MpCitCaXRtYXBUZXh0
dXJlR0w6OkJpdG1hcFRleHR1cmVHTChSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+JiYgY29udGV4
dDNELCBjb25zdCBGbGFncyBmbGFncywgR0MzRGludCBpbnRlcm5hbEZvcm1hdCkKICAgICA6IG1f
Y29udGV4dDNEKFdURk1vdmUoY29udGV4dDNEKSkKIHsKKyAgICBpZiAoaW50ZXJuYWxGb3JtYXQg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRPTlRfQ0FSRSkgeworICAgICAgICBtX2ludGVybmFsRm9y
bWF0ID0gbV9mb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGlmIChmbGFncyAmIEZCT0F0dGFjaG1lbnQpCiAgICAgICAgIG1faW50ZXJuYWxGb3Jt
YXQgPSBtX2Zvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwogICAgIGVsc2UgewpAQCAt
MzQyLDYgKzM0NywzNCBAQCBJbnRTaXplIEJpdG1hcFRleHR1cmVHTDo6c2l6ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fdGV4dHVyZVNpemU7CiB9CiAKKwordm9pZCBCaXRtYXBUZXh0dXJlR0w6OmNv
cHlGcm9tRXh0ZXJuYWxUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3Qgc291cmNlVGV4dHVyZUlEKQor
eworICAgIEdDM0RpbnQgYm91bmRUZXh0dXJlID0gMDsKKyAgICBHQzNEaW50IGJvdW5kRnJhbWVi
dWZmZXIgPSAwOworICAgIEdDM0RpbnQgYm91bmRBY3RpdmVUZXh0dXJlID0gMDsKKworICAgIG1f
Y29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9CSU5ESU5H
XzJELCAmYm91bmRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+Z2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0JJTkRJTkcsICZib3VuZEZyYW1lYnVmZmVyKTsKKyAg
ICBtX2NvbnRleHQzRC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9URVhU
VVJFLCAmYm91bmRBY3RpdmVUZXh0dXJlKTsKKworICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgc291cmNlVGV4dHVyZUlEKTsKKworICAg
IFBsYXRmb3JtM0RPYmplY3QgY29weUZibyA9IG1fY29udGV4dDNELT5jcmVhdGVGcmFtZWJ1ZmZl
cigpOworICAgIG1fY29udGV4dDNELT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBjb3B5RmJvKTsKKyAgICBtX2NvbnRleHQzRC0+ZnJhbWVidWZmZXJUZXh0
dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6
Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBzb3VyY2VU
ZXh0dXJlSUQsIDApOworCisgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkUwKTsKKyAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGlkKCkpOworICAgIG1fY29udGV4dDNELT5jb3B5VGV4
U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwg
bV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpKTsKKworICAgIG1f
Y29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgYm91
bmRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgYm91bmRGcmFtZWJ1ZmZlcik7CisgICAgbV9jb250ZXh0M0Qt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBib3VuZFRleHR1cmUp
OworICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKGJvdW5kQWN0aXZlVGV4dHVyZSk7Cisg
ICAgbV9jb250ZXh0M0QtPmRlbGV0ZUZyYW1lYnVmZmVyKGNvcHlGYm8pOworfQorCiB9OyAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVHTC5oCmluZGV4IDNhNGQ4MDQ3MzQyNmYyMTZmYzllZDFlYjNhMGI2N2NmZDY4NGIz
OWYuLmFiYmZiZGUzMmNmYjdlMDZiYWM5NWJmNWUyYTEzODAxOTE0NmNmOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4
dHVyZUdMLmgKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uOwogCiBjbGFz
cyBCaXRtYXBUZXh0dXJlR0wgOiBwdWJsaWMgQml0bWFwVGV4dHVyZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxCaXRtYXBUZXh0dXJlPiBjcmVhdGUoUmVmPEdyYXBoaWNzQ29udGV4dDNEPiYm
IGNvbnRleHQzRCwgY29uc3QgRmxhZ3MgZmxhZ3MgPSBOb0ZsYWcpCisgICAgc3RhdGljIFJlZjxC
aXRtYXBUZXh0dXJlPiBjcmVhdGUoUmVmPEdyYXBoaWNzQ29udGV4dDNEPiYmIGNvbnRleHQzRCwg
Y29uc3QgRmxhZ3MgZmxhZ3MgPSBOb0ZsYWcsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQgPSBHcmFw
aGljc0NvbnRleHQzRDo6RE9OVF9DQVJFKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQml0bWFwVGV4dHVyZUdMKFdURk1vdmUoY29udGV4dDNEKSwgZmxhZ3MpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwVGV4dHVyZUdMKFdURk1vdmUoY29udGV4dDNE
KSwgZmxhZ3MsIGludGVybmFsRm9ybWF0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+Qml0bWFw
VGV4dHVyZUdMKCk7CkBAIC03Niw4ICs3NiwxMCBAQCBwdWJsaWM6CiAKICAgICBHQzNEaW50IGlu
dGVybmFsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZvcm1hdDsgfQogCisgICAg
dm9pZCBjb3B5RnJvbUV4dGVybmFsVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJRCk7
CisKIHByaXZhdGU6Ci0gICAgQml0bWFwVGV4dHVyZUdMKFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4mJiwgY29uc3QgRmxhZ3MpOworICAgIEJpdG1hcFRleHR1cmVHTChSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+JiYsIGNvbnN0IEZsYWdzLCBHQzNEaW50IGludGVybmFsRm9ybWF0KTsKIAogICAg
IFBsYXRmb3JtM0RPYmplY3QgbV9pZCB7IDAgfTsKICAgICBJbnRTaXplIG1fdGV4dHVyZVNpemU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaAppbmRleCA2NzMwZDhlN2JkYWZmMTY1ZTA3ODg3MjYxMGM5MTgwOTcyMGQy
YzNlLi4yNTRkNzg2NGNhNjAzODExYTMxNTU0NDljZWJiZmYyYzZiODE5MDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmgKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFRleHR1cmUuaCIKICNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRp
b25NYXRyaXguaCIKQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
bmRDbGlwKCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwogICAg
IHZpcnR1YWwgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSA9IDA7CisgICAgdmly
dHVhbCBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZShHQzNEaW50IGludGVybmFsRm9y
bWF0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWludEZsYWdzID0g
MCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQ
bGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCmluZGV4IGExNjJiYjg1MDNjZmE4
MTcwYzQwYTMxNzJmNmRjODEzYWQ1ZDUxZWEuLjdiNTM2OTFhNGFkNjQyNmE3MzQwOTc2OWI1NjBl
ZTA2NWIzNzYyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9y
bUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRl
ciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2soKSk7Ci0gICAgICAgIG1fcGxhdGZv
cm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4
dHVyZVNpemUsIGZsYWdzKSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4
dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2Nv
bnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1h
cmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggY2Y3OThmNGFh
YWEwNDM3ZWU3N2UxZDgxY2M4ZTkwOWYwNzU2ZGI3Ny4uYzZhNzFkNDJiNzJhYTM0NTc5MjNhYjgw
YzQ2ZTlmNTYzY2I5ZDQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTc1Nyw5ICs3NTcs
OSBAQCBJbnRSZWN0IFRleHR1cmVNYXBwZXJHTDo6Y2xpcEJvdW5kcygpCiAgICAgcmV0dXJuIGNs
aXBTdGFjaygpLmN1cnJlbnQoKS5zY2lzc29yQm94OwogfQogCi1SZWY8Qml0bWFwVGV4dHVyZT4g
VGV4dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKCkKK1JlZjxCaXRtYXBUZXh0dXJlPiBUZXh0
dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoR0MzRGludCBpbnRlcm5hbEZvcm1hdCkKIHsKLSAg
ICByZXR1cm4gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoKm1fY29udGV4dDNEKTsKKyAgICByZXR1
cm4gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoKm1fY29udGV4dDNELCBpbnRlcm5hbEZvcm1hdCk7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0
Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBkYTE4NGEzZmMy
ZDdiZTM4ZTdlZTgyYjA2MzM2YWI1ZWFkNmYyMWI0Li5jYzBiZDFhMDUyMjBmMjM2MDI2NTU4ZjIz
NjJmMjU4OWM0ZTU1ODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC03MSw3ICs3MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGVuZENsaXAoKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3Vu
ZHMoKSBvdmVycmlkZTsKICAgICBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gSW50U2l6ZSgyMDAwLCAyMDAwKTsgfQotICAgIFJlZjxCaXRtYXBUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKCkgb3ZlcnJpZGU7CisgICAgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0
ZVRleHR1cmUoKSBvdmVycmlkZSB7IHJldHVybiBjcmVhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpET05UX0NBUkUpOyB9CisgICAgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUo
R0MzRGludCBpbnRlcm5hbEZvcm1hdCkgb3ZlcnJpZGU7CiAgICAgaW5saW5lIEdyYXBoaWNzQ29u
dGV4dDNEKiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDNELmdl
dCgpOyB9CiAKICAgICB2b2lkIGRyYXdGaWx0ZXJlZChjb25zdCBCaXRtYXBUZXh0dXJlJiBzb3Vy
Y2VUZXh0dXJlLCBjb25zdCBCaXRtYXBUZXh0dXJlKiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmls
dGVyT3BlcmF0aW9uJiwgaW50IHBhc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggODg4NTFmZTRiMzIyNTI4ODhkYmMyZjk4ZjAw
MGM4MjE5ZDUwMzU2Ny4uMWZkMDlhNWVkMzQ4NTQ5MWExYmU5MDcxNDEwNzI5NjdkNWQxYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3Bw
CkBAIC0yNiwxOSArMjYsMjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgogCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRl
eHR1cmU+JiYgdGV4dHVyZSkKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJiB0ZXh0
dXJlLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKQogICAgIDogbV90ZXh0dXJlKFdURk1v
dmUodGV4dHVyZSkpCiAgICAgLCBtX3RleHR1cmVJRCgwKQotICAgICwgbV9leHRyYUZsYWdzKDAp
CisgICAgLCBtX2V4dHJhRmxhZ3MoZmxhZ3MpCiAgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKHRy
dWUpCiB7CiB9CiAKLVRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiBz
aXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKQorVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0
dXJlSUQsIGNvbnN0IEludFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3Ms
IEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpCiAgICAgOiBtX3RleHR1cmVJRCh0ZXh0dXJlSUQpCiAg
ICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1faW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQp
CiAgICAgLCBtX2V4dHJhRmxhZ3MoZmxhZ3MpCiAgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKGZh
bHNlKQogewpAQCAtNDksNiArNTIsMTggQEAgYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcjo6Y2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICBy
ZXR1cm4gbV90ZXh0dXJlICYmIChtX3RleHR1cmUtPnNpemUoKSA9PSBzaXplKSAmJiAoc3RhdGlj
X2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4obV90ZXh0dXJlLmdldCgpKS0+aW50ZXJuYWxGb3JtYXQo
KSA9PSBpbnRlcm5hbEZvcm1hdCB8fCBpbnRlcm5hbEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RE9OVF9DQVJFKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUoVGV4
dHVyZU1hcHBlckdMJiB0ZXhtYXBHTCkKK3sKKyAgICBpZiAobV9oYXNNYW5hZ2VkVGV4dHVyZSB8
fCAhbV90ZXh0dXJlSUQpIHsKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0g
dGV4bWFwR0wuY3JlYXRlVGV4dHVyZShtX2ludGVybmFsRm9ybWF0KTsKKyAgICB0ZXh0dXJlLT5y
ZXNldChtX3NpemUpOworICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJl
KS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4
dHVyZSksIG1fZXh0cmFGbGFncyk7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBUZXh0dXJlTWFwcGVy
R0wmIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCmlu
ZGV4IDJhZmU1YjMwOGEzNThlYWRiZThjMDFhMjU3ZTUzZWI4ODY3NTVkMmUuLjk2NGY0MDBkYjgz
ZWJjNjk4NDdkNjUyOWRiMjZkZGNjMDUzNTY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKIHB1YmxpYzoKLSAg
ICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8Qml0bWFwVGV4dHVyZT4m
Jik7Ci0gICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1aW50IHRleHR1cmVJ
RCwgY29uc3QgSW50U2l6ZSYsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MpOworICAgIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmLCBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzID0gMCk7CisgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIoR0x1aW50IHRleHR1cmVJRCwgY29uc3QgSW50U2l6ZSYsIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpOwogCiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKQEAgLTYzLDYgKzYzLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihzdGQ6OnVuaXF1ZV9w
dHI8VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcj4gaG9sZGVyKSB7IG1fdW5tYW5hZ2VkQnVmZmVy
RGF0YUhvbGRlciA9IFdURk1vdmUoaG9sZGVyKTsgfQogICAgIHZvaWQgc2V0RXh0cmFGbGFncyhU
ZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKSB7IG1fZXh0cmFGbGFncyA9IGZsYWdzOyB9CiAK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGNs
b25lKFRleHR1cmVNYXBwZXJHTCYpOworCiBwcml2YXRlOgogCiAgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IG1fdGV4dHVyZTsKQEAgLTcwLDYgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIEdMdWlu
dCBtX3RleHR1cmVJRDsKICAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBHQzNEaW50IG1faW50ZXJu
YWxGb3JtYXQ7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBtX2V4dHJhRmxhZ3M7CiAgICAg
Ym9vbCBtX2hhc01hbmFnZWRUZXh0dXJlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVbm1hbmFnZWRC
dWZmZXJEYXRhSG9sZGVyPiBtX3VubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggZGMzZTc0N2Vl
ZGRiNmU3NWI4YTFmOTMzYTI2NjMxNmEyOGJjM2Y1NC4uYmVmZDk4Y2FlZDQ4ZDk3ZDQ4MzU3NzM2
YTQwNzUzMDJjNmVhMjhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5LmNwcApAQCAtNDUsMTEgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eSgpCiAgICAgOiBtX2NvbXBvc2l0b3IobnVsbHB0cikKICAgICAsIG1fdGFyZ2V0TGF5
ZXIobnVsbHB0cikKLSAgICAsIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lcihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNl
VW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpCiB7Ci0jaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKLSAg
ICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIuc2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVBy
aW9yaXR5OjpSZWxlYXNlVW51c2VkUmVzb3VyY2VzVGltZXIpOwotI2VuZGlmCiB9CiAKIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5KCkKQEAgLTczLDkgKzY5LDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAgICAgaWYg
KG1fdGFyZ2V0TGF5ZXIgJiYgbV9jdXJyZW50QnVmZmVyKQogICAgICAgICBtX3RhcmdldExheWVy
LT5zZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKKyAgICBtX3JlbGVh
c2VVbnVzZWRCdWZmZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMs
ICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1Rp
bWVyRmlyZWQpOwogICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4o
UnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOworCiAjaWYgVVNFKEdMSUJfRVZF
TlRfTE9PUCkKICAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lci0+c2V0UHJpb3JpdHko
UnVuTG9vcFNvdXJjZVByaW9yaXR5OjpDb21wb3NpdGluZ1RocmVhZFVwZGF0ZVRpbWVyKTsKKyAg
ICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXItPnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQ
cmlvcml0eTo6UmVsZWFzZVVudXNlZFJlc291cmNlc1RpbWVyKTsKICNlbmRpZgogfQogCkBAIC05
MCw3ICs4OSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxp
ZGF0ZSgpCiAKICAgICAgICAgbV9jdXJyZW50QnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgbV9w
ZW5kaW5nQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1Rp
bWVyLnN0b3AoKTsKKyAgICAgICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyID0gbnVsbHB0
cjsKICAgICAgICAgbV91c2VkQnVmZmVycy5jbGVhcigpOwogCiAgICAgICAgIC8vIENsZWFyIHRo
ZSB0aW1lciBhbmQgZGlzcGF0Y2ggdGhlIHVwZGF0ZSBmdW5jdGlvbiBtYW51YWxseSBub3cuCkBA
IC0xMjEsNiArMTIwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpw
dXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHAKIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0Rp
bnQgaW50ZXJuYWxGb3JtYXQpCiB7CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CisgICAg
QVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWls
YWJsZUJ1ZmZlcjsKIAogICAgIGF1dG8gYnVmZmVycyA9IFdURk1vdmUobV91c2VkQnVmZmVycyk7
CkBAIC0xNDEsMTAgKzE0MSwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveAogICAgIHJldHVy
biBhdmFpbGFibGVCdWZmZXI7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eTo6YXBwZW5kVG9VbnVzZWRCdWZmZXJzKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gYnVmZmVyKQoreworICAgIEFTU0VSVChtX2xvY2suaXNIZWxk
KCkpOworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJl
YWQoKSk7CisgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBz
Y2hlZHVsZVJlbGVhc2VVbnVzZWRCdWZmZXJzKCk7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6c2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpCiB7Ci0gICAg
aWYgKCFtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9y
ZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLnN0YXJ0T25lU2hvdChyZWxlYXNlVW51c2VkQnVmZmVy
c1RpbWVySW50ZXJ2YWwpOworICAgIGlmICghbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLT5p
c0FjdGl2ZSgpKQorICAgICAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXItPnN0YXJ0T25l
U2hvdChyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVySW50ZXJ2YWwpOwogfQogCiB2b2lkIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJl
ZCgpCkBAIC0xNzUsNyArMTgzLDQxIEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eTo6c3dhcEJ1ZmZlcigpCiAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllciht
X2N1cnJlbnRCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKHByZXZCdWZmZXIgJiYgcHJldkJ1ZmZl
ci0+aGFzTWFuYWdlZFRleHR1cmUoKSkKLSAgICAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RG
TW92ZShwcmV2QnVmZmVyKSk7CisgICAgICAgIGFwcGVuZFRvVW51c2VkQnVmZmVycyhXVEZNb3Zl
KHByZXZCdWZmZXIpKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
Ojpkcm9wQ3VycmVudEJ1ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUoKQoreworICAgIEFTU0VS
VChtX2xvY2suaXNIZWxkKCkpOworCisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlciAmJiBtX3BlbmRp
bmdCdWZmZXItPmhhc01hbmFnZWRUZXh0dXJlKCkpIHsKKyAgICAgICAgbV91c2VkQnVmZmVycy5h
cHBlbmQoV1RGTW92ZShtX3BlbmRpbmdCdWZmZXIpKTsKKyAgICAgICAgc2NoZWR1bGVSZWxlYXNl
VW51c2VkQnVmZmVycygpOworICAgIH0KKworICAgIGlmICghbV9jb21wb3NpdG9yVGhyZWFkVXBk
YXRlVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0
ZUZ1bmN0aW9uID0KKyAgICAgICAgW3RoaXNdIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisKKyAgICAgICAgICAgIGlmICghbV9jb21wb3NpdG9yIHx8ICFtX3Rhcmdl
dExheWVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgVGV4dHVyZU1h
cHBlckdMKiB0ZXhtYXBHTCA9IG1fY29tcG9zaXRvci0+dGV4bWFwR0woKTsKKyAgICAgICAgICAg
IGlmICghdGV4bWFwR0wgfHwgIW1fY3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9IG1fY3VycmVudEJ1ZmZlci0+Y2xv
bmUoKnRleG1hcEdMKTsKKyAgICAgICAgICAgIGF1dG8gcHJldkJ1ZmZlciA9IFdURk1vdmUobV9j
dXJyZW50QnVmZmVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudEJ1ZmZlciA9IFdURk1vdmUobV9w
ZW5kaW5nQnVmZmVyKTsKKyAgICAgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5
ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKKworICAgICAgICAgICAgaWYgKHByZXZCdWZmZXIt
Pmhhc01hbmFnZWRUZXh0dXJlKCkpCisgICAgICAgICAgICAgICAgYXBwZW5kVG9VbnVzZWRCdWZm
ZXJzKFdURk1vdmUocHJldkJ1ZmZlcikpOworICAgICAgICB9OworICAgIG1fY29tcG9zaXRvclRo
cmVhZFVwZGF0ZVRpbWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoRnVu
Y3Rpb248dm9pZCgpPiYmIHVwZGF0ZUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmgKaW5kZXggYjcxMGFiNGNlZGMyNTU2ODBiNThmMjFiZGMx
N2I1ZjAzN2I2Njg3OC4uOGM3MGY4ZTgwODUyN2YwOTFhOGUzNjkzZTUxYzI3MTVmN2M3M2VkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCkBAIC00
NCw2ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVGV4dHVyZU1hcHBl
ckdMOwogY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOwpA
QCAtNjAsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ29tcG9zaXRvciB7CiAgICAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgb25OZXdCdWZmZXJBdmFpbGFibGUoKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCgpID0gMDsKICAgICB9Owog
CiAgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpOwpAQCAtNzcsMTAgKzc5LDEy
IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgc3dhcEJ1ZmZl
cigpOworICAgIHZvaWQgZHJvcEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZpbmdUZXh0dXJlKCk7
CiAKICAgICBib29sIHNjaGVkdWxlVXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBhcHBlbmRUb1VudXNlZEJ1ZmZlcnMoc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPik7CiAgICAgdm9p
ZCBzY2hlZHVsZVJlbGVhc2VVbnVzZWRCdWZmZXJzKCk7CiAgICAgdm9pZCByZWxlYXNlVW51c2Vk
QnVmZmVyc1RpbWVyRmlyZWQoKTsKIApAQCAtOTMsOCArOTcsOCBAQCBwcml2YXRlOgogICAgIExv
Y2sgbV9sb2NrOwogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4+IG1fdXNlZEJ1ZmZlcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJ1
bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PiBtX3JlbGVhc2VV
bnVzZWRCdWZmZXJzVGltZXI7CiAKLSAgICBSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5PiBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXI7CiAjaWZuZGVmIE5E
RUJVRwogICAgIFRocmVhZElkZW50aWZpZXIgbV9jb21wb3NpdG9yVGhyZWFkSUQgeyAwIH07CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGY5
ZGJhYWNjNGZjYjU1OGJiNzAyMzIxMjdlN2Q0ZTRlZDJjMDRlYTcuLjRhYjBlNWFjNjJhZDg2YjRj
ZjRkZDFhODdiYmQwN2U3NTZiMmNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcApAQCAtMTY4LDYgKzE2OCwxNCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6b25OZXdCdWZmZXJBdmFpbGFibGUoKQogewogICAgIHVwZGF0ZVZpZXdwb3J0KCk7
CiB9CisKK1RleHR1cmVNYXBwZXJHTCogQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp0ZXhtYXBH
TCgpCit7CisgICAgaWYgKCFtX3RleHR1cmVNYXBwZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KG1fdGV4dHVyZU1h
cHBlci5nZXQoKSk7Cit9CiAjZW5kaWYKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OnNldExheWVyUmVwYWludENvdW50SWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwg
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCA2ZGU3ZWRhNzg5NjMwMGRmZTY0YjM0MmEw
MzNlOTVlYzNmODRhNjQxLi5kYWY4OWExYWMzZDcxOWMzODUzNmM3YmNlYWRjMjYyYmFiYjYwNzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtNDQsNiArNDQs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHku
aD4KICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXh0dXJlTWFwcGVyR0w7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZTsKQEAgLTE0Miw2ICsxNDYsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQogICAgIHZvaWQgb25OZXdCdWZmZXJBdmFpbGFibGUoKSBvdmVycmlk
ZTsKKyAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMKCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFp
biB0aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>