<?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>200914</bug_id>
          
          <creation_ts>2019-08-20 01:24:01 -0700</creation_ts>
          <short_desc>[GStreamer] Add support to copy YUV video textures into platform textures</short_desc>
          <delta_ts>2019-09-03 08:26:48 -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>WPE WebKit</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201184</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=201422</see_also>
          <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>132869</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>magomez</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1562984</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-20 01:24:01 -0700</bug_when>
    <thetext>Bug 132869 adds shaders to render YUV video textures to avoid having to render to an extra off-screen surface. The patch on that bug only implements the playback portion and YUV videos become broken/non-working on accelerated and unaccelerated canvases. This bug tracks the work to enable YUV video textures in accelerated canvases (so WebGL and accelerated 2D canvas).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562990</commentid>
    <comment_count>1</comment_count>
      <attachid>376753</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-20 01:42:50 -0700</bug_when>
    <thetext>Created attachment 376753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563430</commentid>
    <comment_count>2</comment_count>
      <attachid>376858</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-21 03:17:45 -0700</bug_when>
    <thetext>Created attachment 376858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564937</commentid>
    <comment_count>3</comment_count>
      <attachid>376858</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2019-08-26 07:42:51 -0700</bug_when>
    <thetext>Comment on attachment 376858
Patch

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

Besides my review, I guess this should be checked by Miguel or Zan as well.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:219
&gt; +    std::unique_ptr&lt;TextureMapperPlatformLayerBuffer&gt; getPlatformLayerBuffer(bool treatAsRGB)

platformLayerBuffer and shouldBeTreatedAsRGB

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:229
&gt; +                Buffer::TextureVariant { Buffer::RGBTexture { *static_cast&lt;GLuint*&gt;(m_videoFrame.data[0]) } },
&gt; +                m_size, m_flags, GraphicsContext3D::RGBA);

Nit: this can be just one line.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:236
&gt; +            int nPlanes = GST_VIDEO_INFO_N_PLANES(&amp;m_videoFrame.info);

numberOfPlanes

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:239
&gt; +            std::array&lt;int, 3&gt; yuvPOffset;

yuvPlaneOffset?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:255
&gt; +                // Default to bt601. This is the same behaviour as GStreamer&apos;s glcolorconvert element

Period at the end.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:266
&gt; +            return makeUnique&lt;Buffer&gt;(
&gt; +                Buffer::TextureVariant {
&gt; +                    Buffer::YUVTexture { nPlanes, planes, yuvPlane, yuvPOffset, yuvToRgb } },
&gt; +                m_size, m_flags, GraphicsContext3D::RGBA);

Line lengths need to be reworked here. I think all could fit it one.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:998
&gt; +    frameHolder-&gt;SyncWaitCPU();

Where is this defined? besides the name should be a bit more explanatory (I guess adding more words will help)

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1030
&gt; +    frameHolder-&gt;SyncWaitCPU();

ditto

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:164
&gt; +    WTF::switchOn(inputTexture.getTextureVariant(),
&gt; +        [&amp;](const Buffer::RGBTexture&amp;)
&gt; +        {

These three lines could be collapsed into one. Of course we&apos;d need to reindent the function.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:167
&gt; +        },
&gt; +        [&amp;](const Buffer::YUVTexture&amp; texture)

Collapse.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:226
&gt; +        [&amp;](const Buffer::RGBTexture&amp; texture)
&gt; +        {

lines

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:236
&gt; +        [&amp;](const Buffer::YUVTexture&amp; texture)
&gt; +        {

lines

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:94
&gt; +    const TextureVariant&amp; getTextureVariant() { return m_variant; }

textureVariant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565313</commentid>
    <comment_count>4</comment_count>
      <attachid>377334</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-27 03:49:52 -0700</bug_when>
    <thetext>Created attachment 377334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565341</commentid>
    <comment_count>5</comment_count>
      <attachid>377334</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2019-08-27 08:15:44 -0700</bug_when>
    <thetext>Comment on attachment 377334
Patch

Beautiful! Let&apos;s see what Miguel or Zan have to say about this cause they know more of the subject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567198</commentid>
    <comment_count>6</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-09-02 06:56:19 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #5)
&gt; Comment on attachment 377334 [details]
&gt; Patch
&gt; 
&gt; Beautiful! Let&apos;s see what Miguel or Zan have to say about this cause they
&gt; know more of the subject.

LGTM. Awesome work Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567327</commentid>
    <comment_count>7</comment_count>
      <attachid>377883</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-09-03 03:36:01 -0700</bug_when>
    <thetext>Created attachment 377883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567360</commentid>
    <comment_count>8</comment_count>
      <attachid>377891</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-09-03 05:35:41 -0700</bug_when>
    <thetext>Created attachment 377891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567376</commentid>
    <comment_count>9</comment_count>
      <attachid>377891</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 07:15:04 -0700</bug_when>
    <thetext>Comment on attachment 377891
Patch

Clearing flags on attachment: 377891

Committed r249428: &lt;https://trac.webkit.org/changeset/249428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567377</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 07:15:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376753</attachid>
            <date>2019-08-20 01:42:50 -0700</date>
            <delta_ts>2019-08-21 03:17:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200914-20190820094249.patch</filename>
            <type>text/plain</type>
            <size>18496</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNmNjc4ZDEzMDQ1ZDhk
M2Y0MzQyOTJkOTIyMGYwM2QzYTViZjg0OC4uMzI2YjQ3ZDk1YjY2MjUyMzZlMzdjZjc4ODNkMGI3
ODg1YzZkZThhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw0ICsxLDI1IEBACi0yMDE5LTA4LTE5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKzIwMTktMDgtMjAgIENocmlzIExvcmQg
IDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEFkZCBzdXBwb3J0IHRv
IGNvcHkgWVVWIHZpZGVvIHRleHR1cmVzIGludG8gcGxhdGZvcm0gdGV4dHVyZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDkxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm90
IGNoYW5naW5nIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6Z2V0UGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzd2FwQnVmZmVyc0lm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXI6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmdldFRleHR1cmVWYXJpYW50KToKKwor
MjAxOS0wOC0yMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1RleG1hcF1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCB0byB1cGxvYWQgbW9yZSBjb2xvciBm
b3JtYXRzIGludG8gdGhlIHRleHR1cmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMjg2OQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDMyNWNjZDhlOTNlNWRkNTRmZjRjOTJmMDNk
ZDk3OTYxOTQ4ZTI2MGIuLjg5ZThhYmJlOGFjYjlmMjk4MTAyZmFmZDVkNjhmZTFmM2NmYzk3YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTIxNiw2ICsyMTYsNTkgQEAgcHVibGljOgogICAgICAgICB0ZXh0dXJlLnVwZGF0
ZUNvbnRlbnRzKHNyY0RhdGEsIFdlYkNvcmU6OkludFJlY3QoMCwgMCwgbV9zaXplLndpZHRoKCks
IG1fc2l6ZS5oZWlnaHQoKSksIFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBzdHJpZGUpOwogICAg
IH0KIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4gZ2V0UGxhdGZvcm1MYXllckJ1ZmZlcihib29sIHRyZWF0QXNSR0IpCisgICAgeworICAgICAg
ICBpZiAoIW1faGFzTWFwcGVkVGV4dHVyZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICB1c2luZyBCdWZmZXIgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjsKKworICAgICAgICBpZiAodHJlYXRBc1JHQiB8fCAoR1NUX1ZJREVPX0lORk9fSVNfUkdCKCZt
X3ZpZGVvRnJhbWUuaW5mbykgJiYgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJm1fdmlkZW9GcmFt
ZS5pbmZvKSA9PSAxKSkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QnVmZmVyPigK
KyAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0
dXJlIHsgKnN0YXRpY19jYXN0PEdMdWludCo+KG1fdmlkZW9GcmFtZS5kYXRhWzBdKSB9IH0sCisg
ICAgICAgICAgICAgICAgbV9zaXplLCBtX2ZsYWdzLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWKCZtX3ZpZGVv
RnJhbWUuaW5mbykpIHsKKyAgICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19OX0NPTVBPTkVO
VFMoJm1fdmlkZW9GcmFtZS5pbmZvKSA8IDMgfHwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJm1f
dmlkZW9GcmFtZS5pbmZvKSA+IDMpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgICAgIGludCBuUGxhbmVzID0gR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJm1fdmlk
ZW9GcmFtZS5pbmZvKTsKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8R0x1aW50LCAzPiBwbGFuZXM7
CisgICAgICAgICAgICBzdGQ6OmFycmF5PGludCwgMz4geXV2UGxhbmU7CisgICAgICAgICAgICBz
dGQ6OmFycmF5PGludCwgMz4geXV2UE9mZnNldDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgblBsYW5lczsgKytpKQorICAgICAgICAgICAgICAgIHBsYW5lc1tpXSA9ICpzdGF0aWNf
Y2FzdDxHTHVpbnQqPihtX3ZpZGVvRnJhbWUuZGF0YVtpXSk7CisgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAgICAgIHl1dlBsYW5lW2ldID0gR1NU
X1ZJREVPX0lORk9fQ09NUF9QTEFORSgmbV92aWRlb0ZyYW1lLmluZm8sIGkpOworICAgICAgICAg
ICAgICAgIHl1dlBPZmZzZXRbaV0gPSBHU1RfVklERU9fSU5GT19DT01QX1BPRkZTRVQoJm1fdmlk
ZW9GcmFtZS5pbmZvLCBpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RkOjphcnJh
eTxHTGZsb2F0LCA5PiB5dXZUb1JnYjsKKyAgICAgICAgICAgIGlmIChnc3RfdmlkZW9fY29sb3Jp
bWV0cnlfbWF0Y2hlcygmR1NUX1ZJREVPX0lORk9fQ09MT1JJTUVUUlkoJm1fdmlkZW9GcmFtZS5p
bmZvKSwgR1NUX1ZJREVPX0NPTE9SSU1FVFJZX0JUNzA5KSkgeworICAgICAgICAgICAgICAgIHl1
dlRvUmdiID0geworICAgICAgICAgICAgICAgICAgICAxLjE2NGYsICAwLjBmLCAgICAxLjc4N2Ys
CisgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgLTAuMjEzZiwgLTAuNTMxZiwKKyAgICAgICAg
ICAgICAgICAgICAgMS4xNjRmLCAgMi4xMTJmLCAgMC4wZgorICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gYnQ2MDEu
IFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIEdTdHJlYW1lcidzIGdsY29sb3Jjb252ZXJ0
IGVsZW1lbnQKKyAgICAgICAgICAgICAgICB5dXZUb1JnYiA9IHsKKyAgICAgICAgICAgICAgICAg
ICAgMS4xNjRmLCAgMC4wZiwgICAgMS41OTZmLAorICAgICAgICAgICAgICAgICAgICAxLjE2NGYs
IC0wLjM5MWYsIC0wLjgxM2YsCisgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDIuMDE4Ziwg
IDAuMGYKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxCdWZmZXI+KAorICAgICAgICAgICAgICAgIEJ1ZmZlcjo6VGV4dHVy
ZVZhcmlhbnQgeworICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OllVVlRleHR1cmUgeyBuUGxh
bmVzLCBwbGFuZXMsIHl1dlBsYW5lLCB5dXZQT2Zmc2V0LCB5dXZUb1JnYiB9IH0sCisgICAgICAg
ICAgICAgICAgbV9zaXplLCBtX2ZsYWdzLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
R3N0QnVmZmVyKiBtX2J1ZmZlcjsKICAgICBHc3RWaWRlb0ZyYW1lIG1fdmlkZW9GcmFtZSB7IH07
CkBAIC03MjgsNjAgKzc4MSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKIAogICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRl
b0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3Vz
aW5nRmFsbGJhY2tWaWRlb1NpbmspOwogCi0gICAgICAgICAgICB1c2luZyBCdWZmZXIgPSBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxCdWZmZXI+IGxheWVyQnVmZmVyOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlcjsKICAgICAgICAgICAgIGlm
IChmcmFtZUhvbGRlci0+aGFzTWFwcGVkVGV4dHVyZXMoKSkgewotICAgICAgICAgICAgICAgIGF1
dG8mIHZpZGVvRnJhbWUgPSBmcmFtZUhvbGRlci0+dmlkZW9GcmFtZSgpOwotICAgICAgICAgICAg
ICAgIFsmXSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3ZpZGVvRGVjb2RlclBsYXRmb3Jt
ID09IFdlYktpdEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpJbXhWUFUKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IChHU1RfVklERU9fSU5GT19JU19SR0IoJnZpZGVvRnJhbWUuaW5mbykgJiYg
R1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVvRnJhbWUuaW5mbykgPT0gMSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxCdWZmZXI+KAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgeyBCdWZmZXI6
OlJHQlRleHR1cmUgeyAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5kYXRhWzBdKSB9
IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJh
bWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19JU19ZVVYoJnZpZGVvRnJhbWUuaW5mbykpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19OX0NPTVBPTkVOVFMo
JnZpZGVvRnJhbWUuaW5mbykgPCAzIHx8IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0Zy
YW1lLmluZm8pID4gMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBuUGxhbmVzID0gR1NUX1ZJREVPX0lORk9fTl9QTEFO
RVMoJnZpZGVvRnJhbWUuaW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5
PEdMdWludCwgMz4gcGxhbmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxp
bnQsIDM+IHl1dlBsYW5lOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxpbnQs
IDM+IHl1dlBPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG5QbGFuZXM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZXNbaV0g
PSAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5kYXRhW2ldKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeXV2UGxhbmVbaV0gPSBHU1RfVklERU9fSU5GT19DT01QX1BMQU5FKCZ2
aWRlb0ZyYW1lLmluZm8sIGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlBPZmZz
ZXRbaV0gPSBHU1RfVklERU9fSU5GT19DT01QX1BPRkZTRVQoJnZpZGVvRnJhbWUuaW5mbywgaSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8R0xmbG9hdCwgOT4geXV2VG9SZ2I7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZ3N0X3ZpZGVvX2NvbG9yaW1ldHJ5X21hdGNoZXMoJkdTVF9WSURFT19JTkZPX0NPTE9SSU1F
VFJZKCZ2aWRlb0ZyYW1lLmluZm8pLCBHU1RfVklERU9fQ09MT1JJTUVUUllfQlQ3MDkpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeXV2VG9SZ2IgPSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDAuMGYsICAgIDEuNzg3ZiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMS4xNjRmLCAtMC4yMTNmLCAtMC41MzFmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxLjE2NGYsICAyLjExMmYsICAwLjBmCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBidDYwMS4gVGhpcyBpcyB0aGUg
c2FtZSBiZWhhdmlvdXIgYXMgR1N0cmVhbWVyJ3MgZ2xjb2xvcmNvbnZlcnQgZWxlbWVudAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlRvUmdiID0gewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLjE2NGYsICAwLjBmLCAgICAxLjU5NmYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuMTY0ZiwgLTAuMzkxZiwgLTAuODEzZiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4wMThmLCAgMC4wZgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxCdWZmZXI+KAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OllVVlRleHR1cmUgeyBuUGxhbmVzLCBwbGFuZXMs
IHl1dlBsYW5lLCB5dXZQT2Zmc2V0LCB5dXZUb1JnYiB9IH0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0oKTsKLQorICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gZnJhbWVIb2xkZXItPmdl
dFBsYXRmb3JtTGF5ZXJCdWZmZXIobV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9PSBXZWJLaXRHc3RW
aWRlb0RlY29kZXJQbGF0Zm9ybTo6SW14VlBVKTsKICAgICAgICAgICAgICAgICBpZiAoIWxheWVy
QnVmZmVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9s
ZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVy
ID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVyKGZyYW1lSG9sZGVyLT5zaXplKCksIEdMX0RPTlRf
Q0FSRSk7CkBAIC05ODAsOCArOTg0LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VV
bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBl
ckZsYWdzLCB0cnVlKTsKIAotICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1
cmVJRCgpOwotICAgIGlmICghdGV4dHVyZUlEKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBmcmFtZUhvbGRlci0+Z2V0
UGxhdGZvcm1MYXllckJ1ZmZlcihtX3ZpZGVvRGVjb2RlclBsYXRmb3JtID09IFdlYktpdEdzdFZp
ZGVvRGVjb2RlclBsYXRmb3JtOjpJbXhWUFUpOworICAgIGlmICghbGF5ZXJCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gc2l6ZSA9IGZyYW1lSG9sZGVyLT5zaXplKCk7
CkBAIC05OTEsNyArOTk1LDkgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICBpZiAoIW1f
dmlkZW9UZXh0dXJlQ29waWVyKQogICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VV
bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9D
T05WRVJUX0ZMQUcpOwogCi0gICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBzaXplLCBvdXRwdXRUZXh0dXJl
LCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlw
WSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKyAgICBmcmFtZUhvbGRlci0+U3luY1dhaXRD
UFUoKTsKKworICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKCpsYXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwgb3V0cHV0VGV4dHVy
ZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxp
cFksIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CiAKIE5hdGl2ZUltYWdlUHRyIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAppbmRleCA1
MmUxN2VhYzU2ZTdhZTY4YzgzOTk0YzcwOGUzOWY4NzA1ODY5MGI3Li4yNDg5ZTdlOTlhMmM4NTg0
NDQ0OWFjYWE5YWU4ZTM2ZWE0ZDRkOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyLmNwcApAQCAtMzUsOCArMzUsNiBAQCBWaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXI6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcihDb2xvckNvbnZlcnNpb24g
Y29sb3JDbwogICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQpOwogICAgIFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpLT5tYWtl
Q29udGV4dEN1cnJlbnQoKTsKIAotICAgIG1fc2hhZGVyUHJvZ3JhbSA9IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpjcmVhdGUoVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVS
R0IpOwotCiAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZnJhbWVidWZmZXIpOwogICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1fcmVzdWx0VGV4dHVyZSk7CiAKQEAgLTEzNyw5ICsxMzUsOSBAQCB2
b2lkIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6dXBkYXRlVHJhbnNmb3JtYXRpb25NYXRy
aXgoKQogICAgICAgICAtMSwgMSwgLShmYXJWYWx1ZSArIG5lYXJWYWx1ZSkgLyAoZmFyVmFsdWUg
LSBuZWFyVmFsdWUpLCAxKTsKIH0KIAotYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJ
bnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3VyY2VPcmllbnRhdGlv
bikKK2Jvb2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXImIGlucHV0VGV4
dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91
dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291cmNlT3Jp
ZW50YXRpb24pCiB7Ci0gICAgaWYgKCFtX3NoYWRlclByb2dyYW0gfHwgIW1fZnJhbWVidWZmZXIg
fHwgIW1fdmJvIHx8IGZyYW1lU2l6ZS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX2ZyYW1lYnVmZmVy
IHx8ICFtX3ZibyB8fCBmcmFtZVNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAobV9zaXplICE9IGZyYW1lU2l6ZSkgewpAQCAtMTU4LDYgKzE1Niw0MiBAQCBi
b29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKEdMdWludCBpbnB1dAogICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQpOwogICAg
IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dM
Q29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAorICAgIC8vIERldGVybWluZSB3aGF0
IHNoYWRlciBwcm9ncmFtIHRvIHVzZSBhbmQgY3JlYXRlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICB1
c2luZyBCdWZmZXIgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKKyAgICBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zOworICAgIFdURjo6c3dpdGNo
T24oaW5wdXRUZXh0dXJlLmdldFRleHR1cmVWYXJpYW50KCksCisgICAgICAgIFsmXShjb25zdCBC
dWZmZXI6OlJHQlRleHR1cmUmKQorICAgICAgICB7CisgICAgICAgICAgICBvcHRpb25zID0gVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0I7CisgICAgICAgIH0sCisgICAgICAg
IFsmXShjb25zdCBCdWZmZXI6OllVVlRleHR1cmUmIHRleHR1cmUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAodGV4dHVyZS5uUGxhbmVzKSB7CisgICAgICAgICAgICBjYXNlIDE6Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUueXV2UGxhbmVbMF0gPT0gdGV4dHVyZS55dXZQ
bGFuZVsxXSAmJiB0ZXh0dXJlLnl1dlBsYW5lWzFdID09IHRleHR1cmUueXV2UGxhbmVbMl0pOwor
ICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLnl1dlBPZmZzZXRbMF0gPT0gMiAmJiB0ZXh0
dXJlLnl1dlBPZmZzZXRbMV0gPT0gMSAmJiAhdGV4dHVyZS55dXZQT2Zmc2V0WzJdKTsKKyAgICAg
ICAgICAgICAgICBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVQ
YWNrZWRZVVY7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKCF0ZXh0dXJlLnl1dlBPZmZzZXRbMF0pOworICAgICAgICAg
ICAgICAgIG9wdGlvbnMgPSB0ZXh0dXJlLnl1dlBPZmZzZXRbMV0gPyBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6VGV4dHVyZU5WMjEgOiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZU5WMTI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKCF0ZXh0dXJlLnl1dlBPZmZzZXRbMF0gJiYgIXRleHR1cmUu
eXV2UE9mZnNldFsxXSAmJiAhdGV4dHVyZS55dXZQT2Zmc2V0WzJdKTsKKyAgICAgICAgICAgICAg
ICBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVZVVY7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgaWYg
KG9wdGlvbnMgIT0gbV9zaGFkZXJPcHRpb25zKSB7CisgICAgICAgIG1fc2hhZGVyUHJvZ3JhbSA9
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUob3B0aW9ucyk7CisgICAgICAgIG1f
c2hhZGVyT3B0aW9ucyA9IG9wdGlvbnM7CisgICAgfQorICAgIGlmICghbV9zaGFkZXJQcm9ncmFt
KSB7CisgICAgICAgIHByZXZpb3VzQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBTYXZlIHByZXZpb3VzIGJvdW5kIGZy
YW1lYnVmZmVyLCB0ZXh0dXJlIGFuZCB2aWV3cG9ydC4KICAgICBHTGludCBib3VuZEZyYW1lYnVm
ZmVyID0gMDsKICAgICBHTGludCBib3VuZFRleHR1cmUgPSAwOwpAQCAtMTgxLDE4ICsyMTUsNTAg
QEAgYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXQKICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbV9mcmFtZWJ1ZmZlcik7CiAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG91dHB1dFRl
eHR1cmUsIDApOwogCi0gICAgLy8gU2V0IHByb3BlciB3cmFwIHBhcmFtZXRlciB0byB0aGUgc291
cmNlIHRleHR1cmUuCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBpbnB1dFRleHR1
cmUpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmYo
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotCiAg
ICAgLy8gU2V0IHRoZSB2aWV3cG9ydC4KICAgICBnbFZpZXdwb3J0KDAsIDAsIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gU2V0IHByb2dyYW0gcGFyYW1ldGVycy4K
ICAgICBnbFVzZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtLT5wcm9ncmFtSUQoKSk7Ci0gICAgZ2xV
bmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7CisKKyAgICBX
VEY6OnN3aXRjaE9uKGlucHV0VGV4dHVyZS5nZXRUZXh0dXJlVmFyaWFudCgpLAorICAgICAgICBb
Jl0oY29uc3QgQnVmZmVyOjpSR0JUZXh0dXJlJiB0ZXh0dXJlKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBsZXJMb2NhdGlvbigpLCAwKTsK
KworICAgICAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICAgICAgICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS5pZCk7CisgICAgICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVIpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1l
dGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgICAgIH0sCisgICAgICAgIFsmXShjb25zdCBCdWZmZXI6OllVVlRleHR1cmUmIHRleHR1
cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAodGV4dHVyZS5uUGxhbmVzKSB7Cisg
ICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFkZXJQ
cm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgdGV4dHVyZS55dXZQbGFuZVswXSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgZ2xV
bmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyWUxvY2F0aW9uKCksIHRleHR1cmUueXV2
UGxhbmVbMF0pOworICAgICAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fc2hhZGVyUHJvZ3JhbS0+
c2FtcGxlclVMb2NhdGlvbigpLCB0ZXh0dXJlLnl1dlBsYW5lWzFdKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBnbFVuaWZvcm0x
aShtX3NoYWRlclByb2dyYW0tPnNhbXBsZXJZTG9jYXRpb24oKSwgdGV4dHVyZS55dXZQbGFuZVsw
XSk7CisgICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVy
VUxvY2F0aW9uKCksIHRleHR1cmUueXV2UGxhbmVbMV0pOworICAgICAgICAgICAgICAgIGdsVW5p
Zm9ybTFpKG1fc2hhZGVyUHJvZ3JhbS0+c2FtcGxlclZMb2NhdGlvbigpLCB0ZXh0dXJlLnl1dlBs
YW5lWzJdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGdsVW5pZm9ybU1hdHJpeDNmdihtX3NoYWRlclByb2dyYW0tPnl1dlRvUmdiTG9jYXRpb24o
KSwgMSwgR0xfRkFMU0UsIHN0YXRpY19jYXN0PGNvbnN0IEdMZmxvYXQgKj4oJnRleHR1cmUueXV2
VG9SZ2JNYXRyaXhbMF0pKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IHRleHR1cmUublBs
YW5lcyAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICAgICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUwICsgaSk7CisgICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXh0dXJlLnBsYW5lc1tpXSk7CisgICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAg
ICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVy
ZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworCiAgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRy
aXgobV9zaGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlvbigpLCBtX21vZGVsVmll
d01hdHJpeCk7CiAgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFt
LT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgbV9wcm9qZWN0aW9uTWF0cml4KTsKICAgICBt
X3NoYWRlclByb2dyYW0tPnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPnRleHR1cmVTcGFjZU1h
dHJpeExvY2F0aW9uKCksIG1fdGV4dHVyZVNwYWNlTWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAppbmRleCA1YzU2ZWMzNDE4ODgzMzQ1Nzg4ZmEw
YjU0OWE5ODAzMjdkM2U3YmY5Li5jNGRjNDlhYmRhY2MxOWUwOTI2ZDc3MjdlMDA1YzY0YjNhOWNj
OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCkBA
IC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckdMSGVhZGVycy5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcihDb2xvckNvbnZlcnNpb24pOwogICAgIH5WaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXIoKTsKIAotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1
aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZ
LCBJbWFnZU9yaWVudGF0aW9uIHNvdXJjZU9yaWVudGF0aW9uKTsKKyAgICBib29sIGNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ciYgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJl
LCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlv
biBzb3VyY2VPcmllbnRhdGlvbik7CiAgICAgdm9pZCB1cGRhdGVDb2xvckNvbnZlcnNpb25NYXRy
aXgoQ29sb3JDb252ZXJzaW9uKTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgp
OwogICAgIHZvaWQgdXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKQEAgLTUyLDYgKzUzLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbT4gbV9zaGFkZXJQcm9ncmFtOworICAgIHVuc2lnbmVkIG1fc2hhZGVyT3B0aW9ucyB7IDAg
fTsKICAgICBHTHVpbnQgbV9mcmFtZWJ1ZmZlciB7IDAgfTsKICAgICBHTHVpbnQgbV92Ym8geyAw
IH07CiAjaWYgIVVTRShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5oCmluZGV4IDU2NGI4ODU0YWZhZTA0NDY5OTYwOWU5YTI5ZDAwNjE2
Njg0NjJlYjguLjgxMDRiYWEyNjg1M2FlNThjNGMzZDk3ZGY2YmFiNTNmMzM2MDRkODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCkBAIC05MSw2
ICs5MSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SG9sZVB1bmNoQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxIb2xlUHVuY2hDbGllbnQ+JiYgY2xpZW50KSB7IG1faG9sZVB1bmNoQ2xpZW50ID0g
V1RGTW92ZShjbGllbnQpOyB9CiAKKyAgICBjb25zdCBUZXh0dXJlVmFyaWFudCYgZ2V0VGV4dHVy
ZVZhcmlhbnQoKSB7IHJldHVybiBtX3ZhcmlhbnQ7IH0KKwogcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiBtX3RleHR1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376858</attachid>
            <date>2019-08-21 03:17:45 -0700</date>
            <delta_ts>2019-08-27 03:49:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200914-20190821111743.patch</filename>
            <type>text/plain</type>
            <size>20061</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNmNjc4ZDEzMDQ1ZDhk
M2Y0MzQyOTJkOTIyMGYwM2QzYTViZjg0OC4uODU3YWVlMThjNjJhNzEzNTFjNWMzZjIzY2Y3Nzk0
MzI0OWMwMzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA4LTIxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRmb3JtIHRleHR1cmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA5MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgWVVW
IChpbmNsdWRpbmcgcGxhbmFyIGFuZCBzZW1pLXBsYW5hcikgdmlkZW8gdGV4dHVyZSB0byBwbGF0
Zm9ybQorICAgICAgICB0ZXh0dXJlIGNvcHkgaW4gVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm90IGNoYW5naW5nIGJlaGF2aW9yLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6Z2V0
UGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OlZpZGVvVGV4dHVy
ZUNvcGllckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI6OmdldFRleHR1cmVWYXJpYW50KToKKwogMjAxOS0wOC0xOSAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RleG1hcF1bR1N0cmVhbWVy
XSBBZGQgc3VwcG9ydCB0byB1cGxvYWQgbW9yZSBjb2xvciBmb3JtYXRzIGludG8gdGhlIHRleHR1
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcAppbmRleCAzMjVjY2Q4ZTkzZTVkZDU0ZmY0YzkyZjAzZGQ5Nzk2MTk0OGUyNjBiLi4wODRi
MmYxMTE5YzlkZDFkYTBiYzg4MTA5NTMzYjk4NGEwNWQ5ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0yMTYsNiArMjE2
LDU5IEBAIHB1YmxpYzoKICAgICAgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBX
ZWJDb3JlOjpJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpLCBX
ZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRlKTsKICAgICB9CiAKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGdldFBsYXRmb3JtTGF5ZXJC
dWZmZXIoYm9vbCB0cmVhdEFzUkdCKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2hhc01hcHBlZFRl
eHR1cmVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgdXNpbmcgQnVm
ZmVyID0gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI7CisKKyAgICAgICAgaWYgKHRy
ZWF0QXNSR0IgfHwgKEdTVF9WSURFT19JTkZPX0lTX1JHQigmbV92aWRlb0ZyYW1lLmluZm8pICYm
IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZtX3ZpZGVvRnJhbWUuaW5mbykgPT0gMSkpIHsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ1ZmZlcj4oCisgICAgICAgICAgICAgICAgQnVm
ZmVyOjpUZXh0dXJlVmFyaWFudCB7IEJ1ZmZlcjo6UkdCVGV4dHVyZSB7ICpzdGF0aWNfY2FzdDxH
THVpbnQqPihtX3ZpZGVvRnJhbWUuZGF0YVswXSkgfSB9LAorICAgICAgICAgICAgICAgIG1fc2l6
ZSwgbV9mbGFncywgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKEdTVF9WSURFT19JTkZPX0lTX1lVVigmbV92aWRlb0ZyYW1lLmluZm8pKSB7CisgICAg
ICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fTl9DT01QT05FTlRTKCZtX3ZpZGVvRnJhbWUuaW5m
bykgPCAzIHx8IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZtX3ZpZGVvRnJhbWUuaW5mbykgPiAz
KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgICAgICBpbnQgblBs
YW5lcyA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZtX3ZpZGVvRnJhbWUuaW5mbyk7CisgICAg
ICAgICAgICBzdGQ6OmFycmF5PEdMdWludCwgMz4gcGxhbmVzOworICAgICAgICAgICAgc3RkOjph
cnJheTxpbnQsIDM+IHl1dlBsYW5lOworICAgICAgICAgICAgc3RkOjphcnJheTxpbnQsIDM+IHl1
dlBPZmZzZXQ7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5QbGFuZXM7ICsraSkK
KyAgICAgICAgICAgICAgICBwbGFuZXNbaV0gPSAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4obV92aWRl
b0ZyYW1lLmRhdGFbaV0pOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kp
IHsKKyAgICAgICAgICAgICAgICB5dXZQbGFuZVtpXSA9IEdTVF9WSURFT19JTkZPX0NPTVBfUExB
TkUoJm1fdmlkZW9GcmFtZS5pbmZvLCBpKTsKKyAgICAgICAgICAgICAgICB5dXZQT2Zmc2V0W2ld
ID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QT0ZGU0VUKCZtX3ZpZGVvRnJhbWUuaW5mbywgaSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4geXV2VG9S
Z2I7CisgICAgICAgICAgICBpZiAoZ3N0X3ZpZGVvX2NvbG9yaW1ldHJ5X21hdGNoZXMoJkdTVF9W
SURFT19JTkZPX0NPTE9SSU1FVFJZKCZtX3ZpZGVvRnJhbWUuaW5mbyksIEdTVF9WSURFT19DT0xP
UklNRVRSWV9CVDcwOSkpIHsKKyAgICAgICAgICAgICAgICB5dXZUb1JnYiA9IHsKKyAgICAgICAg
ICAgICAgICAgICAgMS4xNjRmLCAgMC4wZiwgICAgMS43ODdmLAorICAgICAgICAgICAgICAgICAg
ICAxLjE2NGYsIC0wLjIxM2YsIC0wLjUzMWYsCisgICAgICAgICAgICAgICAgICAgIDEuMTY0Ziwg
IDIuMTEyZiwgIDAuMGYKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGJ0NjAxLiBUaGlzIGlzIHRoZSBzYW1lIGJl
aGF2aW91ciBhcyBHU3RyZWFtZXIncyBnbGNvbG9yY29udmVydCBlbGVtZW50CisgICAgICAgICAg
ICAgICAgeXV2VG9SZ2IgPSB7CisgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDAuMGYsICAg
IDEuNTk2ZiwKKyAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAtMC4zOTFmLCAtMC44MTNmLAor
ICAgICAgICAgICAgICAgICAgICAxLjE2NGYsICAyLjAxOGYsICAwLjBmCisgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QnVm
ZmVyPigKKyAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyOjpZVVZUZXh0dXJlIHsgblBsYW5lcywgcGxhbmVzLCB5dXZQbGFu
ZSwgeXV2UE9mZnNldCwgeXV2VG9SZ2IgfSB9LAorICAgICAgICAgICAgICAgIG1fc2l6ZSwgbV9m
bGFncywgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCiBwcml2YXRlOgogICAgIEdzdEJ1ZmZlciogbV9idWZmZXI7
CiAgICAgR3N0VmlkZW9GcmFtZSBtX3ZpZGVvRnJhbWUgeyB9OwpAQCAtNzI4LDYwICs3ODEsMTEg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29t
cG9zaXRvcigpCiAKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9s
ZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1w
bGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5r
KTsKIAotICAgICAgICAgICAgdXNpbmcgQnVmZmVyID0gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QnVmZmVyPiBsYXllckJ1ZmZl
cjsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBpZiAoZnJhbWVIb2xkZXItPmhhc01h
cHBlZFRleHR1cmVzKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiB2aWRlb0ZyYW1lID0gZnJh
bWVIb2xkZXItPnZpZGVvRnJhbWUoKTsKLSAgICAgICAgICAgICAgICBbJl0gewotICAgICAgICAg
ICAgICAgICAgICBpZiAobV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9PSBXZWJLaXRHc3RWaWRlb0Rl
Y29kZXJQbGF0Zm9ybTo6SW14VlBVCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoR1NUX1ZJ
REVPX0lORk9fSVNfUkdCKCZ2aWRlb0ZyYW1lLmluZm8pICYmIEdTVF9WSURFT19JTkZPX05fUExB
TkVTKCZ2aWRlb0ZyYW1lLmluZm8pID09IDEpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8QnVmZmVyPigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRp
Y19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVswXSkgfSB9LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJ
REVPX0lORk9fSVNfWVVWKCZ2aWRlb0ZyYW1lLmluZm8pKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoR1NUX1ZJREVPX0lORk9fTl9DT01QT05FTlRTKCZ2aWRlb0ZyYW1lLmluZm8pIDwg
MyB8fCBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9GcmFtZS5pbmZvKSA+IDMpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgblBsYW5lcyA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8p
OwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8aW50LCAzPiB5dXZQbGFuZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8aW50LCAzPiB5dXZQT2Zmc2V0OwotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuUGxhbmVzOyArK2kpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVzW2ldID0gKnN0YXRpY19jYXN0PEdMdWlu
dCo+KHZpZGVvRnJhbWUuZGF0YVtpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDM7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlBs
YW5lW2ldID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QTEFORSgmdmlkZW9GcmFtZS5pbmZvLCBpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5dXZQT2Zmc2V0W2ldID0gR1NUX1ZJREVPX0lO
Rk9fQ09NUF9QT0ZGU0VUKCZ2aWRlb0ZyYW1lLmluZm8sIGkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+
IHl1dlRvUmdiOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdzdF92aWRlb19jb2xvcmlt
ZXRyeV9tYXRjaGVzKCZHU1RfVklERU9fSU5GT19DT0xPUklNRVRSWSgmdmlkZW9GcmFtZS5pbmZv
KSwgR1NUX1ZJREVPX0NPTE9SSU1FVFJZX0JUNzA5KSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHl1dlRvUmdiID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2
NGYsICAwLjBmLCAgICAxLjc4N2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEu
MTY0ZiwgLTAuMjEzZiwgLTAuNTMxZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MS4xNjRmLCAgMi4xMTJmLCAgMC4wZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIERlZmF1bHQgdG8gYnQ2MDEuIFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIEdT
dHJlYW1lcidzIGdsY29sb3Jjb252ZXJ0IGVsZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5dXZUb1JnYiA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRm
LCAgMC4wZiwgICAgMS41OTZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2
NGYsIC0wLjM5MWYsIC0wLjgxM2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEu
MTY0ZiwgIDIuMDE4ZiwgIDAuMGYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXllckJ1
ZmZlciA9IG1ha2VVbmlxdWU8QnVmZmVyPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWZmZXI6OlRleHR1cmVWYXJpYW50IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVyOjpZVVZUZXh0dXJlIHsgblBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UE9mZnNl
dCwgeXV2VG9SZ2IgfSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVy
LT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KCk7Ci0KKyAgICAgICAg
ICAgICAgICBsYXllckJ1ZmZlciA9IGZyYW1lSG9sZGVyLT5nZXRQbGF0Zm9ybUxheWVyQnVmZmVy
KG1fdmlkZW9EZWNvZGVyUGxhdGZvcm0gPT0gV2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm06
OklteFZQVSk7CiAgICAgICAgICAgICAgICAgaWYgKCFsYXllckJ1ZmZlcikKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFu
YWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92ZShmcmFtZUhvbGRlcikpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJs
ZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgpLCBHTF9ET05UX0NBUkUpOwpAQCAtOTgwLDggKzk4
NCw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0
VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVI
b2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKLSAg
ICBhdXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKLSAgICBpZiAoIXRl
eHR1cmVJRCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+IGxheWVyQnVmZmVyID0gZnJhbWVIb2xkZXItPmdldFBsYXRmb3JtTGF5ZXJCdWZmZXIo
bV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9PSBXZWJLaXRHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybTo6
SW14VlBVKTsKKyAgICBpZiAoIWxheWVyQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBhdXRvIHNpemUgPSBmcmFtZUhvbGRlci0+c2l6ZSgpOwpAQCAtOTkxLDcgKzk5NSw5IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikK
ICAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKIAotICAg
IHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbik7CisgICAgZnJhbWVIb2xkZXItPlN5bmNXYWl0Q1BVKCk7CisKKyAgICByZXR1cm4g
bV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgq
bGF5ZXJCdWZmZXIuZ2V0KCksIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2
ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3Jp
ZW50YXRpb24pOwogfQogCiBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKQEAgLTEwMDcsOCArMTAxMyw4IEBA
IE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVI
b2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3Nh
bXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0
dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7Ci0gICAgaWYgKCF0ZXh0dXJlSUQpCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXll
ckJ1ZmZlciA9IGZyYW1lSG9sZGVyLT5nZXRQbGF0Zm9ybUxheWVyQnVmZmVyKG1fdmlkZW9EZWNv
ZGVyUGxhdGZvcm0gPT0gV2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm06OklteFZQVSk7Cisg
ICAgaWYgKCFsYXllckJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRv
IHNpemUgPSBmcmFtZUhvbGRlci0+c2l6ZSgpOwpAQCAtMTAyMSw3ICsxMDI3LDkgQEAgTmF0aXZl
SW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKICAgICAgICAgbV92
aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1l
cj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKIAotICAgIGlmICghbV92aWRl
b1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJl
SUQsIHNpemUsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9CWVRFLCBmYWxzZSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSkKKyAgICBm
cmFtZUhvbGRlci0+U3luY1dhaXRDUFUoKTsKKworICAgIGlmICghbV92aWRlb1RleHR1cmVDb3Bp
ZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0KCks
IHNpemUsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCBmYWxzZSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9j
cmVhdGVfZm9yX3RleHR1cmUoY29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9D
T0xPUl9BTFBIQSwgbV92aWRlb1RleHR1cmVDb3BpZXItPnJlc3VsdFRleHR1cmUoKSwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXIuY3BwCmluZGV4IDUyZTE3ZWFjNTZlN2FlNjhjODM5OTRjNzA4ZTM5Zjg3
MDU4NjkwYjcuLjI0ODllN2U5OWEyYzg1ODQ0NDQ5YWNhYTlhZThlMzZlYTRkNGQ5NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCkBAIC0zNSw4
ICszNSw2IEBAIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyKENvbG9yQ29udmVyc2lvbiBjb2xvckNvCiAgICAgQVNTRVJUKHByZXZpb3VzQ29u
dGV4dCk7CiAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmco
KS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0gICAgbV9zaGFk
ZXJQcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQik7Ci0KICAgICBnbEdlbkZyYW1lYnVmZmVycygx
LCAmbV9mcmFtZWJ1ZmZlcik7CiAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9yZXN1bHRUZXh0dXJl
KTsKIApAQCAtMTM3LDkgKzEzNSw5IEBAIHZvaWQgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
Ojp1cGRhdGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpCiAgICAgICAgIC0xLCAxLCAtKGZhclZhbHVl
ICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSksIDEpOwogfQogCi1ib29sIFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1
dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9y
aWVudGF0aW9uIHNvdXJjZU9yaWVudGF0aW9uKQorYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3Ry
ZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlciYgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWlu
dCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwg
SW1hZ2VPcmllbnRhdGlvbiBzb3VyY2VPcmllbnRhdGlvbikKIHsKLSAgICBpZiAoIW1fc2hhZGVy
UHJvZ3JhbSB8fCAhbV9mcmFtZWJ1ZmZlciB8fCAhbV92Ym8gfHwgZnJhbWVTaXplLmlzRW1wdHko
KSkKKyAgICBpZiAoIW1fZnJhbWVidWZmZXIgfHwgIW1fdmJvIHx8IGZyYW1lU2l6ZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3NpemUgIT0gZnJhbWVTaXpl
KSB7CkBAIC0xNTgsNiArMTU2LDQyIEBAIGJvb2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0CiAgICAgQVNT
RVJUKHByZXZpb3VzQ29udGV4dCk7CiAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgp
OwogCisgICAgLy8gRGV0ZXJtaW5lIHdoYXQgc2hhZGVyIHByb2dyYW0gdG8gdXNlIGFuZCBjcmVh
dGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIHVzaW5nIEJ1ZmZlciA9IFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25z
IG9wdGlvbnM7CisgICAgV1RGOjpzd2l0Y2hPbihpbnB1dFRleHR1cmUuZ2V0VGV4dHVyZVZhcmlh
bnQoKSwKKyAgICAgICAgWyZdKGNvbnN0IEJ1ZmZlcjo6UkdCVGV4dHVyZSYpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVy
ZVJHQjsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdKGNvbnN0IEJ1ZmZlcjo6WVVWVGV4dHVyZSYg
dGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoICh0ZXh0dXJlLm5QbGFuZXMp
IHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBBU1NFUlQodGV4dHVyZS55
dXZQbGFuZVswXSA9PSB0ZXh0dXJlLnl1dlBsYW5lWzFdICYmIHRleHR1cmUueXV2UGxhbmVbMV0g
PT0gdGV4dHVyZS55dXZQbGFuZVsyXSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUu
eXV2UE9mZnNldFswXSA9PSAyICYmIHRleHR1cmUueXV2UE9mZnNldFsxXSA9PSAxICYmICF0ZXh0
dXJlLnl1dlBPZmZzZXRbMl0pOworICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVBhY2tlZFlVVjsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXRleHR1cmUu
eXV2UE9mZnNldFswXSk7CisgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHRleHR1cmUueXV2UE9m
ZnNldFsxXSA/IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlTlYyMSA6IFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlTlYxMjsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXRleHR1cmUu
eXV2UE9mZnNldFswXSAmJiAhdGV4dHVyZS55dXZQT2Zmc2V0WzFdICYmICF0ZXh0dXJlLnl1dlBP
ZmZzZXRbMl0pOworICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6VGV4dHVyZVlVVjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisKKyAgICBpZiAob3B0aW9ucyAhPSBtX3NoYWRlck9wdGlvbnMpIHsK
KyAgICAgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNy
ZWF0ZShvcHRpb25zKTsKKyAgICAgICAgbV9zaGFkZXJPcHRpb25zID0gb3B0aW9uczsKKyAgICB9
CisgICAgaWYgKCFtX3NoYWRlclByb2dyYW0pIHsKKyAgICAgICAgcHJldmlvdXNDb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAg
IC8vIFNhdmUgcHJldmlvdXMgYm91bmQgZnJhbWVidWZmZXIsIHRleHR1cmUgYW5kIHZpZXdwb3J0
LgogICAgIEdMaW50IGJvdW5kRnJhbWVidWZmZXIgPSAwOwogICAgIEdMaW50IGJvdW5kVGV4dHVy
ZSA9IDA7CkBAIC0xODEsMTggKzIxNSw1MCBAQCBib29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dAogICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVmZmVyKTsKICAgICBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCwgR0xfVEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVyZSwgMCk7CiAKLSAgICAvLyBTZXQgcHJvcGVy
IHdyYXAgcGFyYW1ldGVyIHRvIHRoZSBzb3VyY2UgdGV4dHVyZS4KLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIGlucHV0VGV4dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBh
cmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VE
R0UpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0KICAgICAvLyBTZXQgdGhlIHZpZXdwb3J0LgogICAgIGds
Vmlld3BvcnQoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiAKICAgICAv
LyBTZXQgcHJvZ3JhbSBwYXJhbWV0ZXJzLgogICAgIGdsVXNlUHJvZ3JhbShtX3NoYWRlclByb2dy
YW0tPnByb2dyYW1JRCgpKTsKLSAgICBnbFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBs
ZXJMb2NhdGlvbigpLCAwKTsKKworICAgIFdURjo6c3dpdGNoT24oaW5wdXRUZXh0dXJlLmdldFRl
eHR1cmVWYXJpYW50KCksCisgICAgICAgIFsmXShjb25zdCBCdWZmZXI6OlJHQlRleHR1cmUmIHRl
eHR1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fc2hhZGVyUHJvZ3Jh
bS0+c2FtcGxlckxvY2F0aW9uKCksIDApOworCisgICAgICAgICAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTApOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXh0dXJlLmlkKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgICAgICBnbFRleFBhcmFt
ZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0Up
OworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
V1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdKGNvbnN0
IEJ1ZmZlcjo6WVVWVGV4dHVyZSYgdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dp
dGNoICh0ZXh0dXJlLm5QbGFuZXMpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
ICAgICBnbFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBsZXJMb2NhdGlvbigpLCB0ZXh0
dXJlLnl1dlBsYW5lWzBdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMjoKKyAgICAgICAgICAgICAgICBnbFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBs
ZXJZTG9jYXRpb24oKSwgdGV4dHVyZS55dXZQbGFuZVswXSk7CisgICAgICAgICAgICAgICAgZ2xV
bmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyVUxvY2F0aW9uKCksIHRleHR1cmUueXV2
UGxhbmVbMV0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fc2hhZGVyUHJvZ3JhbS0+c2FtcGxlcllMb2Nh
dGlvbigpLCB0ZXh0dXJlLnl1dlBsYW5lWzBdKTsKKyAgICAgICAgICAgICAgICBnbFVuaWZvcm0x
aShtX3NoYWRlclByb2dyYW0tPnNhbXBsZXJVTG9jYXRpb24oKSwgdGV4dHVyZS55dXZQbGFuZVsx
XSk7CisgICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVy
VkxvY2F0aW9uKCksIHRleHR1cmUueXV2UGxhbmVbMl0pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KG1fc2hhZGVy
UHJvZ3JhbS0+eXV2VG9SZ2JMb2NhdGlvbigpLCAxLCBHTF9GQUxTRSwgc3RhdGljX2Nhc3Q8Y29u
c3QgR0xmbG9hdCAqPigmdGV4dHVyZS55dXZUb1JnYk1hdHJpeFswXSkpOworCisgICAgICAgICAg
ICBmb3IgKGludCBpID0gdGV4dHVyZS5uUGxhbmVzIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAg
ICAgICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAgKyBpKTsKKyAgICAgICAgICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUucGxhbmVzW2ldKTsKKyAg
ICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyZihH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAg
ICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKICAg
ICBtX3NoYWRlclByb2dyYW0tPnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPm1vZGVsVmlld01h
dHJpeExvY2F0aW9uKCksIG1fbW9kZWxWaWV3TWF0cml4KTsKICAgICBtX3NoYWRlclByb2dyYW0t
PnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPnByb2plY3Rpb25NYXRyaXhMb2NhdGlvbigpLCBt
X3Byb2plY3Rpb25NYXRyaXgpOwogICAgIG1fc2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4KG1fc2hh
ZGVyUHJvZ3JhbS0+dGV4dHVyZVNwYWNlTWF0cml4TG9jYXRpb24oKSwgbV90ZXh0dXJlU3BhY2VN
YXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCmlu
ZGV4IDVjNTZlYzM0MTg4ODMzNDU3ODhmYTBiNTQ5YTk4MDMyN2QzZTdiZjkuLmM0ZGM0OWFiZGFj
YzE5ZTA5MjZkNzcyN2UwMDVjNjRiM2E5Y2M5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIklt
YWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0xIZWFkZXJzLmgiCisj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKICNpbmNsdWRlICJU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDQs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKENvbG9y
Q29udmVyc2lvbik7CiAgICAgflZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcigpOwogCi0gICAg
Ym9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0VGV4dHVy
ZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91dHB1
dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291cmNlT3JpZW50
YXRpb24pOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyJiBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1l
U2l6ZSwgR0x1aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxl
dmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBi
b29sIGZsaXBZLCBJbWFnZU9yaWVudGF0aW9uIHNvdXJjZU9yaWVudGF0aW9uKTsKICAgICB2b2lk
IHVwZGF0ZUNvbG9yQ29udmVyc2lvbk1hdHJpeChDb2xvckNvbnZlcnNpb24pOwogICAgIHZvaWQg
dXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KCk7CiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpOwpAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVm
UHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBtX3NoYWRlclByb2dyYW07CisgICAgdW5z
aWduZWQgbV9zaGFkZXJPcHRpb25zIHsgMCB9OwogICAgIEdMdWludCBtX2ZyYW1lYnVmZmVyIHsg
MCB9OwogICAgIEdMdWludCBtX3ZibyB7IDAgfTsKICNpZiAhVVNFKE9QRU5HTF9FUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKaW5kZXggNTY0Yjg4
NTRhZmFlMDQ0Njk5NjA5ZTlhMjlkMDA2MTY2ODQ2MmViOC4uODEwNGJhYTI2ODUzYWU1OGM0YzNk
OTdkZjZiYWI1M2YzMzYwNGQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmgKQEAgLTkxLDYgKzkxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRIb2xlUHVuY2hDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEhvbGVQdW5jaENsaWVudD4mJiBjbGll
bnQpIHsgbV9ob2xlUHVuY2hDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KIAorICAgIGNvbnN0
IFRleHR1cmVWYXJpYW50JiBnZXRUZXh0dXJlVmFyaWFudCgpIHsgcmV0dXJuIG1fdmFyaWFudDsg
fQorCiBwcml2YXRlOgogCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1fdGV4dHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377334</attachid>
            <date>2019-08-27 03:49:52 -0700</date>
            <delta_ts>2019-09-03 03:35:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200914-20190827114950.patch</filename>
            <type>text/plain</type>
            <size>19627</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjVmNDY0NmY5YTIyMTVl
ZWJlNzI5YjFmNjE4ODNhZjhiNzU2MmYzMy4uMmYzZWQ2MzZjMjhmN2ZhY2UyNjU5YmEzYTdiMDVm
Y2M4OWFlNTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA4LTIxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRmb3JtIHRleHR1cmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA5MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgWVVW
IChpbmNsdWRpbmcgcGxhbmFyIGFuZCBzZW1pLXBsYW5hcikgdmlkZW8gdGV4dHVyZSB0byBwbGF0
Zm9ybQorICAgICAgICB0ZXh0dXJlIGNvcHkgaW4gVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm90IGNoYW5naW5nIGJlaGF2aW9yLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6cGxh
dGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OlZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3Ry
ZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI6OnRleHR1cmVWYXJpYW50KToKKwogMjAxOS0wOC0xOSAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RleG1hcF1bR1N0cmVhbWVyXSBBZGQg
c3VwcG9ydCB0byB1cGxvYWQgbW9yZSBjb2xvciBmb3JtYXRzIGludG8gdGhlIHRleHR1cmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApp
bmRleCBkYTllMDMxODZhNmMzMDdkZWViZjI1NmFmYmQ1Yzk4N2M1YWU0OWUwLi5hZWRkNzJjYjhl
ZmNiZjViNjRkYTE0Njc1MDc3ZGZlZTAxMTY4NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0yMTYsNiArMjE2LDUzIEBA
IHB1YmxpYzoKICAgICAgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3Jl
OjpJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpLCBXZWJDb3Jl
OjpJbnRQb2ludCgwLCAwKSwgc3RyaWRlKTsKICAgICB9CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IHBsYXRmb3JtTGF5ZXJCdWZmZXIoKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2hhc01hcHBlZFRleHR1cmVzKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgdXNpbmcgQnVmZmVyID0gVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI7CisKKyAgICAgICAgaWYgKChHU1RfVklERU9fSU5GT19JU19SR0IoJm1f
dmlkZW9GcmFtZS5pbmZvKSAmJiBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmbV92aWRlb0ZyYW1l
LmluZm8pID09IDEpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QnVmZmVyPihCdWZm
ZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRpY19jYXN0PEdM
dWludCo+KG1fdmlkZW9GcmFtZS5kYXRhWzBdKSB9IH0sIG1fc2l6ZSwgbV9mbGFncywgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkEpOworCisgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19JU19ZVVYo
Jm1fdmlkZW9GcmFtZS5pbmZvKSkgeworICAgICAgICAgICAgaWYgKEdTVF9WSURFT19JTkZPX05f
Q09NUE9ORU5UUygmbV92aWRlb0ZyYW1lLmluZm8pIDwgMyB8fCBHU1RfVklERU9fSU5GT19OX1BM
QU5FUygmbV92aWRlb0ZyYW1lLmluZm8pID4gMykKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICAgICAgaW50IG51bWJlck9mUGxhbmVzID0gR1NUX1ZJREVPX0lORk9f
Tl9QTEFORVMoJm1fdmlkZW9GcmFtZS5pbmZvKTsKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8R0x1
aW50LCAzPiBwbGFuZXM7CisgICAgICAgICAgICBzdGQ6OmFycmF5PGludCwgMz4geXV2UGxhbmU7
CisgICAgICAgICAgICBzdGQ6OmFycmF5PGludCwgMz4geXV2UGxhbmVPZmZzZXQ7CisgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mUGxhbmVzOyArK2kpCisgICAgICAgICAg
ICAgICAgcGxhbmVzW2ldID0gKnN0YXRpY19jYXN0PEdMdWludCo+KG1fdmlkZW9GcmFtZS5kYXRh
W2ldKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAg
ICAgICAgICAgeXV2UGxhbmVbaV0gPSBHU1RfVklERU9fSU5GT19DT01QX1BMQU5FKCZtX3ZpZGVv
RnJhbWUuaW5mbywgaSk7CisgICAgICAgICAgICAgICAgeXV2UGxhbmVPZmZzZXRbaV0gPSBHU1Rf
VklERU9fSU5GT19DT01QX1BPRkZTRVQoJm1fdmlkZW9GcmFtZS5pbmZvLCBpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgc3RkOjphcnJheTxHTGZsb2F0LCA5PiB5dXZUb1JnYjsKKyAg
ICAgICAgICAgIGlmIChnc3RfdmlkZW9fY29sb3JpbWV0cnlfbWF0Y2hlcygmR1NUX1ZJREVPX0lO
Rk9fQ09MT1JJTUVUUlkoJm1fdmlkZW9GcmFtZS5pbmZvKSwgR1NUX1ZJREVPX0NPTE9SSU1FVFJZ
X0JUNzA5KSkgeworICAgICAgICAgICAgICAgIHl1dlRvUmdiID0geworICAgICAgICAgICAgICAg
ICAgICAxLjE2NGYsICAwLjBmLCAgICAxLjc4N2YsCisgICAgICAgICAgICAgICAgICAgIDEuMTY0
ZiwgLTAuMjEzZiwgLTAuNTMxZiwKKyAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4xMTJm
LCAgMC4wZgorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIC8vIERlZmF1bHQgdG8gYnQ2MDEuIFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3Vy
IGFzIEdTdHJlYW1lcidzIGdsY29sb3Jjb252ZXJ0IGVsZW1lbnQuCisgICAgICAgICAgICAgICAg
eXV2VG9SZ2IgPSB7CisgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDAuMGYsICAgIDEuNTk2
ZiwKKyAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAtMC4zOTFmLCAtMC44MTNmLAorICAgICAg
ICAgICAgICAgICAgICAxLjE2NGYsICAyLjAxOGYsICAwLjBmCisgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QnVmZmVyPigg
QnVmZmVyOjpUZXh0dXJlVmFyaWFudCB7IEJ1ZmZlcjo6WVVWVGV4dHVyZSB7IG51bWJlck9mUGxh
bmVzLCBwbGFuZXMsIHl1dlBsYW5lLCB5dXZQbGFuZU9mZnNldCwgeXV2VG9SZ2IgfSB9LCBtX3Np
emUsIG1fZmxhZ3MsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogcHJpdmF0ZToKICAgICBHc3RCdWZmZXIqIG1f
YnVmZmVyOwogICAgIEdzdFZpZGVvRnJhbWUgbV92aWRlb0ZyYW1lIHsgfTsKQEAgLTcyOCw1NyAr
Nzc1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1
cmVUb0NvbXBvc2l0b3IoKQogCiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9G
cmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+
KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1Zp
ZGVvU2luayk7CiAKLSAgICAgICAgICAgIHVzaW5nIEJ1ZmZlciA9IFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ1ZmZlcj4gbGF5
ZXJCdWZmZXI7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyOwogICAgICAgICAgICAgaWYgKGZyYW1lSG9sZGVy
LT5oYXNNYXBwZWRUZXh0dXJlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgdmlkZW9GcmFt
ZSA9IGZyYW1lSG9sZGVyLT52aWRlb0ZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgWyZdIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKChHU1RfVklERU9fSU5GT19JU19SR0IoJnZpZGVvRnJhbWUu
aW5mbykgJiYgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVvRnJhbWUuaW5mbykgPT0gMSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxCdWZm
ZXI+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQg
eyBCdWZmZXI6OlJHQlRleHR1cmUgeyAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5k
YXRhWzBdKSB9IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnNp
emUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19JU19ZVVYoJnZpZGVvRnJhbWUu
aW5mbykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19OX0NP
TVBPTkVOVFMoJnZpZGVvRnJhbWUuaW5mbykgPCAzIHx8IEdTVF9WSURFT19JTkZPX05fUExBTkVT
KCZ2aWRlb0ZyYW1lLmluZm8pID4gMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1iZXJPZlBsYW5lcyA9IEdTVF9W
SURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6YXJyYXk8aW50LCAzPiB5dXZQbGFuZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6YXJyYXk8aW50LCAzPiB5dXZQbGFuZU9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZQbGFuZXM7ICsraSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwbGFuZXNbaV0gPSAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9G
cmFtZS5kYXRhW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMzsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeXV2UGxhbmVbaV0gPSBH
U1RfVklERU9fSU5GT19DT01QX1BMQU5FKCZ2aWRlb0ZyYW1lLmluZm8sIGkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHl1dlBsYW5lT2Zmc2V0W2ldID0gR1NUX1ZJREVPX0lORk9fQ09N
UF9QT0ZGU0VUKCZ2aWRlb0ZyYW1lLmluZm8sIGkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+IHl1dlRv
UmdiOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdzdF92aWRlb19jb2xvcmltZXRyeV9t
YXRjaGVzKCZHU1RfVklERU9fSU5GT19DT0xPUklNRVRSWSgmdmlkZW9GcmFtZS5pbmZvKSwgR1NU
X1ZJREVPX0NPTE9SSU1FVFJZX0JUNzA5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHl1dlRvUmdiID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYsICAw
LjBmLCAgICAxLjc4N2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0Ziwg
LTAuMjEzZiwgLTAuNTMxZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRm
LCAgMi4xMTJmLCAgMC4wZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IERlZmF1bHQgdG8gYnQ2MDEuIFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIEdTdHJlYW1l
cidzIGdsY29sb3Jjb252ZXJ0IGVsZW1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
eXV2VG9SZ2IgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDAu
MGYsICAgIDEuNTk2ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAt
MC4zOTFmLCAtMC44MTNmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYs
ICAyLjAxOGYsICAwLjBmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIg
PSBtYWtlVW5pcXVlPEJ1ZmZlcj4oQnVmZmVyOjpUZXh0dXJlVmFyaWFudCB7IEJ1ZmZlcjo6WVVW
VGV4dHVyZSB7IG51bWJlck9mUGxhbmVzLCBwbGFuZXMsIHl1dlBsYW5lLCB5dXZQbGFuZU9mZnNl
dCwgeXV2VG9SZ2IgfSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVy
LT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KCk7Ci0KKyAgICAgICAg
ICAgICAgICBsYXllckJ1ZmZlciA9IGZyYW1lSG9sZGVyLT5wbGF0Zm9ybUxheWVyQnVmZmVyKCk7
CiAgICAgICAgICAgICAgICAgaWYgKCFsYXllckJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotCiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZl
ckRhdGFIb2xkZXIoV1RGTW92ZShmcmFtZUhvbGRlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihm
cmFtZUhvbGRlci0+c2l6ZSgpLCBHTF9ET05UX0NBUkUpOwpAQCAtOTc3LDggKzk3OCw4IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFt
ZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1f
c2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKLSAgICBhdXRvIHRl
eHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKLSAgICBpZiAoIXRleHR1cmVJRCkK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxh
eWVyQnVmZmVyID0gZnJhbWVIb2xkZXItPnBsYXRmb3JtTGF5ZXJCdWZmZXIoKTsKKyAgICBpZiAo
IWxheWVyQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIHNpemUgPSBm
cmFtZUhvbGRlci0+c2l6ZSgpOwpAQCAtOTg4LDcgKzk4OSw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKICAgICAgICAgbV92aWRlb1Rl
eHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVY
VFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKIAotICAgIHJldHVybiBtX3ZpZGVvVGV4
dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwg
c2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CisgICAgZnJh
bWVIb2xkZXItPndhaXRGb3JDUFVTeW5jKCk7CisKKyAgICByZXR1cm4gbV92aWRlb1RleHR1cmVD
b3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0
KCksIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9y
bWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOwogfQog
CiBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKQEAgLTEwMDQsOCArMTAwNyw4IEBAIE5hdGl2ZUltYWdlUHRy
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9s
ZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90
ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0dXJlSUQgPSBmcmFtZUhv
bGRlci0+dGV4dHVyZUlEKCk7Ci0gICAgaWYgKCF0ZXh0dXJlSUQpCisgICAgc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IGZyYW1l
SG9sZGVyLT5wbGF0Zm9ybUxheWVyQnVmZmVyKCk7CisgICAgaWYgKCFsYXllckJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHNpemUgPSBmcmFtZUhvbGRlci0+c2l6
ZSgpOwpAQCAtMTAxOCw3ICsxMDIxLDkgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFt
X3ZpZGVvVGV4dHVyZUNvcGllcikKICAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtl
VW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1Jf
Q09OVkVSVF9GTEFHKTsKIAotICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBmYWxzZSwg
bV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSkKKyAgICBmcmFtZUhvbGRlci0+d2FpdEZvckNQVVN5
bmMoKTsKKworICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0KCksIHNpemUsIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBmYWxzZSwg
bV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoY29u
dGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgbV92aWRlb1Rl
eHR1cmVDb3BpZXItPnJlc3VsdFRleHR1cmUoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDUyZTE3ZWFjNTZlN2FlNjhjODM5OTRjNzA4ZTM5Zjg3MDU4NjkwYjcuLjY3ZmI2Zjg5YWYx
MzA4ZjM0ZjViYmY5ZWJlMDgyNGRiYTdjYzBjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCkBAIC0zNSw4ICszNSw2IEBAIFZpZGVvVGV4dHVy
ZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKENvbG9yQ29udmVy
c2lvbiBjb2xvckNvCiAgICAgQVNTRVJUKHByZXZpb3VzQ29udGV4dCk7CiAgICAgUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCkt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0gICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZVJHQik7Ci0KICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9mcmFtZWJ1ZmZlcik7CiAg
ICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9yZXN1bHRUZXh0dXJlKTsKIApAQCAtMTM3LDkgKzEzNSw5
IEBAIHZvaWQgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGVUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpCiAgICAgICAgIC0xLCAxLCAtKGZhclZhbHVlICsgbmVhclZhbHVlKSAvIChmYXJW
YWx1ZSAtIG5lYXJWYWx1ZSksIDEpOwogfQogCi1ib29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dFRleHR1
cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRw
dXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0aW9uIHNvdXJjZU9yaWVu
dGF0aW9uKQorYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciYgaW5w
dXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVu
dW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3Vy
Y2VPcmllbnRhdGlvbikKIHsKLSAgICBpZiAoIW1fc2hhZGVyUHJvZ3JhbSB8fCAhbV9mcmFtZWJ1
ZmZlciB8fCAhbV92Ym8gfHwgZnJhbWVTaXplLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fZnJhbWVi
dWZmZXIgfHwgIW1fdmJvIHx8IGZyYW1lU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChtX3NpemUgIT0gZnJhbWVTaXplKSB7CkBAIC0xNTgsNiArMTU2LDM4
IEBAIGJvb2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0CiAgICAgQVNTRVJUKHByZXZpb3VzQ29udGV4dCk7
CiAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFy
aW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCisgICAgLy8gRGV0ZXJtaW5l
IHdoYXQgc2hhZGVyIHByb2dyYW0gdG8gdXNlIGFuZCBjcmVhdGUgaXQgaWYgbmVjZXNzYXJ5Lgor
ICAgIHVzaW5nIEJ1ZmZlciA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOworICAg
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnM7CisgICAgV1RGOjpz
d2l0Y2hPbihpbnB1dFRleHR1cmUudGV4dHVyZVZhcmlhbnQoKSwKKyAgICAgICAgWyZdKGNvbnN0
IEJ1ZmZlcjo6UkdCVGV4dHVyZSYpIHsgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjpUZXh0dXJlUkdCOyB9LAorICAgICAgICBbJl0oY29uc3QgQnVmZmVyOjpZVVZUZXh0dXJl
JiB0ZXh0dXJlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRleHR1cmUubnVtYmVyT2ZQbGFuZXMp
IHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBBU1NFUlQodGV4dHVyZS55
dXZQbGFuZVswXSA9PSB0ZXh0dXJlLnl1dlBsYW5lWzFdICYmIHRleHR1cmUueXV2UGxhbmVbMV0g
PT0gdGV4dHVyZS55dXZQbGFuZVsyXSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUu
eXV2UGxhbmVPZmZzZXRbMF0gPT0gMiAmJiB0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzFdID09IDEg
JiYgIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMl0pOworICAgICAgICAgICAgICAgIG9wdGlvbnMg
PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVBhY2tlZFlVVjsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBBU1NF
UlQoIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMF0pOworICAgICAgICAgICAgICAgIG9wdGlvbnMg
PSB0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzFdID8gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OlRleHR1cmVOVjIxIDogVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVOVjEyOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAg
ICAgIEFTU0VSVCghdGV4dHVyZS55dXZQbGFuZU9mZnNldFswXSAmJiAhdGV4dHVyZS55dXZQbGFu
ZU9mZnNldFsxXSAmJiAhdGV4dHVyZS55dXZQbGFuZU9mZnNldFsyXSk7CisgICAgICAgICAgICAg
ICAgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlWVVWOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgIGlm
IChvcHRpb25zICE9IG1fc2hhZGVyT3B0aW9ucykgeworICAgICAgICBtX3NoYWRlclByb2dyYW0g
PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKG9wdGlvbnMpOworICAgICAgICBt
X3NoYWRlck9wdGlvbnMgPSBvcHRpb25zOworICAgIH0KKyAgICBpZiAoIW1fc2hhZGVyUHJvZ3Jh
bSkgeworICAgICAgICBwcmV2aW91c0NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gU2F2ZSBwcmV2aW91cyBib3VuZCBm
cmFtZWJ1ZmZlciwgdGV4dHVyZSBhbmQgdmlld3BvcnQuCiAgICAgR0xpbnQgYm91bmRGcmFtZWJ1
ZmZlciA9IDA7CiAgICAgR0xpbnQgYm91bmRUZXh0dXJlID0gMDsKQEAgLTE4MSwxOCArMjExLDQ4
IEBAIGJvb2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0CiAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1fZnJhbWVidWZmZXIpOwogICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xf
RlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBvdXRwdXRU
ZXh0dXJlLCAwKTsKIAotICAgIC8vIFNldCBwcm9wZXIgd3JhcCBwYXJhbWV0ZXIgdG8gdGhlIHNv
dXJjZSB0ZXh0dXJlLgotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgaW5wdXRUZXh0
dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJm
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLQog
ICAgIC8vIFNldCB0aGUgdmlld3BvcnQuCiAgICAgZ2xWaWV3cG9ydCgwLCAwLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpKTsKIAogICAgIC8vIFNldCBwcm9ncmFtIHBhcmFtZXRlcnMu
CiAgICAgZ2xVc2VQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwotICAgIGds
VW5pZm9ybTFpKG1fc2hhZGVyUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCksIDApOworCisgICAg
V1RGOjpzd2l0Y2hPbihpbnB1dFRleHR1cmUudGV4dHVyZVZhcmlhbnQoKSwKKyAgICAgICAgWyZd
KGNvbnN0IEJ1ZmZlcjo6UkdCVGV4dHVyZSYgdGV4dHVyZSkgeworICAgICAgICAgICAgZ2xVbmlm
b3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7CisKKyAgICAgICAg
ICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUuaWQpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAg
ICAgICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICB9
LAorICAgICAgICBbJl0oY29uc3QgQnVmZmVyOjpZVVZUZXh0dXJlJiB0ZXh0dXJlKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHRleHR1cmUubnVtYmVyT2ZQbGFuZXMpIHsKKyAgICAgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgICAgICBnbFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBs
ZXJMb2NhdGlvbigpLCB0ZXh0dXJlLnl1dlBsYW5lWzBdKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBnbFVuaWZvcm0xaShtX3No
YWRlclByb2dyYW0tPnNhbXBsZXJZTG9jYXRpb24oKSwgdGV4dHVyZS55dXZQbGFuZVswXSk7Cisg
ICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyVUxvY2F0
aW9uKCksIHRleHR1cmUueXV2UGxhbmVbMV0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fc2hhZGVyUHJv
Z3JhbS0+c2FtcGxlcllMb2NhdGlvbigpLCB0ZXh0dXJlLnl1dlBsYW5lWzBdKTsKKyAgICAgICAg
ICAgICAgICBnbFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBsZXJVTG9jYXRpb24oKSwg
dGV4dHVyZS55dXZQbGFuZVsxXSk7CisgICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFk
ZXJQcm9ncmFtLT5zYW1wbGVyVkxvY2F0aW9uKCksIHRleHR1cmUueXV2UGxhbmVbMl0pOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2xVbmlmb3Jt
TWF0cml4M2Z2KG1fc2hhZGVyUHJvZ3JhbS0+eXV2VG9SZ2JMb2NhdGlvbigpLCAxLCBHTF9GQUxT
RSwgc3RhdGljX2Nhc3Q8Y29uc3QgR0xmbG9hdCAqPigmdGV4dHVyZS55dXZUb1JnYk1hdHJpeFsw
XSkpOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gdGV4dHVyZS5udW1iZXJPZlBsYW5lcyAt
IDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RF
WFRVUkUwICsgaSk7CisgICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCB0ZXh0dXJlLnBsYW5lc1tpXSk7CisgICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAg
ICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1Ms
IEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0pOworCiAgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9z
aGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlvbigpLCBtX21vZGVsVmlld01hdHJp
eCk7CiAgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT5wcm9q
ZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgbV9wcm9qZWN0aW9uTWF0cml4KTsKICAgICBtX3NoYWRl
clByb2dyYW0tPnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPnRleHR1cmVTcGFjZU1hdHJpeExv
Y2F0aW9uKCksIG1fdGV4dHVyZVNwYWNlTWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXIuaAppbmRleCA1YzU2ZWMzNDE4ODgzMzQ1Nzg4ZmEwYjU0OWE5
ODAzMjdkM2U3YmY5Li5jNGRjNDlhYmRhY2MxOWUwOTI2ZDc3MjdlMDA1YzY0YjNhOWNjOTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCkBAIC0yNCw2
ICsyNCw3IEBACiAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdMSGVhZGVycy5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lcihDb2xvckNvbnZlcnNpb24pOwogICAgIH5WaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXIoKTsKIAotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91
dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFn
ZU9yaWVudGF0aW9uIHNvdXJjZU9yaWVudGF0aW9uKTsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciYgaW5w
dXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVu
dW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3Vy
Y2VPcmllbnRhdGlvbik7CiAgICAgdm9pZCB1cGRhdGVDb2xvckNvbnZlcnNpb25NYXRyaXgoQ29s
b3JDb252ZXJzaW9uKTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpOwogICAg
IHZvaWQgdXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKQEAgLTUyLDYgKzUzLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4g
bV9zaGFkZXJQcm9ncmFtOworICAgIHVuc2lnbmVkIG1fc2hhZGVyT3B0aW9ucyB7IDAgfTsKICAg
ICBHTHVpbnQgbV9mcmFtZWJ1ZmZlciB7IDAgfTsKICAgICBHTHVpbnQgbV92Ym8geyAwIH07CiAj
aWYgIVVTRShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlci5oCmluZGV4IGQyNmQ2YWYyYzBhODlmZDU5NmQ0ZmU1ODMzNWExMTU3MTUxNjI4
ZGYuLjNlODQxZThkMTQ2NmFmNzU4YTkzMTllNmMzYWY2ZDI5OGJkOGFjMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCkBAIC05MSw2ICs5MSw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SG9sZVB1bmNoQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxIb2xlUHVuY2hDbGllbnQ+JiYgY2xpZW50KSB7IG1faG9sZVB1bmNoQ2xpZW50ID0gV1RGTW92
ZShjbGllbnQpOyB9CiAKKyAgICBjb25zdCBUZXh0dXJlVmFyaWFudCYgdGV4dHVyZVZhcmlhbnQo
KSB7IHJldHVybiBtX3ZhcmlhbnQ7IH0KKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBtX3RleHR1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377883</attachid>
            <date>2019-09-03 03:36:01 -0700</date>
            <delta_ts>2019-09-03 05:35:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200914-20190903113559.patch</filename>
            <type>text/plain</type>
            <size>19673</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0OTU4NDU1ZDk5MTU2
NDlhYTNhOWI0M2QyYjJiMDExN2U2MWUwOC4uYjA2Y2QzNzk4YWRkYmJkZjJhMzVmMWY1OWM0NmU1
NTVjMzlhMDAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA5LTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRmb3JtIHRleHR1cmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA5MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgWVVW
IChpbmNsdWRpbmcgcGxhbmFyIGFuZCBzZW1pLXBsYW5hcikgdmlkZW8gdGV4dHVyZSB0byBwbGF0
Zm9ybQorICAgICAgICB0ZXh0dXJlIGNvcHkgaW4gVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm90IGNoYW5naW5nIGJlaGF2aW9yLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6cGxh
dGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OlZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3Ry
ZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI6OnRleHR1cmVWYXJpYW50KToKKwogMjAxOS0wOS0wMyAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RleG1hcF1bR1N0cmVhbWVyXSBBZGQg
c3VwcG9ydCB0byB1cGxvYWQgbW9yZSBjb2xvciBmb3JtYXRzIGludG8gdGhlIHRleHR1cmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApp
bmRleCBiZTQ3NjFkNzIzYjY0OTFkM2MxYjhlZGU0NDRjNWM0YmRlNzZjZGE1Li5hZTAxMzBkMzNi
N2RlNDFjZTZlOTZjNDA3OTYyMDNkNWU2ZTI5ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0yMTYsNiArMjE2LDUzIEBA
IHB1YmxpYzoKICAgICAgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3Jl
OjpJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpLCBXZWJDb3Jl
OjpJbnRQb2ludCgwLCAwKSwgc3RyaWRlKTsKICAgICB9CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IHBsYXRmb3JtTGF5ZXJCdWZmZXIoKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2hhc01hcHBlZFRleHR1cmVzKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgdXNpbmcgQnVmZmVyID0gVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI7CisKKyAgICAgICAgaWYgKChHU1RfVklERU9fSU5GT19JU19SR0IoJm1f
dmlkZW9GcmFtZS5pbmZvKSAmJiBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmbV92aWRlb0ZyYW1l
LmluZm8pID09IDEpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QnVmZmVyPihCdWZm
ZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRpY19jYXN0PEdM
dWludCo+KG1fdmlkZW9GcmFtZS5kYXRhWzBdKSB9IH0sIG1fc2l6ZSwgbV9mbGFncywgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkEpOworCisgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19JU19ZVVYo
Jm1fdmlkZW9GcmFtZS5pbmZvKSkgeworICAgICAgICAgICAgaWYgKEdTVF9WSURFT19JTkZPX05f
Q09NUE9ORU5UUygmbV92aWRlb0ZyYW1lLmluZm8pIDwgMyB8fCBHU1RfVklERU9fSU5GT19OX1BM
QU5FUygmbV92aWRlb0ZyYW1lLmluZm8pID4gMykKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQbGFuZXMgPSBHU1RfVklERU9f
SU5GT19OX1BMQU5FUygmbV92aWRlb0ZyYW1lLmluZm8pOworICAgICAgICAgICAgc3RkOjphcnJh
eTxHTHVpbnQsIDM+IHBsYW5lczsKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDM+
IHl1dlBsYW5lOworICAgICAgICAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgMz4geXV2UGxhbmVP
ZmZzZXQ7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZQbGFu
ZXM7ICsraSkKKyAgICAgICAgICAgICAgICBwbGFuZXNbaV0gPSAqc3RhdGljX2Nhc3Q8R0x1aW50
Kj4obV92aWRlb0ZyYW1lLmRhdGFbaV0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAgICAgIHl1dlBsYW5lW2ldID0gR1NUX1ZJREVP
X0lORk9fQ09NUF9QTEFORSgmbV92aWRlb0ZyYW1lLmluZm8sIGkpOworICAgICAgICAgICAgICAg
IHl1dlBsYW5lT2Zmc2V0W2ldID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QT0ZGU0VUKCZtX3ZpZGVv
RnJhbWUuaW5mbywgaSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8
R0xmbG9hdCwgOT4geXV2VG9SZ2I7CisgICAgICAgICAgICBpZiAoZ3N0X3ZpZGVvX2NvbG9yaW1l
dHJ5X21hdGNoZXMoJkdTVF9WSURFT19JTkZPX0NPTE9SSU1FVFJZKCZtX3ZpZGVvRnJhbWUuaW5m
byksIEdTVF9WSURFT19DT0xPUklNRVRSWV9CVDcwOSkpIHsKKyAgICAgICAgICAgICAgICB5dXZU
b1JnYiA9IHsKKyAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMC4wZiwgICAgMS43ODdmLAor
ICAgICAgICAgICAgICAgICAgICAxLjE2NGYsIC0wLjIxM2YsIC0wLjUzMWYsCisgICAgICAgICAg
ICAgICAgICAgIDEuMTY0ZiwgIDIuMTEyZiwgIDAuMGYKKyAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGJ0NjAxLiBU
aGlzIGlzIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBHU3RyZWFtZXIncyBnbGNvbG9yY29udmVydCBl
bGVtZW50LgorICAgICAgICAgICAgICAgIHl1dlRvUmdiID0geworICAgICAgICAgICAgICAgICAg
ICAxLjE2NGYsICAwLjBmLCAgICAxLjU5NmYsCisgICAgICAgICAgICAgICAgICAgIDEuMTY0Ziwg
LTAuMzkxZiwgLTAuODEzZiwKKyAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4wMThmLCAg
MC4wZgorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJ1ZmZlcj4oIEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgeyBCdWZmZXI6
OllVVlRleHR1cmUgeyBudW1iZXJPZlBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UGxhbmVP
ZmZzZXQsIHl1dlRvUmdiIH0gfSwgbV9zaXplLCBtX2ZsYWdzLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgR3N0QnVmZmVyKiBtX2J1ZmZlcjsKICAgICBHc3RWaWRlb0ZyYW1lIG1fdmlk
ZW9GcmFtZSB7IH07CkBAIC03MjgsNTcgKzc3NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKIAogICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVu
aXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVy
RmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOwogCi0gICAgICAgICAgICB1c2luZyBC
dWZmZXIgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKLSAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxCdWZmZXI+IGxheWVyQnVmZmVyOworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlcjsKICAg
ICAgICAgICAgIGlmIChmcmFtZUhvbGRlci0+aGFzTWFwcGVkVGV4dHVyZXMoKSkgewotICAgICAg
ICAgICAgICAgIGF1dG8mIHZpZGVvRnJhbWUgPSBmcmFtZUhvbGRlci0+dmlkZW9GcmFtZSgpOwot
ICAgICAgICAgICAgICAgIFsmXSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoR1NUX1ZJREVP
X0lORk9fSVNfUkdCKCZ2aWRlb0ZyYW1lLmluZm8pICYmIEdTVF9WSURFT19JTkZPX05fUExBTkVT
KCZ2aWRlb0ZyYW1lLmluZm8pID09IDEpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXll
ckJ1ZmZlciA9IG1ha2VVbmlxdWU8QnVmZmVyPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRpY19j
YXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVswXSkgfSB9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVP
X0lORk9fSVNfWVVWKCZ2aWRlb0ZyYW1lLmluZm8pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoR1NUX1ZJREVPX0lORk9fTl9DT01QT05FTlRTKCZ2aWRlb0ZyYW1lLmluZm8pIDwgMyB8
fCBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9GcmFtZS5pbmZvKSA+IDMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZlBsYW5lcyA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0Zy
YW1lLmluZm8pOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+
IHBsYW5lczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDM+
IHl1dlBsYW5lOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwg
Mz4geXV2UGxhbmVPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
ID0gMDsgaSA8IG51bWJlck9mUGxhbmVzOyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGxhbmVzW2ldID0gKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVtpXSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkID0gMDsgaSA8IDM7ICsraSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlBsYW5lW2ldID0gR1NUX1ZJREVPX0lO
Rk9fQ09NUF9QTEFORSgmdmlkZW9GcmFtZS5pbmZvLCBpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB5dXZQbGFuZU9mZnNldFtpXSA9IEdTVF9WSURFT19JTkZPX0NPTVBfUE9GRlNFVCgm
dmlkZW9GcmFtZS5pbmZvLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxHTGZsb2F0LCA5PiB5dXZUb1JnYjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChnc3RfdmlkZW9fY29sb3JpbWV0cnlfbWF0Y2hlcygmR1NU
X1ZJREVPX0lORk9fQ09MT1JJTUVUUlkoJnZpZGVvRnJhbWUuaW5mbyksIEdTVF9WSURFT19DT0xP
UklNRVRSWV9CVDcwOSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5dXZUb1JnYiA9
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMC4wZiwgICAgMS43
ODdmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYsIC0wLjIxM2YsIC0w
LjUzMWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDIuMTEyZiwg
IDAuMGYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHRv
IGJ0NjAxLiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBHU3RyZWFtZXIncyBnbGNvbG9y
Y29udmVydCBlbGVtZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlRvUmdiID0g
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYsICAwLjBmLCAgICAxLjU5
NmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgLTAuMzkxZiwgLTAu
ODEzZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4wMThmLCAg
MC4wZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1
ZTxCdWZmZXI+KEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgeyBCdWZmZXI6OllVVlRleHR1cmUgeyBu
dW1iZXJPZlBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UGxhbmVPZmZzZXQsIHl1dlRvUmdi
IH0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZUhvbGRlci0+c2l6ZSgpLCBm
cmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSgpOwotCisgICAgICAgICAgICAgICAgbGF5
ZXJCdWZmZXIgPSBmcmFtZUhvbGRlci0+cGxhdGZvcm1MYXllckJ1ZmZlcigpOwogICAgICAgICAg
ICAgICAgIGlmICghbGF5ZXJCdWZmZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQog
ICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVy
KFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRBdmFpbGFibGVCdWZmZXIoZnJhbWVIb2xkZXIt
PnNpemUoKSwgR0xfRE9OVF9DQVJFKTsKQEAgLTk3Nyw4ICs5NzgsOCBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljcwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZy
YW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQo
KSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0dXJlSUQgPSBm
cmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7Ci0gICAgaWYgKCF0ZXh0dXJlSUQpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9
IGZyYW1lSG9sZGVyLT5wbGF0Zm9ybUxheWVyQnVmZmVyKCk7CisgICAgaWYgKCFsYXllckJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBzaXplID0gZnJhbWVIb2xkZXIt
PnNpemUoKTsKQEAgLTk4OCw3ICs5ODksOSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljcwogICAg
IGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCiAgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVy
ID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVS
X0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKLSAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXIt
PmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIG91dHB1
dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5
cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOworICAgIGZyYW1lSG9sZGVyLT53
YWl0Rm9yQ1BVU3luYygpOworCisgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCBv
dXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0
LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0KIAogTmF0aXZlSW1h
Z2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpCkBAIC0xMDA0LDggKzEwMDcsOCBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VV
bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBl
ckZsYWdzLCB0cnVlKTsKIAotICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1
cmVJRCgpOwotICAgIGlmICghdGV4dHVyZUlEKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBmcmFtZUhvbGRlci0+cGxh
dGZvcm1MYXllckJ1ZmZlcigpOworICAgIGlmICghbGF5ZXJCdWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgYXV0byBzaXplID0gZnJhbWVIb2xkZXItPnNpemUoKTsKQEAgLTEw
MTgsNyArMTAyMSw5IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGlmICghbV92aWRlb1RleHR1
cmVDb3BpZXIpCiAgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxB
Ryk7CiAKLSAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBzaXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3Vy
Y2VPcmllbnRhdGlvbikpCisgICAgZnJhbWVIb2xkZXItPndhaXRGb3JDUFVTeW5jKCk7CisKKyAg
ICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoKmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3Vy
Y2VPcmllbnRhdGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGFk
b3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGNvbnRleHQtPmNhaXJv
RGV2aWNlKCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fdmlkZW9UZXh0dXJlQ29waWVy
LT5yZXN1bHRUZXh0dXJlKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAppbmRleCA1MmUxN2Vh
YzU2ZTdhZTY4YzgzOTk0YzcwOGUzOWY4NzA1ODY5MGI3Li42N2ZiNmY4OWFmMTMwOGYzNGY1YmJm
OWViZTA4MjRkYmE3Y2MwYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyLmNwcApAQCAtMzUsOCArMzUsNiBAQCBWaWRlb1RleHR1cmVDb3BpZXJHU3Ry
ZWFtZXI6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcihDb2xvckNvbnZlcnNpb24gY29sb3JD
bwogICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQpOwogICAgIFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpLT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKIAotICAgIG1fc2hhZGVyUHJvZ3JhbSA9IFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpjcmVhdGUoVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IpOwot
CiAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZnJhbWVidWZmZXIpOwogICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1fcmVzdWx0VGV4dHVyZSk7CiAKQEAgLTEzNyw5ICsxMzUsOSBAQCB2b2lkIFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6dXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgoKQog
ICAgICAgICAtMSwgMSwgLShmYXJWYWx1ZSArIG5lYXJWYWx1ZSkgLyAoZmFyVmFsdWUgLSBuZWFy
VmFsdWUpLCAxKTsKIH0KIAotYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJbnRTaXpl
JiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3VyY2VPcmllbnRhdGlvbikKK2Jv
b2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXImIGlucHV0VGV4dHVyZSwg
SW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91dHB1dFRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291cmNlT3JpZW50YXRp
b24pCiB7Ci0gICAgaWYgKCFtX3NoYWRlclByb2dyYW0gfHwgIW1fZnJhbWVidWZmZXIgfHwgIW1f
dmJvIHx8IGZyYW1lU2l6ZS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX2ZyYW1lYnVmZmVyIHx8ICFt
X3ZibyB8fCBmcmFtZVNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAobV9zaXplICE9IGZyYW1lU2l6ZSkgewpAQCAtMTU4LDYgKzE1NiwzOCBAQCBib29sIFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdMdWludCBpbnB1dAogICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQpOwogICAgIFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4
dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAorICAgIC8vIERldGVybWluZSB3aGF0IHNoYWRl
ciBwcm9ncmFtIHRvIHVzZSBhbmQgY3JlYXRlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICB1c2luZyBC
dWZmZXIgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKKyAgICBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zOworICAgIFdURjo6c3dpdGNoT24oaW5w
dXRUZXh0dXJlLnRleHR1cmVWYXJpYW50KCksCisgICAgICAgIFsmXShjb25zdCBCdWZmZXI6OlJH
QlRleHR1cmUmKSB7IG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVy
ZVJHQjsgfSwKKyAgICAgICAgWyZdKGNvbnN0IEJ1ZmZlcjo6WVVWVGV4dHVyZSYgdGV4dHVyZSkg
eworICAgICAgICAgICAgc3dpdGNoICh0ZXh0dXJlLm51bWJlck9mUGxhbmVzKSB7CisgICAgICAg
ICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUueXV2UGxhbmVbMF0g
PT0gdGV4dHVyZS55dXZQbGFuZVsxXSAmJiB0ZXh0dXJlLnl1dlBsYW5lWzFdID09IHRleHR1cmUu
eXV2UGxhbmVbMl0pOworICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLnl1dlBsYW5lT2Zm
c2V0WzBdID09IDIgJiYgdGV4dHVyZS55dXZQbGFuZU9mZnNldFsxXSA9PSAxICYmICF0ZXh0dXJl
Lnl1dlBsYW5lT2Zmc2V0WzJdKTsKKyAgICAgICAgICAgICAgICBvcHRpb25zID0gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OlRleHR1cmVQYWNrZWRZVVY7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgQVNTRVJUKCF0ZXh0dXJl
Lnl1dlBsYW5lT2Zmc2V0WzBdKTsKKyAgICAgICAgICAgICAgICBvcHRpb25zID0gdGV4dHVyZS55
dXZQbGFuZU9mZnNldFsxXSA/IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlTlYy
MSA6IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlTlYxMjsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBBU1NFUlQo
IXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMF0gJiYgIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMV0g
JiYgIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMl0pOworICAgICAgICAgICAgICAgIG9wdGlvbnMg
PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVlVVjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICBpZiAob3B0aW9ucyAh
PSBtX3NoYWRlck9wdGlvbnMpIHsKKyAgICAgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShvcHRpb25zKTsKKyAgICAgICAgbV9zaGFkZXJPcHRp
b25zID0gb3B0aW9uczsKKyAgICB9CisgICAgaWYgKCFtX3NoYWRlclByb2dyYW0pIHsKKyAgICAg
ICAgcHJldmlvdXNDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKwogICAgIC8vIFNhdmUgcHJldmlvdXMgYm91bmQgZnJhbWVidWZmZXIs
IHRleHR1cmUgYW5kIHZpZXdwb3J0LgogICAgIEdMaW50IGJvdW5kRnJhbWVidWZmZXIgPSAwOwog
ICAgIEdMaW50IGJvdW5kVGV4dHVyZSA9IDA7CkBAIC0xODEsMTggKzIxMSw0OCBAQCBib29sIFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdMdWludCBpbnB1dAogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
X2ZyYW1lYnVmZmVyKTsKICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVyZSwgMCk7
CiAKLSAgICAvLyBTZXQgcHJvcGVyIHdyYXAgcGFyYW1ldGVyIHRvIHRoZSBzb3VyY2UgdGV4dHVy
ZS4KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGlucHV0VGV4dHVyZSk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0KICAgICAvLyBTZXQg
dGhlIHZpZXdwb3J0LgogICAgIGdsVmlld3BvcnQoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6
ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBTZXQgcHJvZ3JhbSBwYXJhbWV0ZXJzLgogICAgIGdsVXNl
UHJvZ3JhbShtX3NoYWRlclByb2dyYW0tPnByb2dyYW1JRCgpKTsKLSAgICBnbFVuaWZvcm0xaSht
X3NoYWRlclByb2dyYW0tPnNhbXBsZXJMb2NhdGlvbigpLCAwKTsKKworICAgIFdURjo6c3dpdGNo
T24oaW5wdXRUZXh0dXJlLnRleHR1cmVWYXJpYW50KCksCisgICAgICAgIFsmXShjb25zdCBCdWZm
ZXI6OlJHQlRleHR1cmUmIHRleHR1cmUpIHsKKyAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fc2hh
ZGVyUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCksIDApOworCisgICAgICAgICAgICBnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXh0dXJlLmlkKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgICAgICBn
bFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1Q
X1RPX0VER0UpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgfSwKKyAgICAgICAg
WyZdKGNvbnN0IEJ1ZmZlcjo6WVVWVGV4dHVyZSYgdGV4dHVyZSkgeworICAgICAgICAgICAgc3dp
dGNoICh0ZXh0dXJlLm51bWJlck9mUGxhbmVzKSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24o
KSwgdGV4dHVyZS55dXZQbGFuZVswXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFkZXJQcm9ncmFt
LT5zYW1wbGVyWUxvY2F0aW9uKCksIHRleHR1cmUueXV2UGxhbmVbMF0pOworICAgICAgICAgICAg
ICAgIGdsVW5pZm9ybTFpKG1fc2hhZGVyUHJvZ3JhbS0+c2FtcGxlclVMb2NhdGlvbigpLCB0ZXh0
dXJlLnl1dlBsYW5lWzFdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMzoKKyAgICAgICAgICAgICAgICBnbFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBs
ZXJZTG9jYXRpb24oKSwgdGV4dHVyZS55dXZQbGFuZVswXSk7CisgICAgICAgICAgICAgICAgZ2xV
bmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyVUxvY2F0aW9uKCksIHRleHR1cmUueXV2
UGxhbmVbMV0pOworICAgICAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fc2hhZGVyUHJvZ3JhbS0+
c2FtcGxlclZMb2NhdGlvbigpLCB0ZXh0dXJlLnl1dlBsYW5lWzJdKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdsVW5pZm9ybU1hdHJpeDNmdiht
X3NoYWRlclByb2dyYW0tPnl1dlRvUmdiTG9jYXRpb24oKSwgMSwgR0xfRkFMU0UsIHN0YXRpY19j
YXN0PGNvbnN0IEdMZmxvYXQgKj4oJnRleHR1cmUueXV2VG9SZ2JNYXRyaXhbMF0pKTsKKworICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IHRleHR1cmUubnVtYmVyT2ZQbGFuZXMgLSAxOyBpID49IDA7
IC0taSkgeworICAgICAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCArIGkp
OworICAgICAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS5w
bGFuZXNbaV0pOworICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgICAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKwogICAgIG1fc2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4KG1fc2hhZGVyUHJvZ3Jh
bS0+bW9kZWxWaWV3TWF0cml4TG9jYXRpb24oKSwgbV9tb2RlbFZpZXdNYXRyaXgpOwogICAgIG1f
c2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4KG1fc2hhZGVyUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJp
eExvY2F0aW9uKCksIG1fcHJvamVjdGlvbk1hdHJpeCk7CiAgICAgbV9zaGFkZXJQcm9ncmFtLT5z
ZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT50ZXh0dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBt
X3RleHR1cmVTcGFjZU1hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmgKaW5kZXggNWM1NmVjMzQxODg4MzM0NTc4OGZhMGI1NDlhOTgwMzI3ZDNlN2Jm
OS4uYzRkYzQ5YWJkYWNjMTllMDkyNmQ3NzI3ZTAwNWM2NGIzYTljYzkwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApAQCAtMjQsNiArMjQsNyBAQAog
CiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJH
TEhlYWRlcnMuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5o
IgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIoQ29sb3JDb252ZXJzaW9uKTsKICAgICB+VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyKCk7CiAKLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVp
bnQgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJl
LCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlv
biBzb3VyY2VPcmllbnRhdGlvbik7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXImIGlucHV0VGV4dHVyZSwg
SW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91dHB1dFRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291cmNlT3JpZW50YXRp
b24pOwogICAgIHZvaWQgdXBkYXRlQ29sb3JDb252ZXJzaW9uTWF0cml4KENvbG9yQ29udmVyc2lv
bik7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlU3BhY2VNYXRyaXgoKTsKICAgICB2b2lkIHVwZGF0
ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CkBAIC01Miw2ICs1Myw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IG1fc2hhZGVyUHJv
Z3JhbTsKKyAgICB1bnNpZ25lZCBtX3NoYWRlck9wdGlvbnMgeyAwIH07CiAgICAgR0x1aW50IG1f
ZnJhbWVidWZmZXIgeyAwIH07CiAgICAgR0x1aW50IG1fdmJvIHsgMCB9OwogI2lmICFVU0UoT1BF
TkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
aAppbmRleCA3ZmY1NDcxOWZmZmNiOTc3NzUzY2NiZjg1YWQxM2I2NWEyMmRjYWI0Li41YjU5M2I0
ZTIxMWE5NDZlYmYyYmEyNWM0ODM4ZThkNDk0MTNiOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApAQCAtOTEsNiArOTEsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldEhvbGVQdW5jaENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SG9sZVB1bmNo
Q2xpZW50PiYmIGNsaWVudCkgeyBtX2hvbGVQdW5jaENsaWVudCA9IFdURk1vdmUoY2xpZW50KTsg
fQogCisgICAgY29uc3QgVGV4dHVyZVZhcmlhbnQmIHRleHR1cmVWYXJpYW50KCkgeyByZXR1cm4g
bV92YXJpYW50OyB9CisKIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbV90
ZXh0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377891</attachid>
            <date>2019-09-03 05:35:41 -0700</date>
            <delta_ts>2019-09-03 07:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200914-20190903133540.patch</filename>
            <type>text/plain</type>
            <size>19742</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJlODc4MzY5MzQwMTdh
YjA5MTk0NjYwMTc1MmQxMjVmOGUwOThiYi4uNDc4M2FjZTA0Yjg5YjRkNTZlYWFhNGM3ZGQ4ZmEy
ZjBlZDA3ZTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA5LTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRmb3JtIHRleHR1cmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA5MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmlndWV6LUNhbHZhciBhbmQgTWlndWVsIEdv
bWV6LgorCisgICAgICAgIEVuYWJsZSBZVVYgKGluY2x1ZGluZyBwbGFuYXIgYW5kIHNlbWktcGxh
bmFyKSB2aWRlbyB0ZXh0dXJlIHRvIHBsYXRmb3JtCisgICAgICAgIHRleHR1cmUgY29weSBpbiBW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3Qg
Y2hhbmdpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpwbGF0Zm9ybUxheWVyQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21w
b3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGll
ckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6dGV4dHVyZVZhcmlhbnQpOgorCiAy
MDE5LTA5LTAzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4gIGFuZCAgQ2hy
aXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RleG1hcF1bR1N0cmVhbWVy
XSBBZGQgc3VwcG9ydCB0byB1cGxvYWQgbW9yZSBjb2xvciBmb3JtYXRzIGludG8gdGhlIHRleHR1
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcAppbmRleCBkZWQ4NTdhYzE5MzdjY2JhMTZmYmRmZDhkOGM4NjgzOTdmZjU0ZWU1Li43OTA1
MmExMThjMjYwOGM4YjQ2MjllZTE0YjY2ZTdhODU3ZGY3NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0yMTYsNiArMjE2
LDUzIEBAIHB1YmxpYzoKICAgICAgICAgdGV4dHVyZS51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBX
ZWJDb3JlOjpJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpLCBX
ZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc3RyaWRlKTsKICAgICB9CiAKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IHBsYXRmb3JtTGF5ZXJCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2hhc01hcHBlZFRleHR1cmVzKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgdXNpbmcgQnVmZmVyID0gVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI7CisKKyAgICAgICAgaWYgKChHU1RfVklERU9fSU5GT19JU19S
R0IoJm1fdmlkZW9GcmFtZS5pbmZvKSAmJiBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmbV92aWRl
b0ZyYW1lLmluZm8pID09IDEpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QnVmZmVy
PihCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRpY19j
YXN0PEdMdWludCo+KG1fdmlkZW9GcmFtZS5kYXRhWzBdKSB9IH0sIG1fc2l6ZSwgbV9mbGFncywg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworCisgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19J
U19ZVVYoJm1fdmlkZW9GcmFtZS5pbmZvKSkgeworICAgICAgICAgICAgaWYgKEdTVF9WSURFT19J
TkZPX05fQ09NUE9ORU5UUygmbV92aWRlb0ZyYW1lLmluZm8pIDwgMyB8fCBHU1RfVklERU9fSU5G
T19OX1BMQU5FUygmbV92aWRlb0ZyYW1lLmluZm8pID4gMykKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQbGFuZXMgPSBHU1Rf
VklERU9fSU5GT19OX1BMQU5FUygmbV92aWRlb0ZyYW1lLmluZm8pOworICAgICAgICAgICAgc3Rk
OjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8dW5zaWdu
ZWQsIDM+IHl1dlBsYW5lOworICAgICAgICAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgMz4geXV2
UGxhbmVPZmZzZXQ7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZQbGFuZXM7ICsraSkKKyAgICAgICAgICAgICAgICBwbGFuZXNbaV0gPSAqc3RhdGljX2Nhc3Q8
R0x1aW50Kj4obV92aWRlb0ZyYW1lLmRhdGFbaV0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAgICAgIHl1dlBsYW5lW2ldID0gR1NU
X1ZJREVPX0lORk9fQ09NUF9QTEFORSgmbV92aWRlb0ZyYW1lLmluZm8sIGkpOworICAgICAgICAg
ICAgICAgIHl1dlBsYW5lT2Zmc2V0W2ldID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QT0ZGU0VUKCZt
X3ZpZGVvRnJhbWUuaW5mbywgaSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0ZDo6
YXJyYXk8R0xmbG9hdCwgOT4geXV2VG9SZ2I7CisgICAgICAgICAgICBpZiAoZ3N0X3ZpZGVvX2Nv
bG9yaW1ldHJ5X21hdGNoZXMoJkdTVF9WSURFT19JTkZPX0NPTE9SSU1FVFJZKCZtX3ZpZGVvRnJh
bWUuaW5mbyksIEdTVF9WSURFT19DT0xPUklNRVRSWV9CVDcwOSkpIHsKKyAgICAgICAgICAgICAg
ICB5dXZUb1JnYiA9IHsKKyAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMC4wZiwgICAgMS43
ODdmLAorICAgICAgICAgICAgICAgICAgICAxLjE2NGYsIC0wLjIxM2YsIC0wLjUzMWYsCisgICAg
ICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDIuMTEyZiwgIDAuMGYKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGJ0
NjAxLiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBHU3RyZWFtZXIncyBnbGNvbG9yY29u
dmVydCBlbGVtZW50LgorICAgICAgICAgICAgICAgIHl1dlRvUmdiID0geworICAgICAgICAgICAg
ICAgICAgICAxLjE2NGYsICAwLjBmLCAgICAxLjU5NmYsCisgICAgICAgICAgICAgICAgICAgIDEu
MTY0ZiwgLTAuMzkxZiwgLTAuODEzZiwKKyAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4w
MThmLCAgMC4wZgorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEJ1ZmZlcj4oIEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgeyBC
dWZmZXI6OllVVlRleHR1cmUgeyBudW1iZXJPZlBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2
UGxhbmVPZmZzZXQsIHl1dlRvUmdiIH0gfSwgbV9zaXplLCBtX2ZsYWdzLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgR3N0QnVmZmVyKiBtX2J1ZmZlcjsKICAgICBHc3RWaWRlb0ZyYW1l
IG1fdmlkZW9GcmFtZSB7IH07CkBAIC03MzIsNTcgKzc3OSwxMSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKIAogICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0g
bWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJl
TWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOwogCi0gICAgICAgICAgICB1
c2luZyBCdWZmZXIgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCdWZmZXI+IGxheWVyQnVmZmVyOworICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZl
cjsKICAgICAgICAgICAgIGlmIChmcmFtZUhvbGRlci0+aGFzTWFwcGVkVGV4dHVyZXMoKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8mIHZpZGVvRnJhbWUgPSBmcmFtZUhvbGRlci0+dmlkZW9GcmFt
ZSgpOwotICAgICAgICAgICAgICAgIFsmXSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoR1NU
X1ZJREVPX0lORk9fSVNfUkdCKCZ2aWRlb0ZyYW1lLmluZm8pICYmIEdTVF9WSURFT19JTkZPX05f
UExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pID09IDEpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8QnVmZmVyPigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0
YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVswXSkgfSB9LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygp
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoR1NU
X1ZJREVPX0lORk9fSVNfWVVWKCZ2aWRlb0ZyYW1lLmluZm8pKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fTl9DT01QT05FTlRTKCZ2aWRlb0ZyYW1lLmluZm8p
IDwgMyB8fCBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9GcmFtZS5pbmZvKSA+IDMpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZlBsYW5lcyA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2
aWRlb0ZyYW1lLmluZm8pOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxHTHVp
bnQsIDM+IHBsYW5lczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dW5zaWdu
ZWQsIDM+IHl1dlBsYW5lOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTx1bnNp
Z25lZCwgMz4geXV2UGxhbmVPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZQbGFuZXM7ICsraSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwbGFuZXNbaV0gPSAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5k
YXRhW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCAzOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5dXZQbGFuZVtpXSA9IEdT
VF9WSURFT19JTkZPX0NPTVBfUExBTkUoJnZpZGVvRnJhbWUuaW5mbywgaSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeXV2UGxhbmVPZmZzZXRbaV0gPSBHU1RfVklERU9fSU5GT19DT01Q
X1BPRkZTRVQoJnZpZGVvRnJhbWUuaW5mbywgaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4geXV2VG9S
Z2I7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3N0X3ZpZGVvX2NvbG9yaW1ldHJ5X21h
dGNoZXMoJkdTVF9WSURFT19JTkZPX0NPTE9SSU1FVFJZKCZ2aWRlb0ZyYW1lLmluZm8pLCBHU1Rf
VklERU9fQ09MT1JJTUVUUllfQlQ3MDkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
eXV2VG9SZ2IgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDAu
MGYsICAgIDEuNzg3ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAt
MC4yMTNmLCAtMC41MzFmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYs
ICAyLjExMmYsICAwLjBmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RGVmYXVsdCB0byBidDYwMS4gVGhpcyBpcyB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgR1N0cmVhbWVy
J3MgZ2xjb2xvcmNvbnZlcnQgZWxlbWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5
dXZUb1JnYiA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMC4w
ZiwgICAgMS41OTZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYsIC0w
LjM5MWYsIC0wLjgxM2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0Ziwg
IDIuMDE4ZiwgIDAuMGYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9
IG1ha2VVbmlxdWU8QnVmZmVyPihCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpZVVZU
ZXh0dXJlIHsgbnVtYmVyT2ZQbGFuZXMsIHBsYW5lcywgeXV2UGxhbmUsIHl1dlBsYW5lT2Zmc2V0
LCB5dXZUb1JnYiB9IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXIt
PnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0oKTsKLQorICAgICAgICAg
ICAgICAgIGxheWVyQnVmZmVyID0gZnJhbWVIb2xkZXItPnBsYXRmb3JtTGF5ZXJCdWZmZXIoKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWxheWVyQnVmZmVyKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVy
RGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVyKGZy
YW1lSG9sZGVyLT5zaXplKCksIEdMX0RPTlRfQ0FSRSk7CkBAIC05OTMsOCArOTk0LDggQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3MKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1l
SG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9z
YW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAotICAgIGF1dG8gdGV4
dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwotICAgIGlmICghdGV4dHVyZUlEKQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5
ZXJCdWZmZXIgPSBmcmFtZUhvbGRlci0+cGxhdGZvcm1MYXllckJ1ZmZlcigpOworICAgIGlmICgh
bGF5ZXJCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gc2l6ZSA9IGZy
YW1lSG9sZGVyLT5zaXplKCk7CkBAIC0xMDA0LDcgKzEwMDUsOSBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljcwogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCiAgICAgICAgIG1fdmlkZW9U
ZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRF
WFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKLSAgICByZXR1cm4gbV92aWRlb1Rl
eHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQs
IHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOworICAgIGZy
YW1lSG9sZGVyLT53YWl0Rm9yQ1BVU3luYygpOworCisgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJl
Q29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdl
dCgpLCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZv
cm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0K
IAogTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpCkBAIC0xMDIwLDggKzEwMjMsOCBAQCBOYXRpdmVJbWFnZVB0
ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhv
bGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1f
dGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAotICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVI
b2xkZXItPnRleHR1cmVJRCgpOwotICAgIGlmICghdGV4dHVyZUlEKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBmcmFt
ZUhvbGRlci0+cGxhdGZvcm1MYXllckJ1ZmZlcigpOworICAgIGlmICghbGF5ZXJCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBzaXplID0gZnJhbWVIb2xkZXItPnNp
emUoKTsKQEAgLTEwMzQsNyArMTAzNyw5IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGlmICgh
bV92aWRlb1RleHR1cmVDb3BpZXIpCiAgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFr
ZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9S
X0NPTlZFUlRfRkxBRyk7CiAKLSAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBzaXplLCAwLCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2Us
IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikpCisgICAgZnJhbWVIb2xkZXItPndhaXRGb3JDUFVT
eW5jKCk7CisKKyAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCAwLCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2Us
IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGNv
bnRleHQtPmNhaXJvRGV2aWNlKCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fdmlkZW9U
ZXh0dXJlQ29waWVyLT5yZXN1bHRUZXh0dXJlKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcApp
bmRleCA1MmUxN2VhYzU2ZTdhZTY4YzgzOTk0YzcwOGUzOWY4NzA1ODY5MGI3Li42N2ZiNmY4OWFm
MTMwOGYzNGY1YmJmOWViZTA4MjRkYmE3Y2MwYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcApAQCAtMzUsOCArMzUsNiBAQCBWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcihDb2xvckNvbnZl
cnNpb24gY29sb3JDbwogICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQpOwogICAgIFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgp
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIG1fc2hhZGVyUHJvZ3JhbSA9IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUoVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRl
eHR1cmVSR0IpOwotCiAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZnJhbWVidWZmZXIpOwog
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fcmVzdWx0VGV4dHVyZSk7CiAKQEAgLTEzNyw5ICsxMzUs
OSBAQCB2b2lkIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6dXBkYXRlVHJhbnNmb3JtYXRp
b25NYXRyaXgoKQogICAgICAgICAtMSwgMSwgLShmYXJWYWx1ZSArIG5lYXJWYWx1ZSkgLyAoZmFy
VmFsdWUgLSBuZWFyVmFsdWUpLCAxKTsKIH0KIAotYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3Ry
ZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0
dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0
cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3VyY2VPcmll
bnRhdGlvbikKK2Jvb2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXImIGlu
cHV0VGV4dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xl
bnVtIG91dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291
cmNlT3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKCFtX3NoYWRlclByb2dyYW0gfHwgIW1fZnJhbWVi
dWZmZXIgfHwgIW1fdmJvIHx8IGZyYW1lU2l6ZS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX2ZyYW1l
YnVmZmVyIHx8ICFtX3ZibyB8fCBmcmFtZVNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAobV9zaXplICE9IGZyYW1lU2l6ZSkgewpAQCAtMTU4LDYgKzE1Niwz
OCBAQCBib29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dAogICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQp
OwogICAgIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hh
cmluZ0dMQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAorICAgIC8vIERldGVybWlu
ZSB3aGF0IHNoYWRlciBwcm9ncmFtIHRvIHVzZSBhbmQgY3JlYXRlIGl0IGlmIG5lY2Vzc2FyeS4K
KyAgICB1c2luZyBCdWZmZXIgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKKyAg
ICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zOworICAgIFdURjo6
c3dpdGNoT24oaW5wdXRUZXh0dXJlLnRleHR1cmVWYXJpYW50KCksCisgICAgICAgIFsmXShjb25z
dCBCdWZmZXI6OlJHQlRleHR1cmUmKSB7IG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6VGV4dHVyZVJHQjsgfSwKKyAgICAgICAgWyZdKGNvbnN0IEJ1ZmZlcjo6WVVWVGV4dHVy
ZSYgdGV4dHVyZSkgeworICAgICAgICAgICAgc3dpdGNoICh0ZXh0dXJlLm51bWJlck9mUGxhbmVz
KSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUu
eXV2UGxhbmVbMF0gPT0gdGV4dHVyZS55dXZQbGFuZVsxXSAmJiB0ZXh0dXJlLnl1dlBsYW5lWzFd
ID09IHRleHR1cmUueXV2UGxhbmVbMl0pOworICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJl
Lnl1dlBsYW5lT2Zmc2V0WzBdID09IDIgJiYgdGV4dHVyZS55dXZQbGFuZU9mZnNldFsxXSA9PSAx
ICYmICF0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzJdKTsKKyAgICAgICAgICAgICAgICBvcHRpb25z
ID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVQYWNrZWRZVVY7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgQVNT
RVJUKCF0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzBdKTsKKyAgICAgICAgICAgICAgICBvcHRpb25z
ID0gdGV4dHVyZS55dXZQbGFuZU9mZnNldFsxXSA/IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpUZXh0dXJlTlYyMSA6IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlTlYxMjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMF0gJiYgIXRleHR1cmUueXV2UGxh
bmVPZmZzZXRbMV0gJiYgIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMl0pOworICAgICAgICAgICAg
ICAgIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVlVVjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICBp
ZiAob3B0aW9ucyAhPSBtX3NoYWRlck9wdGlvbnMpIHsKKyAgICAgICAgbV9zaGFkZXJQcm9ncmFt
ID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShvcHRpb25zKTsKKyAgICAgICAg
bV9zaGFkZXJPcHRpb25zID0gb3B0aW9uczsKKyAgICB9CisgICAgaWYgKCFtX3NoYWRlclByb2dy
YW0pIHsKKyAgICAgICAgcHJldmlvdXNDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIFNhdmUgcHJldmlvdXMgYm91bmQg
ZnJhbWVidWZmZXIsIHRleHR1cmUgYW5kIHZpZXdwb3J0LgogICAgIEdMaW50IGJvdW5kRnJhbWVi
dWZmZXIgPSAwOwogICAgIEdMaW50IGJvdW5kVGV4dHVyZSA9IDA7CkBAIC0xODEsMTggKzIxMSw0
OCBAQCBib29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dAogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBtX2ZyYW1lYnVmZmVyKTsKICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdM
X0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgb3V0cHV0
VGV4dHVyZSwgMCk7CiAKLSAgICAvLyBTZXQgcHJvcGVyIHdyYXAgcGFyYW1ldGVyIHRvIHRoZSBz
b3VyY2UgdGV4dHVyZS4KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGlucHV0VGV4
dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVy
ZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0K
ICAgICAvLyBTZXQgdGhlIHZpZXdwb3J0LgogICAgIGdsVmlld3BvcnQoMCwgMCwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBTZXQgcHJvZ3JhbSBwYXJhbWV0ZXJz
LgogICAgIGdsVXNlUHJvZ3JhbShtX3NoYWRlclByb2dyYW0tPnByb2dyYW1JRCgpKTsKLSAgICBn
bFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBsZXJMb2NhdGlvbigpLCAwKTsKKworICAg
IFdURjo6c3dpdGNoT24oaW5wdXRUZXh0dXJlLnRleHR1cmVWYXJpYW50KCksCisgICAgICAgIFsm
XShjb25zdCBCdWZmZXI6OlJHQlRleHR1cmUmIHRleHR1cmUpIHsKKyAgICAgICAgICAgIGdsVW5p
Zm9ybTFpKG1fc2hhZGVyUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCksIDApOworCisgICAgICAg
ICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgICAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlLmlkKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Cisg
ICAgICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQ
X1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAg
fSwKKyAgICAgICAgWyZdKGNvbnN0IEJ1ZmZlcjo6WVVWVGV4dHVyZSYgdGV4dHVyZSkgeworICAg
ICAgICAgICAgc3dpdGNoICh0ZXh0dXJlLm51bWJlck9mUGxhbmVzKSB7CisgICAgICAgICAgICBj
YXNlIDE6CisgICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1w
bGVyTG9jYXRpb24oKSwgdGV4dHVyZS55dXZQbGFuZVswXSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkobV9z
aGFkZXJQcm9ncmFtLT5zYW1wbGVyWUxvY2F0aW9uKCksIHRleHR1cmUueXV2UGxhbmVbMF0pOwor
ICAgICAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fc2hhZGVyUHJvZ3JhbS0+c2FtcGxlclVMb2Nh
dGlvbigpLCB0ZXh0dXJlLnl1dlBsYW5lWzFdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBnbFVuaWZvcm0xaShtX3NoYWRlclBy
b2dyYW0tPnNhbXBsZXJZTG9jYXRpb24oKSwgdGV4dHVyZS55dXZQbGFuZVswXSk7CisgICAgICAg
ICAgICAgICAgZ2xVbmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyVUxvY2F0aW9uKCks
IHRleHR1cmUueXV2UGxhbmVbMV0pOworICAgICAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fc2hh
ZGVyUHJvZ3JhbS0+c2FtcGxlclZMb2NhdGlvbigpLCB0ZXh0dXJlLnl1dlBsYW5lWzJdKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdsVW5pZm9y
bU1hdHJpeDNmdihtX3NoYWRlclByb2dyYW0tPnl1dlRvUmdiTG9jYXRpb24oKSwgMSwgR0xfRkFM
U0UsIHN0YXRpY19jYXN0PGNvbnN0IEdMZmxvYXQgKj4oJnRleHR1cmUueXV2VG9SZ2JNYXRyaXhb
MF0pKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IHRleHR1cmUubnVtYmVyT2ZQbGFuZXMg
LSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMCArIGkpOworICAgICAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgdGV4dHVyZS5wbGFuZXNbaV0pOworICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAg
ICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKwogICAgIG1fc2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4KG1f
c2hhZGVyUHJvZ3JhbS0+bW9kZWxWaWV3TWF0cml4TG9jYXRpb24oKSwgbV9tb2RlbFZpZXdNYXRy
aXgpOwogICAgIG1fc2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4KG1fc2hhZGVyUHJvZ3JhbS0+cHJv
amVjdGlvbk1hdHJpeExvY2F0aW9uKCksIG1fcHJvamVjdGlvbk1hdHJpeCk7CiAgICAgbV9zaGFk
ZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT50ZXh0dXJlU3BhY2VNYXRyaXhM
b2NhdGlvbigpLCBtX3RleHR1cmVTcGFjZU1hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKaW5kZXggZDNkMmQ0ZjFjOGU5ZTRlZTA3Y2MxOTYxNzc3
MjM3M2M2ZWNiOTMwNS4uNTc5Yjg3ZTMzYjYwNGM5NjViN2U2NTJjOTk3MWI2NDAwZjFmYjBkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApAQCAtMjQs
NiArMjQsNyBAQAogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJHTEhlYWRlcnMuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBWaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXIoQ29sb3JDb252ZXJzaW9uKTsKICAgICB+VmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyKCk7CiAKLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBv
dXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1h
Z2VPcmllbnRhdGlvbiBzb3VyY2VPcmllbnRhdGlvbik7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXImIGlu
cHV0VGV4dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xl
bnVtIG91dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291
cmNlT3JpZW50YXRpb24pOwogICAgIHZvaWQgdXBkYXRlQ29sb3JDb252ZXJzaW9uTWF0cml4KENv
bG9yQ29udmVyc2lvbik7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlU3BhY2VNYXRyaXgoKTsKICAg
ICB2b2lkIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CkBAIC01Miw2ICs1Myw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+
IG1fc2hhZGVyUHJvZ3JhbTsKKyAgICB1bnNpZ25lZCBtX3NoYWRlck9wdGlvbnMgeyAwIH07CiAg
ICAgR0x1aW50IG1fZnJhbWVidWZmZXIgeyAwIH07CiAgICAgR0x1aW50IG1fdmJvIHsgMCB9Owog
I2lmICFVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIuaAppbmRleCAwODM0NzJiYWIyOWU5YmJhY2YxNGIyMDY2YmJiZjhmYjFkNjlk
NmI4Li4zYzhmZGM4NjI4MmY0MGVjMWY0Mjc4NmZmM2M0ZGRlNTA0OTcxYmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApAQCAtOTIsNiArOTIs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhvbGVQdW5jaENsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8SG9sZVB1bmNoQ2xpZW50PiYmIGNsaWVudCkgeyBtX2hvbGVQdW5jaENsaWVudCA9IFdURk1v
dmUoY2xpZW50KTsgfQogCisgICAgY29uc3QgVGV4dHVyZVZhcmlhbnQmIHRleHR1cmVWYXJpYW50
KCkgeyByZXR1cm4gbV92YXJpYW50OyB9CisKIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gbV90ZXh0dXJlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>