<?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>235946</bug_id>
          
          <creation_ts>2022-02-01 03:36:03 -0800</creation_ts>
          <short_desc>[GTK][WPE] Use dmabuf when possible to transfer ANGLE rendering to the compositor</short_desc>
          <delta_ts>2022-03-09 04:25:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>ANGLE</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236076</dependson>
          <blocked>237649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>alex</cc>
    
    <cc>annulen</cc>
    
    <cc>clord</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>crzwdjk</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835900</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-01 03:36:03 -0800</bug_when>
    <thetext>Currently we use NicosiaImageBufferPipe and copy WebGL rendering to a software buffer to transfer rendering to the compositor. Previous system-GL contexts would just share the texture ID, which we obviously cannot do with ANGLE. We should use dmabuf when available to allow a copy-free transfer of rendering contents to the compositor.

Currently both GTK and WPE use the GBM backend of ANGLE, so it makes sense to use libgbm for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835902</commentid>
    <comment_count>1</comment_count>
      <attachid>450512</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-01 03:53:56 -0800</bug_when>
    <thetext>Created attachment 450512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836007</commentid>
    <comment_count>2</comment_count>
      <attachid>450512</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-01 09:18:55 -0800</bug_when>
    <thetext>Comment on attachment 450512
Patch

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

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:369
&gt; +    m_eglCreateImage = reinterpret_cast&lt;PFNEGLCREATEIMAGEPROC&gt;(eglGetProcAddress(&quot;eglCreateImage&quot;));
&gt; +    m_eglDestroyImage = reinterpret_cast&lt;PFNEGLDESTROYIMAGEPROC&gt;(eglGetProcAddress(&quot;eglDestroyImage&quot;));

libepoxy does this for you. Also, the extension should be used, EGL 1.5 should not be presumed.

&gt; Source/WebCore/platform/graphics/nicosia/texmap/NicosiaGCGLANGLEPipe.cpp:65
&gt; +        auto proxyOperation = [this, size, format, stride, fd = m_context.m_compositorTextureBacking-&gt;fd()] (TextureMapperPlatformLayerProxy&amp; proxy) mutable {

You can&apos;t just throw file descriptors into an asynchronous dispatch without guaranteeing they won&apos;t be closed by the time the dispatch occurs.

&gt; Source/WebCore/platform/graphics/nicosia/texmap/NicosiaGCGLANGLEPipe.cpp:66
&gt; +            return proxy.scheduleUpdateOnCompositorThread([this, size, format, stride, fd] () mutable {

swapBuffersIfNeeded() is called during layer flush that sets everything up for the next composition update. This scheduleUpdateOnCompositionThread() sets up a dispatch that might be in contention with the wholesale composition update, meaning it can be executed after the composition update that corresponds to this layer flush.

pushNextBuffer() should be called from the main/worker thread, i.e. directly from GCGLANGLEPipeSource::swapBuffersIfNeeded(). But that requires a more delicate spawning of EGLImages.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:63
&gt; +            m_device = gbm_create_device(fd);

It&apos;s not reasonable to spawn a gbm_device for each GC3D context.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:308
&gt;          GL_BindTexture(textureTarget, m_compositorTexture);
&gt; +#if USE(NICOSIA)
&gt; +        if (m_compositorTextureBacking &amp;&amp; m_compositorTextureBacking-&gt;image())
&gt; +            GL_EGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_compositorTextureBacking-&gt;image());

You&apos;re not necessarily matching texture targets here.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:37
&gt; +#include &quot;gbm.h&quot;

Whose gbm.h is this?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:74
&gt; +    auto texmapFormat = (format == GBM_BO_FORMAT_ARGB8888) ? GL_RGBA : GL_RGB;

Is this proper? ARGB8888 and XRGB8888 are both 32-bit formats, how does GL_RGB as a 24-bit format come into play here?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:85
&gt; +    glGenTextures(1, &amp;id);

Leaked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836873</commentid>
    <comment_count>3</comment_count>
      <attachid>450760</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-03 04:45:14 -0800</bug_when>
    <thetext>Created attachment 450760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836901</commentid>
    <comment_count>4</comment_count>
      <attachid>450767</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-03 05:43:31 -0800</bug_when>
    <thetext>Created attachment 450767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836910</commentid>
    <comment_count>5</comment_count>
      <attachid>450768</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-03 06:13:19 -0800</bug_when>
    <thetext>Created attachment 450768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836928</commentid>
    <comment_count>6</comment_count>
      <attachid>450768</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-03 07:21:05 -0800</bug_when>
    <thetext>Comment on attachment 450768
Patch

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

&gt; Source/WebCore/platform/ThreadGlobalData.h:109
&gt; +    GBMDevice&amp; gbmDevice()

const GBMDevice&amp;

&gt; Source/WebCore/platform/ThreadGlobalData.h:137
&gt; +#if USE(ANGLE) &amp;&amp; USE(NICOSIA)
&gt; +    std::unique_ptr&lt;GBMDevice&gt; m_gbmDevice;
&gt; +#endif

Rather than latching it onto ThreadGlobalData, this could be implemented via ThreadSpecific&lt;&gt;. See TextureMapperContextAttributes.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:412
&gt; +        Vector&lt;EGLint&gt; intAttribList;
&gt; +        for (int i = 0; attribList[i] != EGL_NONE; i += 2) {
&gt; +            intAttribList.append(attribList[i]);
&gt; +            intAttribList.append(attribList[i+1]);
&gt; +        }
&gt; +        intAttribList.append(EGL_NONE);

Feels like WTF::map().

&gt; Source/WebCore/platform/graphics/gbm/GBMDevice.h:35
&gt; +class ThreadGlobalData;

Forward declaration not necessary.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:41
&gt; +#include &quot;gbm.h&quot;

It&apos;s a system header, it&apos;s supposed to be included in brackets-form.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:45
&gt; +
&gt; +#include &lt;fcntl.h&gt;

This ends up included only for the !USE(NICOSIA) block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836943</commentid>
    <comment_count>7</comment_count>
      <attachid>450768</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2022-02-03 08:01:33 -0800</bug_when>
    <thetext>Comment on attachment 450768
Patch

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

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:547
&gt;  #if USE(COORDINATED_GRAPHICS)
&gt;      std::swap(m_texture, m_compositorTexture);
&gt;      std::swap(m_texture, m_intermediateTexture);
&gt; +#if USE(NICOSIA)
&gt; +    std::swap(m_textureBacking, m_compositorTextureBacking);
&gt; +    std::swap(m_textureBacking, m_intermediateTextureBacking);
&gt; +#endif

I think COORDINATED_GRAPHICS and NICOSIA mean basically the same, there are more situations like this in the patch, maybe we want to check if there is a m_textureBacking like it is done in swapBuffers funtion?

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:278
&gt; +#if USE(NICOSIA)

Ditto.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:291
&gt; +#if USE(NICOSIA)

Ditto.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:298
&gt; +#if USE(NICOSIA)

Ditto.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:307
&gt; +#if USE(NICOSIA)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836967</commentid>
    <comment_count>8</comment_count>
      <attachid>450780</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-02-03 09:20:04 -0800</bug_when>
    <thetext>Created attachment 450780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837278</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-03 23:17:51 -0800</bug_when>
    <thetext>Committed r289106 (246803@main): &lt;https://commits.webkit.org/246803@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450780.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837279</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-03 23:18:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/88475916&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450512</attachid>
            <date>2022-02-01 03:53:56 -0800</date>
            <delta_ts>2022-02-03 04:45:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235946-20220201115354.patch</filename>
            <type>text/plain</type>
            <size>22125</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmOTQ4ZjI3NzBmMTA0
MjQ3OTAyYzdjYWE0NjAwYTczYzk5MDQ4Zi4uMGZmNTk2MDAyZDcxNzY0ODVkNTA2N2FmMTIzZjlk
ZTY3Y2EyYTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTAxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSBkbWFi
dWYgd2hlbiBwb3NzaWJsZSB0byB0cmFuc2ZlciBBTkdMRSByZW5kZXJpbmcgdG8gdGhlIGNvbXBv
c2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBkbWFidWYgd2hlbiBhdmFpbGFibGUgdG8gdHJhbnNmZXIgQU5HTEUgV2ViR0wgcmVuZGVyaW5n
IGNvbnRlbnRzCisgICAgICAgIHRvIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZVRleHR1cmVJbXBsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNyZWF0ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEVHTDo6ZGVzdHJveUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDR0xBTkdMRVBpcGUuY3BwOgorICAgICAgICAoTmljb3NpYTo6R0NHTEFO
R0xFUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdM
SW1hZ2VCYWNraW5nOjpFR0xJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjp+RUdMSW1hZ2VCYWNraW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6
Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OkVHTEltYWdlQmFja2luZzo6c3RyaWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291cmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6
OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6On5HcmFw
aGljc0NvbnRleHRHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjcmVhdGVG
cm9tRG1hYnVmKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyOjpFR0xJbWFnZVRleHR1cmU6OkVHTEltYWdlVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6RUdMSW1hZ2VUZXh0dXJlOjp+
RUdMSW1hZ2VUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmg6CisKIDIwMjItMDEtMTcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBh
IHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA2ZDEwNjZhNWI5NWE0MDFlNjg5
NDUwZGVlYzU0NWQ3YWQxZTc0MmMzLi45MjU0M2U2YTZiMzc5OTg1N2NmYjg2YjljNjNhZjFlNDM0
ZGY5NTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQxLDE0ICs1
NDEsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlVGV4dHVyZUltcGwo
KQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnN3YXAobV90ZXh0dXJl
LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICBzdGQ6OnN3YXAobV90ZXh0dXJlLCBtX2ludGVy
bWVkaWF0ZVRleHR1cmUpOworI2lmIFVTRShOSUNPU0lBKQorICAgIHN0ZDo6c3dhcChtX3RleHR1
cmVCYWNraW5nLCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyk7CisgICAgc3RkOjpzd2FwKG1f
dGV4dHVyZUJhY2tpbmcsIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpOworI2VuZGlmCiAg
ICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7Ci0gICAgR0xfRnJh
bWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgbV90ZXh0dXJlLCAwKTsKKyAgICBHTF9GcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIGRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCksIG1fdGV4dHVyZSwgMCk7CiAgICAgR0xfRmx1c2goKTsK
IAogICAgIGlmIChtX3N0YXRlLmJvdW5kRHJhd0ZCTyAhPSBtX2ZibykKICAgICAgICAgR0xfQmlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9zdGF0ZS5ib3Vu
ZERyYXdGQk8pOwotICAgIGVsc2UKLSAgICAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogI2Vsc2UKICAgICBpZiAobV9wcmVzZXJ2
ZURyYXdpbmdCdWZmZXJUZXh0dXJlKSB7CiAgICAgICAgIC8vIEJsaXQgbV9wcmVzZXJ2ZURyYXdp
bmdCdWZmZXJUZXh0dXJlIGludG8gbV90ZXh0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5oCmluZGV4IGNhODcyYWU1OGNkYTUxYTE2NTkyMWJjNTA5MmI1N2MyMTAzMzhkNDguLmJjMGRm
YzEwY2RhNmU3YWY4ZDFiODY1OTc4ODc2MjM0NGRjMDlhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmgKQEAgLTQzLDE0ICs0MywxOSBAQAogI2lmIFVTRShOSUNPU0lBKQogbmFtZXNw
YWNlIE5pY29zaWEgewogY2xhc3MgR0NHTEFOR0xFUGlwZTsKK2NsYXNzIEdDR0xBTkdMRVBpcGVT
b3VyY2U7CiBjbGFzcyBHQ0dMTGF5ZXI7CiB9CisKK3N0cnVjdCBnYm1fZGV2aWNlOworc3RydWN0
IGdibV9ibzsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVuc2lv
bnNHTDsKIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOworY2xhc3MgR0xDb250ZXh0OwogY2xhc3Mg
SG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgTWVkaWFQbGF5ZXI7CkBAIC00
NTAsMTcgKzQ1NSw0MyBAQCBwcm90ZWN0ZWQ6CiAgICAgR0NHTHVpbnQgbV9pbnRlcm1lZGlhdGVU
ZXh0dXJlIHsgMCB9OwogI2VuZGlmCiAjaWYgVVNFKE5JQ09TSUEpCi0jaWYgVVNFKEFOR0xFKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpHQ0dMQU5HTEVQaXBlPiBtX25pY29zaWFQaXBl
OwotI2Vsc2UKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6R0NHTExheWVyPiBtX25pY29z
aWFMYXllcjsKLSNlbmRpZgorCisgICAgY2xhc3MgRUdMSW1hZ2VCYWNraW5nIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIEVHTEltYWdlQmFja2lu
ZyhnYm1fZGV2aWNlKiwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkpOworICAgICAg
ICB+RUdMSW1hZ2VCYWNraW5nKCk7CisKKyAgICAgICAgYm9vbCByZXNldChpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGJvb2wgaGFzQWxwaGEpOworCisgICAgICAgIEVHTEltYWdlIGltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgICAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBt
X0ZEOyB9CisKKyAgICAgICAgdWludDMyX3QgZm9ybWF0KCkgY29uc3Q7CisgICAgICAgIHVpbnQz
Ml90IHN0cmlkZSgpIGNvbnN0OworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgcmVsZWFzZVJl
c291cmNlcygpOworCisgICAgICAgIGdibV9kZXZpY2UqIG1fZGV2aWNlOworICAgICAgICBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXk7CisKKyAgICAgICAgZ2JtX2Jv
KiBtX0JPIHsgbnVsbHB0ciB9OworICAgICAgICBpbnQgbV9GRCB7IC0xIH07CisgICAgICAgIEVH
TEltYWdlIG1faW1hZ2UgeyBFR0xfTk9fSU1BR0UgfTsKKyAgICB9OworCisgICAgZ2JtX2Rldmlj
ZSogbV9kZXZpY2UgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEVHTEltYWdlQmFj
a2luZz4gbV90ZXh0dXJlQmFja2luZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdMSW1hZ2VCYWNr
aW5nPiBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdM
SW1hZ2VCYWNraW5nPiBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nOwogI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyR0NHTFBsYXRm
b3JtTGF5ZXI+IG1fdGV4bWFwTGF5ZXI7CiAjZW5kaWYKIAogICAgIGZyaWVuZCBjbGFzcyBFeHRl
bnNpb25zR0xBTkdMRTsKICNpZiBVU0UoTklDT1NJQSkKKyAgICBmcmllbmQgY2xhc3MgTmljb3Np
YTo6R0NHTEFOR0xFUGlwZVNvdXJjZTsKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6R0NHTExh
eWVyOwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJl
TWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IDliYjkwMDgyMTI3NmNiODAx
YTg0ZDY1NmFjYTU4M2VhYjcwMWI4MDYuLmI2NDk4MzBiN2E5ODY4ZTNkNThkNWQwYjU3ZjAxYTFi
ODUyOTFjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0zNjQsNiArMzY0LDkgQEAgR0xDb250ZXh0RUdMOjpH
TENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQs
IEVHTFN1cmYKICAgICBBU1NFUlQodHlwZSA9PSBTdXJmYWNlbGVzcyB8fCBzdXJmYWNlICE9IEVH
TF9OT19TVVJGQUNFKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Rpc3BsYXkuZWdsRGlzcGxheSgp
ICE9IEVHTF9OT19ESVNQTEFZKTsKICAgICBSRUxFQVNFX0FTU0VSVChjb250ZXh0ICE9IEVHTF9O
T19DT05URVhUKTsKKworICAgIG1fZWdsQ3JlYXRlSW1hZ2UgPSByZWludGVycHJldF9jYXN0PFBG
TkVHTENSRUFURUlNQUdFUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdlIikp
OworICAgIG1fZWdsRGVzdHJveUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9Z
SU1BR0VQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlIikpOwogfQogCiBH
TENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQpAQCAtMzg2LDYgKzM4OSwyMCBAQCBHTENvbnRl
eHRFR0w6On5HTENvbnRleHRFR0woKQogI2VuZGlmCiB9CiAKK0VHTEltYWdlIEdMQ29udGV4dEVH
TDo6Y3JlYXRlSW1hZ2UoRUdMZW51bSB0YXJnZXQsIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZm
ZXIsIGNvbnN0IEVHTEF0dHJpYiogYXR0cmliTGlzdCkgY29uc3QKK3sKKyAgICBpZiAobV9lZ2xD
cmVhdGVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG1fZWdsQ3JlYXRlSW1hZ2UobV9kaXNwbGF5LmVn
bERpc3BsYXkoKSwgYXR0cmliTGlzdCA/IEVHTF9OT19DT05URVhUIDogbV9jb250ZXh0LCB0YXJn
ZXQsIGNsaWVudEJ1ZmZlciwgYXR0cmliTGlzdCk7CisgICAgcmV0dXJuIEVHTF9OT19JTUFHRTsK
K30KKworYm9vbCBHTENvbnRleHRFR0w6OmRlc3Ryb3lJbWFnZShFR0xJbWFnZSBpbWFnZSkgY29u
c3QKK3sKKyAgICBpZiAobV9lZ2xEZXN0cm95SW1hZ2UpCisgICAgICAgIHJldHVybiBtX2VnbERl
c3Ryb3lJbWFnZShtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBpbWFnZSk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZm
ZXIoKQogewogICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93U3VyZmFjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCA4
MTdmMjBkYzg2ZTA1YTcwMWJiNmE4YTFiMzA1NDJjNjY1YzNlZTk1Li5mMzllODVjMWViM2M3OWQ3
OWM0MTY3MzIxYmIwY2RlNzZlMGZkNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0zNiwxMCArMzYsMTggQEAgc3Ry
dWN0IHdsX2VnbF93aW5kb3c7CiBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsX29mZnNj
cmVlbl90YXJnZXQ7CiAjZW5kaWYKIAordHlwZWRlZiBpbnRwdHJfdCBFR0xBdHRyaWI7Cit0eXBl
ZGVmIHVuc2lnbmVkIEVHTEJvb2xlYW47Cit0eXBlZGVmIHZvaWQgKkVHTENsaWVudEJ1ZmZlcjsK
IHR5cGVkZWYgdm9pZCAqRUdMQ29uZmlnOwogdHlwZWRlZiB2b2lkICpFR0xDb250ZXh0OwogdHlw
ZWRlZiB2b2lkICpFR0xEaXNwbGF5OwordHlwZWRlZiB2b2lkICpFR0xJbWFnZTsKIHR5cGVkZWYg
dm9pZCAqRUdMU3VyZmFjZTsKK3R5cGVkZWYgdW5zaWduZWQgRUdMZW51bTsKKwordHlwZWRlZiBF
R0xJbWFnZSAoKlBGTkVHTENSRUFURUlNQUdFUFJPQykgKEVHTERpc3BsYXksIEVHTENvbnRleHQs
IEVHTGVudW0sIEVHTENsaWVudEJ1ZmZlciwgY29uc3QgRUdMQXR0cmliKik7Cit0eXBlZGVmIEVH
TEJvb2xlYW4gKCpQRk5FR0xERVNUUk9ZSU1BR0VQUk9DKSAoRUdMRGlzcGxheSwgRUdMSW1hZ2Up
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDYgKzYxLDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBsYXN0RXJyb3JTdHJpbmcoKTsKIAogICAgIEVHTENvbmZpZyBj
b25maWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZzsgfQorICAgIEVHTEltYWdlIGNyZWF0ZUlt
YWdlKEVHTGVudW0gdGFyZ2V0LCBFR0xDbGllbnRCdWZmZXIsIGNvbnN0IEVHTEF0dHJpYiopIGNv
bnN0OworICAgIGJvb2wgZGVzdHJveUltYWdlKEVHTEltYWdlKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgfkdMQ29udGV4dEVHTCgpOwogCkBAIC0xMDYsNiArMTE2LDggQEAgcHJpdmF0ZToKICAgICBF
R0xTdXJmYWNlIG1fc3VyZmFjZSB7IG51bGxwdHIgfTsKICAgICBFR0xDb25maWcgbV9jb25maWcg
eyBudWxscHRyIH07CiAgICAgRUdMU3VyZmFjZVR5cGUgbV90eXBlOworICAgIFBGTkVHTENSRUFU
RUlNQUdFUFJPQyBtX2VnbENyZWF0ZUltYWdlIHsgbnVsbHB0ciB9OworICAgIFBGTkVHTERFU1RS
T1lJTUFHRVBST0MgbV9lZ2xEZXN0cm95SW1hZ2UgeyBudWxscHRyIH07CiAjaWYgUExBVEZPUk0o
WDExKQogICAgIFhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dM
QU5HTEVQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQ0dMQU5HTEVQaXBlLmNwcAppbmRleCA1YTM5ZDNkYWE2ODFkYjllY2Nk
MGM2ZjZkOTM3NjYyODQxMGUyMWZkLi45MjczYmRhZmI3NGE4ZTE2MzY1ZDM4YjI3MTU1YjA1ZDUx
YzQ0ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRVBpcGUuY3Bw
CkBAIC01Nyw2ICs1NywyOCBAQCB2b2lkIEdDR0xBTkdMRVBpcGVTb3VyY2U6OnN3YXBCdWZmZXJz
SWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQucHJlcGFyZVRleHR1
cmUoKTsKKworICAgIGlmIChtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcpIHsK
KyAgICAgICAgYXV0byBzaXplID0gbV9jb250ZXh0LmdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCk7CisgICAgICAgIGF1dG8gZm9ybWF0ID0gbV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVC
YWNraW5nLT5mb3JtYXQoKTsKKyAgICAgICAgYXV0byBzdHJpZGUgPSBtX2NvbnRleHQubV9jb21w
b3NpdG9yVGV4dHVyZUJhY2tpbmctPnN0cmlkZSgpOworICAgICAgICBhdXRvIHByb3h5T3BlcmF0
aW9uID0gW3RoaXMsIHNpemUsIGZvcm1hdCwgc3RyaWRlLCBmZCA9IG1fY29udGV4dC5tX2NvbXBv
c2l0b3JUZXh0dXJlQmFja2luZy0+ZmQoKV0gKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHkmIHByb3h5KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJldHVybiBwcm94eS5zY2hlZHVsZVVw
ZGF0ZU9uQ29tcG9zaXRvclRocmVhZChbdGhpcywgc2l6ZSwgZm9ybWF0LCBzdHJpZGUsIGZkXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBwcm94eSA9IGRvd25jYXN0PE5pY29z
aWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihwbGF0Zm9ybUxheWVyKCktPmltcGwo
KSkucHJveHkoKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJveHkubG9jaygp
IH07CisKKyAgICAgICAgICAgICAgICBpZiAoIXByb3h5LmlzQWN0aXZlKCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVy
KFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjcmVhdGVGcm9tRG1hYnVmKHNpemUs
IGZvcm1hdCwgc3RyaWRlLCBmZCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH07CisgICAg
ICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsPihwbGF0Zm9ybUxheWVyKCktPmltcGwoKSkucHJveHkoKSk7CisgICAgICAgIG1f
Y29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBGYWxsYmFjayBwYXRoLCByZWFkIGJhY2sgdGV4dHVyZSB0byBtYWluIG1lbW9yeQog
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKG1fY29udGV4dC5nZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFLmNwcAppbmRleCBhMWUxZTg0NDk5M2YwZDM0ZTEzNzNkZjRiNTNiNzYxMWQ0YjkzODZiLi44
MmRiZTEyYzc0MGM3ODI3MWE2ZWNiYjYwNGM0ZWU3ODM0ODRjMDkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTM2LDcg
KzM2LDkgQEAKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogCiAjaWYgVVNFKE5JQ09TSUEpCisj
aW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlICJOaWNvc2lhR0NHTEFOR0xFUGlwZS5oIgorI2lu
Y2x1ZGUgImdibS5oIgogI2Vsc2UKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3Jt
TGF5ZXIuaCIKICNlbmRpZgpAQCAtNTEsNiArNTMsMjUgQEAgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmkKICNlbmRpZgogI2lmIFVTRShOSUNPU0lBKQogICAgIG1fbmljb3NpYVBpcGUgPSBtYWtlVW5p
cXVlPE5pY29zaWE6OkdDR0xBTkdMRVBpcGU+KCp0aGlzKTsKKworICAgIGludCBmZDsKKyAgICBj
aGFyIGRldmljZU5hbWVbMzBdOworICAgIGZvciAoaW50IGkgPSAxMjg7IGkgPCAxOTI7ICsraSkg
eworICAgICAgICBzbnByaW50ZihkZXZpY2VOYW1lLCBzaXplb2YoZGV2aWNlTmFtZSksICIvZGV2
L2RyaS9yZW5kZXJEJWQiLCBpKTsKKyAgICAgICAgZmQgPSBvcGVuKGRldmljZU5hbWUsIE9fUkRX
UiB8IE9fQ0xPRVhFQyk7CisgICAgICAgIGlmIChmZCA+PSAwKSB7CisgICAgICAgICAgICBtX2Rl
dmljZSA9IGdibV9jcmVhdGVfZGV2aWNlKGZkKTsKKyAgICAgICAgICAgIGlmIChtX2RldmljZSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChtX2RldmljZSkgeworICAgICAgICBtX3RleHR1cmVCYWNraW5n
ID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KG1fZGV2aWNlLCBwbGF0Zm9ybURpc3BsYXko
KSk7CisgICAgICAgIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJ
bWFnZUJhY2tpbmc+KG1fZGV2aWNlLCBwbGF0Zm9ybURpc3BsYXkoKSk7CisgICAgICAgIG1faW50
ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5pcXVlPEVHTEltYWdlQmFja2luZz4obV9k
ZXZpY2UsIHBsYXRmb3JtRGlzcGxheSgpKTsKKyAgICB9CiAjZWxzZQogICAgIG1fdGV4bWFwTGF5
ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcj4oKnRoaXMpOwog
I2VuZGlmCkBAIC0xMTIsMTEgKzEzMyw5MCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFw
aGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaQogICAg
IEdMX0NsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiB9CiAKKyNpZiBVU0UoTklDT1NJQSkKK0dyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6RUdMSW1hZ2VCYWNraW5nKGdibV9k
ZXZpY2UqIGRldmljZSwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgZGlzcGxheSkK
KyAgICA6IG1fZGV2aWNlKGRldmljZSkKKyAgICAsIG1fZGlzcGxheShkaXNwbGF5KQoreworfQor
CitHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6On5FR0xJbWFnZUJhY2tp
bmcoKQoreworICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKK30KKwordWludDMyX3QgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpmb3JtYXQoKSBjb25zdAoreworICAgIGlm
IChtX0JPKQorICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9mb3JtYXQobV9CTyk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFj
a2luZzo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9CTykKKyAgICAgICAgcmV0dXJuIGdi
bV9ib19nZXRfc3RyaWRlKG1fQk8pOworICAgIHJldHVybiAwOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291cmNlcygpCit7Cisg
ICAgaWYgKG1fQk8pIHsKKyAgICAgICAgZ2JtX2JvX2Rlc3Ryb3kobV9CTyk7CisgICAgICAgIG1f
Qk8gPSBudWxscHRyOworICAgIH0KKyAgICBpZiAobV9pbWFnZSkgeworICAgICAgICBFR0xfRGVz
dHJveUltYWdlS0hSKG1fZGlzcGxheSwgbV9pbWFnZSk7CisgICAgICAgIG1faW1hZ2UgPSBFR0xf
Tk9fSU1BR0U7CisgICAgfQorICAgIGlmIChtX0ZEID49IDApIHsKKyAgICAgICAgY2xvc2UobV9G
RCk7CisgICAgICAgIG1fRkQgPSAtMTsKKyAgICB9Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpyZXNldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJv
b2wgaGFzQWxwaGEpCit7CisgICAgcmVsZWFzZVJlc291cmNlcygpOworCisgICAgaWYgKCF3aWR0
aCB8fCAhaGVpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX0JPID0gZ2JtX2Jv
X2NyZWF0ZShtX2RldmljZSwgd2lkdGgsIGhlaWdodCwgaGFzQWxwaGEgPyBHQk1fQk9fRk9STUFU
X0FSR0I4ODg4IDogR0JNX0JPX0ZPUk1BVF9YUkdCODg4OCwgR0JNX0JPX1VTRV9SRU5ERVJJTkcp
OworICAgIGlmIChtX0JPKSB7CisgICAgICAgIG1fRkQgPSBnYm1fYm9fZ2V0X2ZkKG1fQk8pOwor
ICAgICAgICBpZiAobV9GRCA+PSAwKSB7CisgICAgICAgICAgICBFR0xpbnQgaW1hZ2VBdHRyaWJ1
dGVzW10gPSB7CisgICAgICAgICAgICAgICAgRUdMX1dJRFRILCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICBFR0xfSEVJR0hULCBoZWlnaHQsCisgICAgICAgICAgICAgICAgRUdMX0xJTlVYX0RSTV9G
T1VSQ0NfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGdibV9ib19nZXRfZm9ybWF0KG1fQk8pKSwK
KyAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfRkRfRVhULCBtX0ZELAorICAgICAg
ICAgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRDSF9FWFQsIHN0YXRpY19jYXN0PEVHTGlu
dD4oZ2JtX2JvX2dldF9zdHJpZGUobV9CTykpLAorICAgICAgICAgICAgICAgIEVHTF9ETUFfQlVG
X1BMQU5FMF9PRkZTRVRfRVhULCAwLAorICAgICAgICAgICAgICAgIEVHTF9OT05FCisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgbV9pbWFnZSA9IEVHTF9DcmVhdGVJbWFnZUtIUihtX2Rpc3Bs
YXksIEVHTF9OT19DT05URVhULCBFR0xfTElOVVhfRE1BX0JVRl9FWFQsIChFR0xDbGllbnRCdWZm
ZXIpbnVsbHB0ciwgaW1hZ2VBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGlmIChtX2ltYWdlKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmVs
ZWFzZVJlc291cmNlcygpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCiB7CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlQ29udGV4dCh0
aGlzKTsKICAgICBib29sIHN1Y2Nlc3MgPSBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBBU1NF
UlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworCisjaWYgVVNFKE5JQ09TSUEpCisgICAgaWYg
KG1fZGV2aWNlKQorICAgICAgICBnYm1fZGV2aWNlX2Rlc3Ryb3kobV9kZXZpY2UpOworI2VuZGlm
CisKICAgICBpZiAobV90ZXh0dXJlKQogICAgICAgICBHTF9EZWxldGVUZXh0dXJlcygxLCAmbV90
ZXh0dXJlKTsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCkBAIC0xODksMTggKzI4OSw0
NCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFj
a2luZygpCiAgICAgR0x1aW50IGNvbG9yRm9ybWF0ID0gYXR0cnMuYWxwaGEgPyBHTF9SR0JBIDog
R0xfUkdCOwogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQoKTsKICAgICBHTHVpbnQgaW50ZXJuYWxDb2xvckZvcm1hdCA9IHRleHR1cmVUYXJnZXQg
PT0gR0xfVEVYVFVSRV8yRCA/IGNvbG9yRm9ybWF0IDogbV9pbnRlcm5hbENvbG9yRm9ybWF0Owor
CisjaWYgVVNFKE5JQ09TSUEpCisgICAgaWYgKG1fZGV2aWNlKSB7CisgICAgICAgIEFTU0VSVCht
X3RleHR1cmVCYWNraW5nICYmIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nICYmIG1faW50ZXJt
ZWRpYXRlVGV4dHVyZUJhY2tpbmcpOworICAgICAgICBtX3RleHR1cmVCYWNraW5nLT5yZXNldCh3
aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7CisgICAgICAgIG1fY29tcG9zaXRvclRleHR1cmVC
YWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7CisgICAgICAgIG1faW50
ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhh
KTsKKyAgICB9CisjZW5kaWYKKwogICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0
b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1Rhcmdl
dCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJF
X1JFQ1RBTkdMRV9BUkIpOwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAo
bV9jb21wb3NpdG9yVGV4dHVyZSkgewogICAgICAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFy
Z2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJQSkKKyAgICAgICAgaWYg
KG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nICYmIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5n
LT5pbWFnZSgpKQorICAgICAgICAgICAgR0xfRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xf
VEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpOworICAgICAg
ICBlbHNlCisjZW5kaWYKICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBp
bnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5T
SUdORURfQllURSwgMCk7CiAgICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1f
aW50ZXJtZWRpYXRlVGV4dHVyZSk7CisjaWYgVVNFKE5JQ09TSUEpCisgICAgICAgIGlmIChtX2lu
dGVybWVkaWF0ZVRleHR1cmVCYWNraW5nICYmIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmct
PmltYWdlKCkpCisgICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTF9U
RVhUVVJFXzJELCBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKKyAgICAg
ICAgZWxzZQorI2VuZGlmCiAgICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwg
aW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VO
U0lHTkVEX0JZVEUsIDApOwogICAgIH0KICNlbmRpZgogICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1
cmVUYXJnZXQsIG1fdGV4dHVyZSk7CisjaWYgVVNFKE5JQ09TSUEpCisgICAgaWYgKG1fdGV4dHVy
ZUJhY2tpbmcgJiYgbV90ZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkKKyAgICAgICAgR0xfRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlQmFja2luZy0+aW1h
Z2UoKSk7CisgICAgZWxzZQorI2VuZGlmCiAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0
LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwg
R0xfVU5TSUdORURfQllURSwgMCk7CiAgICAgR0xfRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUs
IDApOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IGJkNWVkYjk2NGNjODk1NjE1NmUwZjBh
ZTY0MmFjNzM2NWI0NjJjYjIuLjU3ZDFhZWQ3ZjBlMmE0MmFjMzgzNGQxOGQzNzUzNzlhMDA5ZWRi
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcApAQCAtMzEsNiArMzEsMTIgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogCisjaWYgVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKKyNp
bmNsdWRlICJHTENvbnRleHRFR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xF
LmgiCisjaW5jbHVkZSAiZ2JtLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYgdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdM
OjpGbGFncyBmbGFncykKQEAgLTQ2LDYgKzUyLDU3IEBAIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVy
CiB7CiB9CiAKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQorc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcjo6Y3JlYXRlRnJvbURtYWJ1ZihJbnRTaXplIHNpemUsIHVpbnQzMl90IGZvcm1h
dCwgdWludDMyX3Qgc3RyaWRlLCBpbnQgZmQpCit7CisgICAgYXV0byogY29udGV4dCA9IEdMQ29u
dGV4dDo6Y3VycmVudCgpOworICAgIEFTU0VSVChjb250ZXh0LT5pc0VHTENvbnRleHQoKSk7CisK
KyAgICBFR0xBdHRyaWIgaW1hZ2VBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9XSURUSCwg
c2l6ZS53aWR0aCgpLAorICAgICAgICBFR0xfSEVJR0hULCBzaXplLmhlaWdodCgpLAorICAgICAg
ICBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRpY19jYXN0PEVHTEF0dHJpYj4oZm9ybWF0
KSwKKyAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgZmQsCisgICAgICAgIEVHTF9E
TUFfQlVGX1BMQU5FMF9QSVRDSF9FWFQsIHN0YXRpY19jYXN0PEVHTEF0dHJpYj4oc3RyaWRlKSwK
KyAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQsIDAsCisgICAgICAgIEVHTF9O
T05FCisgICAgfTsKKyAgICBhdXRvIGltYWdlID0gZG93bmNhc3Q8R0xDb250ZXh0RUdMPigqY29u
dGV4dCkuY3JlYXRlSW1hZ2UoRUdMX0xJTlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVmZmVy
KW51bGxwdHIsIGltYWdlQXR0cmlidXRlcyk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHRleG1hcEZvcm1hdCA9IChmb3JtYXQgPT0gR0JNX0JP
X0ZPUk1BVF9BUkdCODg4OCkgPyBHTF9SR0JBIDogR0xfUkdCOworICAgIGludCB0ZXhtYXBGbGFn
cyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmU7CisgICAgaWYgKHRleG1hcEZv
cm1hdCA9PSBHTF9SR0JBKQorICAgICAgICB0ZXhtYXBGbGFncyB8PSBUZXh0dXJlTWFwcGVyR0w6
OlNob3VsZEJsZW5kOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4obmV3IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
KGltYWdlLCBzaXplLCB0ZXhtYXBGbGFncywgdGV4bWFwRm9ybWF0KSk7Cit9CisKK1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpFR0xJbWFnZVRleHR1cmU6OkVHTEltYWdlVGV4dHVy
ZShFR0xJbWFnZSBpbWFnZSkKKyAgICA6IGltYWdlKGltYWdlKQoreworICAgIGdsR2VuVGV4dHVy
ZXMoMSwgJmlkKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGlkKTsKKyAgICBn
bEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVfMkQsIGltYWdlKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9M
SU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX0xJTkVBUik7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyOjpFR0xJbWFnZVRleHR1cmU6On5FR0xJbWFnZVRleHR1cmUoKQoreworICAgIGF1dG8qIGN0
eCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworCisgICAgQVNTRVJUKGN0eCAmJiBpczxHTENvbnRl
eHRFR0w+KCpjdHgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChkb3duY2FzdDxHTENvbnRleHRFR0w+
KCpjdHgpLmRlc3Ryb3lJbWFnZShpbWFnZSkpOworfQorCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoRUdMSW1hZ2UgaW1h
Z2UsIGNvbnN0IEludFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIEdM
aW50IGludGVybmFsRm9ybWF0KQorICAgIDogVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIoeyBFR0xJbWFnZVRleHR1cmUgeyBpbWFnZSB9IH0sIHNpemUsIGZsYWdzLCBpbnRlcm5hbEZv
cm1hdCkKK3sKK30KKyNlbmRpZgorCiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoVGV4dHVyZVZhcmlhbnQmJiB2YXJpYW50
LCBjb25zdCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBHTGlu
dCBpbnRlcm5hbEZvcm1hdCkKICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKHZhcmlhbnQpKQogICAg
ICwgbV9zaXplKHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlci5oCmluZGV4IGJkNGE4NzVkN2ExNTkxNjdjMmU4OWNlMjBiODU5YmIwZjgwZjdmMzku
LjhjNzZkNmU5YjViOTg4OWNhZjE4MDBkNzMyMTdkMDkzYjJjYTk4NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCkBAIC0zMyw2ICszMyw4IEBA
CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCit0
eXBlZGVmIHZvaWQgKkVHTEltYWdlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyIHsKQEAgLTYwLDYgKzYyLDEwIEBAIHB1YmxpYzoKIAogICAgIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFRleHR1cmVWYXJpYW50JiYsIGNvbnN0IEludFNpemUmLCBU
ZXh0dXJlTWFwcGVyR0w6OkZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CiAKKyNpZiBVU0Uo
QU5HTEUpICYmIFVTRShOSUNPU0lBKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGNyZWF0ZUZyb21EbWFidWYoSW50U2l6ZSwgdWlu
dDMyX3QgZm9ybWF0LCB1aW50MzJfdCBzdHJpZGUsIGludCBmZCk7CisjZW5kaWYKKwogICAgIHZp
cnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCk7CiAKICAgICB2b2lkIHBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgZmluYWw7CkBAIC0xMDAsNiArMTA2LDE2IEBA
IHB1YmxpYzoKICAgICBjb25zdCBUZXh0dXJlVmFyaWFudCYgdGV4dHVyZVZhcmlhbnQoKSB7IHJl
dHVybiBtX3ZhcmlhbnQ7IH0KIAogcHJpdmF0ZToKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShOSUNP
U0lBKQorICAgIHN0cnVjdCBFR0xJbWFnZVRleHR1cmUgOiBwdWJsaWMgUkdCVGV4dHVyZSB7Cisg
ICAgICAgIEVHTEltYWdlVGV4dHVyZShFR0xJbWFnZSk7CisgICAgICAgIH5FR0xJbWFnZVRleHR1
cmUoKTsKKworICAgICAgICBFR0xJbWFnZSBpbWFnZTsKKyAgICB9OworCisgICAgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoRUdMSW1hZ2UsIGNvbnN0IEludFNpemUmLCBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CisjZW5kaWYKIAogICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVM
YXN0VXNlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450760</attachid>
            <date>2022-02-03 04:45:14 -0800</date>
            <delta_ts>2022-02-03 05:47:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235946-20220203124513.patch</filename>
            <type>text/plain</type>
            <size>42922</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmOTQ4ZjI3NzBmMTA0
MjQ3OTAyYzdjYWE0NjAwYTczYzk5MDQ4Zi4uYzBjMjc3NjlmODgzNDgxODFlYTUxN2UyODU0MzQz
Yzc0NTQ1ZDY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAyLTAxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSBkbWFi
dWYgd2hlbiBwb3NzaWJsZSB0byB0cmFuc2ZlciBBTkdMRSByZW5kZXJpbmcgdG8gdGhlIGNvbXBv
c2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBkbWFidWYgd2hlbiBhdmFpbGFibGUgdG8gdHJhbnNmZXIgQU5HTEUgV2ViR0wgcmVuZGVyaW5n
IGNvbnRlbnRzCisgICAgICAgIHRvIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsu
dHh0OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplR2JtRGV2aWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpnYm1EZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVPcGVu
R0xTaGltcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnByZXBhcmVUZXh0
dXJlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVJbWFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlc3Ryb3lJbWFnZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdCTURldmljZTo6Zm9yQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpHQk1EZXZp
Y2U6OkdCTURldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHQk1EZXZpY2U6On5HQk1EZXZpY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHQk1EZXZpY2U6OmRldmljZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRVBpcGUuY3BwOgor
ICAgICAgICAoTmljb3NpYTo6R0NHTEFOR0xFUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpFR0xJbWFnZUJhY2tpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5n
Ojp+RUdMSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OkVHTEltYWdlQmFja2luZzo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6c3RyaWRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2lu
Zzo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xFKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2lu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6dGV4dHVyZVZhcmlhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnRleHR1cmVWYXJpYW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZv
dXJDQ1RvR0xGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0SGFzQWxwaGEpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmKToKKyAgICAgICAgKFdlYkNvcmU6Om1fZmQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6On5UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6dmFsaWRhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmOjpwYWludFRvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6
Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckRtYWJ1Zi5oOiBBZGRlZC4KKwogMjAyMi0wMS0xNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50
LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDI5ZTJi
NzhmNGQyNmI1ZjY2YzIzN2ZmMDRmNGM3Nzk4MzA2NDNjOWUuLmJkNzZhMDkyMjY4MDYwMWQ0OWYx
NzExYzk1MjVkMDUwZmY2NDU5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yNiw2
ICsyNiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcy9nbHgiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2dibSIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggY2Zi
ZmU0ZjY2ZGJjMzM5ZTY4MTc5ZjRjZWI0OGEwMmMzYzEyMjkyNi4uYmU1YzMwNDdmZTU1ODNlZWU1
ZWExNTE2MGRkYzk5NmNhOGYzZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTIz
LDYgKzIzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ2xpYiIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MvZWdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy9lcG94eSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ2Jt
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lciIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCAxZWI1
MDU3ZmFjNjZlMGVkZWZiM2U3M2JhZjE3OTJlYTAxZDRhMTU4Li5hMzcwZjQyZWY1MWJiMzBiMzVj
NDQ2NmIwZTUyYWIxMGQ2OWU0OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
R1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtMTAxLDYgKzEw
MSw4IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwIEBuby11
bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIEBuby11
bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAgQG5vLXVuaWZ5
CiAKK3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwCisKIHBsYXRmb3JtL2dyYXBo
aWNzL2dseC9HTENvbnRleHRHTFguY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0
ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggZmQwNThlOGY2MTRlZGJhNzBmZDBkMTA0Mjg1
ODY0ZTc2OGVjZWI1ZC4uNWZlMzY4MjVmYjM3NTA0N2I3NTFhZjMyY2E2ODA5MTFlNGJhZWYwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTcyLDYgKzcyLDggQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1EaXNwbGF5LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwCiAKK3BsYXRm
b3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwCisKIHBsYXRmb3JtL2dyYXBoaWNzL2xpYndw
ZS9QbGF0Zm9ybURpc3BsYXlMaWJXUEUuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2UKaW5kZXggNDNiYjc3YTVhNjViNGUyYmQ1Y2RmNWQwNzQ5NjRjYWUyYzQ5
YmI2NS4uMmYxNjlmNDM2MGM3YmRiYTVhNjgzOTc2OWIyY2QzMDRiNTEwNGQ0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC01OSw2ICs1OSw3IEBA
IGlmIChVU0VfQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5jcHAKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCiAK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxE
YXRhLmNwcAppbmRleCA2MTNmYjliMGNlMjE1ZTNiYWQ1ZDUwMDI0MzkyM2ZlMmY2M2M3NmY1Li42
ZDZkZTc4ZmQ4OTkzODM0OTBiNjA1N2ZmMzQ3MjljZDI4N2QxYTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiR0JNRGV2aWNlLmgi
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWVD
YWNoZS5oIgogI2luY2x1ZGUgIlRocmVhZFRpbWVycy5oIgpAQCAtMTQ2LDYgKzE0NywxNCBAQCB2
b2lkIFRocmVhZEdsb2JhbERhdGE6OmluaXRpYWxpemVGb250Q2FjaGUoKQogICAgIG1fZm9udENh
Y2hlID0gbWFrZVVuaXF1ZTxGb250Q2FjaGU+KCk7CiB9CiAKKyNpZiBVU0UoQU5HTEUpICYmIFVT
RShOSUNPU0lBKQordm9pZCBUaHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplR2JtRGV2aWNlKCkK
K3sKKyAgICBBU1NFUlQoIW1fZ2JtRGV2aWNlKTsKKyAgICBtX2dibURldmljZSA9IG1ha2VVbmlx
dWU8R0JNRGV2aWNlPigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
bmFtZXNwYWNlIFBBTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRh
LmgKaW5kZXggZGJkZmIxNGU1YjAwZjZhNzc4ZDhlN2MxOGZkNWE0OTZkMzk1YTcwNC4uMTFkZGU3
ZDczZTNlZWFhNmFiZDk2MTU5ZDVkMTVkOGM1MTYwYzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENhY2hlOworY2xhc3Mg
R0JNRGV2aWNlOwogY2xhc3MgUXVhbGlmaWVkTmFtZUNhY2hlOwogY2xhc3MgVGhyZWFkVGltZXJz
OwogCkBAIC0xMDQsMTIgKzEwNSwyNSBAQCBwdWJsaWM6CiAKICAgICBGb250Q2FjaGUqIGZvbnRD
YWNoZUlmTm90RGVzdHJveWVkKCkgeyByZXR1cm4gbV9kZXN0cm95ZWQgPyBudWxscHRyIDogJmZv
bnRDYWNoZSgpOyB9CiAKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQorICAgIEdCTURl
dmljZSYgZ2JtRGV2aWNlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOwor
ICAgICAgICBpZiAoVU5MSUtFTFkoIW1fZ2JtRGV2aWNlKSkKKyAgICAgICAgICAgIGluaXRpYWxp
emVHYm1EZXZpY2UoKTsKKyAgICAgICAgcmV0dXJuICptX2dibURldmljZTsKKyAgICB9CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVDYWNoZWRS
ZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0
aWFsaXplRXZlbnROYW1lcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVF1
YWxpZmllZE5hbWVDYWNoZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZU1p
bWVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbml0aWFsaXplRm9udENhY2hlKCk7CisjaWYgVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVHYm1EZXZpY2UoKTsKKyNlbmRpZgog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+IG1f
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9yczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZl
bnROYW1lcz4gbV9ldmVudE5hbWVzOwpAQCAtMTE4LDYgKzEzMiw5IEBAIHByaXZhdGU6CiAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogbV9jdXJyZW50U3RhdGUgeyBudWxscHRyIH07CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhPiBtX01JTUVUeXBl
UmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FjaGU+
IG1fZm9udENhY2hlOworI2lmIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCisgICAgc3RkOjp1
bmlxdWVfcHRyPEdCTURldmljZT4gbV9nYm1EZXZpY2U7CisjZW5kaWYKIAogI2lmbmRlZiBOREVC
VUcKICAgICBib29sIG1faXNNYWluVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCmluZGV4IDkwYjk4MDg1Y2I4N2UzNjAxMTY5ZmYx
MzM5NjNmOWEwMDMxYmQ2OGIuLmI0MjUxMmU5ZTdlNjZkOTE0N2JmZjk3ZjUyYzI4MmQ2ODVhM2E5
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNo
aW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGlt
cy5jcHAKQEAgLTE0Myw2ICsxNDMsNyBAQCBib29sIGluaXRpYWxpemVPcGVuR0xTaGltcygpCiAg
ICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRHJhd0J1ZmZlcnMsIHN1Y2Nlc3MpOwog
ICAgIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShnbERyYXdFbGVtZW50c0luc3RhbmNlZCwg
c3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXksIHN1Y2Nlc3MpOworICAgIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShn
bEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTLCBzdWNjZXNzKTsKICAgICBBU1NJR05fRlVOQ1RJ
T05fVEFCTEVfRU5UUlkoZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgc3VjY2Vzcyk7CiAgICAg
QVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQsIHN1Y2Nl
c3MpOwogICAgIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShnbEdlbkJ1ZmZlcnMsIHN1Y2Nl
c3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdM
U2hpbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgK
aW5kZXggNGMzNTdkZGU5ODFmMTM2ZjA1OGQ4ODM3MDc4YzQxMzBkNjBkNmE2NS4uN2IxOTRiMmE2
YzI2ZWY1ZTdmNjE0MjEwOTdkNjYwZDkyM2IzMWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCkBAIC03OCw2ICs3OCw3IEBAIHR5cGVkZWYg
dm9pZCAoR0xBUElFTlRSWSAqZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50
KTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xEcmF3QXJyYXlzSW5zdGFuY2VkVHlwZSkg
KEdMZW51bSwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWkpOwogdHlwZWRlZiB2b2lkIChHTEFQSUVO
VFJZICpnbERyYXdCdWZmZXJzVHlwZSkgKEdMc2l6ZWksIGNvbnN0IEdMZW51bSopOwogdHlwZWRl
ZiB2b2lkIChHTEFQSUVOVFJZICpnbERyYXdFbGVtZW50c0luc3RhbmNlZFR5cGUpIChHTGVudW0s
IEdMc2l6ZWksIEdMZW51bSwgY29uc3QgR0x2b2lkKiwgR0xzaXplaSk7Cit0eXBlZGVmIHZvaWQg
KEdMQVBJRU5UUlkgKmdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVNUeXBlKSAoR0xlbnVtIHRh
cmdldCwgR0xlZ2xJbWFnZU9FUyk7CiB0eXBlZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsRW5hYmxl
VmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRS
WSAqZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVt
LCBHTHVpbnQpOwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpOwpAQCAtMTg2
LDYgKzE4Nyw3IEBAIHR5cGVkZWYgc3RydWN0IF9PcGVuR0xGdW5jdGlvblRhYmxlIHsKICAgICBG
VU5DVElPTl9UQUJMRV9FTlRSWShnbERyYXdBcnJheXNJbnN0YW5jZWQpOwogICAgIEZVTkNUSU9O
X1RBQkxFX0VOVFJZKGdsRHJhd0J1ZmZlcnMpOwogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGds
RHJhd0VsZW1lbnRzSW5zdGFuY2VkKTsKKyAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEVHTElt
YWdlVGFyZ2V0VGV4dHVyZTJET0VTKTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKTsKQEAgLTMwNiw2ICszMDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVu
Y3Rpb25UYWJsZSB7CiAjZGVmaW5lIGdsRHJhd0J1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAg
ICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERyYXdCdWZmZXJzKQogI2RlZmluZSBnbERyYXdFbGVt
ZW50c0luc3RhbmNlZEVYVCAgICAgICAgICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZAogI2Rl
ZmluZSBnbERyYXdFbGVtZW50c0luc3RhbmNlZCAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQpCisjZGVmaW5lIGdsRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkRPRVMgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTKQogI2RlZmluZSBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5ICAgICAgICAg
ICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSkKICNkZWZp
bmUgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcgogI2RlZmluZSBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyICAgICAgICAgICAg
ICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggNmQxMDY2YTViOTVhNDAxZTY4OTQ1MGRlZWM1
NDVkN2FkMWU3NDJjMy4uOTI1NDNlNmE2YjM3OTk4NTdjZmI4NmI5YzYzYWYxZTQzNGRmOTU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0MSwxNCArNTQxLDE2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZVRleHR1cmVJbXBsKCkKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjpzd2FwKG1fdGV4dHVyZSwgbV9jb21w
b3NpdG9yVGV4dHVyZSk7CiAgICAgc3RkOjpzd2FwKG1fdGV4dHVyZSwgbV9pbnRlcm1lZGlhdGVU
ZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBzdGQ6OnN3YXAobV90ZXh0dXJlQmFja2lu
ZywgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcpOworICAgIHN0ZDo6c3dhcChtX3RleHR1cmVC
YWNraW5nLCBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nKTsKKyNlbmRpZgogICAgIEdMX0Jp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIEdMX0ZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQU5HTEUsIG1fdGV4dHVyZSwgMCk7CisgICAgR0xfRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBkcmF3aW5nQnVmZmVy
VGV4dHVyZVRhcmdldCgpLCBtX3RleHR1cmUsIDApOwogICAgIEdMX0ZsdXNoKCk7CiAKICAgICBp
ZiAobV9zdGF0ZS5ib3VuZERyYXdGQk8gIT0gbV9mYm8pCiAgICAgICAgIEdMX0JpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fc3RhdGUuYm91bmREcmF3RkJP
KTsKLSAgICBlbHNlCi0gICAgICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRH
TDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICNlbHNlCiAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5n
QnVmZmVyVGV4dHVyZSkgewogICAgICAgICAvLyBCbGl0IG1fcHJlc2VydmVEcmF3aW5nQnVmZmVy
VGV4dHVyZSBpbnRvIG1fdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRl
eCBjYTg3MmFlNThjZGE1MWExNjU5MjFiYzUwOTJiNTdjMjEwMzM4ZDQ4Li4yMWI5NGMxNjlhNTEy
ZTg5ODZmZDBiYWMwMjc1MGMzZTU2MzA1NDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5oCkBAIC00MywxNCArNDMsMTkgQEAKICNpZiBVU0UoTklDT1NJQSkKIG5hbWVzcGFjZSBOaWNv
c2lhIHsKIGNsYXNzIEdDR0xBTkdMRVBpcGU7CitjbGFzcyBHQ0dMQU5HTEVQaXBlU291cmNlOwog
Y2xhc3MgR0NHTExheWVyOwogfQorCitzdHJ1Y3QgZ2JtX2RldmljZTsKK3N0cnVjdCBnYm1fYm87
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNpb25zR0w7CiBj
bGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKK2NsYXNzIEdMQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5k
b3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIE1lZGlhUGxheWVyOwpAQCAtNDUwLDE3ICs0
NTUsNDIgQEAgcHJvdGVjdGVkOgogICAgIEdDR0x1aW50IG1faW50ZXJtZWRpYXRlVGV4dHVyZSB7
IDAgfTsKICNlbmRpZgogI2lmIFVTRShOSUNPU0lBKQotI2lmIFVTRShBTkdMRSkKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Tmljb3NpYTo6R0NHTEFOR0xFUGlwZT4gbV9uaWNvc2lhUGlwZTsKLSNlbHNl
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE5pY29zaWE6OkdDR0xMYXllcj4gbV9uaWNvc2lhTGF5ZXI7
Ci0jZW5kaWYKKworICAgIGNsYXNzIEVHTEltYWdlQmFja2luZyB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBFR0xJbWFnZUJhY2tpbmcoZ2JtX2Rl
dmljZSosIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5KTsKKyAgICAgICAgfkVHTElt
YWdlQmFja2luZygpOworCisgICAgICAgIGJvb2wgcmVzZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBib29sIGhhc0FscGhhKTsKKworICAgICAgICBFR0xJbWFnZSBpbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2U7IH0KKyAgICAgICAgaW50IGZkKCkgY29uc3QgeyByZXR1cm4gbV9GRDsgfQor
CisgICAgICAgIHVpbnQzMl90IGZvcm1hdCgpIGNvbnN0OworICAgICAgICB1aW50MzJfdCBzdHJp
ZGUoKSBjb25zdDsKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHJlbGVhc2VSZXNvdXJjZXMo
KTsKKworICAgICAgICBnYm1fZGV2aWNlKiBtX2RldmljZTsKKyAgICAgICAgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTERpc3BsYXkgbV9kaXNwbGF5OworCisgICAgICAgIGdibV9ibyogbV9CTyB7
IG51bGxwdHIgfTsKKyAgICAgICAgaW50IG1fRkQgeyAtMSB9OworICAgICAgICBFR0xJbWFnZSBt
X2ltYWdlIHsgRUdMX05PX0lNQUdFIH07CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxF
R0xJbWFnZUJhY2tpbmc+IG1fdGV4dHVyZUJhY2tpbmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVH
TEltYWdlQmFja2luZz4gbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmc7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZzsKICNl
bGlmIFVTRShURVhUVVJFX01BUFBFUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
ckdDR0xQbGF0Zm9ybUxheWVyPiBtX3RleG1hcExheWVyOwogI2VuZGlmCiAKICAgICBmcmllbmQg
Y2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7CiAjaWYgVVNFKE5JQ09TSUEpCisgICAgZnJpZW5kIGNs
YXNzIE5pY29zaWE6OkdDR0xBTkdMRVBpcGVTb3VyY2U7CiAgICAgZnJpZW5kIGNsYXNzIE5pY29z
aWE6OkdDR0xMYXllcjsKICNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICAgICBmcmllbmQgY2xh
c3MgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRleCA5YmI5MDA4
MjEyNzZjYjgwMWE4NGQ2NTZhY2E1ODNlYWI3MDFiODA2Li45YWFjNzQ2NjY4ZWY4OWNjNzk3N2Iy
NmJmYzYzZjYwMWM2NzQyMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAtMzY0LDYgKzM2NCwxOSBAQCBHTENv
bnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRl
eHQgY29udGV4dCwgRUdMU3VyZgogICAgIEFTU0VSVCh0eXBlID09IFN1cmZhY2VsZXNzIHx8IHN1
cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fZGlzcGxheS5l
Z2xEaXNwbGF5KCkgIT0gRUdMX05PX0RJU1BMQVkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRl
eHQgIT0gRUdMX05PX0NPTlRFWFQpOworCisgICAgaWYgKGRpc3BsYXkuZWdsQ2hlY2tWZXJzaW9u
KDEsIDUpKSB7CisgICAgICAgIG1fZWdsQ3JlYXRlSW1hZ2UgPSByZWludGVycHJldF9jYXN0PFBG
TkVHTENSRUFURUlNQUdFUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdlIikp
OworICAgICAgICBtX2VnbERlc3Ryb3lJbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMREVT
VFJPWUlNQUdFUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbERlc3Ryb3lJbWFnZSIpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZWdsQ3JlYXRlSW1hZ2UgPT0gIW1fZWdsRGVzdHJveUlt
YWdlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gZWds
UXVlcnlTdHJpbmcoZGlzcGxheS5lZ2xEaXNwbGF5KCksIEVHTF9FWFRFTlNJT05TKTsKKyAgICAg
ICAgaWYgKEdMQ29udGV4dDo6aXNFeHRlbnNpb25TdXBwb3J0ZWQoZXh0ZW5zaW9ucywgIkVHTF9L
SFJfaW1hZ2VfYmFzZSIpKSB7CisgICAgICAgICAgICBtX2VnbENyZWF0ZUltYWdlS0hSID0gcmVp
bnRlcnByZXRfY2FzdDxQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNz
KCJlZ2xDcmVhdGVJbWFnZUtIUiIpKTsKKyAgICAgICAgICAgIG1fZWdsRGVzdHJveUltYWdlS0hS
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9j
QWRkcmVzcygiZWdsRGVzdHJveUltYWdlS0hSIikpOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2VnbENyZWF0ZUltYWdlS0hSID09ICFtX2VnbERlc3Ryb3lJbWFnZUtIUik7
CisgICAgfQogfQogCiBHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQpAQCAtMzg2LDYgKzM5
OSwzMSBAQCBHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQogI2VuZGlmCiB9CiAKK0VHTElt
YWdlIEdMQ29udGV4dEVHTDo6Y3JlYXRlSW1hZ2UoRUdMZW51bSB0YXJnZXQsIEVHTENsaWVudEJ1
ZmZlciBjbGllbnRCdWZmZXIsIGNvbnN0IEVHTEF0dHJpYiogYXR0cmliTGlzdCkgY29uc3QKK3sK
KyAgICBpZiAobV9lZ2xDcmVhdGVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG1fZWdsQ3JlYXRlSW1h
Z2UobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgYXR0cmliTGlzdCA/IEVHTF9OT19DT05URVhUIDog
bV9jb250ZXh0LCB0YXJnZXQsIGNsaWVudEJ1ZmZlciwgYXR0cmliTGlzdCk7CisgICAgaWYgKG1f
ZWdsQ3JlYXRlSW1hZ2VLSFIpIHsKKyAgICAgICAgVmVjdG9yPEVHTGludD4gaW50QXR0cmliTGlz
dDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGF0dHJpYkxpc3RbaV0gIT0gRUdMX05PTkU7IGkg
Kz0gMikgeworICAgICAgICAgICAgaW50QXR0cmliTGlzdC5hcHBlbmQoYXR0cmliTGlzdFtpXSk7
CisgICAgICAgICAgICBpbnRBdHRyaWJMaXN0LmFwcGVuZChhdHRyaWJMaXN0W2krMV0pOworICAg
ICAgICB9CisgICAgICAgIGludEF0dHJpYkxpc3QuYXBwZW5kKEVHTF9OT05FKTsKKyAgICAgICAg
cmV0dXJuIG1fZWdsQ3JlYXRlSW1hZ2VLSFIobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgYXR0cmli
TGlzdCA/IEVHTF9OT19DT05URVhUIDogbV9jb250ZXh0LCB0YXJnZXQsIGNsaWVudEJ1ZmZlciwg
aW50QXR0cmliTGlzdC5kYXRhKCkpOworICAgIH0KKyAgICByZXR1cm4gRUdMX05PX0lNQUdFOwor
fQorCitib29sIEdMQ29udGV4dEVHTDo6ZGVzdHJveUltYWdlKEVHTEltYWdlIGltYWdlKSBjb25z
dAoreworICAgIGlmIChtX2VnbERlc3Ryb3lJbWFnZSkKKyAgICAgICAgcmV0dXJuIG1fZWdsRGVz
dHJveUltYWdlKG1fZGlzcGxheS5lZ2xEaXNwbGF5KCksIGltYWdlKTsKKyAgICBpZiAobV9lZ2xE
ZXN0cm95SW1hZ2VLSFIpCisgICAgICAgIHJldHVybiBtX2VnbERlc3Ryb3lJbWFnZUtIUihtX2Rp
c3BsYXkuZWdsRGlzcGxheSgpLCBpbWFnZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29s
IEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKQogewogICAgIHJl
dHVybiBtX3R5cGUgPT0gV2luZG93U3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCBlNWI5MzA1ODk4ZjQwODIy
MjZhZmY5NGNjNjMwYWExMTIwNjlkZGU5Li44MzlmYmQ5ZTI3YTMxNzEwZGQ1OTZhMzcxZTE1ODdh
NWVkNzk1OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0zNiwxMCArMzYsMjkgQEAgc3RydWN0IHdsX2VnbF93aW5k
b3c7CiBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsX29mZnNjcmVlbl90YXJnZXQ7CiAj
ZW5kaWYKIAordHlwZWRlZiBpbnRwdHJfdCBFR0xBdHRyaWI7Cit0eXBlZGVmIHVuc2lnbmVkIEVH
TEJvb2xlYW47Cit0eXBlZGVmIHZvaWQgKkVHTENsaWVudEJ1ZmZlcjsKIHR5cGVkZWYgdm9pZCAq
RUdMQ29uZmlnOwogdHlwZWRlZiB2b2lkICpFR0xDb250ZXh0OwogdHlwZWRlZiB2b2lkICpFR0xE
aXNwbGF5OwordHlwZWRlZiB2b2lkICpFR0xJbWFnZTsKK3R5cGVkZWYgdm9pZCAqRUdMSW1hZ2VL
SFI7CiB0eXBlZGVmIHZvaWQgKkVHTFN1cmZhY2U7Cit0eXBlZGVmIHVuc2lnbmVkIEVHTGVudW07
CisKKyNpZiAhZGVmaW5lZChQRk5FR0xDUkVBVEVJTUFHRVBST0MpCit0eXBlZGVmIEVHTEltYWdl
ICgqUEZORUdMQ1JFQVRFSU1BR0VQUk9DKSAoRUdMRGlzcGxheSwgRUdMQ29udGV4dCwgRUdMZW51
bSwgRUdMQ2xpZW50QnVmZmVyLCBjb25zdCBFR0xBdHRyaWIqKTsKKyNlbmRpZgorI2lmICFkZWZp
bmVkKFBGTkVHTERFU1RST1lJTUFHRVBST0MpCit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xE
RVNUUk9ZSU1BR0VQUk9DKSAoRUdMRGlzcGxheSwgRUdMSW1hZ2UpOworI2VuZGlmCisjaWYgIWRl
ZmluZWQoUEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DKQordHlwZWRlZiBFR0xJbWFnZUtIUiAoKlBG
TkVHTENSRUFURUlNQUdFS0hSUFJPQykgKEVHTERpc3BsYXksIEVHTENvbnRleHQsIEVHTGVudW0g
dGFyZ2V0LCBFR0xDbGllbnRCdWZmZXIsIGNvbnN0IEVHTGludCogYXR0cmliTGlzdCk7CisjZW5k
aWYKKyNpZiAhZGVmaW5lZChQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DKQordHlwZWRlZiBFR0xC
b29sZWFuICgqUEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQykgKEVHTERpc3BsYXksIEVHTEltYWdl
S0hSKTsKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDYgKzcyLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBsYXN0RXJyb3JTdHJpbmcoKTsKIAogICAg
IEVHTENvbmZpZyBjb25maWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZzsgfQorICAgIEVHTElt
YWdlIGNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LCBFR0xDbGllbnRCdWZmZXIsIGNvbnN0IEVH
TEF0dHJpYiopIGNvbnN0OworICAgIGJvb2wgZGVzdHJveUltYWdlKEVHTEltYWdlKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOwogCkBAIC0xMDYsNiArMTI3LDEwIEBAIHBy
aXZhdGU6CiAgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2UgeyBudWxscHRyIH07CiAgICAgRUdMQ29u
ZmlnIG1fY29uZmlnIHsgbnVsbHB0ciB9OwogICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKKyAg
ICBQRk5FR0xDUkVBVEVJTUFHRVBST0MgbV9lZ2xDcmVhdGVJbWFnZSB7IG51bGxwdHIgfTsKKyAg
ICBQRk5FR0xERVNUUk9ZSU1BR0VQUk9DIG1fZWdsRGVzdHJveUltYWdlIHsgbnVsbHB0ciB9Owor
ICAgIFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQyBtX2VnbENyZWF0ZUltYWdlS0hSIHsgbnVsbHB0
ciB9OworICAgIFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MgbV9lZ2xEZXN0cm95SW1hZ2VLSFIg
eyBudWxscHRyIH07CiAjaWYgUExBVEZPUk0oWDExKQogICAgIFhVbmlxdWVQaXhtYXAgbV9waXht
YXA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dibS9HQk1EZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2Jt
L0dCTURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE2ODM5ZWJmNmNkZWE4Njk5ZWZhMjIzYTAzMzE5
MTRlZGRkMTE4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAy
MiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R0JNRGV2aWNlLmgiCisKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQorCisjaW5jbHVk
ZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgorCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxn
Ym0uaD4KKyNpbmNsdWRlIDxtdXRleD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBH
Qk1EZXZpY2UmIEdCTURldmljZTo6Zm9yQ3VycmVudFRocmVhZCgpCit7CisgICAgcmV0dXJuIHRo
cmVhZEdsb2JhbERhdGEoKS5nYm1EZXZpY2UoKTsKK30KKworR0JNRGV2aWNlOjpHQk1EZXZpY2Uo
KQoreworICAgIGludCBmZDsKKyAgICBjaGFyIGRldmljZU5hbWVbMzBdOworICAgIGZvciAoaW50
IGkgPSAxMjg7IGkgPCAxOTI7ICsraSkgeworICAgICAgICBzbnByaW50ZihkZXZpY2VOYW1lLCBz
aXplb2YoZGV2aWNlTmFtZSksICIvZGV2L2RyaS9yZW5kZXJEJWQiLCBpKTsKKyAgICAgICAgZmQg
PSBvcGVuKGRldmljZU5hbWUsIE9fUkRXUiB8IE9fQ0xPRVhFQyk7CisgICAgICAgIGlmIChmZCA+
PSAwKSB7CisgICAgICAgICAgICBtX2RldmljZSA9IGdibV9jcmVhdGVfZGV2aWNlKGZkKTsKKyAg
ICAgICAgICAgIGlmIChtX2RldmljZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgfQorICAgIH0KK30KKworR0JNRGV2aWNlOjp+R0JNRGV2
aWNlKCkKK3sKKyAgICBpZiAobV9kZXZpY2UpIHsKKyAgICAgICAgZ2JtX2RldmljZV9kZXN0cm95
KG1fZGV2aWNlKTsKKyAgICAgICAgbV9kZXZpY2UgPSBudWxscHRyOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1E
ZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MDc5ZDY4OWY5MmIxMzI1NThmZmNlM2Y1YTY0MWQ4OWJiMTc2ZDA5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dC
TURldmljZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTWV0
cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEp
CisKK3N0cnVjdCBnYm1fZGV2aWNlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRo
cmVhZEdsb2JhbERhdGE7CisKK2NsYXNzIEdCTURldmljZSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoR0JNRGV2aWNlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdCBHQk1EZXZpY2UmIGZvckN1cnJlbnRUaHJlYWQoKTsKKworICAg
IEdCTURldmljZSgpOworICAgIH5HQk1EZXZpY2UoKTsKKworICAgIHN0cnVjdCBnYm1fZGV2aWNl
KiBkZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RldmljZTsgfQorCitwcml2YXRlOgorICAgIHN0
cnVjdCBnYm1fZGV2aWNlKiBtX2RldmljZSB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhR0NHTEFOR0xFUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFUGlwZS5jcHAKaW5kZXggNWEzOWQzZGFh
NjgxZGI5ZWNjZDBjNmY2ZDkzNzY2Mjg0MTBlMjFmZC4uNTFmNTdlMTE2ZjZjMDlmY2NjN2VmYjll
MDNiYTk2Y2UyMGZkYTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRVBpcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5H
TEVQaXBlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgotI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgiCiAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKQEAgLTU3LDYgKzU3LDI0
IEBAIHZvaWQgR0NHTEFOR0xFUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC5wcmVwYXJlVGV4dHVyZSgpOworCisgICAgaWYg
KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZykgeworICAgICAgICBhdXRvIHNp
emUgPSBtX2NvbnRleHQuZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAgICAgICAgYXV0
byBmb3JtYXQgPSBtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmZvcm1hdCgp
OworICAgICAgICBhdXRvIHN0cmlkZSA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFj
a2luZy0+c3RyaWRlKCk7CisgICAgICAgIGF1dG8gZmQgPSBtX2NvbnRleHQubV9jb21wb3NpdG9y
VGV4dHVyZUJhY2tpbmctPmZkKCk7CisKKyAgICAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxO
aWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4ocGxhdGZvcm1MYXllcigpLT5p
bXBsKCkpLnByb3h5KCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBw
cm94eS5sb2NrKCkgfTsKKyAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlx
dWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY+KHNpemUsIGZvcm1hdCwgc3RyaWRl
LCBmZCkpOworICAgICAgICB9CisKKyAgICAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZhbGxiYWNrIHBhdGgsIHJl
YWQgYmFjayB0ZXh0dXJlIHRvIG1haW4gbWVtb3J5CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCmluZGV4IGExZTFlODQ0OTkz
ZjBkMzRlMTM3M2RmNGI1M2I3NjExZDRiOTM4NmIuLjU4Y2E0NjE1OGZkMDcwOWI2YzgyNTE1MmEw
Y2VkODRiMGMzNzJjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzYsOSArMzYsMTMgQEAKICNpbmNsdWRlICJQaXhl
bEJ1ZmZlci5oIgogCiAjaWYgVVNFKE5JQ09TSUEpCisjaW5jbHVkZSAiR0JNRGV2aWNlLmgiCiAj
aW5jbHVkZSAiTmljb3NpYUdDR0xBTkdMRVBpcGUuaCIKKyNpbmNsdWRlICJnYm0uaCIKICNlbHNl
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgiCisKKyNpbmNsdWRl
IDxmY250bC5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDYgKzU1LDEz
IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpCiAjZW5kaWYKICNpZiBVU0UoTklDT1NJQSkKICAg
ICBtX25pY29zaWFQaXBlID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVQaXBlPigqdGhp
cyk7CisKKyAgICBhdXRvJiBnYm1EZXZpY2UgPSBHQk1EZXZpY2U6OmZvckN1cnJlbnRUaHJlYWQo
KTsKKyAgICBpZiAoYXV0byogZGV2aWNlID0gZ2JtRGV2aWNlLmRldmljZSgpKSB7CisgICAgICAg
IG1fdGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5pcXVlPEVHTEltYWdlQmFja2luZz4oZGV2aWNlLCBw
bGF0Zm9ybURpc3BsYXkoKSk7CisgICAgICAgIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nID0g
bWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KGRldmljZSwgcGxhdGZvcm1EaXNwbGF5KCkpOwor
ICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFn
ZUJhY2tpbmc+KGRldmljZSwgcGxhdGZvcm1EaXNwbGF5KCkpOworICAgIH0KICNlbHNlCiAgICAg
bV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVy
PigqdGhpcyk7CiAjZW5kaWYKQEAgLTExMiwxMSArMTIzLDg1IEBAIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpCiAgICAgR0xfQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKIH0KIAorI2lmIFVTRShOSUNP
U0lBKQorR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpFR0xJbWFnZUJh
Y2tpbmcoZ2JtX2RldmljZSogZGV2aWNlLCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxh
eSBkaXNwbGF5KQorICAgIDogbV9kZXZpY2UoZGV2aWNlKQorICAgICwgbV9kaXNwbGF5KGRpc3Bs
YXkpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6fkVH
TEltYWdlQmFja2luZygpCit7CisgICAgcmVsZWFzZVJlc291cmNlcygpOworfQorCit1aW50MzJf
dCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OmZvcm1hdCgpIGNvbnN0
Cit7CisgICAgaWYgKG1fQk8pCisgICAgICAgIHJldHVybiBnYm1fYm9fZ2V0X2Zvcm1hdChtX0JP
KTsKKyAgICByZXR1cm4gMDsKK30KKwordWludDMyX3QgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
RUdMSW1hZ2VCYWNraW5nOjpzdHJpZGUoKSBjb25zdAoreworICAgIGlmIChtX0JPKQorICAgICAg
ICByZXR1cm4gZ2JtX2JvX2dldF9zdHJpZGUobV9CTyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpyZWxlYXNlUmVzb3Vy
Y2VzKCkKK3sKKyAgICBpZiAobV9CTykgeworICAgICAgICBnYm1fYm9fZGVzdHJveShtX0JPKTsK
KyAgICAgICAgbV9CTyA9IG51bGxwdHI7CisgICAgfQorICAgIGlmIChtX2ltYWdlKSB7CisgICAg
ICAgIEVHTF9EZXN0cm95SW1hZ2VLSFIobV9kaXNwbGF5LCBtX2ltYWdlKTsKKyAgICAgICAgbV9p
bWFnZSA9IEVHTF9OT19JTUFHRTsKKyAgICB9CisgICAgaWYgKG1fRkQgPj0gMCkgeworICAgICAg
ICBjbG9zZShtX0ZEKTsKKyAgICAgICAgbV9GRCA9IC0xOworICAgIH0KK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJlc2V0KGludCB3aWR0aCwgaW50
IGhlaWdodCwgYm9vbCBoYXNBbHBoYSkKK3sKKyAgICByZWxlYXNlUmVzb3VyY2VzKCk7CisKKyAg
ICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
Qk8gPSBnYm1fYm9fY3JlYXRlKG1fZGV2aWNlLCB3aWR0aCwgaGVpZ2h0LCBoYXNBbHBoYSA/IEdC
TV9CT19GT1JNQVRfQVJHQjg4ODggOiBHQk1fQk9fRk9STUFUX1hSR0I4ODg4LCBHQk1fQk9fVVNF
X1JFTkRFUklORyk7CisgICAgaWYgKG1fQk8pIHsKKyAgICAgICAgbV9GRCA9IGdibV9ib19nZXRf
ZmQobV9CTyk7CisgICAgICAgIGlmIChtX0ZEID49IDApIHsKKyAgICAgICAgICAgIEVHTGludCBp
bWFnZUF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAgICAgICBFR0xfV0lEVEgsIHdpZHRoLAor
ICAgICAgICAgICAgICAgIEVHTF9IRUlHSFQsIGhlaWdodCwKKyAgICAgICAgICAgICAgICBFR0xf
TElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRpY19jYXN0PEVHTGludD4oZ2JtX2JvX2dldF9mb3Jt
YXQobV9CTykpLAorICAgICAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9GRF9FWFQsIG1f
RkQsCisgICAgICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX1BJVENIX0VYVCwgc3RhdGlj
X2Nhc3Q8RUdMaW50PihnYm1fYm9fZ2V0X3N0cmlkZShtX0JPKSksCisgICAgICAgICAgICAgICAg
RUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQsIDAsCisgICAgICAgICAgICAgICAgRUdMX05P
TkUKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBtX2ltYWdlID0gRUdMX0NyZWF0ZUltYWdl
S0hSKG1fZGlzcGxheSwgRUdMX05PX0NPTlRFWFQsIEVHTF9MSU5VWF9ETUFfQlVGX0VYVCwgKEVH
TENsaWVudEJ1ZmZlciludWxscHRyLCBpbWFnZUF0dHJpYnV0ZXMpOworICAgICAgICAgICAgaWYg
KG1faW1hZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZWxlYXNlUmVzb3VyY2VzKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xFKCkKIHsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1v
dmVDb250ZXh0KHRoaXMpOwogICAgIGJvb2wgc3VjY2VzcyA9IG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CisKICAgICBpZiAobV90ZXh0
dXJlKQogICAgICAgICBHTF9EZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKICNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCkBAIC0xODksMTggKzI3NCw0NCBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgR0x1aW50
IGNvbG9yRm9ybWF0ID0gYXR0cnMuYWxwaGEgPyBHTF9SR0JBIDogR0xfUkdCOwogICAgIEdMZW51
bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICAgICBHTHVp
bnQgaW50ZXJuYWxDb2xvckZvcm1hdCA9IHRleHR1cmVUYXJnZXQgPT0gR0xfVEVYVFVSRV8yRCA/
IGNvbG9yRm9ybWF0IDogbV9pbnRlcm5hbENvbG9yRm9ybWF0OworCisjaWYgVVNFKE5JQ09TSUEp
CisgICAgaWYgKG1fdGV4dHVyZUJhY2tpbmcpCisgICAgICAgIG1fdGV4dHVyZUJhY2tpbmctPnJl
c2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKKyAgICBpZiAobV9jb21wb3NpdG9yVGV4
dHVyZUJhY2tpbmcpCisgICAgICAgIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5yZXNldCh3
aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7CisgICAgaWYgKG1faW50ZXJtZWRpYXRlVGV4dHVy
ZUJhY2tpbmcpCisgICAgICAgIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPnJlc2V0KHdp
ZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKKyNlbmRpZgorCiAgICAgU2NvcGVkUmVzdG9yZVRl
eHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVl
cnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJl
VGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7CiAgICAgICAgIEdMX0JpbmRU
ZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOworI2lmIFVTRShOSUNP
U0lBKQorICAgICAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgJiYgbV9jb21wb3Np
dG9yVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCisgICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdl
dFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+
aW1hZ2UoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBHTF9UZXhJbWFnZTJEKHRl
eHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNv
bG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICAgICAgR0xfQmluZFRleHR1cmUo
dGV4dHVyZVRhcmdldCwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJQSkK
KyAgICAgICAgaWYgKG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcgJiYgbV9pbnRlcm1lZGlh
dGVUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkKKyAgICAgICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQsIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmct
PmltYWdlKCkpOworICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0
ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBj
b2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CiAgICAgfQogI2VuZGlmCiAgICAgR0xf
QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJQSkK
KyAgICBpZiAobV90ZXh0dXJlQmFja2luZyAmJiBtX3RleHR1cmVCYWNraW5nLT5pbWFnZSgpKQor
ICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX3Rl
eHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKKyAgICBlbHNlCisjZW5kaWYKICAgICBHTF9UZXhJbWFn
ZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICBHTF9GcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVU
YXJnZXQsIG1fdGV4dHVyZSwgMCk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaAppbmRleCBiZDRhODc1ZDdh
MTU5MTY3YzJlODljZTIwYjg1OWJiMGY4MGY3ZjM5Li45ZWU1ZjdjMGQwMDRiNGI0ODJkODY5MDlh
ZmFlZmJkMTFmYWZiZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcigpOwogCi0gICAgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGZsb2F0IG9wYWNpdHkgPSAxLjApIGZpbmFsOworICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBv
cGFjaXR5ID0gMS4wKSBvdmVycmlkZTsKIAogICAgIGJvb2wgY2FuUmV1c2VXaXRob3V0UmVzZXQo
Y29uc3QgSW50U2l6ZSYsIEdMaW50IGludGVybmFsRm9ybWF0KTsKICAgICBCaXRtYXBUZXh0dXJl
R0wmIHRleHR1cmVHTCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCpt
X3RleHR1cmUpOyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVubWFu
YWdlZEJ1ZmZlckRhdGFIb2xkZXIoc3RkOjp1bmlxdWVfcHRyPFVubWFuYWdlZEJ1ZmZlckRhdGFI
b2xkZXI+IGhvbGRlcikgeyBtX3VubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIgPSBXVEZNb3ZlKGhv
bGRlcik7IH0KICAgICB2b2lkIHNldEV4dHJhRmxhZ3MoVGV4dHVyZU1hcHBlckdMOjpGbGFncyBm
bGFncykgeyBtX2V4dHJhRmxhZ3MgPSBmbGFnczsgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBjbG9uZSgpOworICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBjbG9uZSgpOwog
CiAgICAgY2xhc3MgSG9sZVB1bmNoQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQoKTsKQEAgLTk3LDE0ICs5NywxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhvbGVQ
dW5jaENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SG9sZVB1bmNoQ2xpZW50PiYmIGNsaWVudCkgeyBt
X2hvbGVQdW5jaENsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogCi0gICAgY29uc3QgVGV4dHVy
ZVZhcmlhbnQmIHRleHR1cmVWYXJpYW50KCkgeyByZXR1cm4gbV92YXJpYW50OyB9CisgICAgY29u
c3QgVGV4dHVyZVZhcmlhbnQmIHRleHR1cmVWYXJpYW50KCkgY29uc3QgeyByZXR1cm4gbV92YXJp
YW50OyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKLXBy
aXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgVGV4dHVyZVZhcmlhbnQgbV92YXJpYW50OwogCitwcml2
YXRlOgogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgTW9ub3Rvbmlj
VGltZSBtX3RpbWVMYXN0VXNlZDsKIAotICAgIFRleHR1cmVWYXJpYW50IG1fdmFyaWFudDsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBHTGludCBtX2ludGVybmFsRm9ybWF0OwogICAgIFRleHR1
cmVNYXBwZXJHTDo6RmxhZ3MgbV9leHRyYUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1h
YnVmLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA4YzQ4YzU3NmRjZmQ5
YTVlOGJlNWZkOTIyYmRlYzMwYzdmYTNjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRt
YWJ1Zi5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTWV0
cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJEbWFidWYuaCIKKworI2lmIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCisK
KyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKworI2lmIFVTRShMSUJFUE9YWSkKKyNpbmNsdWRl
ICJFcG94eUVHTC5oIgorI2Vsc2UKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdM
L2VnbGV4dC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNyZWF0ZUZvdXJDQyhjaGFyIGEs
IGNoYXIgYiwgY2hhciBjLCBjaGFyIGQpCit7CisgICAgcmV0dXJuIHVpbnQzMl90KGEpIHwgKHVp
bnQzMl90KGIpIDw8IDgpIHwgKHVpbnQzMl90KGMpIDw8IDE2KSB8ICh1aW50MzJfdChkKSA8PCAy
NCk7Cit9CisKK3N0YXRpYyBHTGludCBmb3VyQ0NUb0dMRm9ybWF0KHVpbnQzMl90IGZvcm1hdCkK
K3sKKyAgICBBU1NFUlQoKGZvcm1hdCA9PSBjcmVhdGVGb3VyQ0MoJ1gnLCAnUicsICcyJywgJzQn
KSkgfHwgKGZvcm1hdCA9PSBjcmVhdGVGb3VyQ0MoJ0EnLCAnUicsICcyJywgJzQnKSkpOworICAg
IHJldHVybiAoZm9ybWF0ID09IGNyZWF0ZUZvdXJDQygnQScsICdSJywgJzInLCAnNCcpKSA/IEdM
X1JHQkEgOiBHTF9SR0I7Cit9CisKK3N0YXRpYyBib29sIGZvcm1hdEhhc0FscGhhKHVpbnQzMl90
IGZvcm1hdCkKK3sKKyAgICBBU1NFUlQoKGZvcm1hdCA9PSBjcmVhdGVGb3VyQ0MoJ1gnLCAnUics
ICcyJywgJzQnKSkgfHwgKGZvcm1hdCA9PSBjcmVhdGVGb3VyQ0MoJ0EnLCAnUicsICcyJywgJzQn
KSkpOworICAgIHJldHVybiAoZm9ybWF0ID09IGNyZWF0ZUZvdXJDQygnQScsICdSJywgJzInLCAn
NCcpKSA/IHRydWUgOiBmYWxzZTsKK30KKworVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFi
dWY6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmKGNvbnN0IEludFNpemUmIHNpemUs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qgc3RyaWRlLCBpbnQgZmQpCisgICAgOiBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcih7IFJHQlRleHR1cmUgeyAwIH0gfSwgc2l6ZSwgVGV4
dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChmb3JtYXRIYXNBbHBoYShmb3JtYXQp
ID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApLCBmb3VyQ0NUb0dMRm9ybWF0KGZv
cm1hdCkpCisgICAgLCBtX2Zvcm1hdChmb3JtYXQpCisgICAgLCBtX3N0cmlkZShzdHJpZGUpCisg
ICAgLCBtX2ZkKGR1cChmZCkpCit7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1h
YnVmOjp+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWYoKQoreworICAgIEFTU0VSVChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJHQlRleHR1cmU+KG1fdmFyaWFudCkpOworICAgIGF1dG8m
IHRleHR1cmUgPSBzdGQ6OmdldDxSR0JUZXh0dXJlPihtX3ZhcmlhbnQpOworICAgIGlmICh0ZXh0
dXJlLmlkKQorICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlLmlkKTsKKyAgICBj
bG9zZShtX2ZkKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6
dmFsaWRhdGVUZXh0dXJlKCkKK3sKKyAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
R0JUZXh0dXJlPihtX3ZhcmlhbnQpKTsKKyAgICBhdXRvJiB0ZXh0dXJlID0gc3RkOjpnZXQ8UkdC
VGV4dHVyZT4obV92YXJpYW50KTsKKyAgICBpZiAodGV4dHVyZS5pZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byogY29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgIEFTU0VS
VChjb250ZXh0LT5pc0VHTENvbnRleHQoKSk7CisKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKTsKKworICAgIGF1dG8gc2l6ZSA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyOjpzaXplKCk7CisgICAgRUdMQXR0cmliIGltYWdlQXR0cmlidXRlc1tdID0geworICAgICAg
ICBFR0xfV0lEVEgsIHNpemUud2lkdGgoKSwKKyAgICAgICAgRUdMX0hFSUdIVCwgc2l6ZS5oZWln
aHQoKSwKKyAgICAgICAgRUdMX0xJTlVYX0RSTV9GT1VSQ0NfRVhULCBzdGF0aWNfY2FzdDxFR0xB
dHRyaWI+KG1fZm9ybWF0KSwKKyAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgbV9m
ZCwKKyAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX1BJVENIX0VYVCwgc3RhdGljX2Nhc3Q8RUdM
QXR0cmliPihtX3N0cmlkZSksCisgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9PRkZTRVRfRVhU
LCAwLAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisgICAgYXV0byBpbWFnZSA9IGRvd25jYXN0
PEdMQ29udGV4dEVHTD4oKmNvbnRleHQpLmNyZWF0ZUltYWdlKEVHTF9MSU5VWF9ETUFfQlVGX0VY
VCwgKEVHTENsaWVudEJ1ZmZlciludWxscHRyLCBpbWFnZUF0dHJpYnV0ZXMpOworICAgIGlmICgh
aW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUu
aWQpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS5pZCk7CisgICAg
Z2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTF9URVhUVVJFXzJELCBpbWFnZSk7CisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xf
TElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9MSU5FQVIpOworCisgICAgUkVMRUFTRV9BU1NFUlQoZG93bmNhc3Q8R0xD
b250ZXh0RUdMPigqY29udGV4dCkuZGVzdHJveUltYWdlKGltYWdlKSk7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkK
K3sKKyAgICB2YWxpZGF0ZVRleHR1cmUoKTsKKyAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwg
bW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1
Zjo6Y2xvbmUoKQoreworICAgIHZhbGlkYXRlVGV4dHVyZSgpOworICAgIHJldHVybiBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckRtYWJ1Zi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUz
YTIwZjkzZjlmYWFjODk5YWFkMjA0Y2IwZDcyZDE2MzM3YjVjZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckRtYWJ1Zi5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBTkdMRSkgJiYgVVNF
KE5JQ09TSUEpCisKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyRG1hYnVmIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zik7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKK3B1YmxpYzoKKyAgICBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckRtYWJ1Zihjb25zdCBJbnRTaXplJiwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCBzdHJpZGUsIGludCBmZCk7CisKKyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckRtYWJ1ZigpOworCitwcml2YXRlOgorICAgIHZvaWQgdmFsaWRhdGVUZXh0dXJl
KCk7CisKKyAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
LCBmbG9hdCBvcGFjaXR5KSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+IGNsb25lKCkgZmluYWw7CisKKyAgICB1aW50MzJfdCBtX2Zv
cm1hdDsKKyAgICB1aW50MzJfdCBtX3N0cmlkZTsKKyAgICBpbnQgbV9mZDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEp
Cg==
</data>
<flag name="commit-queue"
          id="477269"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450767</attachid>
            <date>2022-02-03 05:43:31 -0800</date>
            <delta_ts>2022-02-03 06:58:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235946-20220203134330.patch</filename>
            <type>text/plain</type>
            <size>42838</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg1MGI0ZGVjMzRmMGRl
Yzc2MGY0ZmI3Yjc4ZTJkNTQzZjUxNTI5My4uYWY0M2E3MDZjNjE2YTI1NDg4NjI0NzIwZjY0MGI3
M2YxZGQwYWZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAyLTAxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSBkbWFi
dWYgd2hlbiBwb3NzaWJsZSB0byB0cmFuc2ZlciBBTkdMRSByZW5kZXJpbmcgdG8gdGhlIGNvbXBv
c2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBkbWFidWYgd2hlbiBhdmFpbGFibGUgdG8gdHJhbnNmZXIgQU5HTEUgV2ViR0wgcmVuZGVyaW5n
IGNvbnRlbnRzCisgICAgICAgIHRvIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsu
dHh0OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplR2JtRGV2aWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpnYm1EZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVPcGVu
R0xTaGltcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnByZXBhcmVUZXh0
dXJlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVJbWFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlc3Ryb3lJbWFnZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdCTURldmljZTo6Zm9yQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpHQk1EZXZp
Y2U6OkdCTURldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHQk1EZXZpY2U6On5HQk1EZXZpY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHQk1EZXZpY2U6OmRldmljZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRVBpcGUuY3BwOgor
ICAgICAgICAoTmljb3NpYTo6R0NHTEFOR0xFUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpFR0xJbWFnZUJhY2tpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5n
Ojp+RUdMSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OkVHTEltYWdlQmFja2luZzo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6c3RyaWRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2lu
Zzo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xFKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2lu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6dGV4dHVyZVZhcmlhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnRleHR1cmVWYXJpYW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZv
dXJDQ1RvR0xGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0SGFzQWxwaGEpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmKToKKyAgICAgICAgKFdlYkNvcmU6Om1fZmQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6On5UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6dmFsaWRhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmOjpwYWludFRvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6
Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckRtYWJ1Zi5oOiBBZGRlZC4KKwogMjAyMi0wMi0wMyAgQ2hyaXMgTG9yZCAg
PGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIHNwZWNpYWxpemUgdHlwZSB0cmFpdHMg
dG8gR0xDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDI5ZTJiNzhmNGQyNmI1
ZjY2YzIzN2ZmMDRmNGM3Nzk4MzA2NDNjOWUuLmJkNzZhMDkyMjY4MDYwMWQ0OWYxNzExYzk1MjVk
MDUwZmY2NDU5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yNiw2ICsyNiw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgi
CisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2dibSIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggY2ZiZmU0ZjY2ZGJj
MzM5ZTY4MTc5ZjRjZWI0OGEwMmMzYzEyMjkyNi4uYmU1YzMwNDdmZTU1ODNlZWU1ZWExNTE2MGRk
Yzk5NmNhOGYzZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTIzLDYgKzIzLDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ2xpYiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9l
cG94eSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lciIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dU
Sy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCAxZWI1MDU3ZmFjNjZl
MGVkZWZiM2U3M2JhZjE3OTJlYTAxZDRhMTU4Li5hMzcwZjQyZWY1MWJiMzBiMzVjNDQ2NmIwZTUy
YWIxMGQ2OWU0OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtMTAxLDYgKzEwMSw4IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAgQG5vLXVuaWZ5CiAKK3BsYXRm
b3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwCisKIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9H
TENvbnRleHRHTFguY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc1dQRS50eHQKaW5kZXggZmQwNThlOGY2MTRlZGJhNzBmZDBkMTA0Mjg1ODY0ZTc2OGVj
ZWI1ZC4uNWZlMzY4MjVmYjM3NTA0N2I3NTFhZjMyY2E2ODA5MTFlNGJhZWYwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc1dQRS50eHQKQEAgLTcyLDYgKzcyLDggQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1E
aXNwbGF5LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwCiAKK3BsYXRmb3JtL2dyYXBo
aWNzL2dibS9HQk1EZXZpY2UuY3BwCisKIHBsYXRmb3JtL2dyYXBoaWNzL2xpYndwZS9QbGF0Zm9y
bURpc3BsYXlMaWJXUEUuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4
dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIu
Y21ha2UKaW5kZXggNDNiYjc3YTVhNjViNGUyYmQ1Y2RmNWQwNzQ5NjRjYWUyYzQ5YmI2NS4uMmYx
NjlmNDM2MGM3YmRiYTVhNjgzOTc2OWIyY2QzMDRiNTEwNGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC01OSw2ICs1OSw3IEBAIGlmIChVU0Vf
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCiAKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApp
bmRleCA2MTNmYjliMGNlMjE1ZTNiYWQ1ZDUwMDI0MzkyM2ZlMmY2M2M3NmY1Li43NDdhYzcxNDFk
NjFlMDY5NDgwODZhN2RmNjQ3NzFhOTcwZmQ5M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCisjaWYg
VVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKKyNpbmNsdWRlICJHQk1EZXZpY2UuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2Jh
bERhdGEoKQpAQCAtMTQ2LDYgKzE1MCwxNCBAQCB2b2lkIFRocmVhZEdsb2JhbERhdGE6OmluaXRp
YWxpemVGb250Q2FjaGUoKQogICAgIG1fZm9udENhY2hlID0gbWFrZVVuaXF1ZTxGb250Q2FjaGU+
KCk7CiB9CiAKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQordm9pZCBUaHJlYWRHbG9i
YWxEYXRhOjppbml0aWFsaXplR2JtRGV2aWNlKCkKK3sKKyAgICBBU1NFUlQoIW1fZ2JtRGV2aWNl
KTsKKyAgICBtX2dibURldmljZSA9IG1ha2VVbmlxdWU8R0JNRGV2aWNlPigpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFBBTCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKaW5kZXggZGJkZmIxNGU1YjAwZjZhNzc4
ZDhlN2MxOGZkNWE0OTZkMzk1YTcwNC4uMTFkZGU3ZDczZTNlZWFhNmFiZDk2MTU5ZDVkMTVkOGM1
MTYwYzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaApA
QCAtMzgsNiArMzgsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udENhY2hlOworY2xhc3MgR0JNRGV2aWNlOwogY2xhc3MgUXVhbGlmaWVk
TmFtZUNhY2hlOwogY2xhc3MgVGhyZWFkVGltZXJzOwogCkBAIC0xMDQsMTIgKzEwNSwyNSBAQCBw
dWJsaWM6CiAKICAgICBGb250Q2FjaGUqIGZvbnRDYWNoZUlmTm90RGVzdHJveWVkKCkgeyByZXR1
cm4gbV9kZXN0cm95ZWQgPyBudWxscHRyIDogJmZvbnRDYWNoZSgpOyB9CiAKKyNpZiBVU0UoQU5H
TEUpICYmIFVTRShOSUNPU0lBKQorICAgIEdCTURldmljZSYgZ2JtRGV2aWNlKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fZ2Jt
RGV2aWNlKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVHYm1EZXZpY2UoKTsKKyAgICAgICAgcmV0
dXJuICptX2dibURldmljZTsKKyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluaXRpYWxpemVDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplRXZlbnROYW1lcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVF1YWxpZmllZE5hbWVDYWNoZSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZU1pbWVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxE
YXRhKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplRm9udENhY2hlKCk7Cisj
aWYgVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemVHYm1EZXZpY2UoKTsKKyNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9yczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gbV9ldmVudE5hbWVzOwpAQCAt
MTE4LDYgKzEzMiw5IEBAIHByaXZhdGU6CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbV9jdXJy
ZW50U3RhdGUgeyBudWxscHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1JTUVUeXBlUmVnaXN0
cnlUaHJlYWRHbG9iYWxEYXRhPiBtX01JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FjaGU+IG1fZm9udENhY2hlOworI2lmIFVTRShBTkdM
RSkgJiYgVVNFKE5JQ09TSUEpCisgICAgc3RkOjp1bmlxdWVfcHRyPEdCTURldmljZT4gbV9nYm1E
ZXZpY2U7CisjZW5kaWYKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1faXNNYWluVGhyZWFk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hp
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3Bw
CmluZGV4IDkwYjk4MDg1Y2I4N2UzNjAxMTY5ZmYxMzM5NjNmOWEwMDMxYmQ2OGIuLmI0MjUxMmU5
ZTdlNjZkOTE0N2JmZjk3ZjUyYzI4MmQ2ODVhM2E5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAKQEAgLTE0Myw2ICsxNDMsNyBAQCBi
b29sIGluaXRpYWxpemVPcGVuR0xTaGltcygpCiAgICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VO
VFJZKGdsRHJhd0J1ZmZlcnMsIHN1Y2Nlc3MpOwogICAgIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9F
TlRSWShnbERyYXdFbGVtZW50c0luc3RhbmNlZCwgc3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNU
SU9OX1RBQkxFX0VOVFJZKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXksIHN1Y2Nlc3MpOworICAg
IEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VT
LCBzdWNjZXNzKTsKICAgICBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlciwgc3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZ
KGdsRnJhbWVidWZmZXJUZXh0dXJlMkQsIHN1Y2Nlc3MpOwogICAgIEFTU0lHTl9GVU5DVElPTl9U
QUJMRV9FTlRSWShnbEdlbkJ1ZmZlcnMsIHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKaW5kZXggNGMzNTdkZGU5ODFmMTM2ZjA1OGQ4
ODM3MDc4YzQxMzBkNjBkNmE2NS4uN2IxOTRiMmE2YzI2ZWY1ZTdmNjE0MjEwOTdkNjYwZDkyM2Iz
MWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdM
U2hpbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGlt
cy5oCkBAIC03OCw2ICs3OCw3IEBAIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRS
WSAqZ2xEcmF3QXJyYXlzSW5zdGFuY2VkVHlwZSkgKEdMZW51bSwgR0xpbnQsIEdMc2l6ZWksIEdM
c2l6ZWkpOwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbERyYXdCdWZmZXJzVHlwZSkgKEdM
c2l6ZWksIGNvbnN0IEdMZW51bSopOwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbERyYXdF
bGVtZW50c0luc3RhbmNlZFR5cGUpIChHTGVudW0sIEdMc2l6ZWksIEdMZW51bSwgY29uc3QgR0x2
b2lkKiwgR0xzaXplaSk7Cit0eXBlZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVNUeXBlKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyk7CiB0eXBl
ZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1
aW50KTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
clR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQpOwogdHlwZWRlZiB2b2lkIChH
TEFQSUVOVFJZICpnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBH
TGVudW0sIEdMdWludCwgR0xpbnQpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHR5cGVkZWYgc3RydWN0
IF9PcGVuR0xGdW5jdGlvblRhYmxlIHsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbERyYXdB
cnJheXNJbnN0YW5jZWQpOwogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRHJhd0J1ZmZlcnMp
OwogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkKTsKKyAg
ICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKTsKICAg
ICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKICAgICBG
VU5DVElPTl9UQUJMRV9FTlRSWShnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTsKICAgICBGVU5D
VElPTl9UQUJMRV9FTlRSWShnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKQEAgLTMwNiw2ICszMDgs
NyBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJsZSB7CiAjZGVmaW5lIGdsRHJh
d0J1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERy
YXdCdWZmZXJzKQogI2RlZmluZSBnbERyYXdFbGVtZW50c0luc3RhbmNlZEVYVCAgICAgICAgICAg
ICBnbERyYXdFbGVtZW50c0luc3RhbmNlZAogI2RlZmluZSBnbERyYXdFbGVtZW50c0luc3RhbmNl
ZCAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEcmF3RWxlbWVudHNJbnN0YW5j
ZWQpCisjZGVmaW5lIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMgICAgICAgICAgIExPT0tV
UF9HTF9GVU5DVElPTihnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKQogI2RlZmluZSBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSkKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
ckVYVCAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcgogI2RlZmluZSBnbEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5k
ZXggNmQxMDY2YTViOTVhNDAxZTY4OTQ1MGRlZWM1NDVkN2FkMWU3NDJjMy4uOTI1NDNlNmE2YjM3
OTk4NTdjZmI4NmI5YzYzYWYxZTQzNGRmOTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKQEAgLTU0MSwxNCArNTQxLDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6cHJlcGFyZVRleHR1cmVJbXBsKCkKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAg
ICAgc3RkOjpzd2FwKG1fdGV4dHVyZSwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgc3RkOjpz
d2FwKG1fdGV4dHVyZSwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJQSkK
KyAgICBzdGQ6OnN3YXAobV90ZXh0dXJlQmFja2luZywgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tp
bmcpOworICAgIHN0ZDo6c3dhcChtX3RleHR1cmVCYWNraW5nLCBtX2ludGVybWVkaWF0ZVRleHR1
cmVCYWNraW5nKTsKKyNlbmRpZgogICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbV9mYm8pOwotICAgIEdMX0ZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIG1fdGV4dHVy
ZSwgMCk7CisgICAgR0xfRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpLCBtX3RleHR1cmUs
IDApOwogICAgIEdMX0ZsdXNoKCk7CiAKICAgICBpZiAobV9zdGF0ZS5ib3VuZERyYXdGQk8gIT0g
bV9mYm8pCiAgICAgICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVIsIG1fc3RhdGUuYm91bmREcmF3RkJPKTsKLSAgICBlbHNlCi0gICAgICAgIEdMX0Jp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICNl
bHNlCiAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVyZSkgewogICAgICAgICAv
LyBCbGl0IG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVyZSBpbnRvIG1fdGV4dHVyZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBjYTg3MmFlNThjZGE1MWExNjU5MjFiYzUw
OTJiNTdjMjEwMzM4ZDQ4Li4yMWI5NGMxNjlhNTEyZTg5ODZmZDBiYWMwMjc1MGMzZTU2MzA1NDhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC00MywxNCArNDMsMTkgQEAKICNp
ZiBVU0UoTklDT1NJQSkKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIGNsYXNzIEdDR0xBTkdMRVBpcGU7
CitjbGFzcyBHQ0dMQU5HTEVQaXBlU291cmNlOwogY2xhc3MgR0NHTExheWVyOwogfQorCitzdHJ1
Y3QgZ2JtX2RldmljZTsKK3N0cnVjdCBnYm1fYm87CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBFeHRlbnNpb25zR0w7CiBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKK2Ns
YXNzIEdMQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNs
YXNzIE1lZGlhUGxheWVyOwpAQCAtNDUwLDE3ICs0NTUsNDIgQEAgcHJvdGVjdGVkOgogICAgIEdD
R0x1aW50IG1faW50ZXJtZWRpYXRlVGV4dHVyZSB7IDAgfTsKICNlbmRpZgogI2lmIFVTRShOSUNP
U0lBKQotI2lmIFVTRShBTkdMRSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6R0NHTEFO
R0xFUGlwZT4gbV9uaWNvc2lhUGlwZTsKLSNlbHNlCi0gICAgc3RkOjp1bmlxdWVfcHRyPE5pY29z
aWE6OkdDR0xMYXllcj4gbV9uaWNvc2lhTGF5ZXI7Ci0jZW5kaWYKKworICAgIGNsYXNzIEVHTElt
YWdlQmFja2luZyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICBFR0xJbWFnZUJhY2tpbmcoZ2JtX2RldmljZSosIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0xEaXNwbGF5KTsKKyAgICAgICAgfkVHTEltYWdlQmFja2luZygpOworCisgICAgICAgIGJv
b2wgcmVzZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIGhhc0FscGhhKTsKKworICAgICAg
ICBFR0xJbWFnZSBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICAgICAgaW50
IGZkKCkgY29uc3QgeyByZXR1cm4gbV9GRDsgfQorCisgICAgICAgIHVpbnQzMl90IGZvcm1hdCgp
IGNvbnN0OworICAgICAgICB1aW50MzJfdCBzdHJpZGUoKSBjb25zdDsKKyAgICBwcml2YXRlOgor
ICAgICAgICB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKKworICAgICAgICBnYm1fZGV2aWNlKiBt
X2RldmljZTsKKyAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgbV9kaXNw
bGF5OworCisgICAgICAgIGdibV9ibyogbV9CTyB7IG51bGxwdHIgfTsKKyAgICAgICAgaW50IG1f
RkQgeyAtMSB9OworICAgICAgICBFR0xJbWFnZSBtX2ltYWdlIHsgRUdMX05PX0lNQUdFIH07Cisg
ICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxFR0xJbWFnZUJhY2tpbmc+IG1fdGV4dHVyZUJh
Y2tpbmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV9jb21wb3NpdG9y
VGV4dHVyZUJhY2tpbmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV9p
bnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZzsKICNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyPiBtX3RleG1h
cExheWVyOwogI2VuZGlmCiAKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7CiAj
aWYgVVNFKE5JQ09TSUEpCisgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xBTkdMRVBpcGVT
b3VyY2U7CiAgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xMYXllcjsKICNlbGlmIFVTRShU
RVhUVVJFX01BUFBFUikKICAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9y
bUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmNwcAppbmRleCA5YmI5MDA4MjEyNzZjYjgwMWE4NGQ2NTZhY2E1ODNlYWI3
MDFiODA2Li45YWFjNzQ2NjY4ZWY4OWNjNzk3N2IyNmJmYzYzZjYwMWM2NzQyMGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
LmNwcApAQCAtMzY0LDYgKzM2NCwxOSBAQCBHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0
Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZgogICAgIEFT
U0VSVCh0eXBlID09IFN1cmZhY2VsZXNzIHx8IHN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZGlzcGxheS5lZ2xEaXNwbGF5KCkgIT0gRUdMX05PX0RJU1BM
QVkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpOworCisg
ICAgaWYgKGRpc3BsYXkuZWdsQ2hlY2tWZXJzaW9uKDEsIDUpKSB7CisgICAgICAgIG1fZWdsQ3Jl
YXRlSW1hZ2UgPSByZWludGVycHJldF9jYXN0PFBGTkVHTENSRUFURUlNQUdFUFJPQz4oZWdsR2V0
UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdlIikpOworICAgICAgICBtX2VnbERlc3Ryb3lJbWFn
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMREVTVFJPWUlNQUdFUFJPQz4oZWdsR2V0UHJvY0Fk
ZHJlc3MoImVnbERlc3Ryb3lJbWFnZSIpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZWds
Q3JlYXRlSW1hZ2UgPT0gIW1fZWdsRGVzdHJveUltYWdlKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gZWdsUXVlcnlTdHJpbmcoZGlzcGxheS5lZ2xEaXNw
bGF5KCksIEVHTF9FWFRFTlNJT05TKTsKKyAgICAgICAgaWYgKEdMQ29udGV4dDo6aXNFeHRlbnNp
b25TdXBwb3J0ZWQoZXh0ZW5zaW9ucywgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpKSB7CisgICAgICAg
ICAgICBtX2VnbENyZWF0ZUltYWdlS0hSID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xDUkVBVEVJ
TUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZUtIUiIpKTsKKyAg
ICAgICAgICAgIG1fZWdsRGVzdHJveUltYWdlS0hSID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xE
RVNUUk9ZSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlS0hS
IikpOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2VnbENyZWF0ZUltYWdl
S0hSID09ICFtX2VnbERlc3Ryb3lJbWFnZUtIUik7CisgICAgfQogfQogCiBHTENvbnRleHRFR0w6
On5HTENvbnRleHRFR0woKQpAQCAtMzg2LDYgKzM5OSwzMSBAQCBHTENvbnRleHRFR0w6On5HTENv
bnRleHRFR0woKQogI2VuZGlmCiB9CiAKK0VHTEltYWdlIEdMQ29udGV4dEVHTDo6Y3JlYXRlSW1h
Z2UoRUdMZW51bSB0YXJnZXQsIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsIGNvbnN0IEVH
TEF0dHJpYiogYXR0cmliTGlzdCkgY29uc3QKK3sKKyAgICBpZiAobV9lZ2xDcmVhdGVJbWFnZSkK
KyAgICAgICAgcmV0dXJuIG1fZWdsQ3JlYXRlSW1hZ2UobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwg
YXR0cmliTGlzdCA/IEVHTF9OT19DT05URVhUIDogbV9jb250ZXh0LCB0YXJnZXQsIGNsaWVudEJ1
ZmZlciwgYXR0cmliTGlzdCk7CisgICAgaWYgKG1fZWdsQ3JlYXRlSW1hZ2VLSFIpIHsKKyAgICAg
ICAgVmVjdG9yPEVHTGludD4gaW50QXR0cmliTGlzdDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGF0dHJpYkxpc3RbaV0gIT0gRUdMX05PTkU7IGkgKz0gMikgeworICAgICAgICAgICAgaW50QXR0
cmliTGlzdC5hcHBlbmQoYXR0cmliTGlzdFtpXSk7CisgICAgICAgICAgICBpbnRBdHRyaWJMaXN0
LmFwcGVuZChhdHRyaWJMaXN0W2krMV0pOworICAgICAgICB9CisgICAgICAgIGludEF0dHJpYkxp
c3QuYXBwZW5kKEVHTF9OT05FKTsKKyAgICAgICAgcmV0dXJuIG1fZWdsQ3JlYXRlSW1hZ2VLSFIo
bV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgYXR0cmliTGlzdCA/IEVHTF9OT19DT05URVhUIDogbV9j
b250ZXh0LCB0YXJnZXQsIGNsaWVudEJ1ZmZlciwgaW50QXR0cmliTGlzdC5kYXRhKCkpOworICAg
IH0KKyAgICByZXR1cm4gRUdMX05PX0lNQUdFOworfQorCitib29sIEdMQ29udGV4dEVHTDo6ZGVz
dHJveUltYWdlKEVHTEltYWdlIGltYWdlKSBjb25zdAoreworICAgIGlmIChtX2VnbERlc3Ryb3lJ
bWFnZSkKKyAgICAgICAgcmV0dXJuIG1fZWdsRGVzdHJveUltYWdlKG1fZGlzcGxheS5lZ2xEaXNw
bGF5KCksIGltYWdlKTsKKyAgICBpZiAobV9lZ2xEZXN0cm95SW1hZ2VLSFIpCisgICAgICAgIHJl
dHVybiBtX2VnbERlc3Ryb3lJbWFnZUtIUihtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBpbWFnZSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9E
ZWZhdWx0RnJhbWVidWZmZXIoKQogewogICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93U3VyZmFj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuaAppbmRleCBlNWI5MzA1ODk4ZjQwODIyMjZhZmY5NGNjNjMwYWExMTIwNjlkZGU5Li44
MzlmYmQ5ZTI3YTMxNzEwZGQ1OTZhMzcxZTE1ODdhNWVkNzk1OTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0zNiwx
MCArMzYsMjkgQEAgc3RydWN0IHdsX2VnbF93aW5kb3c7CiBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2Jh
Y2tlbmRfZWdsX29mZnNjcmVlbl90YXJnZXQ7CiAjZW5kaWYKIAordHlwZWRlZiBpbnRwdHJfdCBF
R0xBdHRyaWI7Cit0eXBlZGVmIHVuc2lnbmVkIEVHTEJvb2xlYW47Cit0eXBlZGVmIHZvaWQgKkVH
TENsaWVudEJ1ZmZlcjsKIHR5cGVkZWYgdm9pZCAqRUdMQ29uZmlnOwogdHlwZWRlZiB2b2lkICpF
R0xDb250ZXh0OwogdHlwZWRlZiB2b2lkICpFR0xEaXNwbGF5OwordHlwZWRlZiB2b2lkICpFR0xJ
bWFnZTsKK3R5cGVkZWYgdm9pZCAqRUdMSW1hZ2VLSFI7CiB0eXBlZGVmIHZvaWQgKkVHTFN1cmZh
Y2U7Cit0eXBlZGVmIHVuc2lnbmVkIEVHTGVudW07CisKKyNpZiAhZGVmaW5lZChQRk5FR0xDUkVB
VEVJTUFHRVBST0MpCit0eXBlZGVmIEVHTEltYWdlICgqUEZORUdMQ1JFQVRFSU1BR0VQUk9DKSAo
RUdMRGlzcGxheSwgRUdMQ29udGV4dCwgRUdMZW51bSwgRUdMQ2xpZW50QnVmZmVyLCBjb25zdCBF
R0xBdHRyaWIqKTsKKyNlbmRpZgorI2lmICFkZWZpbmVkKFBGTkVHTERFU1RST1lJTUFHRVBST0Mp
Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xERVNUUk9ZSU1BR0VQUk9DKSAoRUdMRGlzcGxh
eSwgRUdMSW1hZ2UpOworI2VuZGlmCisjaWYgIWRlZmluZWQoUEZORUdMQ1JFQVRFSU1BR0VLSFJQ
Uk9DKQordHlwZWRlZiBFR0xJbWFnZUtIUiAoKlBGTkVHTENSRUFURUlNQUdFS0hSUFJPQykgKEVH
TERpc3BsYXksIEVHTENvbnRleHQsIEVHTGVudW0gdGFyZ2V0LCBFR0xDbGllbnRCdWZmZXIsIGNv
bnN0IEVHTGludCogYXR0cmliTGlzdCk7CisjZW5kaWYKKyNpZiAhZGVmaW5lZChQRk5FR0xERVNU
Uk9ZSU1BR0VLSFJQUk9DKQordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMREVTVFJPWUlNQUdF
S0hSUFJPQykgKEVHTERpc3BsYXksIEVHTEltYWdlS0hSKTsKKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTUzLDYgKzcyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBsYXN0RXJyb3JTdHJpbmcoKTsKIAogICAgIEVHTENvbmZpZyBjb25maWcoKSBjb25zdCB7
IHJldHVybiBtX2NvbmZpZzsgfQorICAgIEVHTEltYWdlIGNyZWF0ZUltYWdlKEVHTGVudW0gdGFy
Z2V0LCBFR0xDbGllbnRCdWZmZXIsIGNvbnN0IEVHTEF0dHJpYiopIGNvbnN0OworICAgIGJvb2wg
ZGVzdHJveUltYWdlKEVHTEltYWdlKSBjb25zdDsKIAogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVH
TCgpOwogCkBAIC0xMDYsNiArMTI3LDEwIEBAIHByaXZhdGU6CiAgICAgRUdMU3VyZmFjZSBtX3N1
cmZhY2UgeyBudWxscHRyIH07CiAgICAgRUdMQ29uZmlnIG1fY29uZmlnIHsgbnVsbHB0ciB9Owog
ICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKKyAgICBQRk5FR0xDUkVBVEVJTUFHRVBST0MgbV9l
Z2xDcmVhdGVJbWFnZSB7IG51bGxwdHIgfTsKKyAgICBQRk5FR0xERVNUUk9ZSU1BR0VQUk9DIG1f
ZWdsRGVzdHJveUltYWdlIHsgbnVsbHB0ciB9OworICAgIFBGTkVHTENSRUFURUlNQUdFS0hSUFJP
QyBtX2VnbENyZWF0ZUltYWdlS0hSIHsgbnVsbHB0ciB9OworICAgIFBGTkVHTERFU1RST1lJTUFH
RUtIUlBST0MgbV9lZ2xEZXN0cm95SW1hZ2VLSFIgeyBudWxscHRyIH07CiAjaWYgUExBVEZPUk0o
WDExKQogICAgIFhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dCTURldmljZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmE2ODM5ZWJmNmNkZWE4Njk5ZWZhMjIzYTAzMzE5MTRlZGRkMTE4YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTWV0cm9sb2dpY2FsIEdy
b3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0JNRGV2aWNlLmgiCisKKyNpZiBVU0UoQU5H
TEUpICYmIFVTRShOSUNPU0lBKQorCisjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgorCisj
aW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxnYm0uaD4KKyNpbmNsdWRlIDxtdXRleD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBHQk1EZXZpY2UmIEdCTURldmljZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpCit7CisgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5nYm1EZXZpY2Uo
KTsKK30KKworR0JNRGV2aWNlOjpHQk1EZXZpY2UoKQoreworICAgIGludCBmZDsKKyAgICBjaGFy
IGRldmljZU5hbWVbMzBdOworICAgIGZvciAoaW50IGkgPSAxMjg7IGkgPCAxOTI7ICsraSkgewor
ICAgICAgICBzbnByaW50ZihkZXZpY2VOYW1lLCBzaXplb2YoZGV2aWNlTmFtZSksICIvZGV2L2Ry
aS9yZW5kZXJEJWQiLCBpKTsKKyAgICAgICAgZmQgPSBvcGVuKGRldmljZU5hbWUsIE9fUkRXUiB8
IE9fQ0xPRVhFQyk7CisgICAgICAgIGlmIChmZCA+PSAwKSB7CisgICAgICAgICAgICBtX2Rldmlj
ZSA9IGdibV9jcmVhdGVfZGV2aWNlKGZkKTsKKyAgICAgICAgICAgIGlmIChtX2RldmljZSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworR0JNRGV2aWNlOjp+R0JNRGV2aWNlKCkKK3sKKyAgICBpZiAobV9kZXZpY2Up
IHsKKyAgICAgICAgZ2JtX2RldmljZV9kZXN0cm95KG1fZGV2aWNlKTsKKyAgICAgICAgbV9kZXZp
Y2UgPSBudWxscHRyOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDc5ZDY4OWY5MmIx
MzI1NThmZmNlM2Y1YTY0MWQ4OWJiMTc2ZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dCTURldmljZS5oCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENv
cHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCisKK3N0cnVjdCBnYm1fZGV2aWNlOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRocmVhZEdsb2JhbERhdGE7CisKK2NsYXNzIEdC
TURldmljZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0JNRGV2aWNlKTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRCgpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBHQk1EZXZp
Y2UmIGZvckN1cnJlbnRUaHJlYWQoKTsKKworICAgIEdCTURldmljZSgpOworICAgIH5HQk1EZXZp
Y2UoKTsKKworICAgIHN0cnVjdCBnYm1fZGV2aWNlKiBkZXZpY2UoKSBjb25zdCB7IHJldHVybiBt
X2RldmljZTsgfQorCitwcml2YXRlOgorICAgIHN0cnVjdCBnYm1fZGV2aWNlKiBtX2RldmljZSB7
IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFUGlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NH
TEFOR0xFUGlwZS5jcHAKaW5kZXggNWEzOWQzZGFhNjgxZGI5ZWNjZDBjNmY2ZDkzNzY2Mjg0MTBl
MjFmZC4uNTFmNTdlMTE2ZjZjMDlmY2NjN2VmYjllMDNiYTk2Y2UyMGZkYTAzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUdDR0xBTkdMRVBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVQaXBlLmNwcApAQCAtMzUsNyArMzUsNyBA
QAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWYu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCiAKIG5hbWVz
cGFjZSBOaWNvc2lhIHsKQEAgLTU3LDYgKzU3LDI0IEBAIHZvaWQgR0NHTEFOR0xFUGlwZVNvdXJj
ZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4
dC5wcmVwYXJlVGV4dHVyZSgpOworCisgICAgaWYgKG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0
dXJlQmFja2luZykgeworICAgICAgICBhdXRvIHNpemUgPSBtX2NvbnRleHQuZ2V0SW50ZXJuYWxG
cmFtZWJ1ZmZlclNpemUoKTsKKyAgICAgICAgYXV0byBmb3JtYXQgPSBtX2NvbnRleHQubV9jb21w
b3NpdG9yVGV4dHVyZUJhY2tpbmctPmZvcm1hdCgpOworICAgICAgICBhdXRvIHN0cmlkZSA9IG1f
Y29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+c3RyaWRlKCk7CisgICAgICAgIGF1
dG8gZmQgPSBtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmZkKCk7CisKKyAg
ICAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJl
TWFwcGVySW1wbD4ocGxhdGZvcm1MYXllcigpLT5pbXBsKCkpLnByb3h5KCk7CisgICAgICAgIHsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBwcm94eS5sb2NrKCkgfTsKKyAgICAgICAgICAg
IHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJEbWFidWY+KHNpemUsIGZvcm1hdCwgc3RyaWRlLCBmZCkpOworICAgICAgICB9CisKKyAgICAg
ICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIEZhbGxiYWNrIHBhdGgsIHJlYWQgYmFjayB0ZXh0dXJlIHRvIG1haW4gbWVt
b3J5CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEUuY3BwCmluZGV4IGExZTFlODQ0OTkzZjBkMzRlMTM3M2RmNGI1M2I3NjExZDRiOTM4
NmIuLjU4Y2E0NjE1OGZkMDcwOWI2YzgyNTE1MmEwY2VkODRiMGMzNzJjYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAt
MzYsOSArMzYsMTMgQEAKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogCiAjaWYgVVNFKE5JQ09T
SUEpCisjaW5jbHVkZSAiR0JNRGV2aWNlLmgiCiAjaW5jbHVkZSAiTmljb3NpYUdDR0xBTkdMRVBp
cGUuaCIKKyNpbmNsdWRlICJnYm0uaCIKICNlbHNlCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdD
R0xQbGF0Zm9ybUxheWVyLmgiCisKKyNpbmNsdWRlIDxmY250bC5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUxLDYgKzU1LDEzIEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJp
CiAjZW5kaWYKICNpZiBVU0UoTklDT1NJQSkKICAgICBtX25pY29zaWFQaXBlID0gbWFrZVVuaXF1
ZTxOaWNvc2lhOjpHQ0dMQU5HTEVQaXBlPigqdGhpcyk7CisKKyAgICBhdXRvJiBnYm1EZXZpY2Ug
PSBHQk1EZXZpY2U6OmZvckN1cnJlbnRUaHJlYWQoKTsKKyAgICBpZiAoYXV0byogZGV2aWNlID0g
Z2JtRGV2aWNlLmRldmljZSgpKSB7CisgICAgICAgIG1fdGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5p
cXVlPEVHTEltYWdlQmFja2luZz4oZGV2aWNlLCBwbGF0Zm9ybURpc3BsYXkoKSk7CisgICAgICAg
IG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+
KGRldmljZSwgcGxhdGZvcm1EaXNwbGF5KCkpOworICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1
cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KGRldmljZSwgcGxhdGZvcm1E
aXNwbGF5KCkpOworICAgIH0KICNlbHNlCiAgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyPigqdGhpcyk7CiAjZW5kaWYKQEAgLTExMiwx
MSArMTIzLDg1IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpCiAgICAgR0xfQ2xlYXJDb2xvcigw
LCAwLCAwLCAwKTsKIH0KIAorI2lmIFVTRShOSUNPU0lBKQorR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6RUdMSW1hZ2VCYWNraW5nOjpFR0xJbWFnZUJhY2tpbmcoZ2JtX2RldmljZSogZGV2aWNlLCBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBkaXNwbGF5KQorICAgIDogbV9kZXZpY2Uo
ZGV2aWNlKQorICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6fkVHTEltYWdlQmFja2luZygpCit7CisgICAgcmVs
ZWFzZVJlc291cmNlcygpOworfQorCit1aW50MzJfdCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpF
R0xJbWFnZUJhY2tpbmc6OmZvcm1hdCgpIGNvbnN0Cit7CisgICAgaWYgKG1fQk8pCisgICAgICAg
IHJldHVybiBnYm1fYm9fZ2V0X2Zvcm1hdChtX0JPKTsKKyAgICByZXR1cm4gMDsKK30KKwordWlu
dDMyX3QgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpzdHJpZGUoKSBj
b25zdAoreworICAgIGlmIChtX0JPKQorICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9zdHJpZGUo
bV9CTyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
RUdMSW1hZ2VCYWNraW5nOjpyZWxlYXNlUmVzb3VyY2VzKCkKK3sKKyAgICBpZiAobV9CTykgewor
ICAgICAgICBnYm1fYm9fZGVzdHJveShtX0JPKTsKKyAgICAgICAgbV9CTyA9IG51bGxwdHI7Cisg
ICAgfQorICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAgIEVHTF9EZXN0cm95SW1hZ2VLSFIobV9k
aXNwbGF5LCBtX2ltYWdlKTsKKyAgICAgICAgbV9pbWFnZSA9IEVHTF9OT19JTUFHRTsKKyAgICB9
CisgICAgaWYgKG1fRkQgPj0gMCkgeworICAgICAgICBjbG9zZShtX0ZEKTsKKyAgICAgICAgbV9G
RCA9IC0xOworICAgIH0KK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFn
ZUJhY2tpbmc6OnJlc2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgYm9vbCBoYXNBbHBoYSkKK3sK
KyAgICByZWxlYXNlUmVzb3VyY2VzKCk7CisKKyAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fQk8gPSBnYm1fYm9fY3JlYXRlKG1fZGV2aWNl
LCB3aWR0aCwgaGVpZ2h0LCBoYXNBbHBoYSA/IEdCTV9CT19GT1JNQVRfQVJHQjg4ODggOiBHQk1f
Qk9fRk9STUFUX1hSR0I4ODg4LCBHQk1fQk9fVVNFX1JFTkRFUklORyk7CisgICAgaWYgKG1fQk8p
IHsKKyAgICAgICAgbV9GRCA9IGdibV9ib19nZXRfZmQobV9CTyk7CisgICAgICAgIGlmIChtX0ZE
ID49IDApIHsKKyAgICAgICAgICAgIEVHTGludCBpbWFnZUF0dHJpYnV0ZXNbXSA9IHsKKyAgICAg
ICAgICAgICAgICBFR0xfV0lEVEgsIHdpZHRoLAorICAgICAgICAgICAgICAgIEVHTF9IRUlHSFQs
IGhlaWdodCwKKyAgICAgICAgICAgICAgICBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRp
Y19jYXN0PEVHTGludD4oZ2JtX2JvX2dldF9mb3JtYXQobV9CTykpLAorICAgICAgICAgICAgICAg
IEVHTF9ETUFfQlVGX1BMQU5FMF9GRF9FWFQsIG1fRkQsCisgICAgICAgICAgICAgICAgRUdMX0RN
QV9CVUZfUExBTkUwX1BJVENIX0VYVCwgc3RhdGljX2Nhc3Q8RUdMaW50PihnYm1fYm9fZ2V0X3N0
cmlkZShtX0JPKSksCisgICAgICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9F
WFQsIDAsCisgICAgICAgICAgICAgICAgRUdMX05PTkUKKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBtX2ltYWdlID0gRUdMX0NyZWF0ZUltYWdlS0hSKG1fZGlzcGxheSwgRUdMX05PX0NPTlRF
WFQsIEVHTF9MSU5VWF9ETUFfQlVGX0VYVCwgKEVHTENsaWVudEJ1ZmZlciludWxscHRyLCBpbWFn
ZUF0dHJpYnV0ZXMpOworICAgICAgICAgICAgaWYgKG1faW1hZ2UpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZWxlYXNlUmVzb3VyY2VzKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
On5HcmFwaGljc0NvbnRleHRHTEFOR0xFKCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVDb250ZXh0KHRoaXMpOwogICAgIGJvb2wg
c3VjY2VzcyA9IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vz
cywgc3VjY2Vzcyk7CisKICAgICBpZiAobV90ZXh0dXJlKQogICAgICAgICBHTF9EZWxldGVUZXh0
dXJlcygxLCAmbV90ZXh0dXJlKTsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCkBAIC0x
ODksMTggKzI3NCw0NCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZygpCiAgICAgR0x1aW50IGNvbG9yRm9ybWF0ID0gYXR0cnMuYWxwaGEg
PyBHTF9SR0JBIDogR0xfUkdCOwogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1
ZmZlclRleHR1cmVUYXJnZXQoKTsKICAgICBHTHVpbnQgaW50ZXJuYWxDb2xvckZvcm1hdCA9IHRl
eHR1cmVUYXJnZXQgPT0gR0xfVEVYVFVSRV8yRCA/IGNvbG9yRm9ybWF0IDogbV9pbnRlcm5hbENv
bG9yRm9ybWF0OworCisjaWYgVVNFKE5JQ09TSUEpCisgICAgaWYgKG1fdGV4dHVyZUJhY2tpbmcp
CisgICAgICAgIG1fdGV4dHVyZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFs
cGhhKTsKKyAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcpCisgICAgICAgIG1fY29t
cG9zaXRvclRleHR1cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7
CisgICAgaWYgKG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpCisgICAgICAgIG1faW50ZXJt
ZWRpYXRlVGV4dHVyZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsK
KyNlbmRpZgorCiAgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5n
KGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVU
YXJnZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xF
X0FSQik7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2NvbXBvc2l0
b3JUZXh0dXJlKSB7CiAgICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29t
cG9zaXRvclRleHR1cmUpOworI2lmIFVTRShOSUNPU0lBKQorICAgICAgICBpZiAobV9jb21wb3Np
dG9yVGV4dHVyZUJhY2tpbmcgJiYgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmltYWdlKCkp
CisgICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0
LCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7CisgICAgICAgIGVsc2UKKyNl
bmRpZgogICAgICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29s
b3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRF
LCAwKTsKICAgICAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9pbnRlcm1lZGlh
dGVUZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJQSkKKyAgICAgICAgaWYgKG1faW50ZXJtZWRpYXRl
VGV4dHVyZUJhY2tpbmcgJiYgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkK
KyAgICAgICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQs
IG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpOworICAgICAgICBlbHNlCisj
ZW5kaWYKICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENv
bG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllU
RSwgMCk7CiAgICAgfQogI2VuZGlmCiAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwg
bV90ZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBpZiAobV90ZXh0dXJlQmFja2luZyAm
JiBtX3RleHR1cmVCYWNraW5nLT5pbWFnZSgpKQorICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRl
eHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKKyAg
ICBlbHNlCisjZW5kaWYKICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVy
bmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05F
RF9CWVRFLCAwKTsKICAgICBHTF9GcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSwgMCk7CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIuaAppbmRleCBiZDRhODc1ZDdhMTU5MTY3YzJlODljZTIwYjg1OWJiMGY4MGY3
ZjM5Li45ZWU1ZjdjMGQwMDRiNGI0ODJkODY5MDlhZmFlZmJkMTFmYWZiZjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcigpOwogCi0gICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApIGZpbmFs
OworICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgY2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYsIEdMaW50IGludGVy
bmFsRm9ybWF0KTsKICAgICBCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCgpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCptX3RleHR1cmUpOyB9CkBAIC04Niw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoc3RkOjp1
bmlxdWVfcHRyPFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXI+IGhvbGRlcikgeyBtX3VubWFuYWdl
ZEJ1ZmZlckRhdGFIb2xkZXIgPSBXVEZNb3ZlKGhvbGRlcik7IH0KICAgICB2b2lkIHNldEV4dHJh
RmxhZ3MoVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncykgeyBtX2V4dHJhRmxhZ3MgPSBmbGFn
czsgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPiBjbG9uZSgpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPiBjbG9uZSgpOwogCiAgICAgY2xhc3MgSG9sZVB1bmNoQ2xpZW50
IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKQEAgLTk3LDE0ICs5NywxNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhvbGVQdW5jaENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
SG9sZVB1bmNoQ2xpZW50PiYmIGNsaWVudCkgeyBtX2hvbGVQdW5jaENsaWVudCA9IFdURk1vdmUo
Y2xpZW50KTsgfQogCi0gICAgY29uc3QgVGV4dHVyZVZhcmlhbnQmIHRleHR1cmVWYXJpYW50KCkg
eyByZXR1cm4gbV92YXJpYW50OyB9CisgICAgY29uc3QgVGV4dHVyZVZhcmlhbnQmIHRleHR1cmVW
YXJpYW50KCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50OyB9CisgICAgSW50U2l6ZSBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgVGV4
dHVyZVZhcmlhbnQgbV92YXJpYW50OwogCitwcml2YXRlOgogICAgIFJlZlB0cjxCaXRtYXBUZXh0
dXJlPiBtX3RleHR1cmU7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVMYXN0VXNlZDsKIAotICAg
IFRleHR1cmVWYXJpYW50IG1fdmFyaWFudDsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBHTGlu
dCBtX2ludGVybmFsRm9ybWF0OwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgbV9leHRyYUZs
YWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzA4YzQ4YzU3NmRjZmQ5YTVlOGJlNWZkOTIyYmRlYzMwYzdmYTNjMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5jcHAKQEAgLTAsMCArMSwxMjggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENv
cHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuaCIKKworI2lm
IFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIK
KworI2lmIFVTRShMSUJFUE9YWSkKKyNpbmNsdWRlICJFcG94eUVHTC5oIgorI2Vsc2UKKyNpbmNs
dWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorI2VuZGlmCisKKyNpbmNs
dWRlIDx1bmlzdGQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IGNyZWF0ZUZvdXJDQyhjaGFyIGEsIGNoYXIgYiwgY2hhciBjLCBjaGFyIGQpCit7
CisgICAgcmV0dXJuIHVpbnQzMl90KGEpIHwgKHVpbnQzMl90KGIpIDw8IDgpIHwgKHVpbnQzMl90
KGMpIDw8IDE2KSB8ICh1aW50MzJfdChkKSA8PCAyNCk7Cit9CisKK3N0YXRpYyBHTGludCBmb3Vy
Q0NUb0dMRm9ybWF0KHVpbnQzMl90IGZvcm1hdCkKK3sKKyAgICBBU1NFUlQoKGZvcm1hdCA9PSBj
cmVhdGVGb3VyQ0MoJ1gnLCAnUicsICcyJywgJzQnKSkgfHwgKGZvcm1hdCA9PSBjcmVhdGVGb3Vy
Q0MoJ0EnLCAnUicsICcyJywgJzQnKSkpOworICAgIHJldHVybiAoZm9ybWF0ID09IGNyZWF0ZUZv
dXJDQygnQScsICdSJywgJzInLCAnNCcpKSA/IEdMX1JHQkEgOiBHTF9SR0I7Cit9CisKK3N0YXRp
YyBib29sIGZvcm1hdEhhc0FscGhhKHVpbnQzMl90IGZvcm1hdCkKK3sKKyAgICBBU1NFUlQoKGZv
cm1hdCA9PSBjcmVhdGVGb3VyQ0MoJ1gnLCAnUicsICcyJywgJzQnKSkgfHwgKGZvcm1hdCA9PSBj
cmVhdGVGb3VyQ0MoJ0EnLCAnUicsICcyJywgJzQnKSkpOworICAgIHJldHVybiAoZm9ybWF0ID09
IGNyZWF0ZUZvdXJDQygnQScsICdSJywgJzInLCAnNCcpKSA/IHRydWUgOiBmYWxzZTsKK30KKwor
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyRG1hYnVmKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
c3RyaWRlLCBpbnQgZmQpCisgICAgOiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcih7
IFJHQlRleHR1cmUgeyAwIH0gfSwgc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4
dHVyZSB8IChmb3JtYXRIYXNBbHBoYShmb3JtYXQpID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRC
bGVuZCA6IDApLCBmb3VyQ0NUb0dMRm9ybWF0KGZvcm1hdCkpCisgICAgLCBtX2Zvcm1hdChmb3Jt
YXQpCisgICAgLCBtX3N0cmlkZShzdHJpZGUpCisgICAgLCBtX2ZkKGR1cChmZCkpCit7Cit9CisK
K1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmOjp+VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJEbWFidWYoKQoreworICAgIEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJHQlRl
eHR1cmU+KG1fdmFyaWFudCkpOworICAgIGF1dG8mIHRleHR1cmUgPSBzdGQ6OmdldDxSR0JUZXh0
dXJlPihtX3ZhcmlhbnQpOworICAgIGlmICh0ZXh0dXJlLmlkKQorICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZ0ZXh0dXJlLmlkKTsKKyAgICBjbG9zZShtX2ZkKTsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6dmFsaWRhdGVUZXh0dXJlKCkKK3sKKyAgICBB
U1NFUlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSR0JUZXh0dXJlPihtX3ZhcmlhbnQpKTsKKyAg
ICBhdXRvJiB0ZXh0dXJlID0gc3RkOjpnZXQ8UkdCVGV4dHVyZT4obV92YXJpYW50KTsKKyAgICBp
ZiAodGV4dHVyZS5pZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29udGV4dCA9IEdM
Q29udGV4dDo6Y3VycmVudCgpOworICAgIEFTU0VSVChjb250ZXh0LT5pc0VHTENvbnRleHQoKSk7
CisKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGF1dG8gc2l6ZSA9
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpzaXplKCk7CisgICAgRUdMQXR0cmli
IGltYWdlQXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfV0lEVEgsIHNpemUud2lkdGgoKSwK
KyAgICAgICAgRUdMX0hFSUdIVCwgc2l6ZS5oZWlnaHQoKSwKKyAgICAgICAgRUdMX0xJTlVYX0RS
TV9GT1VSQ0NfRVhULCBzdGF0aWNfY2FzdDxFR0xBdHRyaWI+KG1fZm9ybWF0KSwKKyAgICAgICAg
RUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgbV9mZCwKKyAgICAgICAgRUdMX0RNQV9CVUZfUExB
TkUwX1BJVENIX0VYVCwgc3RhdGljX2Nhc3Q8RUdMQXR0cmliPihtX3N0cmlkZSksCisgICAgICAg
IEVHTF9ETUFfQlVGX1BMQU5FMF9PRkZTRVRfRVhULCAwLAorICAgICAgICBFR0xfTk9ORQorICAg
IH07CisgICAgYXV0byBpbWFnZSA9IGRvd25jYXN0PEdMQ29udGV4dEVHTD4oKmNvbnRleHQpLmNy
ZWF0ZUltYWdlKEVHTF9MSU5VWF9ETUFfQlVGX0VYVCwgKEVHTENsaWVudEJ1ZmZlciludWxscHRy
LCBpbWFnZUF0dHJpYnV0ZXMpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUuaWQpOworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgdGV4dHVyZS5pZCk7CisgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9F
UyhHTF9URVhUVVJFXzJELCBpbWFnZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworCisg
ICAgUkVMRUFTRV9BU1NFUlQoZG93bmNhc3Q8R0xDb250ZXh0RUdMPigqY29udGV4dCkuZGVzdHJv
eUltYWdlKGltYWdlKSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFi
dWY6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3sKKyAgICB2YWxpZGF0ZVRleHR1cmUoKTsK
KyAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsK
K30KKworc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6Y2xvbmUoKQoreworICAgIHZhbGlkYXRl
VGV4dHVyZSgpOworICAgIHJldHVybiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6
Y2xvbmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFO
R0xFKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyRG1hYnVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUzYTIwZjkzZjlmYWFjODk5YWFkMjA0Y2IwZDcy
ZDE2MzM3YjVjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5oCkBAIC0wLDAg
KzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTWV0cm9sb2dpY2FsIEdyb3VwIEIu
Vi4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmIDogcHVibGljIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoKTsKK3B1YmxpYzoKKyAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zihjb25z
dCBJbnRTaXplJiwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCBzdHJpZGUsIGludCBmZCk7CisK
KyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1ZigpOworCitwcml2
YXRlOgorICAgIHZvaWQgdmFsaWRhdGVUZXh0dXJlKCk7CisKKyAgICB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KSBmaW5hbDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGNsb25l
KCkgZmluYWw7CisKKyAgICB1aW50MzJfdCBtX2Zvcm1hdDsKKyAgICB1aW50MzJfdCBtX3N0cmlk
ZTsKKyAgICBpbnQgbV9mZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCg==
</data>
<flag name="commit-queue"
          id="477275"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450768</attachid>
            <date>2022-02-03 06:13:19 -0800</date>
            <delta_ts>2022-02-03 09:19:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235946-20220203141318.patch</filename>
            <type>text/plain</type>
            <size>42863</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg1MGI0ZGVjMzRmMGRl
Yzc2MGY0ZmI3Yjc4ZTJkNTQzZjUxNTI5My4uYWY0M2E3MDZjNjE2YTI1NDg4NjI0NzIwZjY0MGI3
M2YxZGQwYWZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAyLTAxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSBkbWFi
dWYgd2hlbiBwb3NzaWJsZSB0byB0cmFuc2ZlciBBTkdMRSByZW5kZXJpbmcgdG8gdGhlIGNvbXBv
c2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBkbWFidWYgd2hlbiBhdmFpbGFibGUgdG8gdHJhbnNmZXIgQU5HTEUgV2ViR0wgcmVuZGVyaW5n
IGNvbnRlbnRzCisgICAgICAgIHRvIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsu
dHh0OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplR2JtRGV2aWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpnYm1EZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVPcGVu
R0xTaGltcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnByZXBhcmVUZXh0
dXJlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVJbWFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlc3Ryb3lJbWFnZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdCTURldmljZTo6Zm9yQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpHQk1EZXZp
Y2U6OkdCTURldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHQk1EZXZpY2U6On5HQk1EZXZpY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHQk1EZXZpY2U6OmRldmljZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRVBpcGUuY3BwOgor
ICAgICAgICAoTmljb3NpYTo6R0NHTEFOR0xFUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpFR0xJbWFnZUJhY2tpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5n
Ojp+RUdMSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OkVHTEltYWdlQmFja2luZzo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6c3RyaWRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2lu
Zzo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xFKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2lu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6dGV4dHVyZVZhcmlhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnRleHR1cmVWYXJpYW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZv
dXJDQ1RvR0xGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0SGFzQWxwaGEpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmKToKKyAgICAgICAgKFdlYkNvcmU6Om1fZmQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6On5UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6dmFsaWRhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmOjpwYWludFRvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6
Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckRtYWJ1Zi5oOiBBZGRlZC4KKwogMjAyMi0wMi0wMyAgQ2hyaXMgTG9yZCAg
PGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIHNwZWNpYWxpemUgdHlwZSB0cmFpdHMg
dG8gR0xDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDI5ZTJiNzhmNGQyNmI1
ZjY2YzIzN2ZmMDRmNGM3Nzk4MzA2NDNjOWUuLmJkNzZhMDkyMjY4MDYwMWQ0OWYxNzExYzk1MjVk
MDUwZmY2NDU5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yNiw2ICsyNiw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgi
CisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2dibSIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggY2ZiZmU0ZjY2ZGJj
MzM5ZTY4MTc5ZjRjZWI0OGEwMmMzYzEyMjkyNi4uYmU1YzMwNDdmZTU1ODNlZWU1ZWExNTE2MGRk
Yzk5NmNhOGYzZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTIzLDYgKzIzLDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ2xpYiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9l
cG94eSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lciIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dU
Sy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCAxZWI1MDU3ZmFjNjZl
MGVkZWZiM2U3M2JhZjE3OTJlYTAxZDRhMTU4Li5hMzcwZjQyZWY1MWJiMzBiMzVjNDQ2NmIwZTUy
YWIxMGQ2OWU0OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtMTAxLDYgKzEwMSw4IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAgQG5vLXVuaWZ5CiAKK3BsYXRm
b3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwCisKIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9H
TENvbnRleHRHTFguY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc1dQRS50eHQKaW5kZXggZmQwNThlOGY2MTRlZGJhNzBmZDBkMTA0Mjg1ODY0ZTc2OGVj
ZWI1ZC4uNWZlMzY4MjVmYjM3NTA0N2I3NTFhZjMyY2E2ODA5MTFlNGJhZWYwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc1dQRS50eHQKQEAgLTcyLDYgKzcyLDggQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1E
aXNwbGF5LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwCiAKK3BsYXRmb3JtL2dyYXBo
aWNzL2dibS9HQk1EZXZpY2UuY3BwCisKIHBsYXRmb3JtL2dyYXBoaWNzL2xpYndwZS9QbGF0Zm9y
bURpc3BsYXlMaWJXUEUuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4
dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIu
Y21ha2UKaW5kZXggNDNiYjc3YTVhNjViNGUyYmQ1Y2RmNWQwNzQ5NjRjYWUyYzQ5YmI2NS4uMmYx
NjlmNDM2MGM3YmRiYTVhNjgzOTc2OWIyY2QzMDRiNTEwNGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC01OSw2ICs1OSw3IEBAIGlmIChVU0Vf
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCiAKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApp
bmRleCA2MTNmYjliMGNlMjE1ZTNiYWQ1ZDUwMDI0MzkyM2ZlMmY2M2M3NmY1Li43NDdhYzcxNDFk
NjFlMDY5NDgwODZhN2RmNjQ3NzFhOTcwZmQ5M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCisjaWYg
VVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKKyNpbmNsdWRlICJHQk1EZXZpY2UuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2Jh
bERhdGEoKQpAQCAtMTQ2LDYgKzE1MCwxNCBAQCB2b2lkIFRocmVhZEdsb2JhbERhdGE6OmluaXRp
YWxpemVGb250Q2FjaGUoKQogICAgIG1fZm9udENhY2hlID0gbWFrZVVuaXF1ZTxGb250Q2FjaGU+
KCk7CiB9CiAKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQordm9pZCBUaHJlYWRHbG9i
YWxEYXRhOjppbml0aWFsaXplR2JtRGV2aWNlKCkKK3sKKyAgICBBU1NFUlQoIW1fZ2JtRGV2aWNl
KTsKKyAgICBtX2dibURldmljZSA9IG1ha2VVbmlxdWU8R0JNRGV2aWNlPigpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFBBTCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKaW5kZXggZGJkZmIxNGU1YjAwZjZhNzc4
ZDhlN2MxOGZkNWE0OTZkMzk1YTcwNC4uMTFkZGU3ZDczZTNlZWFhNmFiZDk2MTU5ZDVkMTVkOGM1
MTYwYzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaApA
QCAtMzgsNiArMzgsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udENhY2hlOworY2xhc3MgR0JNRGV2aWNlOwogY2xhc3MgUXVhbGlmaWVk
TmFtZUNhY2hlOwogY2xhc3MgVGhyZWFkVGltZXJzOwogCkBAIC0xMDQsMTIgKzEwNSwyNSBAQCBw
dWJsaWM6CiAKICAgICBGb250Q2FjaGUqIGZvbnRDYWNoZUlmTm90RGVzdHJveWVkKCkgeyByZXR1
cm4gbV9kZXN0cm95ZWQgPyBudWxscHRyIDogJmZvbnRDYWNoZSgpOyB9CiAKKyNpZiBVU0UoQU5H
TEUpICYmIFVTRShOSUNPU0lBKQorICAgIEdCTURldmljZSYgZ2JtRGV2aWNlKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fZ2Jt
RGV2aWNlKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVHYm1EZXZpY2UoKTsKKyAgICAgICAgcmV0
dXJuICptX2dibURldmljZTsKKyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluaXRpYWxpemVDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplRXZlbnROYW1lcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVF1YWxpZmllZE5hbWVDYWNoZSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZU1pbWVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxE
YXRhKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplRm9udENhY2hlKCk7Cisj
aWYgVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemVHYm1EZXZpY2UoKTsKKyNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9yczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gbV9ldmVudE5hbWVzOwpAQCAt
MTE4LDYgKzEzMiw5IEBAIHByaXZhdGU6CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbV9jdXJy
ZW50U3RhdGUgeyBudWxscHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1JTUVUeXBlUmVnaXN0
cnlUaHJlYWRHbG9iYWxEYXRhPiBtX01JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FjaGU+IG1fZm9udENhY2hlOworI2lmIFVTRShBTkdM
RSkgJiYgVVNFKE5JQ09TSUEpCisgICAgc3RkOjp1bmlxdWVfcHRyPEdCTURldmljZT4gbV9nYm1E
ZXZpY2U7CisjZW5kaWYKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1faXNNYWluVGhyZWFk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hp
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3Bw
CmluZGV4IDkwYjk4MDg1Y2I4N2UzNjAxMTY5ZmYxMzM5NjNmOWEwMDMxYmQ2OGIuLmI0MjUxMmU5
ZTdlNjZkOTE0N2JmZjk3ZjUyYzI4MmQ2ODVhM2E5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAKQEAgLTE0Myw2ICsxNDMsNyBAQCBi
b29sIGluaXRpYWxpemVPcGVuR0xTaGltcygpCiAgICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VO
VFJZKGdsRHJhd0J1ZmZlcnMsIHN1Y2Nlc3MpOwogICAgIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9F
TlRSWShnbERyYXdFbGVtZW50c0luc3RhbmNlZCwgc3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNU
SU9OX1RBQkxFX0VOVFJZKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXksIHN1Y2Nlc3MpOworICAg
IEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VT
LCBzdWNjZXNzKTsKICAgICBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlciwgc3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZ
KGdsRnJhbWVidWZmZXJUZXh0dXJlMkQsIHN1Y2Nlc3MpOwogICAgIEFTU0lHTl9GVU5DVElPTl9U
QUJMRV9FTlRSWShnbEdlbkJ1ZmZlcnMsIHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKaW5kZXggNGMzNTdkZGU5ODFmMTM2ZjA1OGQ4
ODM3MDc4YzQxMzBkNjBkNmE2NS4uN2IxOTRiMmE2YzI2ZWY1ZTdmNjE0MjEwOTdkNjYwZDkyM2Iz
MWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdM
U2hpbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGlt
cy5oCkBAIC03OCw2ICs3OCw3IEBAIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRS
WSAqZ2xEcmF3QXJyYXlzSW5zdGFuY2VkVHlwZSkgKEdMZW51bSwgR0xpbnQsIEdMc2l6ZWksIEdM
c2l6ZWkpOwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbERyYXdCdWZmZXJzVHlwZSkgKEdM
c2l6ZWksIGNvbnN0IEdMZW51bSopOwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbERyYXdF
bGVtZW50c0luc3RhbmNlZFR5cGUpIChHTGVudW0sIEdMc2l6ZWksIEdMZW51bSwgY29uc3QgR0x2
b2lkKiwgR0xzaXplaSk7Cit0eXBlZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVNUeXBlKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyk7CiB0eXBl
ZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1
aW50KTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
clR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQpOwogdHlwZWRlZiB2b2lkIChH
TEFQSUVOVFJZICpnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBH
TGVudW0sIEdMdWludCwgR0xpbnQpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHR5cGVkZWYgc3RydWN0
IF9PcGVuR0xGdW5jdGlvblRhYmxlIHsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbERyYXdB
cnJheXNJbnN0YW5jZWQpOwogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRHJhd0J1ZmZlcnMp
OwogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkKTsKKyAg
ICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKTsKICAg
ICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKICAgICBG
VU5DVElPTl9UQUJMRV9FTlRSWShnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTsKICAgICBGVU5D
VElPTl9UQUJMRV9FTlRSWShnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKQEAgLTMwNiw2ICszMDgs
NyBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJsZSB7CiAjZGVmaW5lIGdsRHJh
d0J1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERy
YXdCdWZmZXJzKQogI2RlZmluZSBnbERyYXdFbGVtZW50c0luc3RhbmNlZEVYVCAgICAgICAgICAg
ICBnbERyYXdFbGVtZW50c0luc3RhbmNlZAogI2RlZmluZSBnbERyYXdFbGVtZW50c0luc3RhbmNl
ZCAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEcmF3RWxlbWVudHNJbnN0YW5j
ZWQpCisjZGVmaW5lIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMgICAgICAgICAgIExPT0tV
UF9HTF9GVU5DVElPTihnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKQogI2RlZmluZSBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSkKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
ckVYVCAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcgogI2RlZmluZSBnbEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5k
ZXggNmQxMDY2YTViOTVhNDAxZTY4OTQ1MGRlZWM1NDVkN2FkMWU3NDJjMy4uOTI1NDNlNmE2YjM3
OTk4NTdjZmI4NmI5YzYzYWYxZTQzNGRmOTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKQEAgLTU0MSwxNCArNTQxLDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6cHJlcGFyZVRleHR1cmVJbXBsKCkKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAg
ICAgc3RkOjpzd2FwKG1fdGV4dHVyZSwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgc3RkOjpz
d2FwKG1fdGV4dHVyZSwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJQSkK
KyAgICBzdGQ6OnN3YXAobV90ZXh0dXJlQmFja2luZywgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tp
bmcpOworICAgIHN0ZDo6c3dhcChtX3RleHR1cmVCYWNraW5nLCBtX2ludGVybWVkaWF0ZVRleHR1
cmVCYWNraW5nKTsKKyNlbmRpZgogICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbV9mYm8pOwotICAgIEdMX0ZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIG1fdGV4dHVy
ZSwgMCk7CisgICAgR0xfRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpLCBtX3RleHR1cmUs
IDApOwogICAgIEdMX0ZsdXNoKCk7CiAKICAgICBpZiAobV9zdGF0ZS5ib3VuZERyYXdGQk8gIT0g
bV9mYm8pCiAgICAgICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVIsIG1fc3RhdGUuYm91bmREcmF3RkJPKTsKLSAgICBlbHNlCi0gICAgICAgIEdMX0Jp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICNl
bHNlCiAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVyZSkgewogICAgICAgICAv
LyBCbGl0IG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVyZSBpbnRvIG1fdGV4dHVyZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBjYTg3MmFlNThjZGE1MWExNjU5MjFiYzUw
OTJiNTdjMjEwMzM4ZDQ4Li4yMWI5NGMxNjlhNTEyZTg5ODZmZDBiYWMwMjc1MGMzZTU2MzA1NDhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC00MywxNCArNDMsMTkgQEAKICNp
ZiBVU0UoTklDT1NJQSkKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIGNsYXNzIEdDR0xBTkdMRVBpcGU7
CitjbGFzcyBHQ0dMQU5HTEVQaXBlU291cmNlOwogY2xhc3MgR0NHTExheWVyOwogfQorCitzdHJ1
Y3QgZ2JtX2RldmljZTsKK3N0cnVjdCBnYm1fYm87CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBFeHRlbnNpb25zR0w7CiBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKK2Ns
YXNzIEdMQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNs
YXNzIE1lZGlhUGxheWVyOwpAQCAtNDUwLDE3ICs0NTUsNDIgQEAgcHJvdGVjdGVkOgogICAgIEdD
R0x1aW50IG1faW50ZXJtZWRpYXRlVGV4dHVyZSB7IDAgfTsKICNlbmRpZgogI2lmIFVTRShOSUNP
U0lBKQotI2lmIFVTRShBTkdMRSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6R0NHTEFO
R0xFUGlwZT4gbV9uaWNvc2lhUGlwZTsKLSNlbHNlCi0gICAgc3RkOjp1bmlxdWVfcHRyPE5pY29z
aWE6OkdDR0xMYXllcj4gbV9uaWNvc2lhTGF5ZXI7Ci0jZW5kaWYKKworICAgIGNsYXNzIEVHTElt
YWdlQmFja2luZyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICBFR0xJbWFnZUJhY2tpbmcoZ2JtX2RldmljZSosIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0xEaXNwbGF5KTsKKyAgICAgICAgfkVHTEltYWdlQmFja2luZygpOworCisgICAgICAgIGJv
b2wgcmVzZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIGhhc0FscGhhKTsKKworICAgICAg
ICBFR0xJbWFnZSBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICAgICAgaW50
IGZkKCkgY29uc3QgeyByZXR1cm4gbV9GRDsgfQorCisgICAgICAgIHVpbnQzMl90IGZvcm1hdCgp
IGNvbnN0OworICAgICAgICB1aW50MzJfdCBzdHJpZGUoKSBjb25zdDsKKyAgICBwcml2YXRlOgor
ICAgICAgICB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKKworICAgICAgICBnYm1fZGV2aWNlKiBt
X2RldmljZTsKKyAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgbV9kaXNw
bGF5OworCisgICAgICAgIGdibV9ibyogbV9CTyB7IG51bGxwdHIgfTsKKyAgICAgICAgaW50IG1f
RkQgeyAtMSB9OworICAgICAgICBFR0xJbWFnZSBtX2ltYWdlIHsgRUdMX05PX0lNQUdFIH07Cisg
ICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxFR0xJbWFnZUJhY2tpbmc+IG1fdGV4dHVyZUJh
Y2tpbmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV9jb21wb3NpdG9y
VGV4dHVyZUJhY2tpbmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV9p
bnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZzsKICNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyPiBtX3RleG1h
cExheWVyOwogI2VuZGlmCiAKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7CiAj
aWYgVVNFKE5JQ09TSUEpCisgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xBTkdMRVBpcGVT
b3VyY2U7CiAgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xMYXllcjsKICNlbGlmIFVTRShU
RVhUVVJFX01BUFBFUikKICAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9y
bUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmNwcAppbmRleCA5YmI5MDA4MjEyNzZjYjgwMWE4NGQ2NTZhY2E1ODNlYWI3
MDFiODA2Li45YWFjNzQ2NjY4ZWY4OWNjNzk3N2IyNmJmYzYzZjYwMWM2NzQyMGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
LmNwcApAQCAtMzY0LDYgKzM2NCwxOSBAQCBHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0
Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZgogICAgIEFT
U0VSVCh0eXBlID09IFN1cmZhY2VsZXNzIHx8IHN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZGlzcGxheS5lZ2xEaXNwbGF5KCkgIT0gRUdMX05PX0RJU1BM
QVkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpOworCisg
ICAgaWYgKGRpc3BsYXkuZWdsQ2hlY2tWZXJzaW9uKDEsIDUpKSB7CisgICAgICAgIG1fZWdsQ3Jl
YXRlSW1hZ2UgPSByZWludGVycHJldF9jYXN0PFBGTkVHTENSRUFURUlNQUdFUFJPQz4oZWdsR2V0
UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdlIikpOworICAgICAgICBtX2VnbERlc3Ryb3lJbWFn
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMREVTVFJPWUlNQUdFUFJPQz4oZWdsR2V0UHJvY0Fk
ZHJlc3MoImVnbERlc3Ryb3lJbWFnZSIpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZWds
Q3JlYXRlSW1hZ2UgPT0gIW1fZWdsRGVzdHJveUltYWdlKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gZWdsUXVlcnlTdHJpbmcoZGlzcGxheS5lZ2xEaXNw
bGF5KCksIEVHTF9FWFRFTlNJT05TKTsKKyAgICAgICAgaWYgKEdMQ29udGV4dDo6aXNFeHRlbnNp
b25TdXBwb3J0ZWQoZXh0ZW5zaW9ucywgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpKSB7CisgICAgICAg
ICAgICBtX2VnbENyZWF0ZUltYWdlS0hSID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xDUkVBVEVJ
TUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZUtIUiIpKTsKKyAg
ICAgICAgICAgIG1fZWdsRGVzdHJveUltYWdlS0hSID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xE
RVNUUk9ZSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlS0hS
IikpOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2VnbENyZWF0ZUltYWdl
S0hSID09ICFtX2VnbERlc3Ryb3lJbWFnZUtIUik7CisgICAgfQogfQogCiBHTENvbnRleHRFR0w6
On5HTENvbnRleHRFR0woKQpAQCAtMzg2LDYgKzM5OSwzMSBAQCBHTENvbnRleHRFR0w6On5HTENv
bnRleHRFR0woKQogI2VuZGlmCiB9CiAKK0VHTEltYWdlIEdMQ29udGV4dEVHTDo6Y3JlYXRlSW1h
Z2UoRUdMZW51bSB0YXJnZXQsIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsIGNvbnN0IEVH
TEF0dHJpYiogYXR0cmliTGlzdCkgY29uc3QKK3sKKyAgICBpZiAobV9lZ2xDcmVhdGVJbWFnZSkK
KyAgICAgICAgcmV0dXJuIG1fZWdsQ3JlYXRlSW1hZ2UobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwg
YXR0cmliTGlzdCA/IEVHTF9OT19DT05URVhUIDogbV9jb250ZXh0LCB0YXJnZXQsIGNsaWVudEJ1
ZmZlciwgYXR0cmliTGlzdCk7CisgICAgaWYgKG1fZWdsQ3JlYXRlSW1hZ2VLSFIpIHsKKyAgICAg
ICAgVmVjdG9yPEVHTGludD4gaW50QXR0cmliTGlzdDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGF0dHJpYkxpc3RbaV0gIT0gRUdMX05PTkU7IGkgKz0gMikgeworICAgICAgICAgICAgaW50QXR0
cmliTGlzdC5hcHBlbmQoYXR0cmliTGlzdFtpXSk7CisgICAgICAgICAgICBpbnRBdHRyaWJMaXN0
LmFwcGVuZChhdHRyaWJMaXN0W2krMV0pOworICAgICAgICB9CisgICAgICAgIGludEF0dHJpYkxp
c3QuYXBwZW5kKEVHTF9OT05FKTsKKyAgICAgICAgcmV0dXJuIG1fZWdsQ3JlYXRlSW1hZ2VLSFIo
bV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgYXR0cmliTGlzdCA/IEVHTF9OT19DT05URVhUIDogbV9j
b250ZXh0LCB0YXJnZXQsIGNsaWVudEJ1ZmZlciwgaW50QXR0cmliTGlzdC5kYXRhKCkpOworICAg
IH0KKyAgICByZXR1cm4gRUdMX05PX0lNQUdFOworfQorCitib29sIEdMQ29udGV4dEVHTDo6ZGVz
dHJveUltYWdlKEVHTEltYWdlIGltYWdlKSBjb25zdAoreworICAgIGlmIChtX2VnbERlc3Ryb3lJ
bWFnZSkKKyAgICAgICAgcmV0dXJuIG1fZWdsRGVzdHJveUltYWdlKG1fZGlzcGxheS5lZ2xEaXNw
bGF5KCksIGltYWdlKTsKKyAgICBpZiAobV9lZ2xEZXN0cm95SW1hZ2VLSFIpCisgICAgICAgIHJl
dHVybiBtX2VnbERlc3Ryb3lJbWFnZUtIUihtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBpbWFnZSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9E
ZWZhdWx0RnJhbWVidWZmZXIoKQogewogICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93U3VyZmFj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuaAppbmRleCBlNWI5MzA1ODk4ZjQwODIyMjZhZmY5NGNjNjMwYWExMTIwNjlkZGU5Li5m
NWYzODk1NjBhMGEwMDI2M2Q3YjA3OTlhMDIxYTZlMjgwY2MwNTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0zNiwx
MCArMzYsMzAgQEAgc3RydWN0IHdsX2VnbF93aW5kb3c7CiBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2Jh
Y2tlbmRfZWdsX29mZnNjcmVlbl90YXJnZXQ7CiAjZW5kaWYKIAordHlwZWRlZiBpbnRwdHJfdCBF
R0xBdHRyaWI7Cit0eXBlZGVmIHVuc2lnbmVkIEVHTEJvb2xlYW47Cit0eXBlZGVmIHZvaWQgKkVH
TENsaWVudEJ1ZmZlcjsKIHR5cGVkZWYgdm9pZCAqRUdMQ29uZmlnOwogdHlwZWRlZiB2b2lkICpF
R0xDb250ZXh0OwogdHlwZWRlZiB2b2lkICpFR0xEaXNwbGF5OwordHlwZWRlZiB2b2lkICpFR0xJ
bWFnZTsKK3R5cGVkZWYgdm9pZCAqRUdMSW1hZ2VLSFI7CiB0eXBlZGVmIHZvaWQgKkVHTFN1cmZh
Y2U7Cit0eXBlZGVmIHVuc2lnbmVkIEVHTGVudW07Cit0eXBlZGVmIGludDMyX3QgRUdMaW50Owor
CisjaWYgIWRlZmluZWQoUEZORUdMQ1JFQVRFSU1BR0VQUk9DKQordHlwZWRlZiBFR0xJbWFnZSAo
KlBGTkVHTENSRUFURUlNQUdFUFJPQykgKEVHTERpc3BsYXksIEVHTENvbnRleHQsIEVHTGVudW0s
IEVHTENsaWVudEJ1ZmZlciwgY29uc3QgRUdMQXR0cmliKik7CisjZW5kaWYKKyNpZiAhZGVmaW5l
ZChQRk5FR0xERVNUUk9ZSU1BR0VQUk9DKQordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMREVT
VFJPWUlNQUdFUFJPQykgKEVHTERpc3BsYXksIEVHTEltYWdlKTsKKyNlbmRpZgorI2lmICFkZWZp
bmVkKFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQykKK3R5cGVkZWYgRUdMSW1hZ2VLSFIgKCpQRk5F
R0xDUkVBVEVJTUFHRUtIUlBST0MpIChFR0xEaXNwbGF5LCBFR0xDb250ZXh0LCBFR0xlbnVtIHRh
cmdldCwgRUdMQ2xpZW50QnVmZmVyLCBjb25zdCBFR0xpbnQqIGF0dHJpYkxpc3QpOworI2VuZGlm
CisjaWYgIWRlZmluZWQoUEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQykKK3R5cGVkZWYgRUdMQm9v
bGVhbiAoKlBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MpIChFR0xEaXNwbGF5LCBFR0xJbWFnZUtI
Uik7CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw2ICs3Myw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogbGFzdEVycm9yU3RyaW5nKCk7CiAKICAgICBF
R0xDb25maWcgY29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWc7IH0KKyAgICBFR0xJbWFn
ZSBjcmVhdGVJbWFnZShFR0xlbnVtIHRhcmdldCwgRUdMQ2xpZW50QnVmZmVyLCBjb25zdCBFR0xB
dHRyaWIqKSBjb25zdDsKKyAgICBib29sIGRlc3Ryb3lJbWFnZShFR0xJbWFnZSkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIH5HTENvbnRleHRFR0woKTsKIApAQCAtMTA2LDYgKzEyOCwxMCBAQCBwcml2
YXRlOgogICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OwogICAgIEVHTENvbmZp
ZyBtX2NvbmZpZyB7IG51bGxwdHIgfTsKICAgICBFR0xTdXJmYWNlVHlwZSBtX3R5cGU7CisgICAg
UEZORUdMQ1JFQVRFSU1BR0VQUk9DIG1fZWdsQ3JlYXRlSW1hZ2UgeyBudWxscHRyIH07CisgICAg
UEZORUdMREVTVFJPWUlNQUdFUFJPQyBtX2VnbERlc3Ryb3lJbWFnZSB7IG51bGxwdHIgfTsKKyAg
ICBQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0MgbV9lZ2xDcmVhdGVJbWFnZUtIUiB7IG51bGxwdHIg
fTsKKyAgICBQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DIG1fZWdsRGVzdHJveUltYWdlS0hSIHsg
bnVsbHB0ciB9OwogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBYVW5pcXVlUGl4bWFwIG1fcGl4bWFw
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
Ym0vR0JNRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9H
Qk1EZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNjgzOWViZjZjZGVhODY5OWVmYTIyM2EwMzMxOTE0
ZWRkZDExOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nYm0vR0JNRGV2aWNlLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdC
TURldmljZS5oIgorCisjaWYgVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKKworI2luY2x1ZGUg
IlRocmVhZEdsb2JhbERhdGEuaCIKKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Z2Jt
Lmg+CisjaW5jbHVkZSA8bXV0ZXg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgR0JN
RGV2aWNlJiBHQk1EZXZpY2U6OmZvckN1cnJlbnRUaHJlYWQoKQoreworICAgIHJldHVybiB0aHJl
YWRHbG9iYWxEYXRhKCkuZ2JtRGV2aWNlKCk7Cit9CisKK0dCTURldmljZTo6R0JNRGV2aWNlKCkK
K3sKKyAgICBpbnQgZmQ7CisgICAgY2hhciBkZXZpY2VOYW1lWzMwXTsKKyAgICBmb3IgKGludCBp
ID0gMTI4OyBpIDwgMTkyOyArK2kpIHsKKyAgICAgICAgc25wcmludGYoZGV2aWNlTmFtZSwgc2l6
ZW9mKGRldmljZU5hbWUpLCAiL2Rldi9kcmkvcmVuZGVyRCVkIiwgaSk7CisgICAgICAgIGZkID0g
b3BlbihkZXZpY2VOYW1lLCBPX1JEV1IgfCBPX0NMT0VYRUMpOworICAgICAgICBpZiAoZmQgPj0g
MCkgeworICAgICAgICAgICAgbV9kZXZpY2UgPSBnYm1fY3JlYXRlX2RldmljZShmZCk7CisgICAg
ICAgICAgICBpZiAobV9kZXZpY2UpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjbG9zZShmZCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0dCTURldmljZTo6fkdCTURldmlj
ZSgpCit7CisgICAgaWYgKG1fZGV2aWNlKSB7CisgICAgICAgIGdibV9kZXZpY2VfZGVzdHJveSht
X2RldmljZSk7CisgICAgICAgIG1fZGV2aWNlID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNRGV2
aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNRGV2aWNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjA3OWQ2ODlmOTJiMTMyNTU4ZmZjZTNmNWE2NDFkODliYjE3NmQwOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1E
ZXZpY2UuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE1ldHJv
bG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQor
CitzdHJ1Y3QgZ2JtX2RldmljZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUaHJl
YWRHbG9iYWxEYXRhOworCitjbGFzcyBHQk1EZXZpY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEdCTURldmljZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3QgR0JNRGV2aWNlJiBmb3JDdXJyZW50VGhyZWFkKCk7CisKKyAgICBH
Qk1EZXZpY2UoKTsKKyAgICB+R0JNRGV2aWNlKCk7CisKKyAgICBzdHJ1Y3QgZ2JtX2RldmljZSog
ZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7IH0KKworcHJpdmF0ZToKKyAgICBzdHJ1
Y3QgZ2JtX2RldmljZSogbV9kZXZpY2UgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUdDR0xBTkdMRVBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRVBpcGUuY3BwCmluZGV4IDVhMzlkM2RhYTY4
MWRiOWVjY2QwYzZmNmQ5Mzc2NjI4NDEwZTIxZmQuLjUxZjU3ZTExNmY2YzA5ZmNjYzdlZmI5ZTAz
YmE5NmNlMjBmZGEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVQaXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xF
UGlwZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLSNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eS5oIgogCiBuYW1lc3BhY2UgTmljb3NpYSB7CkBAIC01Nyw2ICs1NywyNCBA
QCB2b2lkIEdDR0xBTkdMRVBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2NvbnRleHQucHJlcGFyZVRleHR1cmUoKTsKKworICAgIGlmICht
X2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcpIHsKKyAgICAgICAgYXV0byBzaXpl
ID0gbV9jb250ZXh0LmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCk7CisgICAgICAgIGF1dG8g
Zm9ybWF0ID0gbV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5mb3JtYXQoKTsK
KyAgICAgICAgYXV0byBzdHJpZGUgPSBtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tp
bmctPnN0cmlkZSgpOworICAgICAgICBhdXRvIGZkID0gbV9jb250ZXh0Lm1fY29tcG9zaXRvclRl
eHR1cmVCYWNraW5nLT5mZCgpOworCisgICAgICAgIGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmlj
b3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KHBsYXRmb3JtTGF5ZXIoKS0+aW1w
bCgpKS5wcm94eSgpOworICAgICAgICB7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJv
eHkubG9jaygpIH07CisgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmPihzaXplLCBmb3JtYXQsIHN0cmlkZSwg
ZmQpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVk
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGYWxsYmFjayBwYXRoLCByZWFk
IGJhY2sgdGV4dHVyZSB0byBtYWluIG1lbW9yeQogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcAppbmRleCBhMWUxZTg0NDk5M2Yw
ZDM0ZTEzNzNkZjRiNTNiNzYxMWQ0YjkzODZiLi41OGNhNDYxNThmZDA3MDliNmM4MjUxNTJhMGNl
ZDg0YjBjMzcyY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTM2LDkgKzM2LDEzIEBACiAjaW5jbHVkZSAiUGl4ZWxC
dWZmZXIuaCIKIAogI2lmIFVTRShOSUNPU0lBKQorI2luY2x1ZGUgIkdCTURldmljZS5oIgogI2lu
Y2x1ZGUgIk5pY29zaWFHQ0dMQU5HTEVQaXBlLmgiCisjaW5jbHVkZSAiZ2JtLmgiCiAjZWxzZQog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oIgorCisjaW5jbHVkZSA8
ZmNudGwuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw2ICs1NSwxMyBA
QCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaQogI2VuZGlmCiAjaWYgVVNFKE5JQ09TSUEpCiAgICAg
bV9uaWNvc2lhUGlwZSA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6R0NHTEFOR0xFUGlwZT4oKnRoaXMp
OworCisgICAgYXV0byYgZ2JtRGV2aWNlID0gR0JNRGV2aWNlOjpmb3JDdXJyZW50VGhyZWFkKCk7
CisgICAgaWYgKGF1dG8qIGRldmljZSA9IGdibURldmljZS5kZXZpY2UoKSkgeworICAgICAgICBt
X3RleHR1cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KGRldmljZSwgcGxh
dGZvcm1EaXNwbGF5KCkpOworICAgICAgICBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyA9IG1h
a2VVbmlxdWU8RUdMSW1hZ2VCYWNraW5nPihkZXZpY2UsIHBsYXRmb3JtRGlzcGxheSgpKTsKKyAg
ICAgICAgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZyA9IG1ha2VVbmlxdWU8RUdMSW1hZ2VC
YWNraW5nPihkZXZpY2UsIHBsYXRmb3JtRGlzcGxheSgpKTsKKyAgICB9CiAjZWxzZQogICAgIG1f
dGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcj4o
KnRoaXMpOwogI2VuZGlmCkBAIC0xMTIsMTEgKzEyMyw4NSBAQCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBh
dHRyaQogICAgIEdMX0NsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiB9CiAKKyNpZiBVU0UoTklDT1NJ
QSkKK0dyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6RUdMSW1hZ2VCYWNr
aW5nKGdibV9kZXZpY2UqIGRldmljZSwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkg
ZGlzcGxheSkKKyAgICA6IG1fZGV2aWNlKGRldmljZSkKKyAgICAsIG1fZGlzcGxheShkaXNwbGF5
KQoreworfQorCitHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6On5FR0xJ
bWFnZUJhY2tpbmcoKQoreworICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKK30KKwordWludDMyX3Qg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpmb3JtYXQoKSBjb25zdAor
eworICAgIGlmIChtX0JPKQorICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9mb3JtYXQobV9CTyk7
CisgICAgcmV0dXJuIDA7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVH
TEltYWdlQmFja2luZzo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9CTykKKyAgICAgICAg
cmV0dXJuIGdibV9ib19nZXRfc3RyaWRlKG1fQk8pOworICAgIHJldHVybiAwOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291cmNl
cygpCit7CisgICAgaWYgKG1fQk8pIHsKKyAgICAgICAgZ2JtX2JvX2Rlc3Ryb3kobV9CTyk7Cisg
ICAgICAgIG1fQk8gPSBudWxscHRyOworICAgIH0KKyAgICBpZiAobV9pbWFnZSkgeworICAgICAg
ICBFR0xfRGVzdHJveUltYWdlS0hSKG1fZGlzcGxheSwgbV9pbWFnZSk7CisgICAgICAgIG1faW1h
Z2UgPSBFR0xfTk9fSU1BR0U7CisgICAgfQorICAgIGlmIChtX0ZEID49IDApIHsKKyAgICAgICAg
Y2xvc2UobV9GRCk7CisgICAgICAgIG1fRkQgPSAtMTsKKyAgICB9Cit9CisKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpyZXNldChpbnQgd2lkdGgsIGludCBo
ZWlnaHQsIGJvb2wgaGFzQWxwaGEpCit7CisgICAgcmVsZWFzZVJlc291cmNlcygpOworCisgICAg
aWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX0JP
ID0gZ2JtX2JvX2NyZWF0ZShtX2RldmljZSwgd2lkdGgsIGhlaWdodCwgaGFzQWxwaGEgPyBHQk1f
Qk9fRk9STUFUX0FSR0I4ODg4IDogR0JNX0JPX0ZPUk1BVF9YUkdCODg4OCwgR0JNX0JPX1VTRV9S
RU5ERVJJTkcpOworICAgIGlmIChtX0JPKSB7CisgICAgICAgIG1fRkQgPSBnYm1fYm9fZ2V0X2Zk
KG1fQk8pOworICAgICAgICBpZiAobV9GRCA+PSAwKSB7CisgICAgICAgICAgICBFR0xpbnQgaW1h
Z2VBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgICAgICAgICAgRUdMX1dJRFRILCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICBFR0xfSEVJR0hULCBoZWlnaHQsCisgICAgICAgICAgICAgICAgRUdMX0xJ
TlVYX0RSTV9GT1VSQ0NfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGdibV9ib19nZXRfZm9ybWF0
KG1fQk8pKSwKKyAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfRkRfRVhULCBtX0ZE
LAorICAgICAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRDSF9FWFQsIHN0YXRpY19j
YXN0PEVHTGludD4oZ2JtX2JvX2dldF9zdHJpZGUobV9CTykpLAorICAgICAgICAgICAgICAgIEVH
TF9ETUFfQlVGX1BMQU5FMF9PRkZTRVRfRVhULCAwLAorICAgICAgICAgICAgICAgIEVHTF9OT05F
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgbV9pbWFnZSA9IEVHTF9DcmVhdGVJbWFnZUtI
UihtX2Rpc3BsYXksIEVHTF9OT19DT05URVhULCBFR0xfTElOVVhfRE1BX0JVRl9FWFQsIChFR0xD
bGllbnRCdWZmZXIpbnVsbHB0ciwgaW1hZ2VBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGlmICht
X2ltYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
CisgICAgcmVsZWFzZVJlc291cmNlcygpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgor
CiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCiB7CiAg
ICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3Zl
Q29udGV4dCh0aGlzKTsKICAgICBib29sIHN1Y2Nlc3MgPSBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworCiAgICAgaWYgKG1fdGV4dHVy
ZSkKICAgICAgICAgR0xfRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQpAQCAtMTg5LDE4ICsyNzQsNDQgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogICAgIEdMdWludCBj
b2xvckZvcm1hdCA9IGF0dHJzLmFscGhhID8gR0xfUkdCQSA6IEdMX1JHQjsKICAgICBHTGVudW0g
dGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAgICAgR0x1aW50
IGludGVybmFsQ29sb3JGb3JtYXQgPSB0ZXh0dXJlVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgPyBj
b2xvckZvcm1hdCA6IG1faW50ZXJuYWxDb2xvckZvcm1hdDsKKworI2lmIFVTRShOSUNPU0lBKQor
ICAgIGlmIChtX3RleHR1cmVCYWNraW5nKQorICAgICAgICBtX3RleHR1cmVCYWNraW5nLT5yZXNl
dCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7CisgICAgaWYgKG1fY29tcG9zaXRvclRleHR1
cmVCYWNraW5nKQorICAgICAgICBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+cmVzZXQod2lk
dGgsIGhlaWdodCwgYXR0cnMuYWxwaGEpOworICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmVC
YWNraW5nKQorICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5yZXNldCh3aWR0
aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7CisjZW5kaWYKKwogICAgIFNjb3BlZFJlc3RvcmVUZXh0
dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5
Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRh
cmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKICAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkgewogICAgICAgICBHTF9CaW5kVGV4
dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyNpZiBVU0UoTklDT1NJ
QSkKKyAgICAgICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nICYmIG1fY29tcG9zaXRv
clRleHR1cmVCYWNraW5nLT5pbWFnZSgpKQorICAgICAgICAgICAgR0xfRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkRPRVModGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmlt
YWdlKCkpOworICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0
dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xv
ckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CiAgICAgICAgIEdMX0JpbmRUZXh0dXJlKHRl
eHR1cmVUYXJnZXQsIG1faW50ZXJtZWRpYXRlVGV4dHVyZSk7CisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nICYmIG1faW50ZXJtZWRpYXRl
VGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCisgICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRl
eHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5p
bWFnZSgpKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgIEdMX1RleEltYWdlMkQodGV4
dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29s
b3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwogICAgIH0KICNlbmRpZgogICAgIEdMX0Jp
bmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7CisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgaWYgKG1fdGV4dHVyZUJhY2tpbmcgJiYgbV90ZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkKKyAg
ICAgICAgR0xfRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRhcmdldCwgbV90ZXh0
dXJlQmFja2luZy0+aW1hZ2UoKSk7CisgICAgZWxzZQorI2VuZGlmCiAgICAgR0xfVGV4SW1hZ2Uy
RCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAw
LCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CiAgICAgR0xfRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlVGFy
Z2V0LCBtX3RleHR1cmUsIDApOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKaW5kZXggYmQ0YTg3NWQ3YTE1
OTE2N2MyZTg5Y2UyMGI4NTliYjBmODBmN2YzOS4uOWVlNWY3YzBkMDA0YjRiNDgyZDg2OTA5YWZh
ZWZiZDExZmFmYmYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoKTsKIAotICAgIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBm
bG9hdCBvcGFjaXR5ID0gMS4wKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3Bh
Y2l0eSA9IDEuMCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGNhblJldXNlV2l0aG91dFJlc2V0KGNv
bnN0IEludFNpemUmLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CiAgICAgQml0bWFwVGV4dHVyZUdM
JiB0ZXh0dXJlR0woKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPigqbV90
ZXh0dXJlKTsgfQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVbm1hbmFn
ZWRCdWZmZXJEYXRhSG9sZGVyKHN0ZDo6dW5pcXVlX3B0cjxVbm1hbmFnZWRCdWZmZXJEYXRhSG9s
ZGVyPiBob2xkZXIpIHsgbV91bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyID0gV1RGTW92ZShob2xk
ZXIpOyB9CiAgICAgdm9pZCBzZXRFeHRyYUZsYWdzKFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxh
Z3MpIHsgbV9leHRyYUZsYWdzID0gZmxhZ3M7IH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gY2xvbmUoKTsKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gY2xvbmUoKTsKIAog
ICAgIGNsYXNzIEhvbGVQdW5jaENsaWVudCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEKCk7CkBAIC05NywxNCArOTcsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIb2xlUHVu
Y2hDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEhvbGVQdW5jaENsaWVudD4mJiBjbGllbnQpIHsgbV9o
b2xlUHVuY2hDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KIAotICAgIGNvbnN0IFRleHR1cmVW
YXJpYW50JiB0ZXh0dXJlVmFyaWFudCgpIHsgcmV0dXJuIG1fdmFyaWFudDsgfQorICAgIGNvbnN0
IFRleHR1cmVWYXJpYW50JiB0ZXh0dXJlVmFyaWFudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFu
dDsgfQorICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi1wcml2
YXRlOgorcHJvdGVjdGVkOgorICAgIFRleHR1cmVWYXJpYW50IG1fdmFyaWFudDsKIAorcHJpdmF0
ZToKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIE1vbm90b25pY1Rp
bWUgbV90aW1lTGFzdFVzZWQ7CiAKLSAgICBUZXh0dXJlVmFyaWFudCBtX3ZhcmlhbnQ7CiAgICAg
SW50U2l6ZSBtX3NpemU7CiAgICAgR0xpbnQgbV9pbnRlcm5hbEZvcm1hdDsKICAgICBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzIG1fZXh0cmFGbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1
Zi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOGM0OGM1NzZkY2ZkOWE1
ZThiZTVmZDkyMmJkZWMzMGM3ZmEzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFi
dWYuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE1ldHJv
bG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyRG1hYnVmLmgiCisKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQorCisj
aW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpZiBVU0UoTElCRVBPWFkpCisjaW5jbHVkZSAi
RXBveHlFR0wuaCIKKyNlbHNlCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9l
Z2xleHQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjcmVhdGVGb3VyQ0MoY2hhciBhLCBj
aGFyIGIsIGNoYXIgYywgY2hhciBkKQoreworICAgIHJldHVybiB1aW50MzJfdChhKSB8ICh1aW50
MzJfdChiKSA8PCA4KSB8ICh1aW50MzJfdChjKSA8PCAxNikgfCAodWludDMyX3QoZCkgPDwgMjQp
OworfQorCitzdGF0aWMgR0xpbnQgZm91ckNDVG9HTEZvcm1hdCh1aW50MzJfdCBmb3JtYXQpCit7
CisgICAgQVNTRVJUKChmb3JtYXQgPT0gY3JlYXRlRm91ckNDKCdYJywgJ1InLCAnMicsICc0Jykp
IHx8IChmb3JtYXQgPT0gY3JlYXRlRm91ckNDKCdBJywgJ1InLCAnMicsICc0JykpKTsKKyAgICBy
ZXR1cm4gKGZvcm1hdCA9PSBjcmVhdGVGb3VyQ0MoJ0EnLCAnUicsICcyJywgJzQnKSkgPyBHTF9S
R0JBIDogR0xfUkdCOworfQorCitzdGF0aWMgYm9vbCBmb3JtYXRIYXNBbHBoYSh1aW50MzJfdCBm
b3JtYXQpCit7CisgICAgQVNTRVJUKChmb3JtYXQgPT0gY3JlYXRlRm91ckNDKCdYJywgJ1InLCAn
MicsICc0JykpIHx8IChmb3JtYXQgPT0gY3JlYXRlRm91ckNDKCdBJywgJ1InLCAnMicsICc0Jykp
KTsKKyAgICByZXR1cm4gKGZvcm1hdCA9PSBjcmVhdGVGb3VyQ0MoJ0EnLCAnUicsICcyJywgJzQn
KSkgPyB0cnVlIDogZmFsc2U7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVm
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zihjb25zdCBJbnRTaXplJiBzaXplLCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHN0cmlkZSwgaW50IGZkKQorICAgIDogVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoeyBSR0JUZXh0dXJlIHsgMCB9IH0sIHNpemUsIFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAoZm9ybWF0SGFzQWxwaGEoZm9ybWF0KSA/
IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKSwgZm91ckNDVG9HTEZvcm1hdChmb3Jt
YXQpKQorICAgICwgbV9mb3JtYXQoZm9ybWF0KQorICAgICwgbV9zdHJpZGUoc3RyaWRlKQorICAg
ICwgbV9mZChkdXAoZmQpKQoreworfQorCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1
Zjo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmKCkKK3sKKyAgICBBU1NFUlQoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSR0JUZXh0dXJlPihtX3ZhcmlhbnQpKTsKKyAgICBhdXRvJiB0
ZXh0dXJlID0gc3RkOjpnZXQ8UkdCVGV4dHVyZT4obV92YXJpYW50KTsKKyAgICBpZiAodGV4dHVy
ZS5pZCkKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZS5pZCk7CisgICAgY2xv
c2UobV9mZCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6OnZh
bGlkYXRlVGV4dHVyZSgpCit7CisgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UkdC
VGV4dHVyZT4obV92YXJpYW50KSk7CisgICAgYXV0byYgdGV4dHVyZSA9IHN0ZDo6Z2V0PFJHQlRl
eHR1cmU+KG1fdmFyaWFudCk7CisgICAgaWYgKHRleHR1cmUuaWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8qIGNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKKyAgICBBU1NFUlQo
Y29udGV4dC0+aXNFR0xDb250ZXh0KCkpOworCisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7CisKKyAgICBhdXRvIHNpemUgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6c2l6ZSgpOworICAgIEVHTEF0dHJpYiBpbWFnZUF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAg
RUdMX1dJRFRILCBzaXplLndpZHRoKCksCisgICAgICAgIEVHTF9IRUlHSFQsIHNpemUuaGVpZ2h0
KCksCisgICAgICAgIEVHTF9MSU5VWF9EUk1fRk9VUkNDX0VYVCwgc3RhdGljX2Nhc3Q8RUdMQXR0
cmliPihtX2Zvcm1hdCksCisgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9GRF9FWFQsIG1fZmQs
CisgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRDSF9FWFQsIHN0YXRpY19jYXN0PEVHTEF0
dHJpYj4obV9zdHJpZGUpLAorICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwg
MCwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworICAgIGF1dG8gaW1hZ2UgPSBkb3duY2FzdDxH
TENvbnRleHRFR0w+KCpjb250ZXh0KS5jcmVhdGVJbWFnZShFR0xfTElOVVhfRE1BX0JVRl9FWFQs
IChFR0xDbGllbnRCdWZmZXIpbnVsbHB0ciwgaW1hZ2VBdHRyaWJ1dGVzKTsKKyAgICBpZiAoIWlt
YWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlLmlk
KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUuaWQpOworICAgIGds
RUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgaW1hZ2UpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJ
TkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTElORUFSKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKGRvd25jYXN0PEdMQ29u
dGV4dEVHTD4oKmNvbnRleHQpLmRlc3Ryb3lJbWFnZShpbWFnZSkpOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7
CisgICAgdmFsaWRhdGVUZXh0dXJlKCk7CisgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIG1v
ZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6
OmNsb25lKCkKK3sKKyAgICB2YWxpZGF0ZVRleHR1cmUoKTsKKyAgICByZXR1cm4gVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNsb25lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJEbWFidWYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1M2Ey
MGY5M2Y5ZmFhYzg5OWFhZDIwNGNiMGQ3MmQxNjMzN2I1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJEbWFidWYuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQU5HTEUpICYmIFVTRShO
SUNPU0lBKQorCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckRtYWJ1ZiA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWYpOwor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CitwdWJsaWM6CisgICAgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJEbWFidWYoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3Qgc3RyaWRlLCBpbnQgZmQpOworCisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJEbWFidWYoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHZhbGlkYXRlVGV4dHVyZSgp
OworCisgICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwg
ZmxvYXQgb3BhY2l0eSkgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPiBjbG9uZSgpIGZpbmFsOworCisgICAgdWludDMyX3QgbV9mb3Jt
YXQ7CisgICAgdWludDMyX3QgbV9zdHJpZGU7CisgICAgaW50IG1fZmQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450780</attachid>
            <date>2022-02-03 09:20:04 -0800</date>
            <delta_ts>2022-02-03 23:17:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235946-20220203172002.patch</filename>
            <type>text/plain</type>
            <size>40455</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg1MGI0ZGVjMzRmMGRl
Yzc2MGY0ZmI3Yjc4ZTJkNTQzZjUxNTI5My4uNmM1YWIyZDU5MjU0ZWQ0NWZiYzg5ZjRhZjZiNmZm
ZDQ0ZjJhOWE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIyLTAyLTAxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSBkbWFi
dWYgd2hlbiBwb3NzaWJsZSB0byB0cmFuc2ZlciBBTkdMRSByZW5kZXJpbmcgdG8gdGhlIGNvbXBv
c2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBkbWFidWYgd2hlbiBhdmFpbGFibGUgdG8gdHJhbnNmZXIgQU5HTEUgV2ViR0wgcmVuZGVyaW5n
IGNvbnRlbnRzCisgICAgICAgIHRvIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsu
dHh0OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU9wZW5HTFNoaW1zKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZVRleHR1cmVJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRFR0w6OmNyZWF0ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEVHTDo6ZGVzdHJveUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dC
TURldmljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFkU3BlY2lmaWNEZXZp
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6R0JNRGV2aWNlOjpnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6R0JNRGV2aWNlOjpHQk1EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0JNRGV2aWNlOjp+
R0JNRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNRGV2aWNlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R0JNRGV2aWNlOjpkZXZpY2UgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDR0xBTkdMRVBpcGVTb3VyY2U6OnN3YXBCdWZm
ZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6RUdMSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTElt
YWdlQmFja2luZzo6fkVHTEltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OmZvcm1hdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnN0cmlk
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJ
bWFnZUJhY2tpbmc6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpyZXNldCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1
ZmZlckJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnRleHR1cmVWYXJpYW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjp0ZXh0
dXJlVmFyaWFudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb3VyQ0MpOgorICAgICAgICAoV2ViQ29yZTo6Zm91ckNDVG9HTEZvcm1h
dCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtYXRIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJEbWFidWYpOgorICAgICAgICAoV2ViQ29yZTo6bV9mZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6flRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyRG1hYnVmKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyRG1hYnVmOjp2YWxpZGF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmOjpjbG9uZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
RG1hYnVmLmg6IEFkZGVkLgorCiAyMDIyLTAyLTAzICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBZGQgc3BlY2lhbGl6ZSB0eXBlIHRyYWl0cyB0byBHTENvbnRleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMjllMmI3OGY0ZDI2YjVmNjZjMjM3ZmYwNGY0
Yzc3OTgzMDY0M2M5ZS4uYmQ3NmEwOTIyNjgwNjAxZDQ5ZjE3MTFjOTUyNWQwNTBmZjY0NTk0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTI2LDYgKzI2LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3RrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2dseCIKKyAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBjZmJmZTRmNjZkYmMzMzllNjgxNzlmNGNl
YjQ4YTAyYzNjMTIyOTI2Li5iZTVjMzA0N2ZlNTU4M2VlZTVlYTE1MTYwZGRjOTk2Y2E4ZjNlYjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMjMsNiArMjMsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9nbGliIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2Vwb3h5IgorICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2dseCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IDFlYjUwNTdmYWM2NmUwZWRlZmIzZTczYmFm
MTc5MmVhMDFkNGExNTguLmEzNzBmNDJlZjUxYmIzMGIzNWM0NDY2YjBlNTJhYjEwZDY5ZTQ4Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBAIC0xMDEsNiArMTAxLDggQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcCBAbm8tdW5pZnkKIAorcGxhdGZvcm0vZ3JhcGhpY3Mv
Z2JtL0dCTURldmljZS5jcHAKKwogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5j
cHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4
dAppbmRleCBmZDA1OGU4ZjYxNGVkYmE3MGZkMGQxMDQyODU4NjRlNzY4ZWNlYjVkLi41ZmUzNjgy
NWZiMzc1MDQ3Yjc1MWFmMzJjYTY4MDkxMWU0YmFlZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dApA
QCAtNzIsNiArNzIsOCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAKIAorcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dCTURl
dmljZS5jcHAKKwogcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3JtRGlzcGxheUxpYldQ
RS5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQppbmRleCA0
M2JiNzdhNWE2NWI0ZTJiZDVjZGY1ZDA3NDk2NGNhZTJjNDliYjY1Li4yZjE2OWY0MzYwYzdiZGJh
NWE2ODM5NzY5YjJjZDMwNGI1MTA0ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rl
eHR1cmVNYXBwZXIuY21ha2UKQEAgLTU5LDYgKzU5LDcgQEAgaWYgKFVTRV9DT09SRElOQVRFRF9H
UkFQSElDUykKICAgICApCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyRG1hYnVmLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAKaW5kZXgg
OTBiOTgwODVjYjg3ZTM2MDExNjlmZjEzMzk2M2Y5YTAwMzFiZDY4Yi4uYjQyNTEyZTllN2U2NmQ5
MTQ3YmZmOTdmNTJjMjgyZDY4NWEzYTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcApAQCAtMTQzLDYgKzE0Myw3IEBAIGJvb2wgaW5p
dGlhbGl6ZU9wZW5HTFNoaW1zKCkKICAgICBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xE
cmF3QnVmZmVycywgc3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGds
RHJhd0VsZW1lbnRzSW5zdGFuY2VkLCBzdWNjZXNzKTsKICAgICBBU1NJR05fRlVOQ1RJT05fVEFC
TEVfRU5UUlkoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgc3VjY2Vzcyk7CisgICAgQVNTSUdO
X0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMsIHN1Y2Nl
c3MpOwogICAgIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyLCBzdWNjZXNzKTsKICAgICBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRCwgc3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VO
VFJZKGdsR2VuQnVmZmVycywgc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvT3BlbkdMU2hpbXMuaAppbmRleCA0YzM1N2RkZTk4MWYxMzZmMDU4ZDg4MzcwNzhj
NDEzMGQ2MGQ2YTY1Li43YjE5NGIyYTZjMjZlZjVlN2Y2MTQyMTA5N2Q2NjBkOTIzYjMxYzZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKQEAg
LTc4LDYgKzc4LDcgQEAgdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheVR5cGUpIChHTHVpbnQpOwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbERy
YXdBcnJheXNJbnN0YW5jZWRUeXBlKSAoR0xlbnVtLCBHTGludCwgR0xzaXplaSwgR0xzaXplaSk7
CiB0eXBlZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsRHJhd0J1ZmZlcnNUeXBlKSAoR0xzaXplaSwg
Y29uc3QgR0xlbnVtKik7CiB0eXBlZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsRHJhd0VsZW1lbnRz
SW5zdGFuY2VkVHlwZSkgKEdMZW51bSwgR0xzaXplaSwgR0xlbnVtLCBjb25zdCBHTHZvaWQqLCBH
THNpemVpKTsKK3R5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xFR0xJbWFnZVRhcmdldFRleHR1
cmUyRE9FU1R5cGUpIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTKTsKIHR5cGVkZWYgdm9p
ZCAoR0xBUElFTlRSWSAqZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUpIChHTHVpbnQpOwog
dHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSkg
KEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7CiB0eXBlZGVmIHZvaWQgKEdMQVBJRU5U
UlkgKmdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwg
R0x1aW50LCBHTGludCk7CkBAIC0xODYsNiArMTg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX09wZW5H
TEZ1bmN0aW9uVGFibGUgewogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsRHJhd0FycmF5c0lu
c3RhbmNlZCk7CiAgICAgRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xEcmF3QnVmZmVycyk7CiAgICAg
RlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQpOworICAgIEZVTkNU
SU9OX1RBQkxFX0VOVFJZKGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMpOwogICAgIEZVTkNU
SU9OX1RBQkxFX0VOVFJZKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOwogICAgIEZVTkNUSU9O
X1RBQkxFX0VOVFJZKGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOwogICAgIEZVTkNUSU9OX1RB
QkxFX0VOVFJZKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQpOwpAQCAtMzA2LDYgKzMwOCw3IEBAIHR5
cGVkZWYgc3RydWN0IF9PcGVuR0xGdW5jdGlvblRhYmxlIHsKICNkZWZpbmUgZ2xEcmF3QnVmZmVy
cyAgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRHJhd0J1ZmZl
cnMpCiAjZGVmaW5lIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUICAgICAgICAgICAgIGdsRHJh
d0VsZW1lbnRzSW5zdGFuY2VkCiAjZGVmaW5lIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkICAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERyYXdFbGVtZW50c0luc3RhbmNlZCkKKyNk
ZWZpbmUgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyAgICAgICAgICAgTE9PS1VQX0dMX0ZV
TkNUSU9OKGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMpCiAjZGVmaW5lIGdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KQogI2RlZmluZSBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUICAg
ICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyCiAjZGVmaW5lIGdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA2ZDEw
NjZhNWI5NWE0MDFlNjg5NDUwZGVlYzU0NWQ3YWQxZTc0MmMzLi4zNTFkOTIxODU4YmNiODhhMGNl
NmI4MGNjM2U2ZGE4YTAxZjAyNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cApAQCAtNTQxLDE0ICs1NDEsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVw
YXJlVGV4dHVyZUltcGwoKQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6
OnN3YXAobV90ZXh0dXJlLCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICBzdGQ6OnN3YXAobV90
ZXh0dXJlLCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOworICAgIHN0ZDo6c3dhcChtX3RleHR1cmVC
YWNraW5nLCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyk7CisgICAgc3RkOjpzd2FwKG1fdGV4
dHVyZUJhY2tpbmcsIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpOworCiAgICAgR0xfQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7Ci0gICAgR0xfRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJF
X1JFQ1RBTkdMRV9BTkdMRSwgbV90ZXh0dXJlLCAwKTsKKyAgICBHTF9GcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIGRyYXdpbmdCdWZmZXJU
ZXh0dXJlVGFyZ2V0KCksIG1fdGV4dHVyZSwgMCk7CiAgICAgR0xfRmx1c2goKTsKIAogICAgIGlm
IChtX3N0YXRlLmJvdW5kRHJhd0ZCTyAhPSBtX2ZibykKICAgICAgICAgR0xfQmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9zdGF0ZS5ib3VuZERyYXdGQk8p
OwotICAgIGVsc2UKLSAgICAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdM
OjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogI2Vsc2UKICAgICBpZiAobV9wcmVzZXJ2ZURyYXdpbmdC
dWZmZXJUZXh0dXJlKSB7CiAgICAgICAgIC8vIEJsaXQgbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJU
ZXh0dXJlIGludG8gbV90ZXh0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4
IGNhODcyYWU1OGNkYTUxYTE2NTkyMWJjNTA5MmI1N2MyMTAzMzhkNDguLjIxYjk0YzE2OWE1MTJl
ODk4NmZkMGJhYzAyNzUwYzNlNTYzMDU0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmgKQEAgLTQzLDE0ICs0MywxOSBAQAogI2lmIFVTRShOSUNPU0lBKQogbmFtZXNwYWNlIE5pY29z
aWEgewogY2xhc3MgR0NHTEFOR0xFUGlwZTsKK2NsYXNzIEdDR0xBTkdMRVBpcGVTb3VyY2U7CiBj
bGFzcyBHQ0dMTGF5ZXI7CiB9CisKK3N0cnVjdCBnYm1fZGV2aWNlOworc3RydWN0IGdibV9ibzsK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVuc2lvbnNHTDsKIGNs
YXNzIEV4dGVuc2lvbnNHTEFOR0xFOworY2xhc3MgR0xDb250ZXh0OwogY2xhc3MgSG9zdFdpbmRv
dzsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgTWVkaWFQbGF5ZXI7CkBAIC00NTAsMTcgKzQ1
NSw0MiBAQCBwcm90ZWN0ZWQ6CiAgICAgR0NHTHVpbnQgbV9pbnRlcm1lZGlhdGVUZXh0dXJlIHsg
MCB9OwogI2VuZGlmCiAjaWYgVVNFKE5JQ09TSUEpCi0jaWYgVVNFKEFOR0xFKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOaWNvc2lhOjpHQ0dMQU5HTEVQaXBlPiBtX25pY29zaWFQaXBlOwotI2Vsc2UK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6R0NHTExheWVyPiBtX25pY29zaWFMYXllcjsK
LSNlbmRpZgorCisgICAgY2xhc3MgRUdMSW1hZ2VCYWNraW5nIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIEVHTEltYWdlQmFja2luZyhnYm1fZGV2
aWNlKiwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkpOworICAgICAgICB+RUdMSW1h
Z2VCYWNraW5nKCk7CisKKyAgICAgICAgYm9vbCByZXNldChpbnQgd2lkdGgsIGludCBoZWlnaHQs
IGJvb2wgaGFzQWxwaGEpOworCisgICAgICAgIEVHTEltYWdlIGltYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZTsgfQorICAgICAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBtX0ZEOyB9CisK
KyAgICAgICAgdWludDMyX3QgZm9ybWF0KCkgY29uc3Q7CisgICAgICAgIHVpbnQzMl90IHN0cmlk
ZSgpIGNvbnN0OworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgcmVsZWFzZVJlc291cmNlcygp
OworCisgICAgICAgIGdibV9kZXZpY2UqIG1fZGV2aWNlOworICAgICAgICBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXk7CisKKyAgICAgICAgZ2JtX2JvKiBtX0JPIHsg
bnVsbHB0ciB9OworICAgICAgICBpbnQgbV9GRCB7IC0xIH07CisgICAgICAgIEVHTEltYWdlIG1f
aW1hZ2UgeyBFR0xfTk9fSU1BR0UgfTsKKyAgICB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEVH
TEltYWdlQmFja2luZz4gbV90ZXh0dXJlQmFja2luZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdM
SW1hZ2VCYWNraW5nPiBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZzsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RUdMSW1hZ2VCYWNraW5nPiBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nOwogI2Vs
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXI+IG1fdGV4bWFwTGF5ZXI7CiAjZW5kaWYKIAogICAgIGZyaWVuZCBj
bGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKICNpZiBVU0UoTklDT1NJQSkKKyAgICBmcmllbmQgY2xh
c3MgTmljb3NpYTo6R0NHTEFOR0xFUGlwZVNvdXJjZTsKICAgICBmcmllbmQgY2xhc3MgTmljb3Np
YTo6R0NHTExheWVyOwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIGZyaWVuZCBjbGFz
cyBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IDliYjkwMDgy
MTI3NmNiODAxYTg0ZDY1NmFjYTU4M2VhYjcwMWI4MDYuLjlhYWM3NDY2NjhlZjg5Y2M3OTc3YjI2
YmZjNjNmNjAxYzY3NDIwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0zNjQsNiArMzY0LDE5IEBAIEdMQ29u
dGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4
dCBjb250ZXh0LCBFR0xTdXJmCiAgICAgQVNTRVJUKHR5cGUgPT0gU3VyZmFjZWxlc3MgfHwgc3Vy
ZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kaXNwbGF5LmVn
bERpc3BsYXkoKSAhPSBFR0xfTk9fRElTUExBWSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4
dCAhPSBFR0xfTk9fQ09OVEVYVCk7CisKKyAgICBpZiAoZGlzcGxheS5lZ2xDaGVja1ZlcnNpb24o
MSwgNSkpIHsKKyAgICAgICAgbV9lZ2xDcmVhdGVJbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
RUdMQ1JFQVRFSU1BR0VQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsQ3JlYXRlSW1hZ2UiKSk7
CisgICAgICAgIG1fZWdsRGVzdHJveUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNU
Uk9ZSU1BR0VQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlIikpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9lZ2xDcmVhdGVJbWFnZSA9PSAhbV9lZ2xEZXN0cm95SW1h
Z2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMgPSBlZ2xR
dWVyeVN0cmluZyhkaXNwbGF5LmVnbERpc3BsYXkoKSwgRUdMX0VYVEVOU0lPTlMpOworICAgICAg
ICBpZiAoR0xDb250ZXh0Ojppc0V4dGVuc2lvblN1cHBvcnRlZChleHRlbnNpb25zLCAiRUdMX0tI
Ul9pbWFnZV9iYXNlIikpIHsKKyAgICAgICAgICAgIG1fZWdsQ3JlYXRlSW1hZ2VLSFIgPSByZWlu
dGVycHJldF9jYXN0PFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3Mo
ImVnbENyZWF0ZUltYWdlS0hSIikpOworICAgICAgICAgICAgbV9lZ2xEZXN0cm95SW1hZ2VLSFIg
PSByZWludGVycHJldF9jYXN0PFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0M+KGVnbEdldFByb2NB
ZGRyZXNzKCJlZ2xEZXN0cm95SW1hZ2VLSFIiKSk7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fZWdsQ3JlYXRlSW1hZ2VLSFIgPT0gIW1fZWdsRGVzdHJveUltYWdlS0hSKTsK
KyAgICB9CiB9CiAKIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCkBAIC0zODYsNiArMzk5
LDMxIEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAjZW5kaWYKIH0KIAorRUdMSW1h
Z2UgR0xDb250ZXh0RUdMOjpjcmVhdGVJbWFnZShFR0xlbnVtIHRhcmdldCwgRUdMQ2xpZW50QnVm
ZmVyIGNsaWVudEJ1ZmZlciwgY29uc3QgRUdMQXR0cmliKiBhdHRyaWJMaXN0KSBjb25zdAorewor
ICAgIGlmIChtX2VnbENyZWF0ZUltYWdlKQorICAgICAgICByZXR1cm4gbV9lZ2xDcmVhdGVJbWFn
ZShtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBhdHRyaWJMaXN0ID8gRUdMX05PX0NPTlRFWFQgOiBt
X2NvbnRleHQsIHRhcmdldCwgY2xpZW50QnVmZmVyLCBhdHRyaWJMaXN0KTsKKyAgICBpZiAobV9l
Z2xDcmVhdGVJbWFnZUtIUikgeworICAgICAgICBWZWN0b3I8RUdMaW50PiBpbnRBdHRyaWJMaXN0
OworICAgICAgICBmb3IgKGludCBpID0gMDsgYXR0cmliTGlzdFtpXSAhPSBFR0xfTk9ORTsgaSAr
PSAyKSB7CisgICAgICAgICAgICBpbnRBdHRyaWJMaXN0LmFwcGVuZChhdHRyaWJMaXN0W2ldKTsK
KyAgICAgICAgICAgIGludEF0dHJpYkxpc3QuYXBwZW5kKGF0dHJpYkxpc3RbaSsxXSk7CisgICAg
ICAgIH0KKyAgICAgICAgaW50QXR0cmliTGlzdC5hcHBlbmQoRUdMX05PTkUpOworICAgICAgICBy
ZXR1cm4gbV9lZ2xDcmVhdGVJbWFnZUtIUihtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBhdHRyaWJM
aXN0ID8gRUdMX05PX0NPTlRFWFQgOiBtX2NvbnRleHQsIHRhcmdldCwgY2xpZW50QnVmZmVyLCBp
bnRBdHRyaWJMaXN0LmRhdGEoKSk7CisgICAgfQorICAgIHJldHVybiBFR0xfTk9fSU1BR0U7Cit9
CisKK2Jvb2wgR0xDb250ZXh0RUdMOjpkZXN0cm95SW1hZ2UoRUdMSW1hZ2UgaW1hZ2UpIGNvbnN0
Cit7CisgICAgaWYgKG1fZWdsRGVzdHJveUltYWdlKQorICAgICAgICByZXR1cm4gbV9lZ2xEZXN0
cm95SW1hZ2UobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgaW1hZ2UpOworICAgIGlmIChtX2VnbERl
c3Ryb3lJbWFnZUtIUikKKyAgICAgICAgcmV0dXJuIG1fZWdsRGVzdHJveUltYWdlS0hSKG1fZGlz
cGxheS5lZ2xEaXNwbGF5KCksIGltYWdlKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wg
R0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpCiB7CiAgICAgcmV0
dXJuIG1fdHlwZSA9PSBXaW5kb3dTdXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCmluZGV4IGU1YjkzMDU4OThmNDA4MjIy
NmFmZjk0Y2M2MzBhYTExMjA2OWRkZTkuLmY1ZjM4OTU2MGEwYTAwMjYzZDdiMDc5OWEwMjFhNmUy
ODBjYzA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmgKQEAgLTM2LDEwICszNiwzMCBAQCBzdHJ1Y3Qgd2xfZWdsX3dpbmRv
dzsKIHN0cnVjdCB3cGVfcmVuZGVyZXJfYmFja2VuZF9lZ2xfb2Zmc2NyZWVuX3RhcmdldDsKICNl
bmRpZgogCit0eXBlZGVmIGludHB0cl90IEVHTEF0dHJpYjsKK3R5cGVkZWYgdW5zaWduZWQgRUdM
Qm9vbGVhbjsKK3R5cGVkZWYgdm9pZCAqRUdMQ2xpZW50QnVmZmVyOwogdHlwZWRlZiB2b2lkICpF
R0xDb25maWc7CiB0eXBlZGVmIHZvaWQgKkVHTENvbnRleHQ7CiB0eXBlZGVmIHZvaWQgKkVHTERp
c3BsYXk7Cit0eXBlZGVmIHZvaWQgKkVHTEltYWdlOwordHlwZWRlZiB2b2lkICpFR0xJbWFnZUtI
UjsKIHR5cGVkZWYgdm9pZCAqRUdMU3VyZmFjZTsKK3R5cGVkZWYgdW5zaWduZWQgRUdMZW51bTsK
K3R5cGVkZWYgaW50MzJfdCBFR0xpbnQ7CisKKyNpZiAhZGVmaW5lZChQRk5FR0xDUkVBVEVJTUFH
RVBST0MpCit0eXBlZGVmIEVHTEltYWdlICgqUEZORUdMQ1JFQVRFSU1BR0VQUk9DKSAoRUdMRGlz
cGxheSwgRUdMQ29udGV4dCwgRUdMZW51bSwgRUdMQ2xpZW50QnVmZmVyLCBjb25zdCBFR0xBdHRy
aWIqKTsKKyNlbmRpZgorI2lmICFkZWZpbmVkKFBGTkVHTERFU1RST1lJTUFHRVBST0MpCit0eXBl
ZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xERVNUUk9ZSU1BR0VQUk9DKSAoRUdMRGlzcGxheSwgRUdM
SW1hZ2UpOworI2VuZGlmCisjaWYgIWRlZmluZWQoUEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DKQor
dHlwZWRlZiBFR0xJbWFnZUtIUiAoKlBGTkVHTENSRUFURUlNQUdFS0hSUFJPQykgKEVHTERpc3Bs
YXksIEVHTENvbnRleHQsIEVHTGVudW0gdGFyZ2V0LCBFR0xDbGllbnRCdWZmZXIsIGNvbnN0IEVH
TGludCogYXR0cmliTGlzdCk7CisjZW5kaWYKKyNpZiAhZGVmaW5lZChQRk5FR0xERVNUUk9ZSU1B
R0VLSFJQUk9DKQordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMREVTVFJPWUlNQUdFS0hSUFJP
QykgKEVHTERpc3BsYXksIEVHTEltYWdlS0hSKTsKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUzLDYgKzczLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBs
YXN0RXJyb3JTdHJpbmcoKTsKIAogICAgIEVHTENvbmZpZyBjb25maWcoKSBjb25zdCB7IHJldHVy
biBtX2NvbmZpZzsgfQorICAgIEVHTEltYWdlIGNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LCBF
R0xDbGllbnRCdWZmZXIsIGNvbnN0IEVHTEF0dHJpYiopIGNvbnN0OworICAgIGJvb2wgZGVzdHJv
eUltYWdlKEVHTEltYWdlKSBjb25zdDsKIAogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOwog
CkBAIC0xMDYsNiArMTI4LDEwIEBAIHByaXZhdGU6CiAgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2Ug
eyBudWxscHRyIH07CiAgICAgRUdMQ29uZmlnIG1fY29uZmlnIHsgbnVsbHB0ciB9OwogICAgIEVH
TFN1cmZhY2VUeXBlIG1fdHlwZTsKKyAgICBQRk5FR0xDUkVBVEVJTUFHRVBST0MgbV9lZ2xDcmVh
dGVJbWFnZSB7IG51bGxwdHIgfTsKKyAgICBQRk5FR0xERVNUUk9ZSU1BR0VQUk9DIG1fZWdsRGVz
dHJveUltYWdlIHsgbnVsbHB0ciB9OworICAgIFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQyBtX2Vn
bENyZWF0ZUltYWdlS0hSIHsgbnVsbHB0ciB9OworICAgIFBGTkVHTERFU1RST1lJTUFHRUtIUlBS
T0MgbV9lZ2xEZXN0cm95SW1hZ2VLSFIgeyBudWxscHRyIH07CiAjaWYgUExBVEZPUk0oWDExKQog
ICAgIFhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dCTURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI4NTI0
YWJjZmEyZTYwNjExZDIwNjM3OGU2OGM1MTI2ZjI0ZWVhYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuY3BwCkBAIC0wLDAg
KzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTWV0cm9sb2dpY2FsIEdyb3VwIEIu
Vi4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0JNRGV2aWNlLmgiCisKKyNpZiBVU0UoQU5HTEUpICYm
IFVTRShOSUNPU0lBKQorCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxnYm0uaD4KKyNp
bmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8R0JNRGV2aWNlPiYgdGhyZWFk
U3BlY2lmaWNEZXZpY2UoKQoreworICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxHQk1EZXZpY2U+
KiBzX2dibURldmljZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19vbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFnLAorICAgICAgICBbXSB7CisgICAgICAgICAgICBz
X2dibURldmljZSA9IG5ldyBUaHJlYWRTcGVjaWZpYzxHQk1EZXZpY2U+OworICAgICAgICB9KTsK
KyAgICByZXR1cm4gKnNfZ2JtRGV2aWNlOworfQorCitjb25zdCBHQk1EZXZpY2UmIEdCTURldmlj
ZTo6Z2V0KCkKK3sKKyAgICByZXR1cm4gKnRocmVhZFNwZWNpZmljRGV2aWNlKCk7Cit9CisKK0dC
TURldmljZTo6R0JNRGV2aWNlKCkKK3sKKyAgICBpbnQgZmQ7CisgICAgY2hhciBkZXZpY2VOYW1l
WzMwXTsKKyAgICBmb3IgKGludCBpID0gMTI4OyBpIDwgMTkyOyArK2kpIHsKKyAgICAgICAgc25w
cmludGYoZGV2aWNlTmFtZSwgc2l6ZW9mKGRldmljZU5hbWUpLCAiL2Rldi9kcmkvcmVuZGVyRCVk
IiwgaSk7CisgICAgICAgIGZkID0gb3BlbihkZXZpY2VOYW1lLCBPX1JEV1IgfCBPX0NMT0VYRUMp
OworICAgICAgICBpZiAoZmQgPj0gMCkgeworICAgICAgICAgICAgbV9kZXZpY2UgPSBnYm1fY3Jl
YXRlX2RldmljZShmZCk7CisgICAgICAgICAgICBpZiAobV9kZXZpY2UpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K0dCTURldmljZTo6fkdCTURldmljZSgpCit7CisgICAgaWYgKG1fZGV2aWNlKSB7CisgICAgICAg
IGdibV9kZXZpY2VfZGVzdHJveShtX2RldmljZSk7CisgICAgICAgIG1fZGV2aWNlID0gbnVsbHB0
cjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShB
TkdMRSkgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nYm0vR0JNRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nYm0vR0JNRGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUwZTA3ZmM5ZDdkNjE2Yzg0YzFhY2M3
ODY0OTdlYmU5NDlkOTc2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dibS9HQk1EZXZpY2UuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQU5H
TEUpICYmIFVTRShOSUNPU0lBKQorCitzdHJ1Y3QgZ2JtX2RldmljZTsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHQk1EZXZpY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdC
TURldmljZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgR0JNRGV2aWNlJiBnZXQoKTsKKworICAgIEdCTURldmljZSgpOworICAgIH5H
Qk1EZXZpY2UoKTsKKworICAgIHN0cnVjdCBnYm1fZGV2aWNlKiBkZXZpY2UoKSBjb25zdCB7IHJl
dHVybiBtX2RldmljZTsgfQorCitwcml2YXRlOgorICAgIHN0cnVjdCBnYm1fZGV2aWNlKiBtX2Rl
dmljZSB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShBTkdMRSkgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFUGlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0NHTEFOR0xFUGlwZS5jcHAKaW5kZXggNWEzOWQzZGFhNjgxZGI5ZWNjZDBjNmY2ZDkzNzY2
Mjg0MTBlMjFmZC4uNTFmNTdlMTE2ZjZjMDlmY2NjN2VmYjllMDNiYTk2Y2UyMGZkYTAzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUdDR0xBTkdMRVBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVQaXBlLmNwcApAQCAtMzUsNyAr
MzUsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJE
bWFidWYuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCiAK
IG5hbWVzcGFjZSBOaWNvc2lhIHsKQEAgLTU3LDYgKzU3LDI0IEBAIHZvaWQgR0NHTEFOR0xFUGlw
ZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
Y29udGV4dC5wcmVwYXJlVGV4dHVyZSgpOworCisgICAgaWYgKG1fY29udGV4dC5tX2NvbXBvc2l0
b3JUZXh0dXJlQmFja2luZykgeworICAgICAgICBhdXRvIHNpemUgPSBtX2NvbnRleHQuZ2V0SW50
ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAgICAgICAgYXV0byBmb3JtYXQgPSBtX2NvbnRleHQu
bV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmZvcm1hdCgpOworICAgICAgICBhdXRvIHN0cmlk
ZSA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+c3RyaWRlKCk7CisgICAg
ICAgIGF1dG8gZmQgPSBtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmZkKCk7
CisKKyAgICAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbD4ocGxhdGZvcm1MYXllcigpLT5pbXBsKCkpLnByb3h5KCk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBwcm94eS5sb2NrKCkgfTsKKyAgICAg
ICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJEbWFidWY+KHNpemUsIGZvcm1hdCwgc3RyaWRlLCBmZCkpOworICAgICAgICB9CisK
KyAgICAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIEZhbGxiYWNrIHBhdGgsIHJlYWQgYmFjayB0ZXh0dXJlIHRvIG1h
aW4gbWVtb3J5CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyQU5HTEUuY3BwCmluZGV4IGExZTFlODQ0OTkzZjBkMzRlMTM3M2RmNGI1M2I3NjEx
ZDRiOTM4NmIuLjBiZWRmNTkyYWY1N2M5YTM4YWRiZjIxZGRhYmQ2NmRhNjMzZGFhNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNw
cApAQCAtMzYsNyArMzYsMTEgQEAKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogCiAjaWYgVVNF
KE5JQ09TSUEpCisjaW5jbHVkZSAiR0JNRGV2aWNlLmgiCiAjaW5jbHVkZSAiTmljb3NpYUdDR0xB
TkdMRVBpcGUuaCIKKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Z2JtLmg+CiAjZWxz
ZQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oIgogI2VuZGlmCkBA
IC01MSw2ICs1NSwxMyBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRH
TEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaQogI2VuZGlmCiAjaWYgVVNF
KE5JQ09TSUEpCiAgICAgbV9uaWNvc2lhUGlwZSA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6R0NHTEFO
R0xFUGlwZT4oKnRoaXMpOworCisgICAgY29uc3QgYXV0byYgZ2JtRGV2aWNlID0gR0JNRGV2aWNl
OjpnZXQoKTsKKyAgICBpZiAoYXV0byogZGV2aWNlID0gZ2JtRGV2aWNlLmRldmljZSgpKSB7Cisg
ICAgICAgIG1fdGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5pcXVlPEVHTEltYWdlQmFja2luZz4oZGV2
aWNlLCBwbGF0Zm9ybURpc3BsYXkoKSk7CisgICAgICAgIG1fY29tcG9zaXRvclRleHR1cmVCYWNr
aW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KGRldmljZSwgcGxhdGZvcm1EaXNwbGF5
KCkpOworICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxF
R0xJbWFnZUJhY2tpbmc+KGRldmljZSwgcGxhdGZvcm1EaXNwbGF5KCkpOworICAgIH0KICNlbHNl
CiAgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9y
bUxheWVyPigqdGhpcyk7CiAjZW5kaWYKQEAgLTExMiw2ICsxMjMsNzkgQEAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmkKICAgICBHTF9DbGVhckNvbG9yKDAsIDAsIDAsIDApOwogfQogCisjaWYgVVNF
KE5JQ09TSUEpCitHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OkVHTElt
YWdlQmFja2luZyhnYm1fZGV2aWNlKiBkZXZpY2UsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xE
aXNwbGF5IGRpc3BsYXkpCisgICAgOiBtX2RldmljZShkZXZpY2UpCisgICAgLCBtX2Rpc3BsYXko
ZGlzcGxheSkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5n
Ojp+RUdMSW1hZ2VCYWNraW5nKCkKK3sKKyAgICByZWxlYXNlUmVzb3VyY2VzKCk7Cit9CisKK3Vp
bnQzMl90IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6Zm9ybWF0KCkg
Y29uc3QKK3sKKyAgICBpZiAobV9CTykKKyAgICAgICAgcmV0dXJuIGdibV9ib19nZXRfZm9ybWF0
KG1fQk8pOworICAgIHJldHVybiAwOworfQorCit1aW50MzJfdCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpFR0xJbWFnZUJhY2tpbmc6OnN0cmlkZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fQk8pCisg
ICAgICAgIHJldHVybiBnYm1fYm9fZ2V0X3N0cmlkZShtX0JPKTsKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJlbGVhc2VS
ZXNvdXJjZXMoKQoreworICAgIGlmIChtX0JPKSB7CisgICAgICAgIGdibV9ib19kZXN0cm95KG1f
Qk8pOworICAgICAgICBtX0JPID0gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKG1faW1hZ2UpIHsK
KyAgICAgICAgRUdMX0Rlc3Ryb3lJbWFnZUtIUihtX2Rpc3BsYXksIG1faW1hZ2UpOworICAgICAg
ICBtX2ltYWdlID0gRUdMX05PX0lNQUdFOworICAgIH0KKyAgICBpZiAobV9GRCA+PSAwKSB7Cisg
ICAgICAgIGNsb3NlKG1fRkQpOworICAgICAgICBtX0ZEID0gLTE7CisgICAgfQorfQorCitib29s
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVzZXQoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBib29sIGhhc0FscGhhKQoreworICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsK
KworICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgbV9CTyA9IGdibV9ib19jcmVhdGUobV9kZXZpY2UsIHdpZHRoLCBoZWlnaHQsIGhhc0FscGhh
ID8gR0JNX0JPX0ZPUk1BVF9BUkdCODg4OCA6IEdCTV9CT19GT1JNQVRfWFJHQjg4ODgsIEdCTV9C
T19VU0VfUkVOREVSSU5HKTsKKyAgICBpZiAobV9CTykgeworICAgICAgICBtX0ZEID0gZ2JtX2Jv
X2dldF9mZChtX0JPKTsKKyAgICAgICAgaWYgKG1fRkQgPj0gMCkgeworICAgICAgICAgICAgRUdM
aW50IGltYWdlQXR0cmlidXRlc1tdID0geworICAgICAgICAgICAgICAgIEVHTF9XSURUSCwgd2lk
dGgsCisgICAgICAgICAgICAgICAgRUdMX0hFSUdIVCwgaGVpZ2h0LAorICAgICAgICAgICAgICAg
IEVHTF9MSU5VWF9EUk1fRk9VUkNDX0VYVCwgc3RhdGljX2Nhc3Q8RUdMaW50PihnYm1fYm9fZ2V0
X2Zvcm1hdChtX0JPKSksCisgICAgICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VY
VCwgbV9GRCwKKyAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBz
dGF0aWNfY2FzdDxFR0xpbnQ+KGdibV9ib19nZXRfc3RyaWRlKG1fQk8pKSwKKyAgICAgICAgICAg
ICAgICBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwgMCwKKyAgICAgICAgICAgICAgICBF
R0xfTk9ORQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIG1faW1hZ2UgPSBFR0xfQ3JlYXRl
SW1hZ2VLSFIobV9kaXNwbGF5LCBFR0xfTk9fQ09OVEVYVCwgRUdMX0xJTlVYX0RNQV9CVUZfRVhU
LCAoRUdMQ2xpZW50QnVmZmVyKW51bGxwdHIsIGltYWdlQXR0cmlidXRlcyk7CisgICAgICAgICAg
ICBpZiAobV9pbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9Cisj
ZW5kaWYKKwogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMQU5HTEUo
KQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LnJlbW92ZUNvbnRleHQodGhpcyk7CkBAIC0xODksMTggKzI3Myw0MCBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgR0x1aW50
IGNvbG9yRm9ybWF0ID0gYXR0cnMuYWxwaGEgPyBHTF9SR0JBIDogR0xfUkdCOwogICAgIEdMZW51
bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICAgICBHTHVp
bnQgaW50ZXJuYWxDb2xvckZvcm1hdCA9IHRleHR1cmVUYXJnZXQgPT0gR0xfVEVYVFVSRV8yRCA/
IGNvbG9yRm9ybWF0IDogbV9pbnRlcm5hbENvbG9yRm9ybWF0OworCisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQorICAgIGlmIChtX3RleHR1cmVCYWNraW5nKQorICAgICAgICBtX3RleHR1
cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7CisgICAgaWYgKG1f
Y29tcG9zaXRvclRleHR1cmVCYWNraW5nKQorICAgICAgICBtX2NvbXBvc2l0b3JUZXh0dXJlQmFj
a2luZy0+cmVzZXQod2lkdGgsIGhlaWdodCwgYXR0cnMuYWxwaGEpOworICAgIGlmIChtX2ludGVy
bWVkaWF0ZVRleHR1cmVCYWNraW5nKQorICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNr
aW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7CisjZW5kaWYKKwogICAgIFNj
b3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4
dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRh
cmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOwogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkgewogICAg
ICAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsK
LSAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7
CisgICAgICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyAmJiBtX2NvbXBvc2l0b3JU
ZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkKKyAgICAgICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4
dHVyZTJET0VTKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5pbWFn
ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFy
Z2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgMCk7CiAgICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIG1faW50ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIEdMX1RleEltYWdlMkQodGV4
dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29s
b3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgICAgICBpZiAobV9pbnRlcm1lZGlh
dGVUZXh0dXJlQmFja2luZyAmJiBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5pbWFnZSgp
KQorICAgICAgICAgICAgR0xfRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRhcmdl
dCwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xv
ckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUs
IDApOwogICAgIH0KICNlbmRpZgogICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1f
dGV4dHVyZSk7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIGlmIChtX3RleHR1
cmVCYWNraW5nICYmIG1fdGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCisgICAgICAgIEdMX0VHTElt
YWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZUJhY2tpbmctPmlt
YWdlKCkpOworICAgIGVsc2UKKyNlbmRpZgogICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdl
dCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOwogICAgIEdMX0ZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdldCwgbV90ZXh0dXJl
LCAwKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCmluZGV4IGJkNGE4NzVkN2ExNTkxNjdjMmU4OWNlMjBi
ODU5YmIwZjgwZjdmMzkuLjllZTVmN2MwZDAwNGI0YjQ4MmQ4NjkwOWFmYWVmYmQxMWZhZmJmMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyKCk7CiAKLSAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9
IDEuMCkgZmluYWw7CisgICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBjYW5SZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiwg
R0xpbnQgaW50ZXJuYWxGb3JtYXQpOwogICAgIEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKm1fdGV4dHVyZSk7IH0KQEAg
LTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhv
bGRlcihzdGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcj4gaG9sZGVyKSB7
IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciA9IFdURk1vdmUoaG9sZGVyKTsgfQogICAgIHZv
aWQgc2V0RXh0cmFGbGFncyhUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKSB7IG1fZXh0cmFG
bGFncyA9IGZsYWdzOyB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IGNsb25lKCk7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGNsb25lKCk7CiAKICAgICBjbGFzcyBIb2xl
UHVuY2hDbGllbnQgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOwpAQCAtOTcs
MTQgKzk3LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SG9sZVB1bmNoQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxIb2xlUHVuY2hDbGllbnQ+JiYgY2xpZW50KSB7IG1faG9sZVB1bmNoQ2xpZW50
ID0gV1RGTW92ZShjbGllbnQpOyB9CiAKLSAgICBjb25zdCBUZXh0dXJlVmFyaWFudCYgdGV4dHVy
ZVZhcmlhbnQoKSB7IHJldHVybiBtX3ZhcmlhbnQ7IH0KKyAgICBjb25zdCBUZXh0dXJlVmFyaWFu
dCYgdGV4dHVyZVZhcmlhbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnQ7IH0KKyAgICBJbnRT
aXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotcHJpdmF0ZToKK3Byb3RlY3Rl
ZDoKKyAgICBUZXh0dXJlVmFyaWFudCBtX3ZhcmlhbnQ7CiAKK3ByaXZhdGU6CiAgICAgUmVmUHRy
PEJpdG1hcFRleHR1cmU+IG1fdGV4dHVyZTsKICAgICBNb25vdG9uaWNUaW1lIG1fdGltZUxhc3RV
c2VkOwogCi0gICAgVGV4dHVyZVZhcmlhbnQgbV92YXJpYW50OwogICAgIEludFNpemUgbV9zaXpl
OwogICAgIEdMaW50IG1faW50ZXJuYWxGb3JtYXQ7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBtX2V4dHJhRmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyRG1hYnVmLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDhjNDhjNTc2ZGNmZDlhNWU4YmU1ZmQ5MjJiZGVj
MzBjN2ZhM2MxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmLmNwcApAQCAtMCww
ICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBNZXRyb2xvZ2ljYWwgR3JvdXAg
Qi5WLgorICogQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1
Zi5oIgorCisjaWYgVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKKworI2luY2x1ZGUgIkdMQ29u
dGV4dEVHTC5oIgorCisjaWYgVVNFKExJQkVQT1hZKQorI2luY2x1ZGUgIkVwb3h5RUdMLmgiCisj
ZWxzZQorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisjZW5k
aWYKKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgY3JlYXRlRm91ckNDKGNoYXIgYSwgY2hhciBiLCBjaGFyIGMs
IGNoYXIgZCkKK3sKKyAgICByZXR1cm4gdWludDMyX3QoYSkgfCAodWludDMyX3QoYikgPDwgOCkg
fCAodWludDMyX3QoYykgPDwgMTYpIHwgKHVpbnQzMl90KGQpIDw8IDI0KTsKK30KKworc3RhdGlj
IEdMaW50IGZvdXJDQ1RvR0xGb3JtYXQodWludDMyX3QgZm9ybWF0KQoreworICAgIEFTU0VSVCgo
Zm9ybWF0ID09IGNyZWF0ZUZvdXJDQygnWCcsICdSJywgJzInLCAnNCcpKSB8fCAoZm9ybWF0ID09
IGNyZWF0ZUZvdXJDQygnQScsICdSJywgJzInLCAnNCcpKSk7CisgICAgcmV0dXJuIChmb3JtYXQg
PT0gY3JlYXRlRm91ckNDKCdBJywgJ1InLCAnMicsICc0JykpID8gR0xfUkdCQSA6IEdMX1JHQjsK
K30KKworc3RhdGljIGJvb2wgZm9ybWF0SGFzQWxwaGEodWludDMyX3QgZm9ybWF0KQoreworICAg
IEFTU0VSVCgoZm9ybWF0ID09IGNyZWF0ZUZvdXJDQygnWCcsICdSJywgJzInLCAnNCcpKSB8fCAo
Zm9ybWF0ID09IGNyZWF0ZUZvdXJDQygnQScsICdSJywgJzInLCAnNCcpKSk7CisgICAgcmV0dXJu
IChmb3JtYXQgPT0gY3JlYXRlRm91ckNDKCdBJywgJ1InLCAnMicsICc0JykpID8gdHJ1ZSA6IGZh
bHNlOworfQorCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zjo6VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJEbWFidWYoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCBzdHJpZGUsIGludCBmZCkKKyAgICA6IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyKHsgUkdCVGV4dHVyZSB7IDAgfSB9LCBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNo
b3VsZEZsaXBUZXh0dXJlIHwgKGZvcm1hdEhhc0FscGhhKGZvcm1hdCkgPyBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZEJsZW5kIDogMCksIGZvdXJDQ1RvR0xGb3JtYXQoZm9ybWF0KSkKKyAgICAsIG1f
Zm9ybWF0KGZvcm1hdCkKKyAgICAsIG1fc3RyaWRlKHN0cmlkZSkKKyAgICAsIG1fZmQoZHVwKGZk
KSkKK3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY6On5UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckRtYWJ1ZigpCit7CisgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UkdCVGV4dHVyZT4obV92YXJpYW50KSk7CisgICAgYXV0byYgdGV4dHVyZSA9IHN0ZDo6
Z2V0PFJHQlRleHR1cmU+KG1fdmFyaWFudCk7CisgICAgaWYgKHRleHR1cmUuaWQpCisgICAgICAg
IGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUuaWQpOworICAgIGNsb3NlKG1fZmQpOworfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmOjp2YWxpZGF0ZVRleHR1cmUo
KQoreworICAgIEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJHQlRleHR1cmU+KG1fdmFy
aWFudCkpOworICAgIGF1dG8mIHRleHR1cmUgPSBzdGQ6OmdldDxSR0JUZXh0dXJlPihtX3Zhcmlh
bnQpOworICAgIGlmICh0ZXh0dXJlLmlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBj
b250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRUdM
Q29udGV4dCgpKTsKKworICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAg
YXV0byBzaXplID0gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnNpemUoKTsKKyAg
ICBFR0xBdHRyaWIgaW1hZ2VBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9XSURUSCwgc2l6
ZS53aWR0aCgpLAorICAgICAgICBFR0xfSEVJR0hULCBzaXplLmhlaWdodCgpLAorICAgICAgICBF
R0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRpY19jYXN0PEVHTEF0dHJpYj4obV9mb3JtYXQp
LAorICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfRkRfRVhULCBtX2ZkLAorICAgICAgICBFR0xf
RE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBzdGF0aWNfY2FzdDxFR0xBdHRyaWI+KG1fc3RyaWRl
KSwKKyAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQsIDAsCisgICAgICAgIEVH
TF9OT05FCisgICAgfTsKKyAgICBhdXRvIGltYWdlID0gZG93bmNhc3Q8R0xDb250ZXh0RUdMPigq
Y29udGV4dCkuY3JlYXRlSW1hZ2UoRUdMX0xJTlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVm
ZmVyKW51bGxwdHIsIGltYWdlQXR0cmlidXRlcyk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZS5pZCk7CisgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlLmlkKTsKKyAgICBnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVfMkQsIGltYWdlKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJ
TkVBUik7CisKKyAgICBSRUxFQVNFX0FTU0VSVChkb3duY2FzdDxHTENvbnRleHRFR0w+KCpjb250
ZXh0KS5kZXN0cm95SW1hZ2UoaW1hZ2UpKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckRtYWJ1Zjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQoreworICAgIHZhbGlkYXRl
VGV4dHVyZSgpOworICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRv
VGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgs
IG9wYWNpdHkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmOjpjbG9uZSgpCit7Cisg
ICAgdmFsaWRhdGVUZXh0dXJlKCk7CisgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyOjpjbG9uZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBVU0UoQU5HTEUpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1h
YnVmLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTNhMjBmOTNmOWZhYWM4OTlh
YWQyMDRjYjBkNzJkMTYzMzdiNWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVm
LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBNZXRyb2xvZ2lj
YWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkKKworI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWYgOiBwdWJs
aWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmKTsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRCgpOworcHVibGljOgorICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
RG1hYnVmKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHN0cmlkZSwg
aW50IGZkKTsKKworICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVm
KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB2YWxpZGF0ZVRleHR1cmUoKTsKKworICAgIHZvaWQg
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkp
IGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4gY2xvbmUoKSBmaW5hbDsKKworICAgIHVpbnQzMl90IG1fZm9ybWF0OworICAgIHVpbnQz
Ml90IG1fc3RyaWRlOworICAgIGludCBtX2ZkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKEFOR0xFKSAmJiBVU0UoTklDT1NJQSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>