<?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>89700</bug_id>
          
          <creation_ts>2012-06-21 15:57:00 -0700</creation_ts>
          <short_desc>[chromium] Use WebGraphicsContext3D in compositor implementation</short_desc>
          <delta_ts>2012-06-25 18:01:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>654979</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-21 15:57:00 -0700</bug_when>
    <thetext>[chromium] Use WebGraphicsContext3D in compositor implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654981</commentid>
    <comment_count>1</comment_count>
      <attachid>148907</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-21 15:57:35 -0700</bug_when>
    <thetext>Created attachment 148907
wip, not ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655157</commentid>
    <comment_count>2</comment_count>
      <attachid>148940</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-21 19:17:46 -0700</bug_when>
    <thetext>Created attachment 148940
checkpoint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656243</commentid>
    <comment_count>3</comment_count>
      <attachid>149203</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-24 13:41:29 -0700</bug_when>
    <thetext>Created attachment 149203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656244</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-24 13:42:17 -0700</bug_when>
    <thetext>From the WebCore ChangeLog:


        This converts the compositor implementation from using WebCore::GraphicsContext3D to using the Platform-provided
        WebGraphicsContext3D. This removes several unnecessary layers of indirection/wrapping and cuts down the
        compositor&apos;s implementation dependencies. GraphicsContext3D.h is still widely used to provide GL enum values.
        Most of the changes are purely mechanical - changing type names and the like.

        Ownership is changed a bit. Instead of multiple components holding references to the compositor&apos;s context, the
        context is now owned by the CCGraphicsContext, which is now owned directly by CCLayerTreeHostImpl.
        CCLayerTreeHostImpl also has ownership of its CCRenderer (LayerRendererChromium in 3D mode) and passes a
        non-owning pointer down to the CCRenderer.

        Extension checking is a bit different. The compositor does not (and never has) used extensions provided by
        WebGL&apos;s request/ensure mechanism. It simply checks for the existence of extensions it needs in the GL_EXTENSIONS
        string.

        FrameBufferSkPictureCanvasLayerTextureUpdater had to be patched as well, since it was grabbing a GrContext off
        of the compositor&apos;s GraphicsContext3D. This caused many problems. It was inefficient, since it required a full
        state flush when switching between ganesh and compositor calls. The gpu memory management was completely broken
        since the compositor clobbered ganesh&apos;s onMemoryAllocationChanged callback. This moves FBSkPCLTU over to using
        the appropriate SharedGraphicsContext3D, like filters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656245</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-24 13:44:55 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657040</commentid>
    <comment_count>6</comment_count>
      <attachid>149203</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-25 17:14:21 -0700</bug_when>
    <thetext>Comment on attachment 149203
Patch

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

I feel like I should have more substantial comments on a 186k patch, but R=me.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1365
&gt; -    RefPtr&lt;CCGraphicsContext&gt; ccContext = CCGraphicsContext::create3D(m_context);
&gt; -    texture-&gt;framebufferTexture2D(ccContext.get(), m_implTextureAllocator.get());
&gt; +    if (!texture-&gt;textureId())
&gt; +        texture-&gt;allocate(m_implTextureAllocator.get());
&gt; +    GLC(m_context, m_context-&gt;framebufferTexture2D(GraphicsContext3D::FRAMEBUFFER, GraphicsContext3D::COLOR_ATTACHMENT0, GraphicsContext3D::TEXTURE_2D, texture-&gt;textureId(), 0));

Can the ManagedTexture::framebufferTexture2d and bindTexture functions get removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657049</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-25 17:21:17 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 149203 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149203&amp;action=review
&gt; 
&gt; I feel like I should have more substantial comments on a 186k patch, but R=me.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1365
&gt; &gt; -    RefPtr&lt;CCGraphicsContext&gt; ccContext = CCGraphicsContext::create3D(m_context);
&gt; &gt; -    texture-&gt;framebufferTexture2D(ccContext.get(), m_implTextureAllocator.get());
&gt; &gt; +    if (!texture-&gt;textureId())
&gt; &gt; +        texture-&gt;allocate(m_implTextureAllocator.get());
&gt; &gt; +    GLC(m_context, m_context-&gt;framebufferTexture2D(GraphicsContext3D::FRAMEBUFFER, GraphicsContext3D::COLOR_ATTACHMENT0, GraphicsContext3D::TEXTURE_2D, texture-&gt;textureId(), 0));
&gt; 
&gt; Can the ManagedTexture::framebufferTexture2d and bindTexture functions get removed?

I&apos;ll check if that can be done as a follow-up (this patch makes some of the GraphicsContext3DPrivate extension callback stuff become dead code and I want to delete that too).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657082</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-25 17:56:08 -0700</bug_when>
    <thetext>Committed r121204: &lt;http://trac.webkit.org/changeset/121204&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657092</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-25 18:01:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Can the ManagedTexture::framebufferTexture2d and bindTexture functions get removed?

ManagedTexture::bindTexture() is still used in ImageLayerChromium and CCHeadsUpDisplay. The first one, at least, appears to be a useful use for this abstraction. ManagedTexture::framebufferTexture2D() is now dead code, removal patch here: https://bugs.webkit.org/show_bug.cgi?id=89930</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148907</attachid>
            <date>2012-06-21 15:57:35 -0700</date>
            <delta_ts>2012-06-21 19:17:43 -0700</delta_ts>
            <desc>wip, not ready for review</desc>
            <filename>bug-89700-20120621155735.patch</filename>
            <type>text/plain</type>
            <size>130748</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkNTM3NGE2ZTQ1YWQ5
MDEzYTZiYWY5Y2FkZTBhNjZjYmQ4NmYyNjU4Li4zZTZiMDE3NGJjMGNiZTdiZmY1MzM4OWVjM2Zj
MjIyN2JjN2Q0Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNi0yMSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVXNlIFdlYkdyYXBoaWNzQ29udGV4dDNEIGluIGNvbXBvc2l0b3IgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzAwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYkdyYXBoaWNzQ29u
dGV4dExvc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hS
T01JVU0pOgorICAgICAgICAoV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxi
YWNrQ0hST01JVU0pOgorCiAyMDEyLTA2LTE2ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2UgdGhlIGRldmljZVNjYWxlRmFj
dG9yIGR5bmFtaWNhbGx5IGFkanVzdGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg4YmUxNGFjN2UzMDUz
OThjY2JiOTA1MWZlY2JlMWZiYmI5NTBkOS4uMTNlYzM2ODNjOTk1ZmU3YmY2MzdiNGEwYjQ2MTRm
NWNhYmRlYmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NyBAQAorMjAxMi0wNi0yMSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
VXNlIFdlYkdyYXBoaWNzQ29udGV4dDNEIGluIGNvbXBvc2l0b3IgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQnJpZGdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0
dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlC
aW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6R2VvbWV0cnlC
aW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJp
bmRpbmcuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChHZW9tZXRyeUJpbmRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbWV0cnlCaW5kaW5nOjpjb250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6fkxheWVyUmVuZGVyZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWJ1Z0dMQ2FsbCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVmlkZW9R
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRz
VXBEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3dh
cEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpvbk1l
bW9yeUFsbG9jYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpvbk1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkT25J
bXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGlz
Y2FyZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZW5zdXJlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpvbkNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2Jq
ZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVDaGVj
a2VyYm9hcmRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c29saWRDb2xvclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtQUEpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dy
YW1BQSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dy
YW1PcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
UHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGls
ZVByb2dyYW1Td2l6emxlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1Td2l6emxlQUEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9ncmFtRmxpcCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9ZVVZQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9TdHJlYW1U
ZXh0dXJlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aXNDb250ZXh0TG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0
aFRleFN1YkltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1
cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0
dXJlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsYXRmb3JtQ29sb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3I6OmJlc3RU
ZXh0dXJlRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9n
cmFtQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TG9zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQcm9ncmFtQmluZGluZ0Jhc2U6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
UHJvZ3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6bG9hZFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGlu
Z0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
UHJvZ3JhbUJpbmRpbmdCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nOjpQ
cm9ncmFtQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZzo6aW5pdGlh
bGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4Ojppbml0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6
OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpW
ZXJ0ZXhTaGFkZXJRdWFkOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRp
bGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06
OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjppbml0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6aW5pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6aW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNvbG9yOjppbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjppbml0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFZlcnRleFNoYWRlclBvc1RleCk6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJQb3NU
ZXhZVVZTdHJldGNoKToKKyAgICAgICAgKFZlcnRleFNoYWRlclBvcyk6CisgICAgICAgIChXZWJD
b3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhJZGVudGl0eTo6aW5pdCk6CisgICAgICAgIChWZXJ0ZXhT
aGFkZXJQb3NUZXhUcmFuc2Zvcm0pOgorICAgICAgICAoVmVydGV4U2hhZGVyUXVhZCk6CisgICAg
ICAgIChWZXJ0ZXhTaGFkZXJUaWxlKToKKyAgICAgICAgKFZlcnRleFNoYWRlclZpZGVvVHJhbnNm
b3JtKToKKyAgICAgICAgKEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKToKKyAgICAgICAgKEZyYWdt
ZW50VGV4T3BhcXVlQmluZGluZyk6CisgICAgICAgIChGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0
ZXJuYWwpOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSk6CisgICAgICAg
IChGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmcpOgorICAgICAgICAoRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGFNYXNrKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhh
TWFza0FBKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyWVVWVmlkZW8pOgorICAgICAgICAoRnJh
Z21lbnRTaGFkZXJDb2xvcik6CisgICAgICAgIChGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OkFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcik6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZFRleHR1cmVDb3Bp
ZXI6On5BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxl
cmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVy
OjpjcmVhdGUpOgorICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVl
cnk6OlF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
UXVlcnk6On5RdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6OlF1ZXJ5OjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXI6OlF1ZXJ5OjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjpRdWVyeTo6aXNQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6UXVlcnk6OndhaXQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6Y3JlYXRlKToKKyAg
ICAgICAgKFF1ZXJ5KToKKyAgICAgICAgKFRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6VHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKENDR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUy
RCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNvbnRleHQzRCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Q0NHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VMYXllckltcGw6On5DQ0lPU3VyZmFjZUxheWVySW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoK
KyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzOjpMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKToKKyAgICAg
ICAgKExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRp
YWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmluaXRp
YWxpemVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnJl
Y3JlYXRlQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Omlu
aXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3Jl
YXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXpl
Q29udGV4dE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpy
ZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lRGF0YSk6
CisKIDIwMTItMDYtMTcgIFplZXYgTGllYmVyICA8emxpZWJlckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBDb21wb3NpdG9yIHNob3VsZCBhdm9pZCBkcmF3aW5nIHF1YWRzIHdo
ZW4gY2FjaGVkIHRleHR1cmVzIGFyZSBhdmFpbGFibGUgYW5kIGNvbnRlbnRzIHVuY2hhbmdlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4OTAyNjcyMDBiNjI5MTEwMWE0ZjU2NDQ3MTMw
YjYzYmJkZDQ4MDM2Li45ZmZjYjc2ZjhkYWU0NmM2OTVlZmE5MDIzZWVlZTVlYzYyYTZmYmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTIxICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBVc2UgV2ViR3JhcGhpY3NDb250ZXh0M0QgaW4gY29tcG9zaXRvciBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJM
YXllclRyZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6Y29u
dGV4dCk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisKIDIwMTItMDYtMTcgIFplZXYg
TGllYmVyICA8emxpZWJlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBDb21w
b3NpdG9yIHNob3VsZCBhdm9pZCBkcmF3aW5nIHF1YWRzIHdoZW4gY2FjaGVkIHRleHR1cmVzIGFy
ZSBhdmFpbGFibGUgYW5kIGNvbnRlbnRzIHVuY2hhbmdlZApkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDBlNDBm
NWZhYTRlOTVkYzcyZTZmNTVhYTk4Y2RhY2I2MDFlNDA1MjIuLjY4NWIxODBjZDViOTMzMDNlMDc1
Njk4ZThmNmEzYmE3YTEyY2Q1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTExMSwyNyArMTExLDMwIEBA
IHB1YmxpYzoKICAgICBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2sgewogICAg
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG9uQ29udGV4dExvc3QoKSA9IDA7CisKKyAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfldlYkdyYXBoaWNzQ29udGV4dExvc3RDYWxs
YmFjaygpIHsgfQogICAgIH07CiAKICAgICBjbGFzcyBXZWJHcmFwaGljc0Vycm9yTWVzc2FnZUNh
bGxiYWNrIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yTWVzc2Fn
ZShjb25zdCBXZWJTdHJpbmcmLCBXR0MzRGludCkgPSAwOworCisgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2aXJ0dWFsIH5XZWJHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrKCkgeyB9CiAgICAg
fTsKIAogICAgIGNsYXNzIFdlYkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hS
T01JVU0gewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnND
b21wbGV0ZSgpID0gMDsKKworICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+V2ViR3Jh
cGhpY3NTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSgpIHsgfQogICAgIH07CiAK
ICAgICBjbGFzcyBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJP
TUlVTSB7CiAgICAgcHVibGljOgotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3
ZSBzd2l0Y2ggdG8gV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uIHZlcnNpb24uCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBvbk1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkKHNpemVfdCBncHVSZXNvdXJj
ZVNpemVJbkJ5dGVzKSA9IDA7Ci0gICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgcHVyZSB2aXJ0
dWFsIG9uY2Ugd2UgaW1wbGVtZW50IGV2ZXJ5d2hlcmUuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBv
bk1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkKFdlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbikgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbk1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkKFdlYkdyYXBo
aWNzTWVtb3J5QWxsb2NhdGlvbikgPSAwOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0
dWFsIH5XZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlVTSgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAppbmRleCAwZGYwYjgzYTVlZTIy
ZTE5ZWMwYTQ1NWQzMGExOGU5YjYwNjE1OWIzLi5kYzhmNmZkZGNjNjNkZTkzMTUxNTI0OTk3ZTlj
MDEzYmUzNGQwNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgR0xD
KCkgbWFjcm8uCiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RlZmVycmVkQ2Fu
dmFzLmgiCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
ICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBkYWMw
MzU1NTI5ODI1MjZjNDkwZDFjYzdkZDEyZjk0NTBlY2ViYmYyLi5iOGY2NDFiNDEwNTFjOTU3MmI3
ZmY3NDFhOWJhODIzYTVjZjlkOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAg
LTMzLDE3ICszMywyMCBAQAogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0dwdURldmljZS5oIgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorCit1c2luZyBXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzT3duUHRyPFNr
Q2FudmFzPiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwKK3N0YXRpYyBQYXNzT3duUHRyPFNrQ2FudmFzPiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuYWdl
ZFRleHR1cmUqIHRleHR1cmUpCiB7CiAgICAgLy8gQWxsb2NhdGUgc28gdGhhdCB3ZSBoYXZlIGEg
dmFsaWQgdGV4dHVyZSBpZC4KICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShhbGxvY2F0b3IpOwogCi0g
ICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBjb250ZXh0LT5nckNvbnRleHQoKTsKKyAgICBHckNv
bnRleHQqIGdyQ29udGV4dCA9IDA7IC8vIFhYWCBjb250ZXh0LT5nckNvbnRleHQoKTsKICAgICBJ
bnRTaXplIGNhbnZhc1NpemUgPSB0ZXh0dXJlLT5zaXplKCk7CiAgICAgR3JQbGF0Zm9ybVRleHR1
cmVEZXNjIHRleHR1cmVEZXNjOwogICAgIHRleHR1cmVEZXNjLmZGbGFncyA9IGtSZW5kZXJUYXJn
ZXRfR3JQbGF0Zm9ybVRleHR1cmVGbGFnOwpAQCAtOTgsNyArMTAxLDcgQEAgTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXAKIAogdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAg
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwog
ICAgIGlmICghY29udGV4dDNkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBw
YXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KICAgICAgICAgcmV0dXJuOwpAQCAtMTA3LDcg
KzExMCw3IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjp1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzCiAgICAgLy8gTWFrZSBzdXJlIGdhbmVz
aCB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCiAgICAgY29udGV4dDNkLT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICAvLyBOb3RpZnkgZ2FuZXNoIHRvIHN5bmMgaXRzIGludGVybmFsIEdM
IHN0YXRlLgotICAgIGNvbnRleHQzZC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4dCgpOworICAg
IC8vIFhYWCBjb250ZXh0M2QtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKIAogICAgIC8v
IENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KICAgICBPd25QdHI8U2tD
YW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQzZCwgYWxsb2Nh
dG9yLCB0ZXh0dXJlKTsKQEAgLTEyNiw3ICsxMjksNyBAQCB2b2lkIEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGlj
cwogICAgIGRyYXdQaWN0dXJlKGNhbnZhcy5nZXQoKSk7CiAKICAgICAvLyBGbHVzaCBnYW5lc2gg
Y29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4
dHVyZS4KLSAgICBjb250ZXh0M2QtPmdyQ29udGV4dCgpLT5mbHVzaCgpOworICAgIC8vIFhYWCBj
b250ZXh0M2QtPmdyQ29udGV4dCgpLT5mbHVzaCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HZW9tZXRyeUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmNwcAppbmRleCBhODU5YWFlNzMzYWUwYTZmZGYwYjE1
ZGVkYzljNzY2NmNjOGMzYzlkLi4xYTQ1NjhiYjA3ZWI2NDhlYjY1NzgxNzRmODFkZTVmNWQ5MWFj
MTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HZW9tZXRyeUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAKQEAgLTI5LDEzICsyOSwxMyBAQAogCiAj
aW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdlb21ldHJ5QmluZGluZzo6R2VvbWV0cnlCaW5kaW5n
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorR2VvbWV0cnlCaW5kaW5nOjpHZW9tZXRyeUJp
bmRpbmcoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQogICAgICwgbV9xdWFkVmVydGljZXNWYm8oMCkKICAgICAsIG1fcXVhZEVs
ZW1lbnRzVmJvKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oCmluZGV4IGVjMTk5NzAzZTcwMmM4ODRm
MWM4YzBmYmM4MmMzODAwYzQ4YTBjZmIuLjIwYjJkNWEwMDViOGU5NGNjMWJlOWM3N2VjNzI0MmI2
ZGFjZDMzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dlb21ldHJ5QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oCkBAIC0yOCwyMCArMjgsMjAgQEAKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwor
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotCiBj
bGFzcyBHZW9tZXRyeUJpbmRpbmcgewogcHVibGljOgotICAgIGV4cGxpY2l0IEdlb21ldHJ5Qmlu
ZGluZyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIGV4cGxpY2l0IEdlb21ldHJ5QmluZGluZyhX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgfkdlb21ldHJ5QmluZGluZygpOwog
CiAgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0K
IAotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0OyB9CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dDsgfQogICAgIHVuc2lnbmVkIHF1YWRWZXJ0aWNlc1ZibygpIGNv
bnN0IHsgcmV0dXJuIG1fcXVhZFZlcnRpY2VzVmJvOyB9CiAgICAgdW5zaWduZWQgcXVhZEVsZW1l
bnRzVmJvKCkgY29uc3QgeyByZXR1cm4gbV9xdWFkRWxlbWVudHNWYm87IH0KIApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGludCB0ZXhDb29yZEF0dHJpYkxvY2F0aW9uKCkg
eyByZXR1cm4gMTsgfQogCiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRl
eHQ7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIHVu
c2lnbmVkIG1fcXVhZFZlcnRpY2VzVmJvOwogICAgIHVuc2lnbmVkIG1fcXVhZEVsZW1lbnRzVmJv
OwogICAgIGJvb2wgbV9pbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCmluZGV4IDE2MTcyOWM5NTkzZDkzNWM0MDJkM2UzOTdlMjhjOWVhMDc2ODgwYjQuLmY3
NjY1ZjI4ZTk4YzI3YjVkZWFlMzdkYzg1MzFmMzJlZDJhZmY5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgogI2luY2x1ZGUgIkdlb21ldHJ5QmluZGluZy5oIgogI2luY2x1ZGUgIkdyVGV4dHVy
ZS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRl
eHR1cmUuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgpAQCAtNzUsNyArNzQsMTEgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisjaW5jbHVkZSA8cHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmg+CisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEOwordXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc01lbW9yeUFs
bG9jYXRpb247CiB1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xMTYsMjUgKzExOSw2IEBAIHN0YXRpYyBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBzY3JlZW5NYXRyaXgoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWln
aHQpCiAgICAgcmV0dXJuIHNjcmVlbjsKIH0KIAotYm9vbCBjb250ZXh0U3VwcG9ydHNBY2NlbGVy
YXRlZFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQotewotICAgIFdlYkNvcmU6
OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLSAg
ICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4
OCIpKQotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgiKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKSkKLSAg
ICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEi
KTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghY29udGV4dC0+
Z3JDb250ZXh0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCiBib29sIG5lZWRzTGlvbklPU3VyZmFjZVJlYWRiYWNrV29ya2Fyb3VuZCgpCiB7CiAjaWYg
T1MoREFSV0lOKQpAQCAtMTcwLDcwICsxNTQsNyBAQCBwcm90ZWN0ZWQ6CiAKIH0gLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQogCi1jbGFzcyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNh
bGxiYWNrQWRhcHRlciA6IHB1YmxpYyBFeHRlbnNpb25zM0RDaHJvbWl1bTo6U3dhcEJ1ZmZlcnND
b21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PExheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyPiBjcmVhdGUo
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNr
QWRhcHRlcihsYXllclJlbmRlcmVyKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgfkxheWVyUmVuZGVy
ZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkKLSAgICB7Ci0gICAgICAgIG1fbGF5ZXJSZW5k
ZXJlci0+b25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IExheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKLSAgICB7Ci0gICAgICAgIG1fbGF5
ZXJSZW5kZXJlciA9IGxheWVyUmVuZGVyZXI7Ci0gICAgfQotCi0gICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBtX2xheWVyUmVuZGVyZXI7Ci19OwotCi1jbGFzcyBMYXllclJlbmRlcmVyR3B1TWVt
b3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXIgOiBwdWJsaWMgRXh0ZW5zaW9uczNE
Q2hyb21pdW06OkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlVTSB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckdwdU1lbW9yeUFsbG9j
YXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiBsYXllclJlbmRlcmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXll
clJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXIobGF5ZXJS
ZW5kZXJlcikpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5MYXllclJlbmRlcmVyR3B1TWVtb3J5QWxs
b2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBv
bkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkKEV4dGVuc2lvbnMzRENocm9taXVtOjpHcHVNZW1v
cnlBbGxvY2F0aW9uQ0hST01JVU0gYWxsb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgaW4gc2luZ2xlIHRocmVhZGVkIG1v
ZGUsIGJ1dCB3ZSBleHBlY3QgaXQgb24gdGhlIGltcGwgdGhyZWFkLgotICAgICAgICBpZiAobV9i
aW5kVG9JbXBsVGhyZWFkKSB7Ci0gICAgICAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVh
ZCgpKTsKLSAgICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICAgICAg
ICBvbkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkT25JbXBsKGFsbG9jYXRpb24pOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0g
ICAgICAgICAgb25HcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbChhbGxvY2F0aW9uKTsK
LSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMYXllclJlbmRlcmVy
R3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXIoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyKQotICAgICAgICA6IG1fbGF5ZXJSZW5kZXJlcihsYXllclJl
bmRlcmVyKSwgbV9iaW5kVG9JbXBsVGhyZWFkKCFDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCi0g
ICAgewotICAgIH0KLQotICAgIHZvaWQgb25HcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1w
bChFeHRlbnNpb25zM0RDaHJvbWl1bTo6R3B1TWVtb3J5QWxsb2NhdGlvbkNIUk9NSVVNIGFsbG9j
YXRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwot
ICAgICAgICBpZiAoIWFsbG9jYXRpb24uc3VnZ2VzdEhhdmVCYWNrYnVmZmVyKQotICAgICAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT5kaXNjYXJkRnJhbWVidWZmZXIoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5lbnN1cmVGcmFtZWJ1ZmZlcigpOwotICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPm1fY2xpZW50LT5zZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25M
aW1pdEJ5dGVzKGFsbG9jYXRpb24uZ3B1UmVzb3VyY2VTaXplSW5CeXRlcyk7Ci0gICAgfQotCi0g
ICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBtX2xheWVyUmVuZGVyZXI7Ci0gICAgYm9vbCBtX2Jp
bmRUb0ltcGxUaHJlYWQ7Ci19OwotCi1QYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4g
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRp
b24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKK1Bhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGll
bnQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24g
dGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xp
ZW50LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwogICAgIGlmICghbGF5ZXJS
ZW5kZXJlci0+aW5pdGlhbGl6ZSgpKQpAQCAtMjQzLDcgKzE2NCw3IEBAIFBhc3NPd25QdHI8TGF5
ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1JlbmRl
cmVyQ2xpZW50CiB9CiAKIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQog
ICAgIDogQ0NSZW5kZXJlcihjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJQYXNzKDApCkBA
IC0yNTYsMzkgKzE3NywyNyBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJD
aHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsCiAgICAgLCBtX2lzRnJhbWVidWZmZXJE
aXNjYXJkZWQoZmFsc2UpCiAgICAgLCBtX3RleHR1cmVVcGxvYWRlclNldHRpbmcodGV4dHVyZVVw
bG9hZGVyU2V0dGluZykKIHsKLSAgICBBU1NFUlQobV9jb250ZXh0LmdldCgpKTsKKyAgICBBU1NF
UlQobV9jb250ZXh0KTsKIH0KIAotY2xhc3MgQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXIgOiBw
dWJsaWMgR3JhcGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2sgewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyPiBjcmVhdGUo
Q0NSZW5kZXJlckNsaWVudCogY2xpZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcihjbGllbnQpKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgb25Db250ZXh0TG9zdCgpCi0gICAgewotICAgICAgICBtX2NsaWVudC0+ZGlk
TG9zZUNvbnRleHQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGV4dExv
c3RDYWxsYmFja0FkYXB0ZXIoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50KQotICAgICAgICA6IG1f
Y2xpZW50KGNsaWVudCkgeyB9Ci0KLSAgICBDQ1JlbmRlcmVyQ2xpZW50KiBtX2NsaWVudDsKLX07
Ci0KIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhDb250ZXh0TG9zdENhbGxi
YWNrQWRhcHRlcjo6Y3JlYXRlKG1fY2xpZW50KSk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0
TG9zdENhbGxiYWNrKHRoaXMpOworCisgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gMDsg
Ly8gWFhYICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKIAotICAgIGlmIChzZXR0aW5ncygp
LmFjY2VsZXJhdGVQYWludGluZyAmJiBjb250ZXh0U3VwcG9ydHNBY2NlbGVyYXRlZFBhaW50aW5n
KG1fY29udGV4dC5nZXQoKSkpCisgICAgaWYgKHNldHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5n
ICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgi
KSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKSkgeworICAgICAgICBleHRlbnNp
b25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKTsKKyAg
ICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEi
KTsKICAgICAgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdBY2NlbGVyYXRlZFBhaW50aW5nID0gdHJ1
ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdBY2NlbGVyYXRlZFBh
aW50aW5nID0gZmFsc2U7CisKIAotICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9u
cyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIG1fY2FwYWJpbGl0aWVzLmNvbnRl
eHRIYXNDYWNoZWRGcm9udEJ1ZmZlciA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9mcm9udF9idWZmZXJfY2FjaGVkIik7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLmNvbnRleHRI
YXNDYWNoZWRGcm9udEJ1ZmZlcikKICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfQ0hST01JVU1fZnJvbnRfYnVmZmVyX2NhY2hlZCIpOwpAQCAtMzA2LDggKzIxNSw3IEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKCkKICAgICAgICAgbV9jYXBhYmls
aXRpZXMudXNpbmdTd2FwQ29tcGxldGVDYWxsYmFjayA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJH
TF9DSFJPTUlVTV9zd2FwYnVmZmVyc19jb21wbGV0ZV9jYWxsYmFjayIpOwogICAgIGlmIChtX2Nh
cGFiaWxpdGllcy51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrKSB7CiAgICAgICAgIGV4dGVuc2lv
bnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxi
YWNrIik7Ci0gICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zM0RDaHJvbWl1
bSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oZXh0ZW5zaW9ucyk7Ci0gICAg
ICAgIGV4dGVuc2lvbnMzRENocm9taXVtLT5zZXRTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tD
SFJPTUlVTShMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcjo6
Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgbV9jb250ZXh0LT5zZXRTd2FwQnVmZmVyc0NvbXBsZXRl
Q2FsbGJhY2tDSFJPTUlVTSh0aGlzKTsKICAgICB9CiAKICAgICBpZiAoZXh0ZW5zaW9ucy0+c3Vw
cG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQpAQCAtMzM0LDggKzI0Miw3
IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKCkKICAgICBtX2NhcGFi
aWxpdGllcy51c2luZ0dwdU1lbW9yeU1hbmFnZXIgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
Q0hST01JVU1fZ3B1X21lbW9yeV9tYW5hZ2VyIik7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVz
aW5nR3B1TWVtb3J5TWFuYWdlcikgewogICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9ncHVfbWVtb3J5X21hbmFnZXIiKTsKLSAgICAgICAgRXh0ZW5zaW9uczNE
Q2hyb21pdW0qIGV4dGVuc2lvbnMzRENocm9taXVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihleHRlbnNpb25zKTsKLSAgICAgICAgZXh0ZW5zaW9uczNEQ2hyb21pdW0tPnNl
dEdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlVTShMYXllclJlbmRlcmVy
R3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXI6OmNyZWF0ZSh0aGlzKSk7
CisgICAgICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NI
Uk9NSVVNKHRoaXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fY2xpZW50LT5zZXRDb250ZW50
c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUoKSkpOwogICAgIH0KQEAgLTM0NCw4ICsyNTEsMTIgQEAgYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogICAgIGlmIChtX2NhcGFiaWxpdGllcy51
c2luZ0Rpc2NhcmRGcmFtZWJ1ZmZlcikKICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxl
ZCgiR0xfQ0hST01JVU1fZGlzY2FyZF9mcmFtZWJ1ZmZlciIpOwogCisgICAgbV9jYXBhYmlsaXRp
ZXMudXNpbmdFZ2xJbWFnZSA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsIik7CisgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nRWdsSW1hZ2UpCisgICAg
ICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwi
KTsKKwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6
ZSkpOwotICAgIG1fY2FwYWJpbGl0aWVzLmJlc3RUZXh0dXJlRm9ybWF0ID0gUGxhdGZvcm1Db2xv
cjo6YmVzdFRleHR1cmVGb3JtYXQobV9jb250ZXh0LmdldCgpKTsKKyAgICBtX2NhcGFiaWxpdGll
cy5iZXN0VGV4dHVyZUZvcm1hdCA9IFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KG1f
Y29udGV4dCk7CiAKICAgICBpZiAoIWluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTM1OCwxOCArMjY5LDE4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjppbml0aWFsaXplKCkKIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6fkxheWVyUmVuZGVy
ZXJDaHJvbWl1bSgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAg
ICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9uczNEQ2hyb21pdW0gPSBzdGF0aWNfY2Fz
dDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKLSAg
ICBleHRlbnNpb25zM0RDaHJvbWl1bS0+c2V0U3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hS
T01JVU0obnVsbHB0cik7Ci0gICAgZXh0ZW5zaW9uczNEQ2hyb21pdW0tPnNldEdwdU1lbW9yeUFs
bG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlVTShudWxscHRyKTsKKyAgICBtX2NvbnRleHQt
PnNldFN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNKDApOworICAgIG1fY29udGV4
dC0+c2V0TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKDApOworICAgIG1f
Y29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjaygwKTsKICAgICBjbGVhbnVwU2hhcmVkT2Jq
ZWN0cygpOwogfQogCi1HcmFwaGljc0NvbnRleHQzRCogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
b250ZXh0KCkKK1dlYkdyYXBoaWNzQ29udGV4dDNEKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNv
bnRleHQoKQogewotICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuIG1fY29u
dGV4dDsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlYnVnR0xDYWxsKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWJ1Z0dMQ2FsbChX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBlcnJvciA9IGNvbnRl
eHQtPmdldEVycm9yKCk7CiAgICAgaWYgKGVycm9yICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19F
UlJPUikKQEAgLTM4NCw4ICsyOTUsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0
VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgLy8gVE9ETzogUmVwbGFjZSBzZXRWaXNpYmlsaXR5
Q0hST01JVU0gd2l0aCBhbiBleHRlbnNpb24gdG8gZXhwbGljaXRseSBtYW5hZ2UgZnJvbnQvYmFj
a2J1ZmZlcnMKICAgICAvLyBjcmJ1Zy5jb20vMTE2MDQ5CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVz
LnVzaW5nU2V0VmlzaWJpbGl0eSkgewotICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0
ZW5zaW9uczNEQ2hyb21pdW0gPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKLSAgICAgICAgZXh0ZW5zaW9uczNEQ2hyb21pdW0t
PnNldFZpc2liaWxpdHlDSFJPTUlVTSh2aXNpYmxlKTsKKyAgICAgICAgbV9jb250ZXh0LT5zZXRW
aXNpYmlsaXR5Q0hST01JVU0odmlzaWJsZSk7CiAgICAgfQogfQogCkBAIC0xMDQ3LDcgKzk1Nyw3
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVmlkZW9RdWFkKGNvbnN0
IENDU3RyZWFtVmlkZW9EcmF3UXVhZCogcXVhCiB7CiAgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4
WzE2XTsKIAotICAgIEFTU0VSVChjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSAmJiBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMo
KS0+aXNFbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpOworICAgIEFTU0VSVCht
X2NhcGFiaWxpdGllcy51c2luZ0VnbEltYWdlKTsKIAogICAgIGNvbnN0IFZpZGVvU3RyZWFtVGV4
dHVyZVByb2dyYW0qIHByb2dyYW0gPSB2aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtKCk7CiAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkp
OwpAQCAtMTE2NSw4ICsxMDc1LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdI
ZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSogaHVkVGV4dHVyZSwgY29uc3QKICAgICBjb25z
dCBIZWFkc1VwRGlzcGxheVByb2dyYW0qIHByb2dyYW0gPSBoZWFkc1VwRGlzcGxheVByb2dyYW0o
KTsKICAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUwKSk7Ci0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBD
Q0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsKLSAgICBodWRUZXh0dXJlLT5i
aW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkp
OworICAgIGlmICghaHVkVGV4dHVyZS0+dGV4dHVyZUlkKCkpCisgICAgICAgIGh1ZFRleHR1cmUt
PmFsbG9jYXRlKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IGh1ZFRleHR1cmUtPnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0
aW9uKCksIDApKTsKIApAQCAtMTI4OSwxMiArMTIwMCwxMSBAQCBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVjdCYgc3ViQnVmZmVyKQogICAgICAgICAv
LyBJZiBzdXBwb3J0ZWQsIHdlIGNhbiBzYXZlIHNpZ25pZmljYW50IGJhbmR3aWR0aCBieSBvbmx5
IHN3YXBwaW5nIHRoZSBkYW1hZ2VkL3NjaXNzb3JlZCByZWdpb24gKGNsYW1wZWQgdG8gdGhlIHZp
ZXdwb3J0KQogICAgICAgICBJbnRSZWN0IGNsaXBwZWRTdWJCdWZmZXIgPSBzdWJCdWZmZXI7CiAg
ICAgICAgIGNsaXBwZWRTdWJCdWZmZXIuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgdmlld3BvcnRTaXplKCkpKTsKLSAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVu
c2lvbnMzRENocm9taXVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAgIGludCBmbGlwcGVkWVBvc09mUmVjdEJv
dHRvbSA9IHZpZXdwb3J0SGVpZ2h0KCkgLSBjbGlwcGVkU3ViQnVmZmVyLnkoKSAtIGNsaXBwZWRT
dWJCdWZmZXIuaGVpZ2h0KCk7Ci0gICAgICAgIGV4dGVuc2lvbnMzRENocm9taXVtLT5wb3N0U3Vi
QnVmZmVyQ0hST01JVU0oY2xpcHBlZFN1YkJ1ZmZlci54KCksIGZsaXBwZWRZUG9zT2ZSZWN0Qm90
dG9tLCBjbGlwcGVkU3ViQnVmZmVyLndpZHRoKCksIGNsaXBwZWRTdWJCdWZmZXIuaGVpZ2h0KCkp
OworICAgICAgICBtX2NvbnRleHQtPnBvc3RTdWJCdWZmZXJDSFJPTUlVTShjbGlwcGVkU3ViQnVm
ZmVyLngoKSwgZmxpcHBlZFlQb3NPZlJlY3RCb3R0b20sIGNsaXBwZWRTdWJCdWZmZXIud2lkdGgo
KSwgY2xpcHBlZFN1YkJ1ZmZlci5oZWlnaHQoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIC8vIE5v
dGUgdGhhdCBjdXJyZW50bHkgdGhpcyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIHN3YXBCdWZmZXJz
OyB3ZSBzaG91bGQKLSAgICAgICAgLy8gY29uc2lkZXIgZXhwb3NpbmcgYSBkaWZmZXJlbnQgZW50
cnkgcG9pbnQgb24gR3JhcGhpY3NDb250ZXh0M0QuCisgICAgICAgIC8vIGNvbnNpZGVyIGV4cG9z
aW5nIGEgZGlmZmVyZW50IGVudHJ5IHBvaW50IG9uIFdlYkdyYXBoaWNzQ29udGV4dDNELgogICAg
ICAgICBtX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEzMDUsNiArMTIxNSwzMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6b25Td2FwQnVm
ZmVyc0NvbXBsZXRlKCkKICAgICBtX2NsaWVudC0+b25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7CiB9
CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpvbk1lbW9yeUFsbG9jYXRpb25DaGFuZ2Vk
KFdlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBhbGxvY2F0aW9uKQoreworICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgaW4gc2luZ2xlIHRocmVhZGVkIG1v
ZGUsIGJ1dCB3ZSBleHBlY3QgaXQgb24gdGhlIGltcGwgdGhyZWFkLgorICAgIGlmICghQ0NQcm94
eTo6aGFzSW1wbFRocmVhZCgpKSB7CisgICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFk
KCkpOworICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CisgICAgICBvbk1lbW9y
eUFsbG9jYXRpb25DaGFuZ2VkT25JbXBsVGhyZWFkKGFsbG9jYXRpb24pOworICAgIH0gZWxzZSB7
CisgICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgICAgb25NZW1vcnlB
bGxvY2F0aW9uQ2hhbmdlZE9uSW1wbFRocmVhZChhbGxvY2F0aW9uKTsKKyAgICB9Cit9CisKK3Zv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpvbk1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkT25JbXBs
VGhyZWFkKFdlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBhbGxvY2F0aW9uKQoreworICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFhbGxvY2F0aW9uLnN1Z2dl
c3RIYXZlQmFja2J1ZmZlcikKKyAgICAgICAgZGlzY2FyZEZyYW1lYnVmZmVyKCk7CisgICAgZWxz
ZQorICAgICAgICBlbnN1cmVGcmFtZWJ1ZmZlcigpOworICAgIG1fY2xpZW50LT5zZXRDb250ZW50
c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKGFsbG9jYXRpb24uZ3B1UmVzb3VyY2VTaXplSW5C
eXRlcyk7Cit9CisKKwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRpc2NhcmRGcmFtZWJ1
ZmZlcigpCiB7CiAgICAgaWYgKG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCkKQEAgLTEzMTMsMTAg
KzEyNDcsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGlzY2FyZEZyYW1lYnVmZmVy
KCkKICAgICBpZiAoIW1fY2FwYWJpbGl0aWVzLnVzaW5nRGlzY2FyZEZyYW1lYnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKTsKLSAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9uczNE
Q2hyb21pdW0gPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGV4dGVuc2lvbnMp
OwogICAgIC8vIEZJWE1FOiBVcGRhdGUgYXR0YWNobWVudHMgYXJndW1lbnQgdG8gYXBwcm9wcmlh
dGUgdmFsdWVzIG9uY2UgdGhleSBhcmUgbm8gbG9uZ2VyIGlnbm9yZWQuCi0gICAgZXh0ZW5zaW9u
czNEQ2hyb21pdW0tPmRpc2NhcmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCwgMCk7CisgICAgbV9jb250ZXh0LT5kaXNjYXJkRnJhbWVidWZmZXJFWFQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDApOwogICAgIG1faXNGcmFtZWJ1ZmZlckRp
c2NhcmRlZCA9IHRydWU7CiAKICAgICAvLyBEYW1hZ2UgdHJhY2tlciBuZWVkcyBhIGZ1bGwgcmVz
ZXQgZXZlcnkgdGltZSBmcmFtZWJ1ZmZlciBpcyBkaXNjYXJkZWQuCkBAIC0xMzMxLDEyICsxMjYz
LDE2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjplbnN1cmVGcmFtZWJ1ZmZlcigpCiAg
ICAgaWYgKCFtX2NhcGFiaWxpdGllcy51c2luZ0Rpc2NhcmRGcmFtZWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCk7Ci0gICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMzRENocm9t
aXVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihleHRlbnNpb25zKTsKLSAg
ICBleHRlbnNpb25zM0RDaHJvbWl1bS0+ZW5zdXJlRnJhbWVidWZmZXJDSFJPTUlVTSgpOworICAg
IG1fY29udGV4dC0+ZW5zdXJlRnJhbWVidWZmZXJDSFJPTUlVTSgpOwogICAgIG1faXNGcmFtZWJ1
ZmZlckRpc2NhcmRlZCA9IGZhbHNlOwogfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
b25Db250ZXh0TG9zdCgpCit7CisgICAgbV9jbGllbnQtPmRpZExvc2VDb250ZXh0KCk7Cit9CisK
Kwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQg
KnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBBU1NFUlQocmVjdC5tYXhYKCkg
PD0gdmlld3BvcnRXaWR0aCgpICYmIHJlY3QubWF4WSgpIDw9IHZpZXdwb3J0SGVpZ2h0KCkpOwpA
QCAtMTM1MCw3ICsxMjg2LDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1l
YnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmUKIAogICAgIFBsYXRm
b3JtM0RPYmplY3QgdGVtcG9yYXJ5VGV4dHVyZSA9IE51bGxQbGF0Zm9ybTNET2JqZWN0OwogICAg
IFBsYXRmb3JtM0RPYmplY3QgdGVtcG9yYXJ5RkJPID0gTnVsbFBsYXRmb3JtM0RPYmplY3Q7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBtX2NvbnRleHQuZ2V0KCk7CiAKICAgICBp
ZiAoZG9Xb3JrYXJvdW5kKSB7CiAgICAgICAgIC8vIE9uIE1hYyBPUyBYIDEwLjcsIGNhbGxpbmcg
Z2xSZWFkUGl4ZWxzIGFnYWluc3QgYW4gRkJPIHdob3NlIGNvbG9yIGF0dGFjaG1lbnQgaXMgYW4K
QEAgLTEzNTgsMzEgKzEyOTMsMzEgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZy
YW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmUKICAgICAgICAg
Ly8gZGlmZmVyZW50IE9wZW5HTCBjb250ZXh0cy4gSXQgaXMgYmVsaWV2ZWQgdGhhdCB0aGlzIGlz
IHRoZSByb290IGNhdXNlIG9mIHRvcCBjcmFzaGVyCiAgICAgICAgIC8vIGh0dHA6Ly9jcmJ1Zy5j
b20vOTkzOTMuIDxyZGFyOi8vcHJvYmxlbS8xMDk0OTY4Nz4KIAotICAgICAgICB0ZW1wb3JhcnlU
ZXh0dXJlID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRlbXBv
cmFyeVRleHR1cmUpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKKyAgICAgICAgdGVtcG9yYXJ5VGV4dHVyZSA9IG1f
Y29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZW1wb3JhcnlU
ZXh0dXJlKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50
ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7
CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9U
LCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwogICAgICAgICAvLyBDb3B5IHRo
ZSBjb250ZW50cyBvZiB0aGUgY3VycmVudCAoSU9TdXJmYWNlLWJhY2tlZCkgZnJhbWVidWZmZXIg
aW50byBhIHRlbXBvcmFyeSB0ZXh0dXJlLgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCAwLCAwLCByZWN0Lm1heFgoKSwgcmVjdC5tYXhZKCksIDApKTsKLSAg
ICAgICAgdGVtcG9yYXJ5RkJPID0gY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIDAsIDAsIHJlY3Qu
bWF4WCgpLCByZWN0Lm1heFkoKSwgMCkpOworICAgICAgICB0ZW1wb3JhcnlGQk8gPSBtX2NvbnRl
eHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgICAgIC8vIEF0dGFjaCB0aGlzIHRleHR1cmUg
dG8gYW4gRkJPLCBhbmQgcGVyZm9ybSB0aGUgcmVhZGJhY2sgZnJvbSB0aGF0IEZCTy4KLSAgICAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIHRlbXBvcmFyeUZCTykpOwotICAgICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCB0ZW1wb3JhcnlUZXh0dXJlLCAwKSk7CisgICAgICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgdGVtcG9yYXJ5RkJPKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCB0ZW1wb3JhcnlUZXh0dXJlLCAwKSk7CiAKLSAgICAgICAgQVNTRVJUKGNvbnRleHQt
PmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSA9
PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpOworICAgICAgICBBU1NF
UlQobV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUikgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKTsK
ICAgICB9CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+cmVhZFBpeGVscyhyZWN0LngoKSwg
cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKKyAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPnJlYWRQaXhlbHMocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBw
aXhlbHMpKTsKIAogICAgIGlmIChkb1dvcmthcm91bmQpIHsKICAgICAgICAgLy8gQ2xlYW4gdXAu
Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOwotICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIodGVtcG9yYXJ5RkJPKSk7
Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVUZXh0dXJlKHRlbXBvcmFyeVRl
eHR1cmUpKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7CisgICAgICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIDApKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1
ZmZlcih0ZW1wb3JhcnlGQk8pKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5k
ZWxldGVUZXh0dXJlKHRlbXBvcmFyeVRleHR1cmUpKTsKICAgICB9CiB9CiAKQEAgLTEzOTEsOCAr
MTMyNiw5IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1
cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0CiAgICAgaWYgKCF0ZXh0dXJlLT5yZXNl
cnZlKGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQg
PSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsKLSAgICB0ZXh0dXJlLT5i
aW5kVGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkp
OworICAgIGlmICghdGV4dHVyZS0+dGV4dHVyZUlkKCkpCisgICAgICAgIHRleHR1cmUtPmFsbG9j
YXRlKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1
cmUtPnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jb3B5VGV4
SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgdGV4dHVyZS0+Zm9ybWF0
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VS
ZWN0LngoKSwgZGV2aWNlUmVjdC55KCksIGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5o
ZWlnaHQoKSwgMCkpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTQzMiw4ICsxMzY4LDkgQEAgYm9v
bCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY28KIHsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVu
RnJhbWVidWZmZXJJZCkpOwogCi0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRl
eHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QobV9jb250ZXh0KTsKLSAgICB0ZXh0dXJl
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChjY0NvbnRleHQuZ2V0KCksIG1faW1wbFRleHR1cmVBbGxv
Y2F0b3IuZ2V0KCkpOworICAgIGlmICghdGV4dHVyZS0+dGV4dHVyZUlkKCkpCisgICAgICAgIHRl
eHR1cmUtPmFsbG9jYXRlKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT50ZXh0dXJlSWQoKSwgMCkpOwog
CiAjaWYgIWRlZmluZWQgKCBOREVCVUcgKQogICAgIGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKQEAgLTE0OTgsMjMgKzE0MzUsMjMgQEAg
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKIAog
ICAgIC8vIFdlIHdpbGwgYWx3YXlzIG5lZWQgdGhlc2UgcHJvZ3JhbXMgdG8gcmVuZGVyLCBzbyBj
cmVhdGUgdGhlIHByb2dyYW1zIGVhZ2VybHkgc28gdGhhdCB0aGUgc2hhZGVyIGNvbXBpbGF0aW9u
IGNhbgogICAgIC8vIHN0YXJ0IHdoaWxlIHdlIGRvIG90aGVyIHdvcmsuIE90aGVyIHByb2dyYW1z
IGFyZSBjcmVhdGVkIGxhemlseSBvbiBmaXJzdCBhY2Nlc3MuCi0gICAgbV9zaGFyZWRHZW9tZXRy
eSA9IGFkb3B0UHRyKG5ldyBHZW9tZXRyeUJpbmRpbmcobV9jb250ZXh0LmdldCgpKSk7Ci0gICAg
bV9yZW5kZXJQYXNzUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbShtX2Nv
bnRleHQuZ2V0KCkpKTsKLSAgICBtX3RpbGVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRpbGVQcm9n
cmFtKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fdGlsZVByb2dyYW1PcGFxdWUgPSBhZG9wdFB0
cihuZXcgVGlsZVByb2dyYW1PcGFxdWUobV9jb250ZXh0LmdldCgpKSk7CisgICAgbV9zaGFyZWRH
ZW9tZXRyeSA9IGFkb3B0UHRyKG5ldyBHZW9tZXRyeUJpbmRpbmcobV9jb250ZXh0KSk7CisgICAg
bV9yZW5kZXJQYXNzUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbShtX2Nv
bnRleHQpKTsKKyAgICBtX3RpbGVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtKG1f
Y29udGV4dCkpOworICAgIG1fdGlsZVByb2dyYW1PcGFxdWUgPSBhZG9wdFB0cihuZXcgVGlsZVBy
b2dyYW1PcGFxdWUobV9jb250ZXh0KSk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmZsdXNoKCkpOwogCiAgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRl
eHR1cmVTaXplKTsKLSAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3Bp
ZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fdGV4dHVyZUNvcGllciA9IEFjY2Vs
ZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dCk7CiAgICAgaWYgKG1fdGV4dHVy
ZVVwbG9hZGVyU2V0dGluZyA9PSBUaHJvdHRsZWRVcGxvYWRlcikKLSAgICAgICAgbV90ZXh0dXJl
VXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0
KCkpOworICAgICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFRocm90dGxlZFRleHR1cmVVcGxvYWRl
cjo6Y3JlYXRlKG1fY29udGV4dCk7CiAgICAgZWxzZQogICAgICAgICBtX3RleHR1cmVVcGxvYWRl
ciA9IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoKTsKLSAgICBtX2NvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29u
dGV4dC5nZXQoKSk7Ci0gICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVy
ZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CisgICAgbV9jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQp
OworICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6
OmNyZWF0ZShtX2NvbnRleHQpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVV
c2FnZUhpbnQpCiAgICAgICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3ItPnNldFRleHR1cmVVc2Fn
ZUhpbnQoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpOwog
ICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVTdG9yYWdlRXh0ZW5zaW9uKSB7CkBA
IC0xNTI4LDEwICsxNDY1LDEwIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFs
aXplU2hhcmVkT2JqZWN0cygpCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVDaGVj
a2VyYm9hcmRQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVDaGVja2VyYm9hcmRQ
cm9ncmFtKCkKIHsKICAgICBpZiAoIW1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0pCi0gICAgICAg
IG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGlsZUNoZWNrZXJib2Fy
ZFByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFBy
b2dyYW0gPSBhZG9wdFB0cihuZXcgVGlsZUNoZWNrZXJib2FyZFByb2dyYW0obV9jb250ZXh0KSk7
CiAgICAgaWYgKCFtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CiAg
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmNoZWNrZXJib2FyZFBy
b2dyYW06OmluaXRhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQ
cm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fdGlsZUNoZWNr
ZXJib2FyZFByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJu
IG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTM5LDEwICsxNDc2LDEw
IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZUNoZWNrZXJib2FyZFByb2dyYW0q
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlNvbGlkQ29sb3JQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlkQ29sb3JQcm9n
cmFtKCkKIHsKICAgICBpZiAoIW1fc29saWRDb2xvclByb2dyYW0pCi0gICAgICAgIG1fc29saWRD
b2xvclByb2dyYW0gPSBhZG9wdFB0cihuZXcgU29saWRDb2xvclByb2dyYW0obV9jb250ZXh0Lmdl
dCgpKSk7CisgICAgICAgIG1fc29saWRDb2xvclByb2dyYW0gPSBhZG9wdFB0cihuZXcgU29saWRD
b2xvclByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3NvbGlkQ29sb3JQcm9ncmFtLT5p
bml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21p
dW06OnNvbGlkQ29sb3JQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1f
c29saWRDb2xvclByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAg
bV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICBy
ZXR1cm4gbV9zb2xpZENvbG9yUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE1NTAsMTAgKzE0ODcsMTAg
QEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpTb2xpZENvbG9yUHJvZ3JhbSogTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpzb2xpZENvbG8KIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
SGVhZHNVcERpc3BsYXlQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzVXBEaXNw
bGF5UHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSkKLSAgICAg
ICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0gPSBhZG9wdFB0cihuZXcgSGVhZHNVcERpc3BsYXlQ
cm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3Jh
bSA9IGFkb3B0UHRyKG5ldyBIZWFkc1VwRGlzcGxheVByb2dyYW0obV9jb250ZXh0KSk7CiAgICAg
aWYgKCFtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBU
UkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0t
PmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9oZWFkc1VwRGlzcGxheVBy
b2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1faGVhZHNV
cERpc3BsYXlQcm9ncmFtLmdldCgpOwogfQpAQCAtMTU2Myw3ICsxNTAwLDcgQEAgY29uc3QgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpyZW5kZXJQYXMKICAgICBBU1NFUlQobV9yZW5kZXJQYXNzUHJvZ3JhbSk7CiAgICAgaWYg
KCFtX3JlbmRlclBhc3NQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtOjppbml0aWFsaXpl
IiwgdGhpcywgMCk7Ci0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0tPmluaXRpYWxpemUobV9j
b250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzUHJvZ3JhbS5nZXQoKTsK
IH0KQEAgLTE1NzEsMTAgKzE1MDgsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpS
ZW5kZXJQYXNzUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXMKIGNvbnN0
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbUFBKCkKIHsKICAgICBpZiAoIW1fcmVuZGVyUGFz
c1Byb2dyYW1BQSkKLSAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3
IFJlbmRlclBhc3NQcm9ncmFtQUEobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fcmVuZGVy
UGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbUFBKG1fY29udGV4
dCkpOwogICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7CiAg
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9n
cmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3Jh
bUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc1By
b2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5k
ZXJQYXNzUHJvZ3JhbUFBLmdldCgpOwogfQpAQCAtMTU4MiwxMCArMTUxOSwxMCBAQCBjb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyUAogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNz
TWFza1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFt
KCkKIHsKICAgICBpZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9ncmFtKQotICAgICAgICBtX3JlbmRl
clBhc3NNYXNrUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW0obV9j
b250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtID0gYWRvcHRQ
dHIobmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fcmVu
ZGVyUGFzc01hc2tQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbTo6aW5pdGlhbGl6
ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6
ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1By
b2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTkzLDEwICsxNTMwLDEwIEBAIGNvbnN0IExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01hc2tQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnJlbmRlCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NNYXNrUHJvZ3Jh
bUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKCkKIHsK
ICAgICBpZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVyUGFz
c01hc2tQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc01hc2tQcm9ncmFtQUEobV9j
b250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEgPSBhZG9w
dFB0cihuZXcgUmVuZGVyUGFzc01hc2tQcm9ncmFtQUEobV9jb250ZXh0KSk7CiAgICAgaWYgKCFt
X3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNF
X0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBOjpp
bml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEt
PmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1By
b2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5k
ZXJQYXNzTWFza1Byb2dyYW1BQS5nZXQoKTsKIH0KQEAgLTE2MDYsNyArMTU0Myw3IEBAIGNvbnN0
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGlsZVByb2dyYW0oKQogICAgIEFTU0VSVChtX3RpbGVQcm9ncmFtKTsKICAgICBpZiAoIW1f
dGlsZVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAg
ICAgICAgbV90aWxlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAg
ICBtX3RpbGVQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQogICAgIHJldHVy
biBtX3RpbGVQcm9ncmFtLmdldCgpOwogfQpAQCAtMTYxNiw3ICsxNTUzLDcgQEAgY29uc3QgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbU9wYXF1ZSogTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0aWxlUHJvZ3IKICAgICBBU1NFUlQobV90aWxlUHJvZ3JhbU9wYXF1ZSk7CiAgICAgaWYg
KCFtX3RpbGVQcm9ncmFtT3BhcXVlLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtT3BhcXVlOjppbml0aWFsaXpl
IiwgdGhpcywgMCk7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9j
b250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJvZ3JhbU9wYXF1ZS5nZXQoKTsK
IH0KQEAgLTE2MjQsMTAgKzE1NjEsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpU
aWxlUHJvZ3JhbU9wYXF1ZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3IKIGNvbnN0
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0aWxlUHJvZ3JhbUFBKCkKIHsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1BQSkKLSAgICAg
ICAgbV90aWxlUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtQUEobV9jb250ZXh0
LmdldCgpKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJv
Z3JhbUFBKG1fY29udGV4dCkpOwogICAgIGlmICghbV90aWxlUHJvZ3JhbUFBLT5pbml0aWFsaXpl
ZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQ
cm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV90aWxlUHJvZ3JhbUFB
LT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1BQS0+
aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJvZ3JhbUFB
LmdldCgpOwogfQpAQCAtMTYzNSwxMCArMTU3MiwxMCBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OlRpbGVQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1B
QQogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGUqIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1Td2l6emxlKCkKIHsKICAgICBpZiAoIW1fdGls
ZVByb2dyYW1Td2l6emxlKQotICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZSA9IGFkb3B0UHRy
KG5ldyBUaWxlUHJvZ3JhbVN3aXp6bGUobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fdGls
ZVByb2dyYW1Td2l6emxlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtU3dpenpsZShtX2NvbnRl
eHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlLT5pbml0aWFsaXplZCgpKSB7CiAg
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dp
enpsZTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenps
ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQcm9ncmFtU3dp
enpsZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJv
Z3JhbVN3aXp6bGUuZ2V0KCk7CiB9CkBAIC0xNjQ2LDEwICsxNTgzLDEwIEBAIGNvbnN0IExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnRpbGVQcm9nCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtU3dp
enpsZU9wYXF1ZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGVPcGFx
dWUoKQogewogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUpCi0gICAgICAgIG1f
dGlsZVByb2dyYW1Td2l6emxlT3BhcXVlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtU3dpenps
ZU9wYXF1ZShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVP
cGFxdWUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKG1fY29udGV4dCkp
OwogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmluaXRpYWxpemVkKCkpIHsK
ICAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1T
d2l6emxlT3BhcXVlOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fdGlsZVByb2dy
YW1Td2l6emxlT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1f
dGlsZVByb2dyYW1Td2l6emxlT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQog
ICAgIHJldHVybiBtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS5nZXQoKTsKIH0KQEAgLTE2NTcs
MTAgKzE1OTQsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3
aXp6bGVPcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGkKIGNvbnN0IExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGlsZVByb2dyYW1Td2l6emxlQUEoKQogewogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGVB
QSkKLSAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVBQSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJv
Z3JhbVN3aXp6bGVBQShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3
aXp6bGVBQSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbVN3aXp6bGVBQShtX2NvbnRleHQpKTsK
ICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemVkKCkpIHsKICAgICAg
ICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1Td2l6emxl
QUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVB
QS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQcm9ncmFtU3dp
enpsZUFBLT5pbml0aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVQ
cm9ncmFtU3dpenpsZUFBLmdldCgpOwogfQpAQCAtMTY2OCwxMCArMTYwNSwxMCBAQCBjb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtU3dpenpsZUFBKiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRpbGVQcgogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUZXh0dXJlUHJv
Z3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlUHJvZ3JhbSgpCiB7CiAgICAgaWYg
KCFtX3RleHR1cmVQcm9ncmFtKQotICAgICAgICBtX3RleHR1cmVQcm9ncmFtID0gYWRvcHRQdHIo
bmV3IFRleHR1cmVQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3RleHR1cmVQ
cm9ncmFtID0gYWRvcHRQdHIobmV3IFRleHR1cmVQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlm
ICghbV90ZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOwotICAgICAgICBtX3RleHR1cmVQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5n
ZXQoKSk7CisgICAgICAgIG1fdGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fdGV4dHVyZVByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNjc5LDEw
ICsxNjE2LDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVByb2dyYW0q
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyCiBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlRleHR1cmVQcm9ncmFtRmxpcCogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0
dXJlUHJvZ3JhbUZsaXAoKQogewogICAgIGlmICghbV90ZXh0dXJlUHJvZ3JhbUZsaXApCi0gICAg
ICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwID0gYWRvcHRQdHIobmV3IFRleHR1cmVQcm9ncmFtRmxp
cChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbUZsaXAgPSBhZG9w
dFB0cihuZXcgVGV4dHVyZVByb2dyYW1GbGlwKG1fY29udGV4dCkpOwogICAgIGlmICghbV90ZXh0
dXJlUHJvZ3JhbUZsaXAtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW1GbGlwOjppbml0aWFsaXplIiwgdGhp
cywgMCk7Ci0gICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CisgICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwLT5pbml0aWFsaXplKG1fY29u
dGV4dCk7CiAgICAgfQogICAgIHJldHVybiBtX3RleHR1cmVQcm9ncmFtRmxpcC5nZXQoKTsKIH0K
QEAgLTE2OTAsMTAgKzE2MjcsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUZXh0
dXJlUHJvZ3JhbUZsaXAqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVAKIGNvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZUlPU3VyZmFjZVByb2dyYW0qIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dGV4dHVyZUlPU3VyZmFjZVByb2dyYW0oKQogewogICAgIGlmICghbV90ZXh0
dXJlSU9TdXJmYWNlUHJvZ3JhbSkKLSAgICAgICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSA9
IGFkb3B0UHRyKG5ldyBUZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsK
KyAgICAgICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUZXh0dXJl
SU9TdXJmYWNlUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGV4dHVyZUlPU3VyZmFj
ZVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGV4dHVyZUlPU3VyZmFjZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKLSAgICAgICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQuZ2V0KCkpOworICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtLT5pbml0aWFs
aXplKG1fY29udGV4dCk7CiAgICAgfQogICAgIHJldHVybiBtX3RleHR1cmVJT1N1cmZhY2VQcm9n
cmFtLmdldCgpOwogfQpAQCAtMTcwMSwxMCArMTYzOCwxMCBAQCBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRleAogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpWaWRlb1lVVlByb2dyYW0qIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9ZVVZQcm9ncmFtKCkKIHsKICAgICBpZiAoIW1fdmlkZW9Z
VVZQcm9ncmFtKQotICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBWaWRl
b1lVVlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fdmlkZW9ZVVZQcm9ncmFt
ID0gYWRvcHRQdHIobmV3IFZpZGVvWVVWUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1f
dmlkZW9ZVVZQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJM
YXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvWVVWUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMs
IDApOwotICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0
KCkpOworICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwog
ICAgIH0KICAgICByZXR1cm4gbV92aWRlb1lVVlByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNzEyLDEw
ICsxNjQ5LDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VmlkZW9ZVVZQcm9ncmFt
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvWVVWUHJvCiBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3ZpZGVvU3RyZWFt
VGV4dHVyZVByb2dyYW0pCi0gICAgICAgIG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbSA9IGFk
b3B0UHRyKG5ldyBWaWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwor
ICAgICAgICBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlkZW9T
dHJlYW1UZXh0dXJlUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdmlkZW9TdHJlYW1U
ZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpzdHJlYW1UZXh0dXJlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOwotICAgICAgICBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemUo
bV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtLT5p
bml0aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQogICAgIHJldHVybiBtX3ZpZGVvU3RyZWFtVGV4
dHVyZVByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNzI3LDQ2ICsxNjY0LDQ2IEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgbV9zaGFyZWRHZW9t
ZXRyeS5jbGVhcigpOwogCiAgICAgaWYgKG1fdGlsZVByb2dyYW0pCi0gICAgICAgIG1fdGlsZVBy
b2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbS0+
Y2xlYW51cChtX2NvbnRleHQpOwogICAgIGlmIChtX3RpbGVQcm9ncmFtT3BhcXVlKQotICAgICAg
ICBtX3RpbGVQcm9ncmFtT3BhcXVlLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAg
IG1fdGlsZVByb2dyYW1PcGFxdWUtPmNsZWFudXAobV9jb250ZXh0KTsKICAgICBpZiAobV90aWxl
UHJvZ3JhbVN3aXp6bGUpCi0gICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlLT5jbGVhbnVwKG1f
Y29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlLT5jbGVhbnVwKG1f
Y29udGV4dCk7CiAgICAgaWYgKG1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKQotICAgICAgICBt
X3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAg
ICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+Y2xlYW51cChtX2NvbnRleHQpOwogICAg
IGlmIChtX3RpbGVQcm9ncmFtQUEpCi0gICAgICAgIG1fdGlsZVByb2dyYW1BQS0+Y2xlYW51cCht
X2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQcm9ncmFtQUEtPmNsZWFudXAobV9jb250
ZXh0KTsKICAgICBpZiAobV90aWxlUHJvZ3JhbVN3aXp6bGVBQSkKLSAgICAgICAgbV90aWxlUHJv
Z3JhbVN3aXp6bGVBQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQ
cm9ncmFtU3dpenpsZUFBLT5jbGVhbnVwKG1fY29udGV4dCk7CiAgICAgaWYgKG1fdGlsZUNoZWNr
ZXJib2FyZFByb2dyYW0pCi0gICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmNsZWFu
dXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+
Y2xlYW51cChtX2NvbnRleHQpOwogCiAgICAgaWYgKG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtKQot
ICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkp
OworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwog
ICAgIGlmIChtX3JlbmRlclBhc3NQcm9ncmFtKQotICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFt
LT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0t
PmNsZWFudXAobV9jb250ZXh0KTsKICAgICBpZiAobV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQSkK
LSAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0
KCkpOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4
dCk7CiAgICAgaWYgKG1fcmVuZGVyUGFzc1Byb2dyYW1BQSkKLSAgICAgICAgbV9yZW5kZXJQYXNz
UHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fcmVuZGVyUGFz
c1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQpOwogCiAgICAgaWYgKG1fdGV4dHVyZVByb2dy
YW0pCi0gICAgICAgIG1fdGV4dHVyZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsK
KyAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwogICAgIGlmICht
X3RleHR1cmVQcm9ncmFtRmxpcCkKLSAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbUZsaXAtPmNsZWFu
dXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbUZsaXAtPmNsZWFu
dXAobV9jb250ZXh0KTsKICAgICBpZiAobV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSkKLSAgICAg
ICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwor
ICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dCk7CiAK
ICAgICBpZiAobV92aWRlb1lVVlByb2dyYW0pCi0gICAgICAgIG1fdmlkZW9ZVVZQcm9ncmFtLT5j
bGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fdmlkZW9ZVVZQcm9ncmFtLT5jbGVh
bnVwKG1fY29udGV4dCk7CiAgICAgaWYgKG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbSkKLSAg
ICAgICAgbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQo
KSk7CisgICAgICAgIG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRl
eHQpOwogCiAgICAgaWYgKG1fc29saWRDb2xvclByb2dyYW0pCi0gICAgICAgIG1fc29saWRDb2xv
clByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9zb2xpZENvbG9y
UHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwogCiAgICAgaWYgKG1faGVhZHNVcERpc3BsYXlQ
cm9ncmFtKQotICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRl
eHQuZ2V0KCkpOworICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+Y2xlYW51cChtX2Nv
bnRleHQpOwogCiAgICAgaWYgKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkKICAgICAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX29mZnNjcmVlbkZyYW1l
YnVmZmVySWQpKTsKQEAgLTE3NzksNyArMTcxNiw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojppc0NvbnRleHRMb3N0KCkKIHsKLSAgICByZXR1cm4gKG1fY29udGV4dC5nZXQoKS0+Z2V0RXh0
ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6Ok5PX0VSUk9SKTsKKyAgICByZXR1cm4gKG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYzM2
OWRkMmE3NzBlZWQwOGUxNjllNGVhMDI0MDc5OTg1ZDIwYjM5Ni4uZTM1NmVlOWZhMDliYTM5NjEy
OGY3MWYzOGYyMWU5MDY4MWVhY2Q3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKQEAgLTQwLDYgKzQwLDEwIEBACiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR3Jh
cGhpY3NDb250ZXh0M0Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZDsKQEAgLTUzLDI0ICs1NywyNSBAQCBjbGFzcyBDQ1RleHR1cmVEcmF3
UXVhZDsKIGNsYXNzIENDVGlsZURyYXdRdWFkOwogY2xhc3MgQ0NZVVZWaWRlb0RyYXdRdWFkOwog
Y2xhc3MgR2VvbWV0cnlCaW5kaW5nOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBM
YXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXI7Ci1j
bGFzcyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcjsKIGNs
YXNzIFNjb3BlZEVuc3VyZUZyYW1lYnVmZmVyQWxsb2NhdGlvbjsKIAogZW51bSBUZXh0dXJlVXBs
b2FkZXJPcHRpb24geyBUaHJvdHRsZWRVcGxvYWRlciwgVW50aHJvdHRsZWRVcGxvYWRlciB9Owog
CiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2luZyBvZiBjb21wb3NpdGVkIHJlbmRlciBsYXll
cnMgdXNpbmcgR0wuCi1jbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgQ0NSZW5k
ZXJlciB7CitjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgQ0NSZW5kZXJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEOjpXZWJHcmFwaGljc1N3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OldlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NI
Uk9NSVVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0Q6OldlYkdyYXBoaWNzQ29udGV4dExvc3RDYWxsYmFjayB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJSZW5kZXJlckNocm9taXVtKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShDQ1JlbmRl
cmVyQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1cmVVcGxvYWRl
ck9wdGlvbik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBj
cmVhdGUoQ0NSZW5kZXJlckNsaWVudCosIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogCiAgICAgdmlydHVhbCB+TGF5ZXJSZW5kZXJlckNocm9t
aXVtKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGNh
cGFiaWxpdGllcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9CiAK
LSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOworICAgIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydENoYW5n
ZWQoKSBPVkVSUklERTsKIApAQCAtODksNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gcHV0cyBi
YWNrYnVmZmVyIG9uc2NyZWVuCiAgICAgdmlydHVhbCBib29sIHN3YXBCdWZmZXJzKGNvbnN0IElu
dFJlY3QmIHN1YkJ1ZmZlcikgT1ZFUlJJREU7CiAKLSAgICBzdGF0aWMgdm9pZCBkZWJ1Z0dMQ2Fs
bChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IGNoYXIqIGNvbW1hbmQsIGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lKTsKKyAgICBzdGF0aWMgdm9pZCBkZWJ1Z0dMQ2FsbChXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUpOwogCiAgICAgY29uc3QgR2VvbWV0cnlCaW5kaW5nKiBzaGFyZWRHZW9tZXRyeSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnkuZ2V0KCk7IH0KIApAQCAtMTE0LDEyICsx
MTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRl
eHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KTsKIAogcHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFz
cyBMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXI7
Ci0gICAgdm9pZCBkaXNjYXJkRnJhbWVidWZmZXIoKTsKLSAgICB2b2lkIGVuc3VyZUZyYW1lYnVm
ZmVyKCk7Ci0gICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9Ci0KLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0o
Q0NSZW5kZXJlckNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJl
VXBsb2FkZXJPcHRpb24pOworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xp
ZW50KiwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVVcGxvYWRlck9wdGlv
bik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CkBAIC0xNTUsOCArMTU1LDE4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygpOwogICAgIHZv
aWQgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKIAotICAgIGZyaWVuZCBjbGFzcyBMYXllclJlbmRl
cmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcjsKLSAgICB2b2lkIG9uU3dhcEJ1
ZmZlcnNDb21wbGV0ZSgpOworICAgIC8vIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6Oldl
YkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gaW1wbGVtZW50YXRp
b24uCisgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpIE9WRVJSSURFOwor
CisgICAgLy8gV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6V2ViR3JhcGhpY3NNZW1vcnlB
bGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQ0hST01JVU0gaW1wbGVtZW50YXRpb24uCisgICAgdmly
dHVhbCB2b2lkIG9uTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWQoV2ViS2l0OjpXZWJHcmFwaGljc01l
bW9yeUFsbG9jYXRpb24pIE9WRVJSSURFOworICAgIHZvaWQgb25NZW1vcnlBbGxvY2F0aW9uQ2hh
bmdlZE9uSW1wbFRocmVhZChXZWJLaXQ6OldlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbik7Cisg
ICAgdm9pZCBkaXNjYXJkRnJhbWVidWZmZXIoKTsKKyAgICB2b2lkIGVuc3VyZUZyYW1lYnVmZmVy
KCk7CisgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CisKKyAgICAvLyBXZWJHcmFwaGljc0NvbnRleHQzRDo6
V2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1
YWwgdm9pZCBvbkNvbnRleHRMb3N0KCkgT1ZFUlJJREU7CiAKICAgICBMYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwogCkBAIC0yNTMsNyArMjYzLDcgQEAgcHJpdmF0ZToK
ICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2ltcGxUZXh0
dXJlQWxsb2NhdG9yOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7
CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogCiAgICAgY29u
c3QgQ0NSZW5kZXJQYXNzKiBtX2RlZmF1bHRSZW5kZXJQYXNzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVTdWJJbWFnZS5jcHAKaW5kZXggNGJlYTkwNDJmODJmNDU3NDhmMDAzZTM0NjZkYjYzZGI2
MzQ0MGE0Ni4uNGFhOTk2NWU3ZjM4YjBiZTM4M2ZiY2QxYjFmYjMwNzVmNzZjMmU1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIExh
eWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCog
aW1hZ2UsIGNvbnN0IEludAogICAgICAgICBwaXhlbFNvdXJjZSA9ICZtX3N1YkltYWdlWzBdOwog
ICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250
ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBj
b250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdl
Ojp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVu
dW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRoaXMs
IDApOwotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0
M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAgICAgICAg
IHJldHVybjsKQEAgLTExMiw4ICsxMTIsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1
cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0CiAgICAg
SW50UG9pbnQgb2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVj
dC55KCkgLSBpbWFnZVJlY3QueSgpKTsKIAogICAgIC8vIFVwbG9hZCB0aWxlIGRhdGEgdmlhIGEg
bWFwcGVkIHRyYW5zZmVyIGJ1ZmZlcgotICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0M2QtPmdldEV4
dGVuc2lvbnMoKSk7Ci0gICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0Lndp
ZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworICAgIHVpbnQ4
X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250ZXh0M2QtPm1hcFRleFN1
YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJl
Y3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgp
LCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RD
aHJvbWl1bTo6V1JJVEVfT05MWSkpOwogCiAgICAgaWYgKCFwaXhlbERlc3QpIHsKICAgICAgICAg
dXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0LCBmb3JtYXQsIGNvbnRleHQpOwpAQCAtMTM3LDcgKzEzNiw3IEBAIHZvaWQgTGF5ZXJUZXh0
dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFn
ZSwgY29uc3QKICAgICAgICAgICAgICAgICAgICAmaW1hZ2VbNCAqIChvZmZzZXQueCgpICsgKG9m
ZnNldC55KCkgKyByb3cpICogaW1hZ2VSZWN0LndpZHRoKCkpXSwKICAgICAgICAgICAgICAgICAg
ICBkZXN0UmVjdC53aWR0aCgpICogY29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQZXJDb21wb25l
bnQpOwogICAgIH0KLSAgICBHTEMoY29udGV4dDNkLCBleHRlbnNpb25zLT51bm1hcFRleFN1Yklt
YWdlMkRDSFJPTUlVTShwaXhlbERlc3QpKTsKKyAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2Qt
PnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggOGYwM2UwZDllNjNhYjg1
NmNhOTg4NWFkNjc5MDczZDY4MTZlMzM0YS4uZDc1OWUxZmE5N2U1MjYzNWI1YmIzMDNlM2VlYTkw
NjFjZDYzYTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtMzEsNiArMzEsOSBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJHcmFwaGljc0NvbnRleHQzRC5oPgorCit1c2luZyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyMSw3ICsxMjQsNyBAQCB2b2lkIE1h
bmFnZWRUZXh0dXJlOjphbGxvY2F0ZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB2b2lk
IE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7
Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgp
OworICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0
M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAgICAgICAgIHJldHVybjsKQEAg
LTEzMiw3ICsxMzUsNyBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYQogdm9pZCBNYW5hZ2VkVGV4
dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwot
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsK
KyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNE
KCk7CiAgICAgaWYgKCFjb250ZXh0M2QpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0
Zm9ybUNvbG9yLmgKaW5kZXggYWI2NTQ1ZGNlZTJmMTFjZTU3YjQ1ZGIyYTE3Zjg1NzU5MWE1Y2U5
OS4uZGY2MTAyOTczYTVmYjYwMjdlMmFhYWE1NjUzNTZlNTA0NDczODJkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3Jt
Q29sb3IuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiU2tUeXBlcy5oIiAKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00MCwxNSArNDEsMTYgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFJldHVybnMg
dGhlIG1vc3QgZWZmaWNpZW50IHRleHR1cmUgZm9ybWF0IGZvciB0aGlzIHBsYXRmb3JtLgotICAg
IHN0YXRpYyBHQzNEZW51bSBiZXN0VGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCkKKyAgICBzdGF0aWMgR0MzRGVudW0gYmVzdFRleHR1cmVGb3JtYXQoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICB7CiAgICAgICAgIEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKICAgICAgICAgc3dpdGNoIChmb3Jt
YXQoKSkgewogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JB
ODoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRCR1JBODoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkKLSAgICAgICAg
ICAgICAgICB0ZXh0dXJlRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVDsKKyAgICAgICAg
ICAgIC8vIFhYWAorICAgICAgICAgICAgLy9pZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IikpCisgICAgICAgICAgICAv
LyAgICB0ZXh0dXJlRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Qcm9ncmFtQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKaW5kZXggMzc2NDM0ZTYyYmZiNGQxZGI0MWZmZTA2
ODc3Yzg5YzcwNzhjYWQ1Ni4uNmFmYmIzNGFlNjA3ZjMxODAxNDY5ZjU2NjE4YTQwNzRkOTE2OWVj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UHJvZ3JhbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcApAQCAtMjksMTIgKzI5LDEzIEBACiAKICNpbmNs
dWRlICJQcm9ncmFtQmluZGluZy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCiAjaW5j
bHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmg+CisKK3VzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsMTkgKzUyLDE5IEBAIFByb2dyYW1CaW5k
aW5nQmFzZTo6flByb2dyYW1CaW5kaW5nQmFzZSgpCiAgICAgQVNTRVJUKCFtX2luaXRpYWxpemVk
KTsKIH0KIAotc3RhdGljIGJvb2wgY29udGV4dExvc3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQpCitzdGF0aWMgYm9vbCBjb250ZXh0TG9zdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKIHsKLSAgICByZXR1cm4gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CisgICAgcmV0
dXJuIChjb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6Ok5PX0VSUk9SKTsKIH0KIAogCi12b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6aW5pdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpCit2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6aW5p
dChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFk
ZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpCiB7CiAgICAgbV9wcm9ncmFtID0gY3Jl
YXRlU2hhZGVyUHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsK
ICAgICBBU1NFUlQobV9wcm9ncmFtIHx8IGNvbnRleHRMb3N0KGNvbnRleHQpKTsKIH0KIAotdm9p
ZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmNsZWFudXAoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQp
Cit2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cChXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCkKIHsKICAgICBtX2luaXRpYWxpemVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3Byb2dy
YW0pCkBAIC03NCwxMyArNzUsMTMgQEAgdm9pZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmNsZWFudXAo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgbV9wcm9ncmFtID0gMDsKIH0KIAotdW5z
aWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCB1bnNpZ25lZCB0eXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclNvdXJjZSkKK3Vuc2ln
bmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6bG9hZFNoYWRlcihXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgdHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTb3VyY2UpCiB7CiAg
ICAgdW5zaWduZWQgc2hhZGVyID0gY29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5cGUpOwogICAgIGlm
ICghc2hhZGVyKQogICAgICAgICByZXR1cm4gMDsKICAgICBTdHJpbmcgc291cmNlU3RyaW5nKHNo
YWRlclNvdXJjZSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnNoYWRlclNvdXJjZShzaGFk
ZXIsIHNvdXJjZVN0cmluZykpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5zaGFkZXJTb3Vy
Y2Uoc2hhZGVyLCBzb3VyY2VTdHJpbmcudXRmOCgpLmRhdGEoKSkpOwogICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5jb21waWxlU2hhZGVyKHNoYWRlcikpOwogI2lmbmRlZiBOREVCVUcKICAgICBp
bnQgY29tcGlsZWQgPSAwOwpAQCAtOTMsOSArOTQsOSBAQCB1bnNpZ25lZCBQcm9ncmFtQmluZGlu
Z0Jhc2U6OmxvYWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHR5
cAogICAgIHJldHVybiBzaGFkZXI7CiB9CiAKLXVuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6
Y3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UpCit1bnNpZ25lZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0oV2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291
cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyU291cmNlKQogewotICAgIFRSQUNFX0VW
RU5UKCJQcm9ncmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0iLCB0aGlzLCAwKTsK
KyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIlByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVy
UHJvZ3JhbSIpOwogICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoY29udGV4
dCwgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlclNvdXJjZSk7
CiAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIpIHsKICAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250
ZXh0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1Byb2dyYW1CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCmluZGV4IGMwZWY3MzZiM2M5M2RjYmM2ZmZiNWY1YjVi
YTA4NzIyZDQ3NzMxMDcuLjM5MDQ4ZjkwMzIwYmFkMjRlYzNjNDlmOTUyZDY5NGM0MThlN2VlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1By
b2dyYW1CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUHJvZ3JhbUJpbmRpbmcuaApAQCAtMjgsMjggKzI4LDI5IEBACiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2lu
Y2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAot
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGlj
c0NvbnRleHQzRDsKK30KIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFByb2dyYW1CaW5kaW5nQmFzZSB7CiBwdWJsaWM6CiAgICAgUHJvZ3Jh
bUJpbmRpbmdCYXNlKCk7CiAgICAgflByb2dyYW1CaW5kaW5nQmFzZSgpOwogCi0gICAgdm9pZCBp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpOwotICAgIHZvaWQgY2xlYW51cChHcmFwaGljc0NvbnRl
eHQzRCopOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgY29u
c3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpOwor
ICAgIHZvaWQgY2xlYW51cChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICB1
bnNpZ25lZCBwcm9ncmFtKCkgY29uc3QgeyBBU1NFUlQobV9pbml0aWFsaXplZCk7IHJldHVybiBt
X3Byb2dyYW07IH0KICAgICBib29sIGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0
aWFsaXplZDsgfQogCiBwcm90ZWN0ZWQ6CiAKLSAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgdHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTb3VyY2Up
OwotICAgIHVuc2lnbmVkIGNyZWF0ZVNoYWRlclByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqLCBj
b25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNo
YWRlclNvdXJjZSk7CisgICAgdW5zaWduZWQgbG9hZFNoYWRlcihXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgdHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTb3VyY2UpOwor
ICAgIHVuc2lnbmVkIGNyZWF0ZVNoYWRlclByb2dyYW0oV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZy
YWdtZW50U2hhZGVyU291cmNlKTsKIAogICAgIHVuc2lnbmVkIG1fcHJvZ3JhbTsKICAgICBib29s
IG1faW5pdGlhbGl6ZWQ7CkBAIC01OCwxMiArNTksMTIgQEAgcHJvdGVjdGVkOgogdGVtcGxhdGU8
Y2xhc3MgVmVydGV4U2hhZGVyLCBjbGFzcyBGcmFnbWVudFNoYWRlcj4KIGNsYXNzIFByb2dyYW1C
aW5kaW5nIDogcHVibGljIFByb2dyYW1CaW5kaW5nQmFzZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUHJvZ3JhbUJpbmRpbmcoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgZXhwbGlj
aXQgUHJvZ3JhbUJpbmRpbmcoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkK
ICAgICB7CiAgICAgICAgIFByb2dyYW1CaW5kaW5nQmFzZTo6aW5pdChjb250ZXh0LCBtX3ZlcnRl
eFNoYWRlci5nZXRTaGFkZXJTdHJpbmcoKSwgbV9mcmFnbWVudFNoYWRlci5nZXRTaGFkZXJTdHJp
bmcoKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQorICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgICAgICBBU1NF
UlQobV9wcm9ncmFtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAppbmRleCA2ZWQ2ZjRhOGU0MTk2
NDMyMDIyYzU2NjY2OGQ1ZGQ4YzE5YTM0MDMxLi4yYTE0MGQxZDc4NWI2NDM5YjMxZTBiMmY4NGYz
MjRlNThjZTcwNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0yOSwxMiArMjksMTMg
QEAKIAogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogCiAjZGVmaW5lIFNIQURFUjAoU3JjKSAjU3JjCiAj
ZGVmaW5lIFNIQURFUihTcmMpIFNIQURFUjAoU3JjKQogCit1c2luZyBXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZlcnRleFNoYWRlclBvc1Rl
eDo6VmVydGV4U2hhZGVyUG9zVGV4KCkKQEAgLTQyLDcgKzQzLDcgQEAgVmVydGV4U2hhZGVyUG9z
VGV4OjpWZXJ0ZXhTaGFkZXJQb3NUZXgoKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1Rl
eDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3Zv
aWQgVmVydGV4U2hhZGVyUG9zVGV4Ojppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwogICAgIEFTU0VSVChtX21hdHJp
eExvY2F0aW9uICE9IC0xKTsKQEAgLTcwLDcgKzcxLDcgQEAgVmVydGV4U2hhZGVyUG9zVGV4WVVW
U3RyZXRjaDo6VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCgpCiB7CiB9CiAKLXZvaWQgVmVy
dGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6
aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsK
ICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJtYXRyaXgiKTsKICAgICBtX3lXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInlfd2lkdGhTY2FsZUZhY3RvciIpOwpAQCAt
MTAzLDcgKzEwNCw3IEBAIFZlcnRleFNoYWRlclBvczo6VmVydGV4U2hhZGVyUG9zKCkKIHsKIH0K
IAotdm9pZCBWZXJ0ZXhTaGFkZXJQb3M6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvczo6aW5pdChXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX21hdHJpeExv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsK
ICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSk7CkBAIC0xMjcsNyArMTI4LDcgQEAg
VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0o
KQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVy
UG9zVGV4VHJhbnNmb3JtOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBwcm9ncmFtKQogewogICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwogICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRp
b24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleFRyYW5zZm9ybSIp
OwpAQCAtMTY5LDcgKzE3MCw3IEBAIFN0cmluZyBWZXJ0ZXhTaGFkZXJQb3NUZXhJZGVudGl0eTo6
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCi12b2lkIFZlcnRleFNoYWRlclF1
YWQ6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2
b2lkIFZlcnRleFNoYWRlclF1YWQ6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CiAgICAgbV9wb2ludExvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJwb2ludCIpOwpAQCAtMjA1
LDcgKzIwNiw3IEBAIFZlcnRleFNoYWRlclRpbGU6OlZlcnRleFNoYWRlclRpbGUoKQogewogfQog
Ci12b2lkIFZlcnRleFNoYWRlclRpbGU6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclRpbGU6OmluaXQoV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9tYXRyaXhM
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7
CiAgICAgbV9wb2ludExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJwb2ludCIpOwpAQCAtMjQyLDcgKzI0Myw3IEBAIFZlcnRleFNoYWRlclZpZGVvVHJhbnNm
b3JtOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSgpCiB7CiB9CiAKLWJvb2wgVmVydGV4U2hh
ZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIHByb2dyYW0pCitib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjppbml0KFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1fbWF0
cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJp
eCIpOwogICAgIG1fdGV4TWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInRleE1hdHJpeCIpOwpAQCAtMjcxLDcgKzI3Miw3IEBAIEZyYWdtZW50VGV4
QWxwaGFCaW5kaW5nOjpGcmFnbWVudFRleEFscGhhQmluZGluZygpCiB7CiB9CiAKLXZvaWQgRnJh
Z21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVu
c2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjppbml0KFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1fc2Ft
cGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3Rl
eHR1cmUiKTsKICAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgImFscGhhIik7CkBAIC0yODQsNyArMjg1LDcgQEAgRnJhZ21lbnRUZXhPcGFx
dWVCaW5kaW5nOjpGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcoKQogewogfQogCi12b2lkIEZyYWdt
ZW50VGV4T3BhcXVlQmluZGluZzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1fc2Ft
cGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3Rl
eHR1cmUiKTsKIApAQCAtMzA2LDcgKzMwNyw3IEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFU
ZXhGbGlwQWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAotYm9vbCBG
cmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCitib29sIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRl
cm5hbDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3Jh
bSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAKQEAgLTQzNiw3ICs0MzcsNyBAQCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBKCkKIHsKIH0K
IAotdm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjppbml0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYUFBOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtKQogewogICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKICAgICBtX2FscGhhTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CkBAIC00NzgsNyArNDc5
LDcgQEAgRnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nOjpGcmFnbWVudFRleENsYW1wQWxw
aGFBQUJpbmRpbmcoKQogewogfQogCi12b2lkIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGlu
Zzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3Zv
aWQgRnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nOjppbml0KFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1fc2FtcGxlckxvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKICAg
ICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
ImFscGhhIik7CkBAIC01NDksNyArNTUwLDcgQEAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFN
YXNrOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2soKQogewogfQogCi12b2lkIEZyYWdt
ZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNr
Ojppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQog
ewogICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJzX3RleHR1cmUiKTsKICAgICBtX21hc2tTYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfbWFzayIpOwpAQCAtNTgyLDcgKzU4Myw3
IEBAIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjpGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYU1hc2tBQSgpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFN
YXNrQUE6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0p
Cit2b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjppbml0KFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1fc2FtcGxlckxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUi
KTsKICAgICBtX21hc2tTYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInNfbWFzayIpOwpAQCAtNjI4LDcgKzYyOSw3IEBAIEZyYWdtZW50U2hhZGVy
WVVWVmlkZW86OkZyYWdtZW50U2hhZGVyWVVWVmlkZW8oKQogewogfQogCi12b2lkIEZyYWdtZW50
U2hhZGVyWVVWVmlkZW86OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVk
IHByb2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVyWVVWVmlkZW86OmluaXQoV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV95VGV4dHVyZUxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ5X3RleHR1cmUi
KTsKICAgICBtX3VUZXh0dXJlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgInVfdGV4dHVyZSIpOwpAQCAtNjcxLDcgKzY3Miw3IEBAIEZyYWdtZW50U2hhZGVy
Q29sb3I6OkZyYWdtZW50U2hhZGVyQ29sb3IoKQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVy
Q29sb3I6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0p
Cit2b2lkIEZyYWdtZW50U2hhZGVyQ29sb3I6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9jb2xvckxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJjb2xvciIpOwogICAgIEFTU0VSVChtX2Nv
bG9yTG9jYXRpb24gIT0gLTEpOwpAQCAtNjk2LDcgKzY5Nyw3IEBAIEZyYWdtZW50U2hhZGVyQ2hl
Y2tlcmJvYXJkOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCgpCiB7CiB9CiAKLXZvaWQgRnJh
Z21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjppbml0
KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAg
IG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
YWxwaGEiKTsKICAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCmlu
ZGV4IDkyNzdlY2NhNTBjMzZkMTg5ZDhlNjFkNzJlNWZmMzdhOGUzNTdjODQuLjQ3NWI3ODk2MjQ1
ZDY4ZDUxYzljZmJmOTYzMTAxN2NkNjZiYzJkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApAQCAt
MzEsMTUgKzMxLDE3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJT
a0NvbG9yUHJpdi5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOworfQogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQz
RDsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4IHsKIHB1
YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJQb3NUZXgoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgU3RyaW5nIGdldFNo
YWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtNTIsNyArNTQsNyBAQCBjbGFzcyBWZXJ0ZXhT
aGFkZXJQb3NUZXhZVVZTdHJldGNoIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJQb3NUZXhZ
VVZTdHJldGNoKCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25l
ZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCos
IHVuc2lnbmVkIHByb2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsK
IAogICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRp
b247IH0KQEAgLTY5LDcgKzcxLDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUG9zIHsKIHB1YmxpYzoK
ICAgICBWZXJ0ZXhTaGFkZXJQb3MoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmlu
ZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRyaXhMb2NhdGlvbjsgfQpAQCAtODAsNyArODIsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBWZXJ0
ZXhTaGFkZXJQb3NUZXhJZGVudGl0eSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBpbml0KEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSkgeyB9CisgICAgdm9pZCBpbml0KFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKSB7IH0KICAgICBTdHJpbmcg
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCkBAIC04OCw3ICs5MCw3IEBAIGNsYXNzIFZl
cnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVyUG9z
VGV4VHJhbnNmb3JtKCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNp
Z25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dDsKIAogICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9j
YXRpb247IH0KQEAgLTEwMyw3ICsxMDUsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJRdWFkIHsKIHB1
YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJRdWFkKCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFk
ZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTExOCw3ICsxMjAsNyBAQCBjbGFzcyBWZXJ0ZXhT
aGFkZXJUaWxlIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJUaWxlKCk7CiAKLSAgICB2b2lk
IGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGlu
aXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRyaXhMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTEzNSw3ICsxMzcsNyBA
QCBjbGFzcyBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSB7CiBwdWJsaWM6CiAgICAgVmVydGV4
U2hhZGVyVmlkZW9UcmFuc2Zvcm0oKTsKIAotICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGJvb2wgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmlu
ZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRyaXhMb2NhdGlvbjsgfQpAQCAtMTUwLDcgKzE1Miw3IEBAIGNsYXNzIEZyYWdtZW50VGV4QWxw
aGFCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFRleEFscGhhQmluZGluZygpOwogCi0g
ICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAg
dm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFt
KTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlv
bjsgfQogICAgIGludCBlZGdlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsgfQogICAgIGlu
dCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KQEAg
LTE2NSw3ICsxNjcsNyBAQCBjbGFzcyBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcgewogcHVibGlj
OgogICAgIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZygpOwogCi0gICAgdm9pZCBpbml0KEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBpbnQgYWxwaGFM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CiAgICAgaW50IGVkZ2VMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIC0xOyB9CiAgICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiAtMTsgfQpAQCAtMjIxLDcgKzIyMyw3IEBAIHB1YmxpYzoKIGNsYXNz
IEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhh
QmluZGluZyB7CiBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0Owot
ICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAg
IGJvb2wgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3Jh
bSk7CiBwcml2YXRlOgogICAgIGludCBtX3NhbXBsZXJMb2NhdGlvbjsKIH07CkBAIC0yMzAsNyAr
MjMyLDcgQEAgY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSB7CiBwdWJsaWM6CiAg
ICAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpOwogCi0gICAgdm9pZCBpbml0KEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBTdHJpbmcgZ2V0
U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQpAQCAtMjQ3LDcgKzI0OSw3IEBAIGNsYXNzIEZyYWdt
ZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZyB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRUZXhDbGFt
cEFscGhhQUFCaW5kaW5nKCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9CiAgICAgaW50IGZyYWdtZW50VGV4VHJh
bnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9j
YXRpb247IH0KQEAgLTI3Niw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGFNYXNrKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0Owog
Ci0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7Cisg
ICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9n
cmFtKTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2Nh
dGlvbjsgfQogICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZXJMb2NhdGlvbjsgfQogICAgIGludCBtYXNrU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNrU2FtcGxlckxvY2F0aW9uOyB9CkBAIC0yOTIsNyArMjk0LDcgQEAgcHVibGljOgog
ICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBKCk7CiAgICAgU3RyaW5nIGdldFNo
YWRlclN0cmluZygpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQogICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQogICAgIGludCBtYXNrU2FtcGxlckxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU2FtcGxlckxvY2F0aW9uOyB9CkBAIC0zMTAs
NyArMzEyLDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyWVVWVmlkZW8oKTsKICAgICBT
dHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwogCiAgICAgaW50IHlUZXh0dXJl
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3lUZXh0dXJlTG9jYXRpb247IH0KICAgICBpbnQg
dVRleHR1cmVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdVRleHR1cmVMb2NhdGlvbjsgfQpA
QCAtMzMzLDcgKzMzNSw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlckNvbG9yKCk7CiAg
ICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0KEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBpbnQgY29sb3JM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JMb2NhdGlvbjsgfQogCiBwcml2YXRlOgpA
QCAtMzQ1LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlckNoZWNrZXJib2Fy
ZCgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5p
dChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50
IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAgICBp
bnQgdGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleFRyYW5zZm9ybUxv
Y2F0aW9uOyB9CiAgICAgaW50IGZyZXF1ZW5jeUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9m
cmVxdWVuY3lMb2NhdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAppbmRleCBiZDhjMzNhOWEy
NTBhMDUyYTZlZDYwY2RjYzhkOTcwMTI5NmMwZjk2Li4wZjIzMDkwNjg3OTRiOTA2ODRhOGU2MDY2
NzQ5MWQzMDJlNTY0OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcApAQCAtMjYsMTQgKzI2LDE4
IEBACiAKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgdGhl
IEdMQygpIG1hY3JvCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJHcmFwaGljc0NvbnRleHQzRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OkFjY2Vs
ZXJhdGVkVGV4dHVyZUNvcGllcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0
KQorQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250
ZXh0KQogeworICAgIEFTU0VSVChtX2NvbnRleHQpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fZmJv
ID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKTsKICAgICBHTEMobV9jb250ZXh0LCBt
X3Bvc2l0aW9uQnVmZmVyID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKSk7CiAKQEAgLTQ0LDE3
ICs0OCwxNyBAQCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OkFjY2VsZXJhdGVkVGV4dHVyZUNv
cGllcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPgogICAgICAgICB7LTEsIDEsIDAsIDF9
CiAgICAgfTsKIAotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Bvc2l0aW9uQnVmZmVyKSk7Ci0g
ICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29u
dGV4dDNEOjpBUlJBWV9CVUZGRVIsIHNpemVvZihrUG9zaXRpb25zKSwga1Bvc2l0aW9ucywgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwg
bV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIDAp
KTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9wb3NpdGlvbkJ1ZmZlcikpOworICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
LCBzaXplb2Yoa1Bvc2l0aW9ucyksIGtQb3NpdGlvbnMsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEFU
SUNfRFJBVykpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKSk7CiAKLSAgICBtX2JsaXRQcm9ncmFtID0g
YWRvcHRQdHIobmV3IEJsaXRQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fYmxpdFBy
b2dyYW0gPSBhZG9wdFB0cihuZXcgQmxpdFByb2dyYW0obV9jb250ZXh0KSk7CiB9CiAKIEFjY2Vs
ZXJhdGVkVGV4dHVyZUNvcGllcjo6fkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpCiB7CiAgICAg
aWYgKG1fYmxpdFByb2dyYW0pCi0gICAgICAgIG1fYmxpdFByb2dyYW0tPmNsZWFudXAobV9jb250
ZXh0LmdldCgpKTsKKyAgICAgICAgbV9ibGl0UHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwog
ICAgIGlmIChtX3Bvc2l0aW9uQnVmZmVyKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmRlbGV0ZUJ1ZmZlcihtX3Bvc2l0aW9uQnVmZmVyKSk7CiAgICAgaWYgKG1fZmJvKQpAQCAt
NjUsNyArNjksNyBAQCB2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUo
Q0NHcmFwaGljc0NvbnRleHQqIGNjQ29udGV4dCwgdW5zaWduZQogewogICAgIFRSQUNFX0VWRU5U
KCJUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSIsIHRoaXMsIDApOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQzRCgpOwog
ICAgIGlmICghY29udGV4dCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0
aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3Bp
ZXIuaAppbmRleCAzYWMyZDExOTE0ZmZhMTVmOGRlYzJjYWIzZGY1Y2QyODBhM2E2ZjkwLi42NDYx
ODlhYjYxODg0MzRkZDhlZDBlNzcyMGMyNmYwMDgyODFkM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5o
CkBAIC0yOSw5ICsyOSwxMyBAQAogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiU2hhZGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
V2ViR3JhcGhpY3NDb250ZXh0M0Q7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElu
dFNpemU7CiAKIGNsYXNzIFRleHR1cmVDb3BpZXIgewogcHVibGljOgpAQCAtNDksNyArNTMsNyBA
QCBwcm90ZWN0ZWQ6CiBjbGFzcyBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIgOiBwdWJsaWMgVGV4
dHVyZUNvcGllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRUZXh0dXJl
Q29waWVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBY2NlbGVyYXRlZFRleHR1
cmVDb3BpZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY3JlYXRlKFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihjb250ZXh0KSk7CiAgICAg
fQpAQCAtNTgsMTIgKzYyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1
cmUoQ0NHcmFwaGljc0NvbnRleHQqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVk
IGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
Pik7CisgICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqKTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclBvc1RleElkZW50aXR5LCBGcmFnbWVudFNoYWRlclJHQkFUZXg+IEJsaXRQ
cm9ncmFtOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAg
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIFBsYXRmb3JtM0RP
YmplY3QgbV9mYm87CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3Bvc2l0aW9uQnVmZmVyOwogICAg
IE93blB0cjxCbGl0UHJvZ3JhbT4gbV9ibGl0UHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXll
ckNocm9taXVtLmNwcAppbmRleCA5MGI2MmIxY2UyYjVkZDkzOGQ2OTk3YzU0YWZkMTU2OTQ0Nzll
MGY0Li44NTk4NjRlNjJkMTFhNzViNzZkZWE2YzU5MDE4NDA4ZDAyYzI3NmFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwCkBAIC0yOSw4ICsyOSw2IEBACiAKICNpbmNsdWRl
ICJUZXh0dXJlTGF5ZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgiCiAjaW5jbHVk
ZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAK
aW5kZXggOTdlNjJiOTFjNmI5Y2MyMjI3MTgyZWRlMDA1M2YzNzFhMDkxNmQ2Mi4uYTU4NWExZjdj
OGU3MGY2ZWE3YjNhZTQwMTcxNjRmM2U0YWJlNzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNw
cApAQCAtMjgsOCArMjgsMTAgQEAKIAogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCisjaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaAppbmRleCAz
MTQ3NjM1YTgwZGZkODE5OTUyZTYxZGY2OGNmNTFjOWIzNWRlNmI4Li5hMmQ4OGJkZGYwMjc4OTYx
ZWE1ODk5MGM3MTJkZmYwN2ZhM2U0ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKQEAgLTI1LDEw
ICsyNSwxMCBAQAogI2lmbmRlZiBUZXh0dXJlTWFuYWdlcl9oCiAjZGVmaW5lIFRleHR1cmVNYW5h
Z2VyX2gKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyLmNwcAppbmRleCBmNWNmMmE0ZTEzOTc3YmQ4YTk4MzE1MTQ5MDVkMzEwM2Iz
MjFkMzA1Li5hODI1M2QwNjU1MTYyNWYwYjA3M2FlY2Y1ZGVmNzVjZGFlMDJhZmJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKIAogI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRENocm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
Lmg+CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTM3LDU3ICszOCw1MiBAQCBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heFBlbmRpbmdRdWVyaWVzID0gMjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpRdWVyeShQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0KQorVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6UXVlcnko
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChj
b250ZXh0KQogICAgICwgbV9xdWVyeUlkKDApCiB7Ci0gICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0q
IGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpKTsKLSAgICBtX3F1ZXJ5SWQgPSBleHRlbnNpb25zLT5jcmVhdGVR
dWVyeUVYVCgpOworICAgIG1fcXVlcnlJZCA9IG1fY29udGV4dC0+Y3JlYXRlUXVlcnlFWFQoKTsK
IH0KIAogVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6flF1ZXJ5KCkKIHsKLSAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwotICAgIGV4dGVuc2lvbnMt
PmRlbGV0ZVF1ZXJ5RVhUKG1fcXVlcnlJZCk7CisgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeUVY
VChtX3F1ZXJ5SWQpOwogfQogCiB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6
OmJlZ2luKCkKIHsKLSAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRp
Y19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkp
OwotICAgIGV4dGVuc2lvbnMtPmJlZ2luUXVlcnlFWFQoRXh0ZW5zaW9uczNEQ2hyb21pdW06OkNP
TU1BTkRTX0lTU1VFRF9DSFJPTUlVTSwgbV9xdWVyeUlkKTsKKyAgICBtX2NvbnRleHQtPmJlZ2lu
UXVlcnlFWFQoRXh0ZW5zaW9uczNEQ2hyb21pdW06OkNPTU1BTkRTX0lTU1VFRF9DSFJPTUlVTSwg
bV9xdWVyeUlkKTsKIH0KIAogdm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojpl
bmQoKQogewotICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nh
c3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Ci0g
ICAgZXh0ZW5zaW9ucy0+ZW5kUXVlcnlFWFQoRXh0ZW5zaW9uczNEQ2hyb21pdW06OkNPTU1BTkRT
X0lTU1VFRF9DSFJPTUlVTSk7CisgICAgbV9jb250ZXh0LT5lbmRRdWVyeUVYVChFeHRlbnNpb25z
M0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNKTsKIH0KIAogYm9vbCBUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojppc1BlbmRpbmcoKQogewotICAgIEV4dGVuc2lvbnMz
RENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0q
PihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgdW5zaWduZWQgYXZhaWxhYmxlID0g
MTsKLSAgICBleHRlbnNpb25zLT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVu
c2lvbnMzRENocm9taXVtOjpRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJmF2YWlsYWJsZSk7
CisgICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lv
bnMzRENocm9taXVtOjpRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJmF2YWlsYWJsZSk7CiAg
ICAgcmV0dXJuICFhdmFpbGFibGU7CiB9CiAKIHZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
OjpRdWVyeTo6d2FpdCgpCiB7Ci0gICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMg
PSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpKTsKICAgICB1bnNpZ25lZCByZXN1bHQ7Ci0gICAgZXh0ZW5zaW9ucy0+Z2V0UXVlcnlP
YmplY3R1aXZFWFQobV9xdWVyeUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxU
X0VYVCwgJnJlc3VsdCk7CisgICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1
ZXJ5SWQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpRVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0KTsK
IH0KIAotVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIo
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKK1Rocm90dGxlZFRleHR1cmVV
cGxvYWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbWF4UGVu
ZGluZ1F1ZXJpZXMobWF4UGVuZGluZ1F1ZXJpZXMpCiB7CiB9CiAKLVRocm90dGxlZFRleHR1cmVV
cGxvYWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQsIHNpemVfdCBwZW5kaW5nVXBsb2FkTGltaXQpCitUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcihXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgcGVuZGluZ1VwbG9hZExpbWl0KQogICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX21heFBlbmRpbmdRdWVyaWVzKHBlbmRpbmdVcGxvYWRM
aW1pdCkKIHsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKIH0KIAogVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjp+VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmgKaW5kZXggZGVhM2QzNTRjNWIxZTVlMzAwZmQwODIyYWVkNzFmZWFl
ZWE4YTE4NC4uMDBhOTk3ZDg0ODc3ZmRkNThiYzkxMjkyOThiMmM5Y2UwZjdhMWM2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTM0LDExICszNCwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIgOiBwdWJs
aWMgVGV4dHVyZVVwbG9hZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBj
cmVhdGUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKGNvbnRleHQp
KTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
PiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgc2l6ZV90IHBl
bmRpbmdVcGxvYWRMaW1pdCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXI+IGNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBz
aXplX3QgcGVuZGluZ1VwbG9hZExpbWl0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoY29udGV4dCwgcGVuZGluZ1VwbG9hZExpbWl0
KSk7CiAgICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNsYXNz
IFF1ZXJ5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFF1ZXJ5PiBj
cmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkgeyByZXR1cm4gYWRv
cHRQdHIobmV3IFF1ZXJ5KGNvbnRleHQpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxR
dWVyeT4gY3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpIHsgcmV0
dXJuIGFkb3B0UHRyKG5ldyBRdWVyeShjb250ZXh0KSk7IH0KIAogICAgICAgICB2aXJ0dWFsIH5R
dWVyeSgpOwogCkBAIC02MiwxOCArNjIsMTggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB3YWl0
KCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBRdWVyeShQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPik7CisgICAgICAgIGV4cGxpY2l0IFF1ZXJ5KFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqKTsKIAotICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1f
Y29udGV4dDsKKyAgICAgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0
OwogICAgICAgICB1bnNpZ25lZCBtX3F1ZXJ5SWQ7CiAgICAgfTsKIAotICAgIFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7Ci0gICAgVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBzaXplX3Qg
cGVuZGluZ1VwbG9hZExpbWl0KTsKKyAgICBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRCopOworICAgIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcihX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgc2l6ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCk7
CiAKICAgICB2b2lkIHByb2Nlc3NRdWVyaWVzKCk7CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dDsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2Nv
bnRleHQ7CiAgICAgc2l6ZV90IG1fbWF4UGVuZGluZ1F1ZXJpZXM7CiAgICAgRGVxdWU8T3duUHRy
PFF1ZXJ5PiA+IG1fcGVuZGluZ1F1ZXJpZXM7CiAgICAgRGVxdWU8T3duUHRyPFF1ZXJ5PiA+IG1f
YXZhaWxhYmxlUXVlcmllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3Iu
Y3BwCmluZGV4IGFhNmM0ZWMwYjc2MjJiMDA0ODMyOTIwZjc2MjM2OTZmNmJkNWRiZWMuLmYxMWMy
M2ZiMmE5Y2QwNTI1MjgyNzQ2NjdhMTU1MzhkMWRhZDA2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcApAQCAtMjcsMTcgKzI3LDE5IEBACiAjaW5jbHVkZSAi
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJv
bWl1bS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgdGhlIEdMQygp
IG1hY3JvCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
OjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCkKK1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6VHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKICAgICAsIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzKDApCiAgICAgLCBtX3Rl
eHR1cmVVc2FnZUhpbnQoQW55KQogICAgICwgbV91c2VUZXh0dXJlU3RvcmFnZUV4dChmYWxzZSkK
IHsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKIH0KIAogVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
Ojp+VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKCkKQEAgLTcyLDMwICs3NCwyOSBAQCB1bnNpZ25l
ZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgR0MzRGVudW0gZgogICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzICs9IFRleHR1cmVN
YW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpOwogCiAgICAgdW5zaWduZWQgdGV4
dHVyZUlkID0gMDsKLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCB0ZXh0dXJlSWQgPSBtX2NvbnRl
eHQtPmNyZWF0ZVRleHR1cmUoKSk7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7
CisgICAgR0xDKG1fY29udGV4dCwgdGV4dHVyZUlkID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJl
KCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOwogICAgIC8vIERvIGJhc2ljIGxpbmVh
ciBmaWx0ZXJpbmcgb24gcmVzaXplLgotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikp
OwotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFH
X0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUikpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwogICAgIC8vIE5QT1QgdGV4
dHVyZXMgaW4gR0wgRVMgb25seSB3b3JrIHdoZW4gdGhlIHdyYXAgbW9kZSBpcyBzZXQgdG8gR3Jh
cGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UuCi0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwg
bV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFN
UF9UT19FREdFKSk7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CisgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNz
Q29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdF
KSk7CiAKICAgICBpZiAobV90ZXh0dXJlVXNhZ2VIaW50ID09IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCkKLSAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xf
VEVYVFVSRV9VU0FHRV9BTkdMRSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX0ZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfQU5HTEUpKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50
ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBFeHRlbnNpb25zM0RD
aHJvbWl1bTo6R0xfVEVYVFVSRV9VU0FHRV9BTkdMRSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdM
X0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUpKTsKICAgICBpZiAobV91c2VUZXh0dXJlU3Rv
cmFnZUV4dCAmJiBpc1RleHR1cmVGb3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdlKGZvcm1hdCkpIHsK
LSAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKICAgICAg
ICAgR0MzRGVudW0gc3RvcmFnZUZvcm1hdCA9IHRleHR1cmVUb1N0b3JhZ2VGb3JtYXQoZm9ybWF0
KTsKLSAgICAgICAgZXh0ZW5zaW9ucy0+dGV4U3RvcmFnZTJERVhUKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAxLCBzdG9yYWdlRm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpOworICAgICAgICBtX2NvbnRleHQtPnRleFN0b3JhZ2UyREVYVChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMSwgc3RvcmFnZUZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0
LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAw
LCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSkpOworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGZvcm1h
dCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCAwKSk7CiAgICAgcmV0dXJuIHRleHR1cmVJZDsKIH0KIAogdm9p
ZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVy
ZUlkLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCiB7CiAgICAgbV9jdXJy
ZW50TWVtb3J5VXNlQnl0ZXMgLT0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUs
IGZvcm1hdCk7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5kZWxldGVUZXh0
dXJlKHRleHR1cmVJZCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlVGV4
dHVyZSh0ZXh0dXJlSWQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IuaAppbmRleCBhOGE1NDkyOWEyZmNhYjE5MzRlZjY0NDkxZDdiZjAwN2M3OTg4MTc4Li42
NjAxMjAyMDlhMGViZjcyY2FiOGVkNzAxMzRjOTJmODQ1MzA2NDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaApAQCAtMjUsMTYgKzI1LDE5IEBACiAjaWZuZGVmIFRy
YWNraW5nVGV4dHVyZUFsbG9jYXRvcl9oCiAjZGVmaW5lIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRv
cl9oCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRleHR1cmVN
YW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorbmFtZXNwYWNlIFdlYktp
dCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9j
YXRvciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0
b3I+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihjb250ZXh0KSk7CiAgICAgfQpAQCAt
NTEsOSArNTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VUZXh0dXJlU3RvcmFnZUV4dChi
b29sIHVzZVN0b3JhZ2VFeHQpIHsgbV91c2VUZXh0dXJlU3RvcmFnZUV4dCA9IHVzZVN0b3JhZ2VF
eHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRv
cihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisgICAgZXhwbGljaXQgVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKIAotICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBzaXplX3QgbV9jdXJyZW50TWVtb3J5VXNlQnl0
ZXM7CiAgICAgVGV4dHVyZVVzYWdlSGludCBtX3RleHR1cmVVc2FnZUhpbnQ7CiAgICAgYm9vbCBt
X3VzZVRleHR1cmVTdG9yYWdlRXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggMzk1ZjE4YzM0OTFiNGM0ZGQ2MTE0MzkxNDE1ODc5OThlMjg4NzQ2Zi4uNDM1MzZhNDIxNGQ1
OGFhZWFmMjVlM2FjODJmMGQ0NmYzZDFlMTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFwaGljc0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC0yNiwzMiArMjYsMzMgQEAKICNpZm5kZWYgQ0NHcmFwaGljc0NvbnRleHRfaAog
I2RlZmluZSBDQ0dyYXBoaWNzQ29udGV4dF9oCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEOwogCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVk
PENDR3JhcGhpY3NDb250ZXh0PiB7CitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ0NHcmFwaGljc0NvbnRleHQpOwogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGUyRCgpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZTJEKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ0NHcmFwaGljc0NvbnRleHQoKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ0NHcmFwaGljc0NvbnRleHQoKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGUzRChQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0M0QpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNyZWF0ZTNEKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dDNEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0dyYXBoaWNzQ29u
dGV4dChjb250ZXh0M0QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0dyYXBoaWNz
Q29udGV4dChjb250ZXh0M0QpKTsKICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dDNEKCkgeyByZXR1cm4gbV9jb250ZXh0M0QuZ2V0KCk7IH0KKyAgICBXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QoKSB7IHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsg
fQogCiBwcml2YXRlOgogICAgIENDR3JhcGhpY3NDb250ZXh0KCkgeyB9Ci0gICAgZXhwbGljaXQg
Q0NHcmFwaGljc0NvbnRleHQoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dDNE
KQorICAgIGV4cGxpY2l0IENDR3JhcGhpY3NDb250ZXh0KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dDNEKQogICAgICAgICA6IG1fY29udGV4dDNEKGNvbnRl
eHQzRCkgeyB9CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDNEOwor
ICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQzRDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggMWJiYzA0NmU3YTU4
MjFhYjBlMDM5OTQ2YjYwYzgxYTBlY2M5YTI3Zi4uZWQ1YmFjYmM2NzQyY2Q3ZWFiYjcwYTVkNGZm
OGEzMTYxM2JiOTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgImNjL0ND
RnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsNyArNzEsNyBA
QCBib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KEND
TGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogewogICAgIENDUmVuZGVyZXIq
IGxheWVyUmVuZGVyZXIgPSBsYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpOwotICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KS0+Y29udGV4dDNEKCk7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCA9IGxheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpOwogICAgIGlmICgh
Y29udGV4dCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcuCiAgICAgICAgIHJldHVybjsKQEAgLTEwOCwxMyArMTA5LDEyIEBA
IHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCkKICAgICAgICAgbV9odWRUZXh0dXJlLT5iaW5kVGV4dHVyZShsYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZUFsbG9jYXRvcigp
KTsKICAgICAgICAgYm9vbCB1cGxvYWRlZFZpYU1hcCA9IGZhbHNlOwogICAgICAgICBpZiAobGF5
ZXJSZW5kZXJlci0+Y2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpIHsKLSAgICAgICAgICAgIEV4
dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwotICAgICAgICAgICAgdWludDhf
dCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1
YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwg
aHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVt
OjpXUklURV9PTkxZKSk7CisgICAgICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oY29udGV4dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUu
aGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIAogICAgICAg
ICAgICAgaWYgKHBpeGVsRGVzdCkgewogICAgICAgICAgICAgICAgIHVwbG9hZGVkVmlhTWFwID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBtZW1jcHkocGl4ZWxEZXN0LCBsb2NrZXIucGl4ZWxzKCks
IGh1ZFNpemUud2lkdGgoKSAqIGh1ZFNpemUuaGVpZ2h0KCkgKiA0KTsKLSAgICAgICAgICAgICAg
ICBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVz
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VMYXllckltcGwuY3BwCmluZGV4IDBjZTkxMjY0N2QwMjg1YmI3MTdlMGE1NjBmNzdiOGRlNDVj
MDA4YTIuLmY3ZTcyN2VmMTg5ZmFlOTI2M2M1YTA4NTUwYzU5M2I3OGMzNjVlOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJm
YWNlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKQEAgLTI5LDEzICsyOSwxMyBAQAog
CiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCIKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRENocm9taXVtLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNs
dWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9D
Q1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1NCw3IEBAIENDSU9TdXJmYWNlTGF5
ZXJJbXBsOjp+Q0NJT1N1cmZhY2VMYXllckltcGwoKQogCiAgICAgQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBsYXllclRyZWVIb3N0SW1wbCgpLT5jb250ZXh0KCk7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0Qo
KTsKICAgICBpZiAoY29udGV4dDNkKQogICAgICAgICBjb250ZXh0M2QtPmRlbGV0ZVRleHR1cmUo
bV9pb1N1cmZhY2VUZXh0dXJlSWQpOwogfQpAQCAtNjQsMTQgKzY0LDExIEBAIHZvaWQgQ0NJT1N1
cmZhY2VMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3Jh
cGhpY3NDb250ZXh0CiAgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIsIGNv
bnRleHQpOwogCiAgICAgaWYgKG1faW9TdXJmYWNlQ2hhbmdlZCkgewotICAgICAgICBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgICAgIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQz
RCgpOwogICAgICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0M2QtPmdldEV4
dGVuc2lvbnMoKSk7Ci0gICAgICAgIEFTU0VSVChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hS
T01JVU1faW9zdXJmYWNlIikpOwotICAgICAgICBBU1NFUlQoZXh0ZW5zaW9ucy0+c3VwcG9ydHMo
IkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKTsKIAogICAgICAgICAvLyBGSVhNRTogRG8gdGhp
cyBpbiBhIHdheSB0aGF0IHdlIGNhbiB0cmFjayBtZW1vcnkgdXNhZ2UuCiAgICAgICAgIGlmICgh
bV9pb1N1cmZhY2VUZXh0dXJlSWQpCkBAIC04MywxMSArODAsMTEgQEAgdm9pZCBDQ0lPU3VyZmFj
ZUxheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGlj
c0NvbnRleHQKICAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJp
KEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CiAgICAgICAg
IEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShFeHRlbnNpb25zM0Q6OlRF
WFRVUkVfUkVDVEFOR0xFX0FSQiwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBH
cmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwogICAgICAgICBHTEMoY29udGV4dDNk
LCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdM
RV9BUkIsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0
M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICAgICAgZXh0ZW5zaW9ucy0+dGV4SW1hZ2VJT1N1cmZh
Y2UyRENIUk9NSVVNKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pb1N1cmZhY2VTaXpl
LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2lvU3VyZmFjZVNpemUuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2lvU3VyZmFjZUlkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGNvbnRleHQzZC0+dGV4SW1h
Z2VJT1N1cmZhY2UyRENIUk9NSVVNKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJC
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lvU3Vy
ZmFjZVNpemUud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pb1N1cmZhY2VTaXplLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lvU3VyZmFjZUlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKICAgICAgICAgLy8gRG8gbm90IGNo
ZWNrIGZvciBlcnJvciBjb25kaXRpb25zLiB0ZXhJbWFnZUlPU3VyZmFjZTJEQ0hST01JVU0gaXMg
c3VwcG9zZWQgdG8gaG9sZCBvbiB0bwogICAgICAgICAvLyB0aGUgbGFzdCBnb29kIElPU3VyZmFj
ZSBpZiB0aGUgbmV3IG9uZSBpcyBhbHJlYWR5IGNsb3NlZC4gVGhpcyBpcyBvbmx5IGEgcG9zc2li
aWxpdHkKICAgICAgICAgLy8gZHVyaW5nIGxpdmUgcmVzaXppbmcgb2YgcGx1Z2lucy4gSG93ZXZl
ciwgaXQgc2VlbXMgdGhhdCB0aGlzIGlzIG5vdCBzdWZmaWNpZW50IHRvCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKaW5kZXggMDdmMDIyZDljYzVkNzFiNzQyNGRmNzRkMjQwZmE5ZmU2MzA1YjZkMC4u
NWNlY2UwZGRiYjYyZDhkN2M5YmNmNWQxNjU3NDM4OWZlNDQyZmIyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlRyYWNlRXZl
bnQuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyU29ydGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZjEyMGQ4Yzc3MDE1Nzc5NTBiZjkxYzViMDIwMDUz
NzVlYjczMzhiOS4uY2ZkZWIzNGE2ZTM0NTNhNzExZjE5ODM2ZDFiMmNhN2RiZWU0ZDQ3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yNjksOSArMjY5LDggQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRlKCkKICAgICBtX2NsaWVudC0+ZGlkQ29tbWl0
KCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlQ29udGV4dCgpCitQYXNzT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBDQ0xheWVyVHJl
ZUhvc3Q6OmNyZWF0ZUNvbnRleHQoKQogewotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
Y29udGV4dDsKICAgICBpZiAoc2V0dGluZ3MoKS5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcpCiAg
ICAgICAgIHJldHVybiBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlMkQoKTsKICAgICByZXR1cm4g
Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY2xpZW50LT5jcmVhdGVDb250ZXh0M0QoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGUxMjA5YWYzNTU5Yzk3ZWJhNDgwMTUz
NjRhOWRiYzgxNDRlZjkzMWMuLmM4NGJiYmQwZGIzODBiMzYzZjgxMmZkOTNiYWMwMDU1NGJlYzgy
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRp
bWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBw
YWdlU2NhbGUpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNyZWF0ZUNvbnRleHQzRCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dDNEKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxDb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdCgpID0gMDsK
QEAgLTExNSw2ICsxMTUsNyBAQCBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyB7CiAg
ICAgICAgICwgdXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbihmYWxzZSkKICAgICAgICAgLCB1
c2luZ0dwdU1lbW9yeU1hbmFnZXIoZmFsc2UpCiAgICAgICAgICwgdXNpbmdEaXNjYXJkRnJhbWVi
dWZmZXIoZmFsc2UpCisgICAgICAgICwgdXNpbmdFZ2xJbWFnZShmYWxzZSkKICAgICAgICAgLCBt
YXhUZXh0dXJlU2l6ZSgwKSB7IH0KIAogICAgIEdDM0RlbnVtIGJlc3RUZXh0dXJlRm9ybWF0OwpA
QCAtMTI4LDYgKzEyOSw3IEBAIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIHsKICAg
ICBib29sIHVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb247CiAgICAgYm9vbCB1c2luZ0dwdU1l
bW9yeU1hbmFnZXI7CiAgICAgYm9vbCB1c2luZ0Rpc2NhcmRGcmFtZWJ1ZmZlcjsKKyAgICBib29s
IHVzaW5nRWdsSW1hZ2U7CiAgICAgaW50IG1heFRleHR1cmVTaXplOwogfTsKIApAQCAtMTUzLDcg
KzE1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9pZCBjb21taXRDb21wbGV0ZSgpOwotICAgIFBhc3NS
ZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQoKTsKKyAgICBQYXNzT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGVDb250ZXh0KCk7CiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQqKTsKICAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7CiAgICAgZW51
bSBSZWNyZWF0ZVJlc3VsdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CmluZGV4IGRlYWU0Yjg4Zjk2YWEzMzcwNWIyYzZjNThhN2Y1MTMyMzNjYTA1NDQuLjRiZWZjM2U1
YmExMTkzNDJmMWY2ODdjMmVlNzU0OGMyMWFkN2QyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC02MzYsOSArNjM2LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBzZXRCYWNrZ3JvdW5kVGlja2lu
Z0VuYWJsZWQoIW1fdmlzaWJsZSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycyk7CiB9CiAKLWJvb2wg
Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxD
Q0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVV
cGxvYWRlcikKK2Jvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoUGFzc093blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVy
T3B0aW9uIHRleHR1cmVVcGxvYWRlcikKIHsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0
M2QpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKaW5kZXggMmU3YWJhNGVkN2JiZGE2MGI1Mzk2MGIwMmFkOWY4NjIzZDFi
Mjg3ZC4uZmE0ZGY5NDMxNzU0M2U2Y2Y5N2NiN2NmNjI5MmQzNGE5NWU3NzAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIGludCBmcmFtZU51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAotICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4sIFRleHR1cmVVcGxvYWRlck9w
dGlvbik7CisgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzT3duUHRyPENDR3Jh
cGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29sIGlzQ29udGV4
dExvc3QoKTsKICAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXll
clJlbmRlcmVyLmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYg
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwpAQCAtMjI2LDcgKzIyNiw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGR1bXBSZW5kZXJTdXJmYWNlcyhUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudCwgY29uc3QgQ0NMYXllckltcGwqKSBjb25zdDsKIAotICAgIFJlZlB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250
ZXh0OwogICAgIE93blB0cjxDQ1JlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7CiAgICAgQ0NMYXllckltcGwqIG1fcm9vdFNj
cm9sbExheWVySW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5k
ZXggOGYzMDUyZDkzMTZjNDdhODhjZWIxZTBiOTZmM2MwMTgxOTQ3ZmExZS4uMTMxOWRkMDY1YjY1
NjZhMDVlZWNiZTRlY2YyNWIwZWUyZWM4ZjBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKQEAgLTEzOSwxMSArMTM5LDEwIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6aXNTdGFydGVkKCkgY29uc3QKIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlh
bGl6ZUNvbnRleHQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0g
ICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5j
cmVhdGVDb250ZXh0KCk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0g
bV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigpKTsKLSAg
ICBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbiA9IGNvbnRleHQ7CisgICAgbV9jb250ZXh0
QmVmb3JlSW5pdGlhbGl6YXRpb24gPSBjb250ZXh0LnJlbGVhc2UoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTc2LDE2ICsxNzUsMTUgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpy
ZWNyZWF0ZUNvbnRleHQoKQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKG1fY29udGV4dExvc3QpOwogCi0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CisgICAgT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250
ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBB
U1NFUlQoY29udGV4dC0+aGFzT25lUmVmKCkpOwogICAgIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAg
ewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgaW5pdGlhbGl6
ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0
LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50
aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgICAgIGlmIChpbml0aWFsaXplZCkgewogICAgICAgICAg
ICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGQzMjUzZTI1YzdmMjhmMGNhYzk0ZTk0
Njk4ZGFhNjZhOTA5NjkxYjUuLjZhZDE3ZGY5YzRiNWI1ZDZjZWM4ZWMxYjk1MTdlZmZhYjFiYzNj
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTk5LDcgKzk5LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBjb250ZXh0IGJldHdlZW4gaW5p
dGlhbGl6ZUNvbnRleHQoKSBhbmQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBjYWxscy4gU2hv
dWxkbid0CiAgICAgLy8gYmUgdXNlZCBmb3IgYW55dGhpbmcgZWxzZS4KLSAgICBSZWZQdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uOworICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb247CiAKICAg
ICBPd25QdHI8Q0NTaW5nbGVUaHJlYWRQcm94eUFuaW1hdGlvblRpbWVyPiBtX2FuaW1hdGlvblRp
bWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDFmZDBjNzM2ZWUz
NDlmNzg4YWJjODk4NGVmYmU2YmZiYThiNDYyNzMuLmMzMjk5OTM5YmFkMGY0YmY5YmQ1N2Y1Yjkw
NWFiM2JkMzA3ZWVhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0x
MjksNyArMTI5LDcgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoQ0NHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG8KICAgICAvLyBiZWZvcmUgbGV0
dGluZyB0aGUgbWFpbiB0aHJlYWQgcHJvY2VlZCBhcyBpdCBtYXkgbWFrZSBkcmF3IGNhbGxzIHRv
IHRoZSBzb3VyY2UgdGV4dHVyZSBvZiBvbmUgb2YKICAgICAvLyBvdXIgY29weSBvcGVyYXRpb25z
LgogICAgIGlmIChtX2NvcHlFbnRyaWVzLnNpemUoKSkgewotICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgICAgIFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwog
ICAgICAgICBpZiAoY29udGV4dDNkKQogICAgICAgICAgICAgY29udGV4dDNkLT5mbHVzaCgpOwog
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGU5NTU1NTUxMDU2N2UyOTdm
MzlhMGUzYzE5NmVmYThmMjgyYWM5YTQuLmM3ZDk5MzI3NTkzNzk2NzNiNzU2YzZmMzIyNTlhMTcy
ZjEwZWU0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0xNzYsMTcgKzE3Niwx
MiBAQCBib29sIENDVGhyZWFkUHJveHk6OmlzU3RhcnRlZCgpIGNvbnN0CiBib29sIENDVGhyZWFk
UHJveHk6OmluaXRpYWxpemVDb250ZXh0KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6aW5pdGlhbGl6ZUNvbnRleHQiLCB0aGlzLCAwKTsKLSAgICBSZWZQdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAg
ICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNy
ZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBBU1NFUlQoY29udGV4dC0+aGFzT25lUmVmKCkpOwotCi0gICAgLy8gTGVhayB0aGUgY29u
dGV4dCBwb2ludGVyIHNvIHdlIGNhbiB0cmFuc2ZlciBvd25lcnNoaXAgb2YgaXQgdG8gdGhlIG90
aGVyIHNpZGUuLi4KLSAgICBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9IGNvbnRleHQu
cmVsZWFzZSgpLmxlYWtSZWYoKTsKLSAgICBBU1NFUlQoY29udGV4dFB0ci0+aGFzT25lUmVmKCkp
OwogCiAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0cikpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KGNvbnRleHQubGVha1B0cigpKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMjksMTkg
KzIyNCwxMyBAQCBib29sIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIFRyeSB0byBjcmVhdGUgdGhlIGNvbnRleHQu
Ci0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0
LT5jcmVhdGVDb250ZXh0KCk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0
ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVDb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKENDTGF5ZXJUcmVlSG9zdDo6bmVlZHNGaWx0
ZXJDb250ZXh0KCkgJiYgIW1fbGF5ZXJUcmVlSG9zdC0+c2V0dGluZ3MoKS5mb3JjZVNvZnR3YXJl
Q29tcG9zaXRpbmcpCiAgICAgICAgIGlmICghU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZUZvckltcGxUaHJlYWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VS
VChjb250ZXh0LT5oYXNPbmVSZWYoKSk7Ci0KLSAgICAvLyBMZWFrIHRoZSBjb250ZXh0IHBvaW50
ZXIgc28gd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBpdCB0byB0aGUgb3RoZXIgc2lkZS4u
LgotICAgIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gY29udGV4dC5yZWxlYXNlKCku
bGVha1JlZigpOwotICAgIEFTU0VSVChjb250ZXh0UHRyLT5oYXNPbmVSZWYoKSk7Ci0KICAgICAv
LyBNYWtlIGEgYmxvY2tpbmcgY2FsbCB0byByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQuIFRo
ZSByZXN1bHRzIG9mIHRoYXQKICAgICAvLyBjYWxsIGFyZSBwdXNoZWQgaW50byB0aGUgcmVjcmVh
dGVTdWNjZWVkZWQgYW5kIGNhcGFiaWxpdGllcyBsb2NhbAogICAgIC8vIHZhcmlhYmxlcy4KQEAg
LTI1MCw3ICsyMzksNyBAQCBib29sIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAg
ICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXM7CiAgICAgQ0NQcm94eTo6
aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZjb21wbGV0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGNvbnRleHRQdHIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MoY29udGV4dC5sZWFrUHRyKCkpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
JnJlY3JlYXRlU3VjY2VlZGVkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjYXBhYmlsaXRpZXMp
KSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7CkBAIC04MTEsNyArODAwLDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUNvbnRleHRPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOwotICAgIG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkID0gYWRv
cHRSZWYoY29udGV4dCk7CisgICAgbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxU
aHJlYWQgPSBhZG9wdFB0cihjb250ZXh0KTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cyogY2FwYWJpbGl0aWVzKQpAQCAtODY5LDcgKzg1OCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
LCBDCiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRl
eHRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIG1fbGF5
ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgKnJlY3JlYXRlU3Vj
Y2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoYWRv
cHRSZWYoY29udGV4dFB0ciksIHRleHR1cmVVcGxvYWRlcik7CisgICAgKnJlY3JlYXRlU3VjY2Vl
ZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoYWRvcHRQ
dHIoY29udGV4dFB0ciksIHRleHR1cmVVcGxvYWRlcik7CiAgICAgaWYgKCpyZWNyZWF0ZVN1Y2Nl
ZWRlZCkgewogICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVh
ZC0+ZGlkUmVjcmVhdGVDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMmMy
YmViMDEyNTIyYjZhNWZjZTUyMWVlNzdhODRiNTY2MDNhYmI3OC4uNTEyZTMyYWNlNjY3NTRjY2I3
YmE3MmVlZWE5ZmQwMTEyMTRlNmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMTcw
LDcgKzE3MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBIb2xkcyBvbiB0byB0aGUgY29udGV4dCB3
ZSBtaWdodCB1c2UgZm9yIGNvbXBvc2l0aW5nIGluIGJldHdlZW4gaW5pdGlhbGl6ZUNvbnRleHQo
KQogICAgIC8vIGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLgotICAgIFJlZlB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxU
aHJlYWQ7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHRCZWZvcmVJbml0
aWFsaXphdGlvbk9uSW1wbFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRocmVh
ZCBpcyB3YWl0aW5nIG9uIGEgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSB0byBiZSBpc3N1ZWQu
CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQqIG1fYmVnaW5GcmFtZUNvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5kZXggYTE0YjRiZjhh
NGU2ZDRjNzRiNTYyNDgzZmNiZTUyNzE3MWJmMDg2Yy4uZmQzODg1Yzg0MGM2OWEwZjE4YzM4OGZj
ODBjOTUyNTgyMjE3MDU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAg
LTMzMiw3ICszMzIsNyBAQCBib29sIENDVmlkZW9MYXllckltcGw6OmNvcHlQbGFuZURhdGEoQ0NS
ZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleAogICAgIGlmICghc29mdHdh
cmVQbGFuZUNvdW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBp
ZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBm
b3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggNDdjYzg4
MzEwYWViM2QzZmU4ZmE5OGNhMDU3YjM3ODE4ZWNjNDJiNS4uOWZiODNlNDEyMmE2ZjY5NmUyNzQw
OWMzZDlkYWE2NDhiODQ3ZmQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFdlYkxheWVyVHJl
ZVZpZXc6OmZpbmlzaEFsbFJlbmRlcmluZygpCiAKIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJM
YXllclRyZWVWaWV3Ojpjb250ZXh0KCkKIHsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXllclRyZWVI
b3N0KCktPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxh
eWVyVHJlZUhvc3QoKS0+Y29udGV4dCgpLT5jb250ZXh0M0QoKTsKIH0KIAogdm9pZCBXZWJMYXll
clRyZWVWaWV3Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4
IDE3ZDVmZTg2NzVhN2VjYWUyNDIwNjNlMmE3MzAyYTczNjQ3MjA5ZjAuLjgyNWZjMDFlZjllYmQ5
Zjk1YjI1Y2NiYjNiYWY4NDc2ZTMzMTA5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTU0LDEyICs1NCw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rvbmlj
RnJhbWVCZWdpblRpbWUpIE9WRVJSSURFIHsgbV9jbGllbnQtPnVwZGF0ZUFuaW1hdGlvbnMobW9u
b3RvbmljRnJhbWVCZWdpblRpbWUpOyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJS
SURFIHsgbV9jbGllbnQtPmxheW91dCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xs
QW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VT
Y2FsZSkgT1ZFUlJJREUgeyBtX2NsaWVudC0+YXBwbHlTY3JvbGxBbmRTY2FsZShzY3JvbGxEZWx0
YSwgcGFnZVNjYWxlKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dDNEKCkgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCiAg
ICAgewotICAgICAgICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBh
ZG9wdFB0cihtX2NsaWVudC0+Y3JlYXRlQ29udGV4dDNEKCkpOwotICAgICAgICBpZiAoIXdlYkNv
bnRleHQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29u
dGV4dC5yZWxlYXNlKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdywgZmFsc2UgLyogcHJlc2VydmVEcmF3aW5nQnVmZmVyICovICk7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihtX2NsaWVudC0+Y3JlYXRlQ29udGV4dDNEKCkpOwogICAgIH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREUgeyBtX2Ns
aWVudC0+ZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KHN1Y2Nlc3MpOyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxDb21taXQoKSBPVkVSUklERSB7IG1fY2xpZW50LT53aWxsQ29tbWl0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHAKaW5kZXggNTM4NjNiNjE1OWUwMjNlYzU0MDhhMGQ0Njg1YTEwOGJmMzU1YmU0
ZC4uOWNlNTE3MjUwOTk4NjhhOTM1NGZmMzk4ZDBjMjdkNTRjOTlkNzMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKQEAgLTI0NTUsNyArMjQ1NSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgc3VyZmFjZVRleHR1cmVDYWNoaW5nKQogICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5hZGRD
aGlsZChzdXJmYWNlTGF5ZXIucmVsZWFzZSgpKTsKIAogICAgIC8vIENoaWxkIG9mIHRoZSBzdXJm
YWNlIGxheWVyIHdpbGwgcHJvZHVjZSBzb21lIHF1YWRzCi0gICAgT3duUHRyPEZha2VMYXllcldp
dGhRdWFkcz4gY2hpbGQgPSBGYWtlTGF5ZXJXaXRoUXVhZHM6OmNyZWF0ZSg0KTsKKyAgICBPd25Q
dHI8RmFrZUxheWVyV2l0aFF1YWRzPiBjaGlsZChGYWtlTGF5ZXJXaXRoUXVhZHM6OmNyZWF0ZSg0
KSk7CiAgICAgRmFrZUxheWVyV2l0aFF1YWRzKiBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOwogCiAg
ICAgY2hpbGRQdHItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148940</attachid>
            <date>2012-06-21 19:17:46 -0700</date>
            <delta_ts>2012-06-24 13:41:25 -0700</delta_ts>
            <desc>checkpoint</desc>
            <filename>bug-89700-20120621191745.patch</filename>
            <type>text/plain</type>
            <size>184317</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxODZiNWVhOWEyMTIw
NTlkMjQ4YWFmNDE0MjUwN2MxZjUzMGQzOGU1Li5jZjFmZTM1MGUxMzQ0YmZkMmNjZTVkNmRiMzIy
YmFjMjc4OTY2NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNi0yMSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVXNlIFdlYkdyYXBoaWNzQ29udGV4dDNEIGluIGNvbXBvc2l0b3IgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzAwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYkdyYXBoaWNzQ29u
dGV4dExvc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hS
T01JVU0pOgorICAgICAgICAoV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxi
YWNrQ0hST01JVU0pOgorCiAyMDEyLTA2LTIwICBDaHJpc3RvcGhlciBDYW1lcm9uICA8Y2NhbWVy
b25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gd2Via2l0LWJhY2tmYWNlLXZp
c2liaWxpdHkgZG9lc24ndCB3b3JrIHdpdGggdmlkZW8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMDVmMjVlOTJh
MWY3ZDRkMzg3NTNmNGFhNjA2N2EwMTU4MzRhNTYzLi4yNmY4ZTc4NjI4OGViMjU5M2Y1ZTdkYWMw
MWZjZTQ5MTdlM2MzNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTk3IEBACisyMDEyLTA2LTIx
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBVc2UgV2ViR3JhcGhpY3NDb250ZXh0M0QgaW4gY29tcG9zaXRvciBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3MDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJCcmlkZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9t
ZXRyeUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbWV0cnlCaW5kaW5nOjpHZW9t
ZXRyeUJpbmRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21l
dHJ5QmluZGluZy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEdlb21ldHJ5QmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6OmNvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp+TGF5ZXJSZW5kZXJl
ckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlYnVnR0xD
YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0VmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTdHJlYW1W
aWRlb1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
SGVhZHNVcERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
Om9uTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06Om9uTWVtb3J5QWxsb2NhdGlvbkNoYW5n
ZWRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkaXNjYXJkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjplbnN1cmVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06Om9uQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFy
ZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGls
ZUNoZWNrZXJib2FyZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpzb2xpZENvbG9yUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmhlYWRzVXBEaXNwbGF5UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW1BQSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNr
UHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGls
ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
UHJvZ3JhbU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbGVQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0aWxlUHJvZ3JhbVN3aXp6bGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGVBQSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9ncmFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW1GbGlwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZUlPU3VyZmFjZVByb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb1lVVlBy
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb1N0
cmVhbVRleHR1cmVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjppc0NvbnRleHRMb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzRnJhbWVidWZmZXJEaXNjYXJk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1
YkltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxv
YWRXaXRoVGV4U3ViSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1h
Z2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdl
ZFRleHR1cmU6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJl
OjpmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGxhdGZvcm1Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvcjo6
YmVzdFRleHR1cmVGb3JtYXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Byb2dyYW1CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRMb3N0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nQmFzZTo6aW5pdCk6CisgICAgICAgIChXZWJD
b3JlOjpQcm9ncmFtQmluZGluZ0Jhc2U6OmNsZWFudXApOgorICAgICAgICAoV2ViQ29yZTo6UHJv
Z3JhbUJpbmRpbmdCYXNlOjpsb2FkU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChQcm9ncmFtQmluZGluZ0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRp
bmc6OlByb2dyYW1CaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6aW5pdCk6
CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3M6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjppbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZlcnRleFNoYWRlclF1YWQ6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hh
ZGVyVGlsZTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5z
Zm9ybTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQmluZGluZzo6
aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjppbml0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nOjppbml0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6
aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlcllVVlZpZGVvOjppbml0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyQ29sb3I6OmluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmluaXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4KToKKyAgICAgICAgKFZlcnRleFNoYWRl
clBvc1RleFlVVlN0cmV0Y2gpOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zKToKKyAgICAgICAg
KFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleElkZW50aXR5Ojppbml0KToKKyAgICAgICAgKFZl
cnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSk6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJRdWFkKToK
KyAgICAgICAgKFZlcnRleFNoYWRlclRpbGUpOgorICAgICAgICAoVmVydGV4U2hhZGVyVmlkZW9U
cmFuc2Zvcm0pOgorICAgICAgICAoRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcpOgorICAgICAgICAo
RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyT0VTSW1h
Z2VFeHRlcm5hbCk6CisgICAgICAgIChGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBKToKKyAg
ICAgICAgKEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZyk6CisgICAgICAgIChGcmFnbWVu
dFNoYWRlclJHQkFUZXhBbHBoYU1hc2spOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGFNYXNrQUEpOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJZVVZWaWRlbyk6CisgICAgICAg
IChGcmFnbWVudFNoYWRlckNvbG9yKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJv
YXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6QWNjZWxl
cmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVy
ZUNvcGllcjo6fkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcik6CisgICAgICAgIChXZWJDb3JlOjpB
Y2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZFRleHR1cmVD
b3BpZXI6OmNyZWF0ZSk6CisgICAgICAgIChBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
OjpRdWVyeTo6UXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyOjpRdWVyeTo6flF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVV
cGxvYWRlcjo6UXVlcnk6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1
cmVVcGxvYWRlcjo6UXVlcnk6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI6OlF1ZXJ5Ojppc1BlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6d2FpdCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpjcmVhdGUp
OgorICAgICAgICAoUXVlcnkpOgorICAgICAgICAoVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUp
OgorICAgICAgICAoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoQ0NH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y29udGV4dDNEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpDQ0dyYXBoaWNzQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZUxheWVySW1wbDo6fkNDSU9TdXJmYWNlTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3aWxsRHJhdyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXM6OkxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMpOgor
ICAgICAgICAoTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyk6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9z
dEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6
aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rl
eHR1cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRp
YWxpemVDb250ZXh0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJv
eHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxhbmVE
YXRhKToKKwogMjAxMi0wNi0yMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDbGFuZyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUz
YjE1ZTkzYjViMmNhNDUyMjE5MDJhM2Y3MjcwOTVmYzgzOGFiZDkuLmUwYzE1MDAyMTI0NGMxMTk5
ZTUwN2ZlYzU2MGVlMGVkYTQ5MGU3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDYtMjEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBXZWJHcmFwaGljc0NvbnRleHQzRCBpbiBj
b21wb3NpdG9yIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTcwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb250ZXh0KToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKwogMjAxMi0wNi0xOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gTGF5ZXJSZW5kZXJlckNocm9taXVtIGlzIG5vdCBnZXR0
aW5nIHZpc2liaWxpdHkgbWVzc2FnZXMgaW4gc2luZ2xlIHRocmVhZGVkIGNvbXBvc2l0aW5nIG1v
ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmgKaW5kZXggMGU0MGY1ZmFhNGU5NWRjNzJlNmY1NWFhOThjZGFjYjYwMWU0
MDUyMi4uNjg1YjE4MGNkNWI5MzMwM2UwNzU2OThlOGY2YTNiYTdhMTJjZDU1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5o
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtMTExLDI3ICsxMTEsMzAgQEAgcHVibGljOgogICAgIGNsYXNzIFdlYkdyYXBoaWNz
Q29udGV4dExvc3RDYWxsYmFjayB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
b25Db250ZXh0TG9zdCgpID0gMDsKKworICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+
V2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrKCkgeyB9CiAgICAgfTsKIAogICAgIGNsYXNz
IFdlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2sgewogICAgIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIG9uRXJyb3JNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYsIFdHQzNEaW50KSA9
IDA7CisKKyAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfldlYkdyYXBoaWNzRXJyb3JN
ZXNzYWdlQ2FsbGJhY2soKSB7IH0KICAgICB9OwogCiAgICAgY2xhc3MgV2ViR3JhcGhpY3NTd2Fw
QnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSB7CiAgICAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgPSAwOworCisgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIH5XZWJHcmFwaGljc1N3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFj
a0NIUk9NSVVNKCkgeyB9CiAgICAgfTsKIAogICAgIGNsYXNzIFdlYkdyYXBoaWNzTWVtb3J5QWxs
b2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHdlIHN3aXRjaCB0byBXZWJHcmFwaGljc01lbW9yeUFs
bG9jYXRpb24gdmVyc2lvbi4KLSAgICAgICAgdmlydHVhbCB2b2lkIG9uTWVtb3J5QWxsb2NhdGlv
bkNoYW5nZWQoc2l6ZV90IGdwdVJlc291cmNlU2l6ZUluQnl0ZXMpID0gMDsKLSAgICAgICAgLy8g
RklYTUU6IE1ha2UgdGhpcyBwdXJlIHZpcnR1YWwgb25jZSB3ZSBpbXBsZW1lbnQgZXZlcnl3aGVy
ZS4KLSAgICAgICAgdmlydHVhbCB2b2lkIG9uTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWQoV2ViR3Jh
cGhpY3NNZW1vcnlBbGxvY2F0aW9uKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIG9uTWVtb3J5
QWxsb2NhdGlvbkNoYW5nZWQoV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uKSA9IDA7CiAKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfldlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlv
bkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cAppbmRleCBhMmM0M2NlMWJjZmE3MjYxMWRmNjE5YjQxYWE1YzIyY2Y2NTRlOTI4Li44NTY2MDkz
NWRkNGIyM2RkYjk4ZjAwZTcxYjUwYjA3OGUyMWE0N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTM0LDE3ICszNCwyMCBAQAogI2luY2x1ZGUgIlNrQ2FudmFzLmgiCiAjaW5j
bHVkZSAiU2tHcHVEZXZpY2UuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorCit1c2luZyBXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQ
YXNzT3duUHRyPFNrQ2FudmFzPiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwKK3N0YXRpYyBQYXNzT3duUHRyPFNrQ2FudmFzPiBjcmVhdGVBY2NlbGVy
YXRlZENhbnZhcyhXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCiB7CiAgICAgLy8gQWxsb2NhdGUgc28gdGhh
dCB3ZSBoYXZlIGEgdmFsaWQgdGV4dHVyZSBpZC4KICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShhbGxv
Y2F0b3IpOwogCi0gICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBjb250ZXh0LT5nckNvbnRleHQo
KTsKKyAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IDA7IC8vIFhYWCBjb250ZXh0LT5nckNvbnRl
eHQoKTsKICAgICBJbnRTaXplIGNhbnZhc1NpemUgPSB0ZXh0dXJlLT5zaXplKCk7CiAgICAgR3JQ
bGF0Zm9ybVRleHR1cmVEZXNjIHRleHR1cmVEZXNjOwogICAgIHRleHR1cmVEZXNjLmZGbGFncyA9
IGtSZW5kZXJUYXJnZXRfR3JQbGF0Zm9ybVRleHR1cmVGbGFnOwpAQCAtOTksNyArMTAyLDcgQEAg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXAKIAogdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4
dDNEKCk7CisgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNv
bnRleHQzRCgpOwogICAgIGlmICghY29udGV4dDNkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KICAgICAgICAgcmV0dXJu
OwpAQCAtMTA4LDcgKzExMSw3IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzCiAgICAgLy8gTWFr
ZSBzdXJlIGdhbmVzaCB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCiAgICAgY29udGV4dDNk
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICAvLyBOb3RpZnkgZ2FuZXNoIHRvIHN5bmMgaXRz
IGludGVybmFsIEdMIHN0YXRlLgotICAgIGNvbnRleHQzZC0+Z3JDb250ZXh0KCktPnJlc2V0Q29u
dGV4dCgpOworICAgIC8vIFhYWCBjb250ZXh0M2QtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQo
KTsKIAogICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KICAg
ICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRl
eHQzZCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKQEAgLTEyNyw3ICsxMzAsNyBAQCB2b2lkIEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJl
Y3QoQ0NHcmFwaGljcwogICAgIGRyYXdQaWN0dXJlKGNhbnZhcy5nZXQoKSk7CiAKICAgICAvLyBG
bHVzaCBnYW5lc2ggY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFy
cyBvbiB0aGUgdGV4dHVyZS4KLSAgICBjb250ZXh0M2QtPmdyQ29udGV4dCgpLT5mbHVzaCgpOwor
ICAgIC8vIFhYWCBjb250ZXh0M2QtPmdyQ29udGV4dCgpLT5mbHVzaCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmNwcAppbmRleCBhODU5YWFlNzMz
YWUwYTZmZGYwYjE1ZGVkYzljNzY2NmNjOGMzYzlkLi4xYTQ1NjhiYjA3ZWI2NDhlYjY1NzgxNzRm
ODFkZTVmNWQ5MWFjMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAKQEAgLTI5LDEzICsy
OSwxMyBAQAogCiAjaW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCiAKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0Nv
bnRleHQzRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdlb21ldHJ5QmluZGluZzo6R2Vv
bWV0cnlCaW5kaW5nKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorR2VvbWV0cnlCaW5kaW5n
OjpHZW9tZXRyeUJpbmRpbmcoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkK
ICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9xdWFkVmVydGljZXNWYm8oMCkKICAg
ICAsIG1fcXVhZEVsZW1lbnRzVmJvKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oCmluZGV4IGVjMTk5
NzAzZTcwMmM4ODRmMWM4YzBmYmM4MmMzODAwYzQ4YTBjZmIuLjIwYjJkNWEwMDViOGU5NGNjMWJl
OWM3N2VjNzI0MmI2ZGFjZDMzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oCkBAIC0yOCwyMCAr
MjgsMjAgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdyYXBoaWNz
Q29udGV4dDNEOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwotCiBjbGFzcyBHZW9tZXRyeUJpbmRpbmcgewogcHVibGljOgotICAgIGV4cGxpY2l0
IEdlb21ldHJ5QmluZGluZyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIGV4cGxpY2l0IEdlb21l
dHJ5QmluZGluZyhXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgfkdlb21ldHJ5
QmluZGluZygpOwogCiAgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhbGl6ZWQ7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZXh0OyB9CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQogICAgIHVuc2lnbmVkIHF1YWRWZXJ0
aWNlc1ZibygpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFZlcnRpY2VzVmJvOyB9CiAgICAgdW5zaWdu
ZWQgcXVhZEVsZW1lbnRzVmJvKCkgY29uc3QgeyByZXR1cm4gbV9xdWFkRWxlbWVudHNWYm87IH0K
IApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGludCB0ZXhDb29yZEF0dHJp
YkxvY2F0aW9uKCkgeyByZXR1cm4gMTsgfQogCiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBtX2NvbnRleHQ7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250
ZXh0OwogICAgIHVuc2lnbmVkIG1fcXVhZFZlcnRpY2VzVmJvOwogICAgIHVuc2lnbmVkIG1fcXVh
ZEVsZW1lbnRzVmJvOwogICAgIGJvb2wgbV9pbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDU5NWNhZTJlOTI4OTNiYTA3NTNiM2M3NDRiMGNiZWIy
Y2U2OTg2MDkuLjc5ZmFhNDcwMmNhODdjNDhhZGE5MmNhMzA4ZWNmM2YxMTk3OGEwMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2lu
Y2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdlb21ldHJ5QmluZGluZy5oIgogI2luY2x1
ZGUgIkdyVGV4dHVyZS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNzAsOCArNjksMTMgQEAKICNpbmNsdWRlIDxwdWJs
aWMvV2ViVmlkZW9GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgor
CisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7Cit1c2luZyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOwordXNpbmcgV2Vi
S2l0OjpXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb247CiB1c2luZyBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTIsMjUgKzExNiw2
IEBAIHN0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5NYXRyaXgoaW50IHgsIGlu
dCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgcmV0dXJuIHNjcmVlbjsKIH0KIAotYm9v
bCBjb250ZXh0U3VwcG9ydHNBY2NlbGVyYXRlZFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQotewotICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKTsKLSAgICBlbHNlCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhU
X3JlYWRfZm9ybWF0X2JncmEiKSkKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghY29udGV4dC0+Z3JDb250ZXh0KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIG5lZWRzTGlvbklPU3VyZmFjZVJlYWRi
YWNrV29ya2Fyb3VuZCgpCiB7CiAjaWYgT1MoREFSV0lOKQpAQCAtMTY2LDY2ICsxNTEsNyBAQCBw
cm90ZWN0ZWQ6CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1jbGFzcyBMYXllclJlbmRl
cmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBFeHRlbnNpb25z
M0RDaHJvbWl1bTo6U3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRl
Q2FsbGJhY2tBZGFwdGVyPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyU3dh
cEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcihsYXllclJlbmRlcmVyKSk7Ci0gICAgfQot
ICAgIHZpcnR1YWwgfkxheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFw
dGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkKLSAg
ICB7Ci0gICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+b25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IExheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0Nv
bXBsZXRlQ2FsbGJhY2tBZGFwdGVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
cikKLSAgICB7Ci0gICAgICAgIG1fbGF5ZXJSZW5kZXJlciA9IGxheWVyUmVuZGVyZXI7Ci0gICAg
fQotCi0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBtX2xheWVyUmVuZGVyZXI7Ci19OwotCi1j
bGFzcyBMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0
ZXIgOiBwdWJsaWMgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdwdU1lbW9yeUFsbG9jYXRpb25DaGFu
Z2VkQ2FsbGJhY2tDSFJPTUlVTSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5
ZXJSZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyPiBjcmVh
dGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5n
ZWRDYWxsYmFja0FkYXB0ZXIobGF5ZXJSZW5kZXJlcikpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5M
YXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXIoKSB7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBvbkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkKEV4dGVu
c2lvbnMzRENocm9taXVtOjpHcHVNZW1vcnlBbGxvY2F0aW9uQ0hST01JVU0gYWxsb2NhdGlvbikK
LSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJl
YWQgaW4gc2luZ2xlIHRocmVhZGVkIG1vZGUsIGJ1dCB3ZSBleHBlY3QgaXQgb24gdGhlIGltcGwg
dGhyZWFkLgotICAgICAgICBpZiAobV9iaW5kVG9JbXBsVGhyZWFkKSB7Ci0gICAgICAgICAgQVNT
RVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbDsKLSAgICAgICAgICBvbkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkT25J
bXBsKGFsbG9jYXRpb24pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIEFTU0VSVChDQ1By
b3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgICAgICAgb25HcHVNZW1vcnlBbGxvY2F0aW9uQ2hh
bmdlZE9uSW1wbChhbGxvY2F0aW9uKTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFj
a0FkYXB0ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQotICAgICAgICA6
IG1fbGF5ZXJSZW5kZXJlcihsYXllclJlbmRlcmVyKSwgbV9iaW5kVG9JbXBsVGhyZWFkKCFDQ1By
b3h5OjpoYXNJbXBsVGhyZWFkKCkpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgb25HcHVNZW1v
cnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbChFeHRlbnNpb25zM0RDaHJvbWl1bTo6R3B1TWVtb3J5
QWxsb2NhdGlvbkNIUk9NSVVNIGFsbG9jYXRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldEdwdU1l
bW9yeUFsbG9jYXRpb24oYWxsb2NhdGlvbik7Ci0gICAgfQotCi0gICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBtX2xheWVyUmVuZGVyZXI7Ci0gICAgYm9vbCBtX2JpbmRUb0ltcGxUaHJlYWQ7Ci19
OwotCi1QYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVy
U2V0dGluZykKK1Bhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsIFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0
dGluZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVy
KGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCB0ZXh0
dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwogICAgIGlmICghbGF5ZXJSZW5kZXJlci0+aW5pdGlhbGl6
ZSgpKQpAQCAtMjM1LDcgKzE2MSw3IEBAIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVt
PiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50CiB9CiAKIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGll
bnQqIGNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVV
cGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogICAgIDogQ0NSZW5kZXJlcihj
bGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJQYXNzKDApCkBAIC0yNDksOTYgKzE3NSw2NSBA
QCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVy
Q2xpZW50KiBjbGllbnQsCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVw
bG9hZGVyU2V0dGluZyh0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogewotICAgIEFTU0VSVChtX2Nv
bnRleHQuZ2V0KCkpOworICAgIEFTU0VSVChtX2NvbnRleHQpOwogfQogCi1jbGFzcyBDb250ZXh0
TG9zdENhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQzRDo6Q29udGV4dExv
c3RDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGV4dExvc3RD
YWxsYmFja0FkYXB0ZXI+IGNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyKGNs
aWVudCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBvbkNvbnRleHRMb3N0KCkKLSAgICB7
Ci0gICAgICAgIG1fY2xpZW50LT5kaWRMb3NlQ29udGV4dCgpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcihDQ1JlbmRlcmVyQ2xpZW50
KiBjbGllbnQpCi0gICAgICAgIDogbV9jbGllbnQoY2xpZW50KSB7IH0KLQotICAgIENDUmVuZGVy
ZXJDbGllbnQqIG1fY2xpZW50OwotfTsKLQogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06Omlu
aXRpYWxpemUoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENh
bGxiYWNrKENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyOjpjcmVhdGUobV9jbGllbnQpKTsKKyAg
ICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sodGhpcyk7CisKKyAgICBTdHJpbmcg
ZXh0ZW5zaW9uc1N0cmluZyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dDNE
OjpFWFRFTlNJT05TKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zTGlzdDsKKyAgICBl
eHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJywgZXh0ZW5zaW9uc0xpc3QpOworICAgIEhhc2hTZXQ8
U3RyaW5nPiBleHRlbnNpb25zOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXh0ZW5zaW9u
c0xpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgIGV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbnNMaXN0
W2ldKTsKIAotICAgIGlmIChzZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZyAmJiBjb250ZXh0
U3VwcG9ydHNBY2NlbGVyYXRlZFBhaW50aW5nKG1fY29udGV4dC5nZXQoKSkpCisgICAgaWYgKHNl
dHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nICYmIGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9yZWFkX2Zvcm1hdF9i
Z3JhIikpCiAgICAgICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nQWNjZWxlcmF0ZWRQYWludGluZyA9
IHRydWU7CisgICAgZWxzZQorICAgICAgICBtX2NhcGFiaWxpdGllcy51c2luZ0FjY2VsZXJhdGVk
UGFpbnRpbmcgPSBmYWxzZTsKIAotICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9u
cyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIG1fY2FwYWJpbGl0aWVzLmNvbnRl
eHRIYXNDYWNoZWRGcm9udEJ1ZmZlciA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9mcm9udF9idWZmZXJfY2FjaGVkIik7Ci0gICAgaWYgKG1fY2FwYWJpbGl0aWVzLmNvbnRleHRI
YXNDYWNoZWRGcm9udEJ1ZmZlcikKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfQ0hST01JVU1fZnJvbnRfYnVmZmVyX2NhY2hlZCIpOwogCi0gICAgbV9jYXBhYmlsaXRpZXMu
dXNpbmdQYXJ0aWFsU3dhcCA9IENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCgpICYmIGV4
dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKLSAgICBp
ZiAobV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dhcCkKLSAgICAgICAgZXh0ZW5zaW9ucy0+
ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fcG9zdF9zdWJfYnVmZmVyIik7CisgICAgbV9jYXBh
YmlsaXRpZXMuY29udGV4dEhhc0NhY2hlZEZyb250QnVmZmVyID0gZXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQ0hST01JVU1fZnJvbnRfYnVmZmVyX2NhY2hlZCIpOwogCi0gICAgbV9jYXBhYmlsaXRp
ZXMudXNpbmdNYXBTdWIgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbWFwX3N1
YiIpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ01hcFN1YikKLSAgICAgICAgZXh0ZW5z
aW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAgIG1fY2FwYWJp
bGl0aWVzLnVzaW5nUGFydGlhbFN3YXAgPSBDQ1NldHRpbmdzOjpwYXJ0aWFsU3dhcEVuYWJsZWQo
KSAmJiBleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsK
KworICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nTWFwU3ViID0gZXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQ0hST01JVU1fbWFwX3N1YiIpOwogCiAgICAgLy8gVXNlIHRoZSBzd2FwQnVmZmVycyBjYWxs
YmFjayBvbmx5IHdpdGggdGhlIHRocmVhZGVkIHByb3h5LgogICAgIGlmIChDQ1Byb3h5OjpoYXNJ
bXBsVGhyZWFkKCkpCi0gICAgICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nU3dhcENvbXBsZXRlQ2Fs
bGJhY2sgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29t
cGxldGVfY2FsbGJhY2siKTsKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdTd2FwQ29tcGxl
dGVDYWxsYmFjayA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJz
X2NvbXBsZXRlX2NhbGxiYWNrIik7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nU3dhcENv
bXBsZXRlQ2FsbGJhY2spIHsKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xf
Q0hST01JVU1fc3dhcGJ1ZmZlcnNfY29tcGxldGVfY2FsbGJhY2siKTsKLSAgICAgICAgRXh0ZW5z
aW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMzRENocm9taXVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5z
aW9uczNEQ2hyb21pdW0qPihleHRlbnNpb25zKTsKLSAgICAgICAgZXh0ZW5zaW9uczNEQ2hyb21p
dW0tPnNldFN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNKExheWVyUmVuZGVyZXJT
d2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyOjpjcmVhdGUodGhpcykpOworICAgICAg
ICBtX2NvbnRleHQtPnNldFN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNKHRoaXMp
OwogICAgIH0KIAotICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4IikpCi0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpOwotCi0gICAgbV9jYXBhYmlsaXRpZXMudXNp
bmdTZXRWaXNpYmlsaXR5ID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3NldF92
aXNpYmlsaXR5Iik7Ci0gICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nU2V0VmlzaWJpbGl0eSkK
LSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fc2V0X3Zpc2li
aWxpdHkiKTsKKyAgICBtX2NhcGFiaWxpdGllcy51c2luZ1NldFZpc2liaWxpdHkgPSBleHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9DSFJPTUlVTV9zZXRfdmlzaWJpbGl0eSIpOwogCi0gICAgaWYgKGV4
dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9pb3N1cmZhY2UiKSkgewotICAgICAgICBB
U1NFUlQoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKTsK
LSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVfcmVjdGFu
Z2xlIik7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2lv
c3VyZmFjZSIpOworICAgIGlmIChleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9DSFJPTUlVTV9pb3N1
cmZhY2UiKSkgeworICAgICAgICBBU1NFUlQoZXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Rl
eHR1cmVfcmVjdGFuZ2xlIikpOwogICAgIH0KIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4
dHVyZVVzYWdlSGludCA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9BTkdMRV90ZXh0dXJlX3Vz
YWdlIik7Ci0gICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVzYWdlSGludCkKLSAg
ICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV91c2FnZSIp
OworICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVzYWdlSGludCA9IGV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FOR0xFX3RleHR1cmVfdXNhZ2UiKTsKIAotICAgIG1fY2FwYWJpbGl0aWVz
LnVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24gPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
RVhUX3RleHR1cmVfc3RvcmFnZSIpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1
cmVTdG9yYWdlRXh0ZW5zaW9uKQotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJH
TF9FWFRfdGV4dHVyZV9zdG9yYWdlIik7CisgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJl
U3RvcmFnZUV4dGVuc2lvbiA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3N0
b3JhZ2UiKTsKIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nR3B1TWVtb3J5TWFuYWdlciA9IGV4
dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9ncHVfbWVtb3J5X21hbmFnZXIiKTsKLSAg
ICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdHcHVNZW1vcnlNYW5hZ2VyKSB7Ci0gICAgICAgIGV4
dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2dwdV9tZW1vcnlfbWFuYWdlciIp
OwotICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9uczNEQ2hyb21pdW0gPSBz
dGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGV4dGVuc2lvbnMpOwotICAgICAgICBl
eHRlbnNpb25zM0RDaHJvbWl1bS0+c2V0R3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFj
a0NIUk9NSVVNKExheWVyUmVuZGVyZXJHcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNr
QWRhcHRlcjo6Y3JlYXRlKHRoaXMpKTsKLSAgICB9IGVsc2UgeworICAgIG1fY2FwYWJpbGl0aWVz
LnVzaW5nR3B1TWVtb3J5TWFuYWdlciA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVN
X2dwdV9tZW1vcnlfbWFuYWdlciIpOworICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ0dwdU1l
bW9yeU1hbmFnZXIpCisgICAgICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbkNoYW5n
ZWRDYWxsYmFja0NIUk9NSVVNKHRoaXMpOworICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQtPnNl
dE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUoKSkpOwotICAgIH0KIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nRGlz
Y2FyZEZyYW1lYnVmZmVyID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2Rpc2Nh
cmRfZnJhbWVidWZmZXIiKTsKLSAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdEaXNjYXJkRnJh
bWVidWZmZXIpCi0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVN
X2Rpc2NhcmRfZnJhbWVidWZmZXIiKTsKKyAgICBtX2NhcGFiaWxpdGllcy51c2luZ0Rpc2NhcmRG
cmFtZWJ1ZmZlciA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX2Rpc2NhcmRfZnJh
bWVidWZmZXIiKTsKKworICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nRWdsSW1hZ2UgPSBleHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIik7CiAKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVEVY
VFVSRV9TSVpFLCAmbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpKTsKLSAgICBtX2NhcGFi
aWxpdGllcy5iZXN0VGV4dHVyZUZvcm1hdCA9IFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9y
bWF0KG1fY29udGV4dC5nZXQoKSk7CisgICAgbV9jYXBhYmlsaXRpZXMuYmVzdFRleHR1cmVGb3Jt
YXQgPSBQbGF0Zm9ybUNvbG9yOjpiZXN0VGV4dHVyZUZvcm1hdChtX2NvbnRleHQsIGV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKTsKIAogICAgIGlm
ICghaW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzUxLDE4ICsyNDYsMTggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUo
KQogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp+TGF5ZXJSZW5kZXJlckNocm9taXVtKCkKIHsKICAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIEV4dGVuc2lvbnMzRENocm9t
aXVtKiBleHRlbnNpb25zM0RDaHJvbWl1bSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9t
aXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwotICAgIGV4dGVuc2lvbnMzRENocm9t
aXVtLT5zZXRTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTShudWxscHRyKTsKLSAg
ICBleHRlbnNpb25zM0RDaHJvbWl1bS0+c2V0R3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxs
YmFja0NIUk9NSVVNKG51bGxwdHIpOworICAgIG1fY29udGV4dC0+c2V0U3dhcEJ1ZmZlcnNDb21w
bGV0ZUNhbGxiYWNrQ0hST01JVU0oMCk7CisgICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0
aW9uQ2hhbmdlZENhbGxiYWNrQ0hST01JVU0oMCk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0
TG9zdENhbGxiYWNrKDApOwogICAgIGNsZWFudXBTaGFyZWRPYmplY3RzKCk7CiB9CiAKLUdyYXBo
aWNzQ29udGV4dDNEKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvbnRleHQoKQorV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29udGV4dCgpCiB7Ci0gICAgcmV0
dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICByZXR1cm4gbV9jb250ZXh0OwogfQogCi12b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVidWdHTENhbGwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IGNoYXIqIGNvbW1hbmQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQordm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlYnVnR0xDYWxsKFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIGVycm9yID0gY29udGV4dC0+Z2V0RXJyb3IoKTsKICAg
ICBpZiAoZXJyb3IgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKQpAQCAtMzc4LDggKzI3
Myw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJs
ZSkKICAgICAvLyBUT0RPOiBSZXBsYWNlIHNldFZpc2liaWxpdHlDSFJPTUlVTSB3aXRoIGFuIGV4
dGVuc2lvbiB0byBleHBsaWNpdGx5IG1hbmFnZSBmcm9udC9iYWNrYnVmZmVycwogICAgIC8vIGNy
YnVnLmNvbS8xMTYwNDkKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdTZXRWaXNpYmlsaXR5
KSB7Ci0gICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zM0RDaHJvbWl1bSA9
IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkpOwotICAgICAgICBleHRlbnNpb25zM0RDaHJvbWl1bS0+c2V0VmlzaWJpbGl0eUNIUk9N
SVVNKHZpc2libGUpOworICAgICAgICBtX2NvbnRleHQtPnNldFZpc2liaWxpdHlDSFJPTUlVTSh2
aXNpYmxlKTsKICAgICB9CiB9CiAKQEAgLTEwNDcsNyArOTQxLDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdTdHJlYW1WaWRlb1F1YWQoY29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdR
dWFkKiBxdWEKIHsKICAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwogCi0gICAgQVNTRVJU
KGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbCIpICYmIGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX09F
U19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSk7CisgICAgQVNTRVJUKG1fY2FwYWJpbGl0aWVzLnVzaW5n
RWdsSW1hZ2UpOwogCiAgICAgY29uc3QgVmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbSogcHJvZ3Jh
bSA9IHZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0oKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CkBAIC0xMTY1LDggKzEwNTks
OSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KE1hbmFn
ZWRUZXh0dXJlKiBodWRUZXh0dXJlLCBjb25zdAogICAgIGNvbnN0IEhlYWRzVXBEaXNwbGF5UHJv
Z3JhbSogcHJvZ3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwogICAgIEFTU0VSVChwcm9n
cmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBS
ZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGUzRChtX2NvbnRleHQpOwotICAgIGh1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4
dC5nZXQoKSwgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgaWYgKCFodWRUZXh0
dXJlLT50ZXh0dXJlSWQoKSkKKyAgICAgICAgaHVkVGV4dHVyZS0+YWxsb2NhdGUobV9pbXBsVGV4
dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaHVkVGV4dHVyZS0+dGV4dHVy
ZUlkKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3Jh
bS0+cHJvZ3JhbSgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWko
cHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCkBAIC0x
MjY3LDIyICsxMTYyLDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJl
VG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0xKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnNldEdwdU1lbW9yeUFsbG9jYXRpb24oRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdwdU1lbW9y
eUFsbG9jYXRpb25DSFJPTUlVTSBhbGxvY2F0aW9uKQotewotICAgIGlmIChtX3Zpc2libGUgJiYg
IWFsbG9jYXRpb24uZ3B1UmVzb3VyY2VTaXplSW5CeXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKCFhbGxvY2F0aW9uLnN1Z2dlc3RIYXZlQmFja2J1ZmZlciAmJiAhbV92aXNpYmxlKQot
ICAgICAgICBkaXNjYXJkRnJhbWVidWZmZXIoKTsKLQotICAgIGlmICghYWxsb2NhdGlvbi5ncHVS
ZXNvdXJjZVNpemVJbkJ5dGVzKSB7Ci0gICAgICAgIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMo
KTsKLSAgICAgICAgbV9jbGllbnQtPnJlbGVhc2VDb250ZW50c1RleHR1cmVzKCk7Ci0gICAgICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG1fY2xpZW50LT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhhbGxvY2F0aW9uLmdwdVJl
c291cmNlU2l6ZUluQnl0ZXMpOwotfQotCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Zmlu
aXNoKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2gi
LCB0aGlzLCAwKTsKQEAgLTEzMDEsMTIgKzExODAsMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZlcikKICAgICAgICAgLy8g
SWYgc3VwcG9ydGVkLCB3ZSBjYW4gc2F2ZSBzaWduaWZpY2FudCBiYW5kd2lkdGggYnkgb25seSBz
d2FwcGluZyB0aGUgZGFtYWdlZC9zY2lzc29yZWQgcmVnaW9uIChjbGFtcGVkIHRvIHRoZSB2aWV3
cG9ydCkKICAgICAgICAgSW50UmVjdCBjbGlwcGVkU3ViQnVmZmVyID0gc3ViQnVmZmVyOwogICAg
ICAgICBjbGlwcGVkU3ViQnVmZmVyLmludGVyc2VjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IHZpZXdwb3J0U2l6ZSgpKSk7Ci0gICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zM0RDaHJvbWl1bSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwogICAgICAgICBpbnQgZmxpcHBlZFlQb3NPZlJlY3RCb3R0
b20gPSB2aWV3cG9ydEhlaWdodCgpIC0gY2xpcHBlZFN1YkJ1ZmZlci55KCkgLSBjbGlwcGVkU3Vi
QnVmZmVyLmhlaWdodCgpOwotICAgICAgICBleHRlbnNpb25zM0RDaHJvbWl1bS0+cG9zdFN1YkJ1
ZmZlckNIUk9NSVVNKGNsaXBwZWRTdWJCdWZmZXIueCgpLCBmbGlwcGVkWVBvc09mUmVjdEJvdHRv
bSwgY2xpcHBlZFN1YkJ1ZmZlci53aWR0aCgpLCBjbGlwcGVkU3ViQnVmZmVyLmhlaWdodCgpKTsK
KyAgICAgICAgbV9jb250ZXh0LT5wb3N0U3ViQnVmZmVyQ0hST01JVU0oY2xpcHBlZFN1YkJ1ZmZl
ci54KCksIGZsaXBwZWRZUG9zT2ZSZWN0Qm90dG9tLCBjbGlwcGVkU3ViQnVmZmVyLndpZHRoKCks
IGNsaXBwZWRTdWJCdWZmZXIuaGVpZ2h0KCkpOwogICAgIH0gZWxzZQogICAgICAgICAvLyBOb3Rl
IHRoYXQgY3VycmVudGx5IHRoaXMgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBzd2FwQnVmZmVyczsg
d2Ugc2hvdWxkCi0gICAgICAgIC8vIGNvbnNpZGVyIGV4cG9zaW5nIGEgZGlmZmVyZW50IGVudHJ5
IHBvaW50IG9uIEdyYXBoaWNzQ29udGV4dDNELgorICAgICAgICAvLyBjb25zaWRlciBleHBvc2lu
ZyBhIGRpZmZlcmVudCBlbnRyeSBwb2ludCBvbiBXZWJHcmFwaGljc0NvbnRleHQzRC4KICAgICAg
ICAgbV9jb250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MzE3LDYgKzExOTUsMzUgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06Om9uU3dhcEJ1ZmZl
cnNDb21wbGV0ZSgpCiAgICAgbV9jbGllbnQtPm9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogfQog
Cit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6b25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZChX
ZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24gYWxsb2NhdGlvbikKK3sKKyAgICAvLyBGSVhNRTog
VGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGluIHNpbmdsZSB0aHJlYWRlZCBtb2Rl
LCBidXQgd2UgZXhwZWN0IGl0IG9uIHRoZSBpbXBsIHRocmVhZC4KKyAgICBpZiAoIUNDUHJveHk6
Omhhc0ltcGxUaHJlYWQoKSkgeworICAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgp
KTsKKyAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOworICAgICAgb25NZW1vcnlB
bGxvY2F0aW9uQ2hhbmdlZE9uSW1wbFRocmVhZChhbGxvY2F0aW9uKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICAgIG9uTWVtb3J5QWxs
b2NhdGlvbkNoYW5nZWRPbkltcGxUaHJlYWQoYWxsb2NhdGlvbik7CisgICAgfQorfQorCit2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6b25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbFRo
cmVhZChXZWJLaXQ6OldlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBhbGxvY2F0aW9uKQorewor
ICAgIGlmIChtX3Zpc2libGUgJiYgIWFsbG9jYXRpb24uZ3B1UmVzb3VyY2VTaXplSW5CeXRlcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFhbGxvY2F0aW9uLnN1Z2dlc3RIYXZlQmFja2J1
ZmZlciAmJiAhbV92aXNpYmxlKQorICAgICAgICBkaXNjYXJkRnJhbWVidWZmZXIoKTsKKworICAg
IGlmICghYWxsb2NhdGlvbi5ncHVSZXNvdXJjZVNpemVJbkJ5dGVzKSB7CisgICAgICAgIHJlbGVh
c2VSZW5kZXJQYXNzVGV4dHVyZXMoKTsKKyAgICAgICAgbV9jbGllbnQtPnJlbGVhc2VDb250ZW50
c1RleHR1cmVzKCk7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7
CisgICAgfSBlbHNlCisgICAgICAgIG1fY2xpZW50LT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRC
eXRlcyhhbGxvY2F0aW9uLmdwdVJlc291cmNlU2l6ZUluQnl0ZXMpOworfQorCiB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZGlzY2FyZEZyYW1lYnVmZmVyKCkKIHsKICAgICBpZiAobV9pc0Zy
YW1lYnVmZmVyRGlzY2FyZGVkKQpAQCAtMTMyNSwxMCArMTIzMiw4IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkaXNjYXJkRnJhbWVidWZmZXIoKQogICAgIGlmICghbV9jYXBhYmlsaXRp
ZXMudXNpbmdEaXNjYXJkRnJhbWVidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4dGVu
c2lvbnMzRCogZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIEV4
dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zM0RDaHJvbWl1bSA9IHN0YXRpY19jYXN0PEV4
dGVuc2lvbnMzRENocm9taXVtKj4oZXh0ZW5zaW9ucyk7CiAgICAgLy8gRklYTUU6IFVwZGF0ZSBh
dHRhY2htZW50cyBhcmd1bWVudCB0byBhcHByb3ByaWF0ZSB2YWx1ZXMgb25jZSB0aGV5IGFyZSBu
byBsb25nZXIgaWdub3JlZC4KLSAgICBleHRlbnNpb25zM0RDaHJvbWl1bS0+ZGlzY2FyZEZyYW1l
YnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwKTsKKyAgICBtX2Nv
bnRleHQtPmRpc2NhcmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCwgMCk7CiAgICAgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkID0gdHJ1ZTsKIAogICAgIC8v
IERhbWFnZSB0cmFja2VyIG5lZWRzIGEgZnVsbCByZXNldCBldmVyeSB0aW1lIGZyYW1lYnVmZmVy
IGlzIGRpc2NhcmRlZC4KQEAgLTEzNDMsMTIgKzEyNDgsMTYgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmVuc3VyZUZyYW1lYnVmZmVyKCkKICAgICBpZiAoIW1fY2FwYWJpbGl0aWVzLnVz
aW5nRGlzY2FyZEZyYW1lYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeHRlbnNpb25z
M0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBFeHRlbnNp
b25zM0RDaHJvbWl1bSogZXh0ZW5zaW9uczNEQ2hyb21pdW0gPSBzdGF0aWNfY2FzdDxFeHRlbnNp
b25zM0RDaHJvbWl1bSo+KGV4dGVuc2lvbnMpOwotICAgIGV4dGVuc2lvbnMzRENocm9taXVtLT5l
bnN1cmVGcmFtZWJ1ZmZlckNIUk9NSVVNKCk7CisgICAgbV9jb250ZXh0LT5lbnN1cmVGcmFtZWJ1
ZmZlckNIUk9NSVVNKCk7CiAgICAgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkID0gZmFsc2U7CiB9
CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpvbkNvbnRleHRMb3N0KCkKK3sKKyAgICBt
X2NsaWVudC0+ZGlkTG9zZUNvbnRleHQoKTsKK30KKworCiB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogICAgIEFTU0VSVChyZWN0Lm1heFgoKSA8PSB2aWV3cG9ydFdpZHRoKCkgJiYgcmVj
dC5tYXhZKCkgPD0gdmlld3BvcnRIZWlnaHQoKSk7CkBAIC0xMzYyLDcgKzEyNzEsNiBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxz
LCBjb25zdCBJbnRSZWN0JiByZQogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZW1wb3JhcnlUZXh0
dXJlID0gTnVsbFBsYXRmb3JtM0RPYmplY3Q7CiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZW1wb3Jh
cnlGQk8gPSBOdWxsUGxhdGZvcm0zRE9iamVjdDsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCA9IG1fY29udGV4dC5nZXQoKTsKIAogICAgIGlmIChkb1dvcmthcm91bmQpIHsKICAgICAg
ICAgLy8gT24gTWFjIE9TIFggMTAuNywgY2FsbGluZyBnbFJlYWRQaXhlbHMgYWdhaW5zdCBhbiBG
Qk8gd2hvc2UgY29sb3IgYXR0YWNobWVudCBpcyBhbgpAQCAtMTM3MCwzMSArMTI3OCwzMSBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4
ZWxzLCBjb25zdCBJbnRSZWN0JiByZQogICAgICAgICAvLyBkaWZmZXJlbnQgT3BlbkdMIGNvbnRl
eHRzLiBJdCBpcyBiZWxpZXZlZCB0aGF0IHRoaXMgaXMgdGhlIHJvb3QgY2F1c2Ugb2YgdG9wIGNy
YXNoZXIKICAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS85OTM5My4gPHJkYXI6Ly9wcm9ibGVt
LzEwOTQ5Njg3PgogCi0gICAgICAgIHRlbXBvcmFyeVRleHR1cmUgPSBjb250ZXh0LT5jcmVhdGVU
ZXh0dXJlKCk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGVtcG9yYXJ5VGV4dHVyZSkpOwotICAgICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUikpOwotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0Nv
bnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkp
OworICAgICAgICB0ZW1wb3JhcnlUZXh0dXJlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7
CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRlbXBvcmFyeVRleHR1cmUpKTsKKyAgICAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TElORUFSKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAg
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFN
UF9UT19FREdFKSk7CiAgICAgICAgIC8vIENvcHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBjdXJyZW50
IChJT1N1cmZhY2UtYmFja2VkKSBmcmFtZWJ1ZmZlciBpbnRvIGEgdGVtcG9yYXJ5IHRleHR1cmUu
Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIDAsIDAsIHJl
Y3QubWF4WCgpLCByZWN0Lm1heFkoKSwgMCkpOwotICAgICAgICB0ZW1wb3JhcnlGQk8gPSBjb250
ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSwgMCwgMCwgcmVjdC5tYXhYKCksIHJlY3QubWF4WSgpLCAwKSk7
CisgICAgICAgIHRlbXBvcmFyeUZCTyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsK
ICAgICAgICAgLy8gQXR0YWNoIHRoaXMgdGV4dHVyZSB0byBhbiBGQk8sIGFuZCBwZXJmb3JtIHRo
ZSByZWFkYmFjayBmcm9tIHRoYXQgRkJPLgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgdGVtcG9yYXJ5
RkJPKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUy
RChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRlbXBvcmFyeVRl
eHR1cmUsIDApKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCB0ZW1wb3JhcnlGQk8pKTsKKyAg
ICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRlbXBvcmFyeVRleHR1cmUs
IDApKTsKIAotICAgICAgICBBU1NFUlQoY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpID09IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUl9DT01QTEVURSk7CisgICAgICAgIEFTU0VSVChtX2NvbnRleHQtPmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpOwogICAgIH0KIAotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5yZWFkUGl4ZWxzKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpLAorICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+cmVhZFBpeGVscyhy
ZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVscykpOwogCiAgICAgaWYgKGRvV29y
a2Fyb3VuZCkgewogICAgICAgICAvLyBDbGVhbiB1cC4KLSAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDAp
KTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5k
ZWxldGVGcmFtZWJ1ZmZlcih0ZW1wb3JhcnlGQk8pKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmRlbGV0ZVRleHR1cmUodGVtcG9yYXJ5VGV4dHVyZSkpOworICAgICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIDApKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworICAgICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKHRlbXBvcmFyeUZCTykpOworICAg
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUodGVtcG9yYXJ5VGV4
dHVyZSkpOwogICAgIH0KIAogICAgIGlmICghbV92aXNpYmxlKSB7CkBAIC0xNDExLDggKzEzMTks
OSBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdAogICAgIGlmICghdGV4dHVyZS0+cmVzZXJ2ZShk
ZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAgdGV4dHVyZS0+YmluZFRl
eHR1cmUoY2NDb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAg
ICBpZiAoIXRleHR1cmUtPnRleHR1cmVJZCgpKQorICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0ZSht
X2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT50
ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54
KCksIGRldmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0
KCksIDApKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0NTIsOCArMTM2MSw5IEBAIGJvb2wgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1
cmUqIHRleHR1cmUsIGNvCiB7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX29mZnNjcmVlbkZyYW1l
YnVmZmVySWQpKTsKIAotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0g
Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAgdGV4dHVyZS0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoY2NDb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9y
LmdldCgpKTsKKyAgICBpZiAoIXRleHR1cmUtPnRleHR1cmVJZCgpKQorICAgICAgICB0ZXh0dXJl
LT5hbGxvY2F0ZShtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS0+dGV4dHVyZUlkKCksIDApKTsKIAogI2lm
ICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAobV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBAIC0xNTE4LDIzICsxNDI4LDIzIEBAIGJvb2wg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAKICAgICAv
LyBXZSB3aWxsIGFsd2F5cyBuZWVkIHRoZXNlIHByb2dyYW1zIHRvIHJlbmRlciwgc28gY3JlYXRl
IHRoZSBwcm9ncmFtcyBlYWdlcmx5IHNvIHRoYXQgdGhlIHNoYWRlciBjb21waWxhdGlvbiBjYW4K
ICAgICAvLyBzdGFydCB3aGlsZSB3ZSBkbyBvdGhlciB3b3JrLiBPdGhlciBwcm9ncmFtcyBhcmUg
Y3JlYXRlZCBsYXppbHkgb24gZmlyc3QgYWNjZXNzLgotICAgIG1fc2hhcmVkR2VvbWV0cnkgPSBh
ZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5kaW5nKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fcmVu
ZGVyUGFzc1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW0obV9jb250ZXh0
LmdldCgpKSk7Ci0gICAgbV90aWxlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbSht
X2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX3RpbGVQcm9ncmFtT3BhcXVlID0gYWRvcHRQdHIobmV3
IFRpbGVQcm9ncmFtT3BhcXVlKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fc2hhcmVkR2VvbWV0
cnkgPSBhZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5kaW5nKG1fY29udGV4dCkpOworICAgIG1fcmVu
ZGVyUGFzc1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW0obV9jb250ZXh0
KSk7CisgICAgbV90aWxlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbShtX2NvbnRl
eHQpKTsKKyAgICBtX3RpbGVQcm9ncmFtT3BhcXVlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFt
T3BhcXVlKG1fY29udGV4dCkpOwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVz
aCgpKTsKIAogICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdl
cjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJl
U2l6ZSk7Ci0gICAgbV90ZXh0dXJlQ29waWVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpj
cmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRl
ZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQpOwogICAgIGlmIChtX3RleHR1cmVVcGxv
YWRlclNldHRpbmcgPT0gVGhyb3R0bGVkVXBsb2FkZXIpCi0gICAgICAgIG1fdGV4dHVyZVVwbG9h
ZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsK
KyAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNy
ZWF0ZShtX2NvbnRleHQpOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBV
bnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCk7Ci0gICAgbV9jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQu
Z2V0KCkpOwotICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fY29udGVudHNUZXh0dXJlQWxs
b2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0KTsKKyAg
ICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVh
dGUobV9jb250ZXh0KTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VI
aW50KQogICAgICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNhZ2VIaW50
KFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsKICAgICBp
ZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbikgewpAQCAtMTU0
OCwxMCArMTQ1OCwxMCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNo
YXJlZE9iamVjdHMoKQogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlQ2hlY2tlcmJv
YXJkUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlQ2hlY2tlcmJvYXJkUHJvZ3Jh
bSgpCiB7CiAgICAgaWYgKCFtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtKQotICAgICAgICBtX3Rp
bGVDaGVja2VyYm9hcmRQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRpbGVDaGVja2VyYm9hcmRQcm9n
cmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFt
ID0gYWRvcHRQdHIobmV3IFRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKG1fY29udGV4dCkpOwogICAg
IGlmICghbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAg
ICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjaGVja2VyYm9hcmRQcm9ncmFt
Ojppbml0YWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3Jh
bS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVDaGVja2VyYm9h
cmRQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQogICAgIHJldHVybiBtX3Rp
bGVDaGVja2VyYm9hcmRQcm9ncmFtLmdldCgpOwogfQpAQCAtMTU1OSwxMCArMTQ2OSwxMCBAQCBj
b25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKiBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRpbAogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpTb2xp
ZENvbG9yUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb2xpZENvbG9yUHJvZ3JhbSgp
CiB7CiAgICAgaWYgKCFtX3NvbGlkQ29sb3JQcm9ncmFtKQotICAgICAgICBtX3NvbGlkQ29sb3JQ
cm9ncmFtID0gYWRvcHRQdHIobmV3IFNvbGlkQ29sb3JQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkp
OworICAgICAgICBtX3NvbGlkQ29sb3JQcm9ncmFtID0gYWRvcHRQdHIobmV3IFNvbGlkQ29sb3JQ
cm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5pdGlh
bGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpz
b2xpZENvbG9yUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3NvbGlk
Q29sb3JQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fc29s
aWRDb2xvclByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJu
IG1fc29saWRDb2xvclByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTcwLDEwICsxNDgwLDEwIEBAIGNv
bnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6U29saWRDb2xvclByb2dyYW0qIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6c29saWRDb2xvCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkhlYWRz
VXBEaXNwbGF5UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVBy
b2dyYW0oKQogewogICAgIGlmICghbV9oZWFkc1VwRGlzcGxheVByb2dyYW0pCi0gICAgICAgIG1f
aGVhZHNVcERpc3BsYXlQcm9ncmFtID0gYWRvcHRQdHIobmV3IEhlYWRzVXBEaXNwbGF5UHJvZ3Jh
bShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0gPSBh
ZG9wdFB0cihuZXcgSGVhZHNVcERpc3BsYXlQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICgh
bV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtOjppbml0
aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0
aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFt
LT5pbml0aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQogICAgIHJldHVybiBtX2hlYWRzVXBEaXNw
bGF5UHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE1ODMsNyArMTQ5Myw3IEBAIGNvbnN0IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
cmVuZGVyUGFzCiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOwogICAgIGlmICghbV9y
ZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOwotICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250
ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc1Byb2dyYW0uZ2V0KCk7CiB9CkBA
IC0xNTkxLDEwICsxNTAxLDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVy
UGFzc1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzCiBjb25zdCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6cmVuZGVyUGFzc1Byb2dyYW1BQSgpCiB7CiAgICAgaWYgKCFtX3JlbmRlclBhc3NQcm9n
cmFtQUEpCi0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5k
ZXJQYXNzUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3JlbmRlclBhc3NQ
cm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW1BQShtX2NvbnRleHQpKTsK
ICAgICBpZiAoIW1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAg
ICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbUFB
Ojppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+
aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFt
QUEtPmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFz
c1Byb2dyYW1BQS5nZXQoKTsKIH0KQEAgLTE2MDIsMTAgKzE1MTIsMTAgQEAgY29uc3QgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnJlbmRlclAKIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01hc2tQ
cm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpCiB7
CiAgICAgaWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5kZXJQYXNz
TWFza1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc01hc2tQcm9ncmFtKG1fY29udGV4
dC5nZXQoKSkpOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSA9IGFkb3B0UHRyKG5l
dyBSZW5kZXJQYXNzTWFza1Byb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3JlbmRlclBh
c3NNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW06OmluaXRpYWxpemUiLCB0
aGlzLCAwKTsKLSAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRpYWxpemUobV9j
b250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRpYWxp
emUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFt
LmdldCgpOwogfQpAQCAtMTYxMywxMCArMTUyMywxMCBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OlJlbmRlclBhc3NNYXNrUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZQogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzTWFza1Byb2dyYW1BQSog
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpCiB7CiAgICAg
aWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKQotICAgICAgICBtX3JlbmRlclBhc3NNYXNr
UHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKG1fY29udGV4
dC5nZXQoKSkpOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBID0gYWRvcHRQdHIo
bmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKG1fY29udGV4dCkpOwogICAgIGlmICghbV9yZW5k
ZXJQYXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQTo6aW5pdGlh
bGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBLT5pbml0
aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFt
QUEtPmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFz
c01hc2tQcm9ncmFtQUEuZ2V0KCk7CiB9CkBAIC0xNjI2LDcgKzE1MzYsNyBAQCBjb25zdCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRp
bGVQcm9ncmFtKCkKICAgICBBU1NFUlQobV90aWxlUHJvZ3JhbSk7CiAgICAgaWYgKCFtX3RpbGVQ
cm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAg
IG1fdGlsZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90
aWxlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV90
aWxlUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE2MzYsNyArMTU0Niw3IEBAIGNvbnN0IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1PcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGlsZVByb2dyCiAgICAgQVNTRVJUKG1fdGlsZVByb2dyYW1PcGFxdWUpOwogICAgIGlmICghbV90
aWxlUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbU9wYXF1ZTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOwotICAgICAgICBtX3RpbGVQcm9ncmFtT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9jb250
ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1PcGFxdWUuZ2V0KCk7CiB9CkBA
IC0xNjQ0LDEwICsxNTU0LDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVBy
b2dyYW1PcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyCiBjb25zdCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGlsZVByb2dyYW1BQSgpCiB7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtQUEpCi0gICAgICAgIG1f
dGlsZVByb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQo
KSkpOworICAgICAgICBtX3RpbGVQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1B
QShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkg
ewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3Jh
bUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1BQS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQcm9ncmFtQUEtPmluaXRp
YWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1BQS5nZXQo
KTsKIH0KQEAgLTE2NTUsMTAgKzE1NjUsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpUaWxlUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtQUEKIGNv
bnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlKiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZSgpCiB7CiAgICAgaWYgKCFtX3RpbGVQcm9n
cmFtU3dpenpsZSkKLSAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUgPSBhZG9wdFB0cihuZXcg
VGlsZVByb2dyYW1Td2l6emxlKG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3RpbGVQcm9n
cmFtU3dpenpsZSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbVN3aXp6bGUobV9jb250ZXh0KSk7
CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAg
ICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGU6
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUtPmlu
aXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUt
PmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1T
d2l6emxlLmdldCgpOwogfQpAQCAtMTY2NiwxMCArMTU3NiwxMCBAQCBjb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtU3dpenpsZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlUHJvZwogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGVP
cGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKCkK
IHsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKQotICAgICAgICBtX3RpbGVQ
cm9ncmFtU3dpenpsZU9wYXF1ZSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbVN3aXp6bGVPcGFx
dWUobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVl
ID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZShtX2NvbnRleHQpKTsKICAg
ICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVlLT5pbml0aWFsaXplZCgpKSB7CiAgICAg
ICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenps
ZU9wYXF1ZTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3RpbGVQcm9ncmFtU3dp
enpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQ
cm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICBy
ZXR1cm4gbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUuZ2V0KCk7CiB9CkBAIC0xNjc3LDEwICsx
NTg3LDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxl
T3BhcXVlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpCiBjb25zdCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OlRpbGVQcm9ncmFtU3dpenpsZUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQ
cm9ncmFtU3dpenpsZUFBKCkKIHsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlQUEpCi0g
ICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1T
d2l6emxlQUEobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxl
QUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxlQUEobV9jb250ZXh0KSk7CiAgICAg
aWYgKCFtX3RpbGVQcm9ncmFtU3dpenpsZUFBLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZUFBOjpp
bml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmlu
aXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVB
QS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJvZ3Jh
bVN3aXp6bGVBQS5nZXQoKTsKIH0KQEAgLTE2ODgsMTAgKzE1OTgsMTAgQEAgY29uc3QgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGVBQSogTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0aWxlUHIKIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVByb2dyYW0q
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW0oKQogewogICAgIGlmICghbV90
ZXh0dXJlUHJvZ3JhbSkKLSAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBU
ZXh0dXJlUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV90ZXh0dXJlUHJvZ3Jh
bSA9IGFkb3B0UHRyKG5ldyBUZXh0dXJlUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1f
dGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAw
KTsKLSAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkp
OworICAgICAgICBtX3RleHR1cmVQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CiAgICAg
fQogICAgIHJldHVybiBtX3RleHR1cmVQcm9ncmFtLmdldCgpOwogfQpAQCAtMTY5OSwxMCArMTYw
OSwxMCBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRleHR1cmVQcm9ncmFtKiBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9ncgogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpUZXh0dXJlUHJvZ3JhbUZsaXAqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVBy
b2dyYW1GbGlwKCkKIHsKICAgICBpZiAoIW1fdGV4dHVyZVByb2dyYW1GbGlwKQotICAgICAgICBt
X3RleHR1cmVQcm9ncmFtRmxpcCA9IGFkb3B0UHRyKG5ldyBUZXh0dXJlUHJvZ3JhbUZsaXAobV9j
b250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwID0gYWRvcHRQdHIo
bmV3IFRleHR1cmVQcm9ncmFtRmxpcChtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGV4dHVyZVBy
b2dyYW1GbGlwLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9ncmFtRmxpcDo6aW5pdGlhbGl6ZSIsIHRoaXMsIDAp
OwotICAgICAgICBtX3RleHR1cmVQcm9ncmFtRmxpcC0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0
KCkpOworICAgICAgICBtX3RleHR1cmVQcm9ncmFtRmxpcC0+aW5pdGlhbGl6ZShtX2NvbnRleHQp
OwogICAgIH0KICAgICByZXR1cm4gbV90ZXh0dXJlUHJvZ3JhbUZsaXAuZ2V0KCk7CiB9CkBAIC0x
NzEwLDEwICsxNjIwLDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVBy
b2dyYW1GbGlwKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQCiBjb25zdCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OlRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKCkKIHsKICAgICBpZiAoIW1fdGV4dHVyZUlP
U3VyZmFjZVByb2dyYW0pCi0gICAgICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0gPSBhZG9w
dFB0cihuZXcgVGV4dHVyZUlPU3VyZmFjZVByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAg
ICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGV4dHVyZUlPU3Vy
ZmFjZVByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3RleHR1cmVJT1N1cmZhY2VQcm9n
cmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRleHR1cmVJT1N1cmZhY2VQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7
Ci0gICAgICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0
LmdldCgpKTsKKyAgICAgICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS5n
ZXQoKTsKIH0KQEAgLTE3MjEsMTAgKzE2MzEsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpUZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXgK
IGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VmlkZW9ZVVZQcm9ncmFtKiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnZpZGVvWVVWUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3ZpZGVvWVVWUHJv
Z3JhbSkKLSAgICAgICAgbV92aWRlb1lVVlByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlkZW9ZVVZQ
cm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbSA9IGFk
b3B0UHRyKG5ldyBWaWRlb1lVVlByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3ZpZGVv
WVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp2aWRlb1lVVlByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsK
LSAgICAgICAgbV92aWRlb1lVVlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsK
KyAgICAgICAgbV92aWRlb1lVVlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9
CiAgICAgcmV0dXJuIG1fdmlkZW9ZVVZQcm9ncmFtLmdldCgpOwogfQpAQCAtMTczMiwxMCArMTY0
MiwxMCBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlZpZGVvWVVWUHJvZ3JhbSogTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb1lVVlBybwogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpWaWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZp
ZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0oKQogewogICAgIGlmICghbV92aWRlb1N0cmVhbVRleHR1
cmVQcm9ncmFtKQotICAgICAgICBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0gPSBhZG9wdFB0
cihuZXcgVmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAg
ICAgbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFZpZGVvU3RyZWFt
VGV4dHVyZVByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3ZpZGVvU3RyZWFtVGV4dHVy
ZVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6c3RyZWFtVGV4dHVyZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAw
KTsKLSAgICAgICAgbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtLT5pbml0aWFsaXplKG1fY29u
dGV4dC5nZXQoKSk7CisgICAgICAgIG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbS0+aW5pdGlh
bGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV92aWRlb1N0cmVhbVRleHR1cmVQ
cm9ncmFtLmdldCgpOwogfQpAQCAtMTc0Nyw0NiArMTY1Nyw0NiBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fc2hhcmVkR2VvbWV0cnku
Y2xlYXIoKTsKIAogICAgIGlmIChtX3RpbGVQcm9ncmFtKQotICAgICAgICBtX3RpbGVQcm9ncmFt
LT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW0tPmNsZWFu
dXAobV9jb250ZXh0KTsKICAgICBpZiAobV90aWxlUHJvZ3JhbU9wYXF1ZSkKLSAgICAgICAgbV90
aWxlUHJvZ3JhbU9wYXF1ZS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3Rp
bGVQcm9ncmFtT3BhcXVlLT5jbGVhbnVwKG1fY29udGV4dCk7CiAgICAgaWYgKG1fdGlsZVByb2dy
YW1Td2l6emxlKQotICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZS0+Y2xlYW51cChtX2NvbnRl
eHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZS0+Y2xlYW51cChtX2NvbnRl
eHQpOwogICAgIGlmIChtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZSkKLSAgICAgICAgbV90aWxl
UHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAg
bV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmNsZWFudXAobV9jb250ZXh0KTsKICAgICBpZiAo
bV90aWxlUHJvZ3JhbUFBKQotICAgICAgICBtX3RpbGVQcm9ncmFtQUEtPmNsZWFudXAobV9jb250
ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4dCk7
CiAgICAgaWYgKG1fdGlsZVByb2dyYW1Td2l6emxlQUEpCi0gICAgICAgIG1fdGlsZVByb2dyYW1T
d2l6emxlQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3Jh
bVN3aXp6bGVBQS0+Y2xlYW51cChtX2NvbnRleHQpOwogICAgIGlmIChtX3RpbGVDaGVja2VyYm9h
cmRQcm9ncmFtKQotICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtLT5jbGVhbnVwKG1f
Y29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmNsZWFu
dXAobV9jb250ZXh0KTsKIAogICAgIGlmIChtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSkKLSAgICAg
ICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAg
ICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsKICAgICBp
ZiAobV9yZW5kZXJQYXNzUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbS0+Y2xl
YW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtLT5jbGVh
bnVwKG1fY29udGV4dCk7CiAgICAgaWYgKG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpCi0gICAg
ICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsK
KyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQpOwog
ICAgIGlmIChtX3JlbmRlclBhc3NQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dy
YW1BQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9n
cmFtQUEtPmNsZWFudXAobV9jb250ZXh0KTsKIAogICAgIGlmIChtX3RleHR1cmVQcm9ncmFtKQot
ICAgICAgICBtX3RleHR1cmVQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAg
ICAgIG1fdGV4dHVyZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsKICAgICBpZiAobV90ZXh0
dXJlUHJvZ3JhbUZsaXApCi0gICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwLT5jbGVhbnVwKG1f
Y29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwLT5jbGVhbnVwKG1f
Y29udGV4dCk7CiAgICAgaWYgKG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0pCi0gICAgICAgIG1f
dGV4dHVyZUlPU3VyZmFjZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwogCiAgICAg
aWYgKG1fdmlkZW9ZVVZQcm9ncmFtKQotICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+Y2xlYW51
cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+Y2xlYW51cCht
X2NvbnRleHQpOwogICAgIGlmIChtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0pCi0gICAgICAg
IG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwor
ICAgICAgICBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsK
IAogICAgIGlmIChtX3NvbGlkQ29sb3JQcm9ncmFtKQotICAgICAgICBtX3NvbGlkQ29sb3JQcm9n
cmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fc29saWRDb2xvclByb2dy
YW0tPmNsZWFudXAobV9jb250ZXh0KTsKIAogICAgIGlmIChtX2hlYWRzVXBEaXNwbGF5UHJvZ3Jh
bSkKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0
KTsKIAogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3JlZW5GcmFtZWJ1ZmZl
cklkKSk7CkBAIC0xNzk5LDcgKzE3MDksNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXND
b250ZXh0TG9zdCgpCiB7Ci0gICAgcmV0dXJuIChtX2NvbnRleHQuZ2V0KCktPmdldEV4dGVuc2lv
bnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpO
T19FUlJPUik7CisgICAgcmV0dXJuIChtX2NvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGY3Y2NiNjUx
Zjg1MGJkMDM4MmIwOTUwYzQ3ODViMDM1NzFlZGUzOWQuLjM0MjU0YjAwYjkyMjJmMTBlMmY5ZDFj
Mzc5YTU3OTFmYzE4NzY5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBA
IC00MCw2ICs0MCwxMCBAQAogI2luY2x1ZGUgImNjL0NDUmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdyYXBoaWNz
Q29udGV4dDNEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDQ2hlY2tlcmJv
YXJkRHJhd1F1YWQ7CkBAIC01MywyMiArNTcsMjMgQEAgY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7
CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKIGNsYXNzIENDWVVWVmlkZW9EcmF3UXVhZDsKIGNsYXNz
IEdlb21ldHJ5QmluZGluZzsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgTGF5ZXJS
ZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7CiBjbGFzcyBNYW5hZ2Vk
VGV4dHVyZTsKIGNsYXNzIFNjb3BlZEVuc3VyZUZyYW1lYnVmZmVyQWxsb2NhdGlvbjsKIAogLy8g
Q2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVz
aW5nIEdMLgotY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIENDUmVuZGVyZXIg
eworY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIENDUmVuZGVyZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRDo6V2ViR3JhcGhpY3NTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEOjpXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlV
TSAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViS2l0OjpXZWJHcmFw
aGljc0NvbnRleHQzRDo6V2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDUmVuZGVyZXJD
bGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4dHVyZVVwbG9hZGVyT3B0
aW9uKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0
ZShDQ1JlbmRlcmVyQ2xpZW50KiwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFRleHR1
cmVVcGxvYWRlck9wdGlvbik7CiAKICAgICB2aXJ0dWFsIH5MYXllclJlbmRlcmVyQ2hyb21pdW0o
KTsKIAogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJp
bGl0aWVzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KIAotICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0Q2hhbmdlZCgp
IE9WRVJSSURFOwogCkBAIC04OCw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICAvLyBwdXRzIGJhY2ti
dWZmZXIgb25zY3JlZW4KICAgICB2aXJ0dWFsIGJvb2wgc3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVj
dCYgc3ViQnVmZmVyKSBPVkVSUklERTsKIAotICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUpOworICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSk7CiAKICAgICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJlZEdlb21ldHJ5KCkgY29u
c3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQogCkBAIC0xMTEsMTQgKzExNiwx
MSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9jYXRpb24sIGludCBx
dWFkTG9jYXRpb24pOwogICAgIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGludCB0ZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgZHJhd01hdHJpeCk7Ci0gICAgdm9pZCBzZXRHcHVNZW1vcnlBbGxvY2F0aW9u
KEV4dGVuc2lvbnMzRENocm9taXVtOjpHcHVNZW1vcnlBbGxvY2F0aW9uQ0hST01JVU0pOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgdm9pZCBkaXNjYXJkRnJhbWVidWZmZXIoKTsKLSAgICB2b2lkIGVuc3Vy
ZUZyYW1lYnVmZmVyKCk7Ci0gICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CisgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtKENDUmVuZGVyZXJDbGllbnQqLCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKIAotICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1Jl
bmRlcmVyQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1cmVVcGxv
YWRlck9wdGlvbik7CisgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAgICAgYm9vbCBpbml0aWFsaXplKCk7
CiAKIHByaXZhdGU6CkBAIC0xNTQsOCArMTU2LDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0
aWFsaXplU2hhcmVkT2JqZWN0cygpOwogICAgIHZvaWQgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsK
IAotICAgIGZyaWVuZCBjbGFzcyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxi
YWNrQWRhcHRlcjsKLSAgICB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOworICAgIC8vIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OldlYkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0
ZUNhbGxiYWNrQ0hST01JVU0gaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIG9uU3dh
cEJ1ZmZlcnNDb21wbGV0ZSgpIE9WRVJSSURFOworCisgICAgLy8gV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRDo6V2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQ0hS
T01JVU0gaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIG9uTWVtb3J5QWxsb2NhdGlv
bkNoYW5nZWQoV2ViS2l0OjpXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24pIE9WRVJSSURFOwor
ICAgIHZvaWQgb25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbFRocmVhZChXZWJLaXQ6Oldl
YkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbik7CisgICAgdm9pZCBkaXNjYXJkRnJhbWVidWZmZXIo
KTsKKyAgICB2b2lkIGVuc3VyZUZyYW1lYnVmZmVyKCk7CisKKyAgICAvLyBXZWJHcmFwaGljc0Nv
bnRleHQzRDo6V2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrIGltcGxlbWVudGF0aW9uLgor
ICAgIHZpcnR1YWwgdm9pZCBvbkNvbnRleHRMb3N0KCkgT1ZFUlJJREU7CiAKICAgICBMYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwogCkBAIC0yNTIsNyArMjYzLDcgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBt
X2ltcGxUZXh0dXJlQWxsb2NhdG9yOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBt
X2NvbnRleHQ7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0Owog
CiAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX2RlZmF1bHRSZW5kZXJQYXNzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1
cmVTdWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKaW5kZXggNGJlYTkwNDJmODJmNDU3NDhmMDAzZTM0
NjZkYjYzZGI2MzQ0MGE0Ni4uNGFhOTk2NWU3ZjM4YjBiZTM4M2ZiY2QxYjFmYjMwNzVmNzZjMmU1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcApAQCAtODksNyArODksNyBA
QCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3Qg
dWludDhfdCogaW1hZ2UsIGNvbnN0IEludAogICAgICAgICBwaXhlbFNvdXJjZSA9ICZtX3N1Yklt
YWdlWzBdOwogICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRp
bmcuCiAgICAgICAgIHJldHVybjsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIExheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2Us
IGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBU
UkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFn
ZSIsIHRoaXMsIDApOwotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0
LT5jb250ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcu
CiAgICAgICAgIHJldHVybjsKQEAgLTExMiw4ICsxMTIsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1
YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNv
bnN0CiAgICAgSW50UG9pbnQgb2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwg
c291cmNlUmVjdC55KCkgLSBpbWFnZVJlY3QueSgpKTsKIAogICAgIC8vIFVwbG9hZCB0aWxlIGRh
dGEgdmlhIGEgbWFwcGVkIHRyYW5zZmVyIGJ1ZmZlcgotICAgIEV4dGVuc2lvbnMzRENocm9taXVt
KiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0
M2QtPmdldEV4dGVuc2lvbnMoKSk7Ci0gICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nh
c3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRl
c3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOwor
ICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250ZXh0M2Qt
Pm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0
LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRl
bnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOwogCiAgICAgaWYgKCFwaXhlbERlc3QpIHsK
ICAgICAgICAgdXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwpAQCAtMTM3LDcgKzEzNiw3IEBAIHZvaWQg
TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50
OF90KiBpbWFnZSwgY29uc3QKICAgICAgICAgICAgICAgICAgICAmaW1hZ2VbNCAqIChvZmZzZXQu
eCgpICsgKG9mZnNldC55KCkgKyByb3cpICogaW1hZ2VSZWN0LndpZHRoKCkpXSwKICAgICAgICAg
ICAgICAgICAgICBkZXN0UmVjdC53aWR0aCgpICogY29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQ
ZXJDb21wb25lbnQpOwogICAgIH0KLSAgICBHTEMoY29udGV4dDNkLCBleHRlbnNpb25zLT51bm1h
cFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpKTsKKyAgICBHTEMoY29udGV4dDNkLCBj
b250ZXh0M2QtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggYjA2YWFh
OTFiNjhhNDM4ZTA3Y2Q4ZTU2ZjBjOTk5ZDc4ZGY5YmRkNC4uOGNjMGMyZjkzNDgzYWNmZTg0MzQy
ZDA5MjBmNmNhNDVjMjhiYWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtMzAsNiAr
MzAsOSBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJjYy9D
Q0dyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQz
RC5oPgorCit1c2luZyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEyMCw3ICsxMjMsNyBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxv
Y2F0ZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB2b2lkIE1hbmFnZWRUZXh0dXJlOjpi
aW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQogewogICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7Ci0gICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgIFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNv
bnRleHQzZCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcuCiAgICAgICAgIHJldHVybjsKQEAgLTEzMSw3ICsxMzQsNyBAQCB2
b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYQogdm9pZCBNYW5hZ2VkVGV4dHVyZTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvcikKIHsKICAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwotICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250
ZXh0M2QpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3
YXJlIGNvbXBvc2l0aW5nLgogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgKaW5kZXgg
YWI2NTQ1ZGNlZTJmMTFjZTU3YjQ1ZGIyYTE3Zjg1NzU5MWE1Y2U5OS4uYTg1NTIxNWJkNzc0OTc5
ZGNkZmZjOGIxZGM4NGMwMWI2ZmIyMTU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ29sb3IuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiU2tUeXBlcy5oIiAKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwxNCArNDEs
MTQgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFJldHVybnMgdGhlIG1vc3QgZWZmaWNpZW50
IHRleHR1cmUgZm9ybWF0IGZvciB0aGlzIHBsYXRmb3JtLgotICAgIHN0YXRpYyBHQzNEZW51bSBi
ZXN0VGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICBzdGF0aWMg
R0MzRGVudW0gYmVzdFRleHR1cmVGb3JtYXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgYm9vbCBzdXBwb3J0c0JHUkE4ODg4KQogICAgIHsKICAgICAgICAgR0MzRGVudW0g
dGV4dHVyZUZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwogICAgICAgICBzd2l0Y2gg
KGZvcm1hdCgpKSB7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1h
dFJHQkE4OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNvdXJjZUZvcm1hdEJHUkE4OgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQorICAg
ICAgICAgICAgaWYgKHN1cHBvcnRzQkdSQTg4ODgpCiAgICAgICAgICAgICAgICAgdGV4dHVyZUZv
cm1hdCA9IEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcAppbmRleCAzNzY0MzRlNjJiZmI0ZDFk
YjQxZmZlMDY4NzdjODljNzA3OGNhZDU2Li42YWZiYjM0YWU2MDdmMzE4MDE0NjlmNTY2MThhNDA3
NGQ5MTY5ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwCkBAIC0yOSwxMiArMjksMTMgQEAK
IAogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zM0Qu
aCIKICNpbmNsdWRlICJHZW9tZXRyeUJpbmRpbmcuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKwordXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSwxOSArNTIsMTkgQEAgUHJv
Z3JhbUJpbmRpbmdCYXNlOjp+UHJvZ3JhbUJpbmRpbmdCYXNlKCkKICAgICBBU1NFUlQoIW1faW5p
dGlhbGl6ZWQpOwogfQogCi1zdGF0aWMgYm9vbCBjb250ZXh0TG9zdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkKK3N0YXRpYyBib29sIGNvbnRleHRMb3N0KFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQogewotICAgIHJldHVybiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKTsK
KyAgICByZXR1cm4gKGNvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCiAKLXZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNl
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNo
YWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKK3ZvaWQgUHJvZ3JhbUJpbmRpbmdC
YXNlOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZl
cnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKIHsKICAgICBtX3Byb2dy
YW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRT
aGFkZXIpOwogICAgIEFTU0VSVChtX3Byb2dyYW0gfHwgY29udGV4dExvc3QoY29udGV4dCkpOwog
fQogCi12b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCkKK3ZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwKFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0KQogewogICAgIG1faW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBpZiAo
IW1fcHJvZ3JhbSkKQEAgLTc0LDEzICs3NSwxMyBAQCB2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6
Y2xlYW51cChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICBtX3Byb2dyYW0gPSAwOwog
fQogCi11bnNpZ25lZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmxvYWRTaGFkZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291cmNl
KQordW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsb2FkU2hhZGVyKFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCB0eXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclNvdXJj
ZSkKIHsKICAgICB1bnNpZ25lZCBzaGFkZXIgPSBjb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7
CiAgICAgaWYgKCFzaGFkZXIpCiAgICAgICAgIHJldHVybiAwOwogICAgIFN0cmluZyBzb3VyY2VT
dHJpbmcoc2hhZGVyU291cmNlKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+c2hhZGVyU291
cmNlKHNoYWRlciwgc291cmNlU3RyaW5nKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnNo
YWRlclNvdXJjZShzaGFkZXIsIHNvdXJjZVN0cmluZy51dGY4KCkuZGF0YSgpKSk7CiAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKSk7CiAjaWZuZGVmIE5ERUJV
RwogICAgIGludCBjb21waWxlZCA9IDA7CkBAIC05Myw5ICs5NCw5IEBAIHVuc2lnbmVkIFByb2dy
YW1CaW5kaW5nQmFzZTo6bG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgdHlwCiAgICAgcmV0dXJuIHNoYWRlcjsKIH0KIAotdW5zaWduZWQgUHJvZ3JhbUJpbmRp
bmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNo
YWRlclNvdXJjZSkKK3Vuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJv
Z3JhbShXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpCiB7Ci0gICAg
VFJBQ0VfRVZFTlQoIlByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSIsIHRo
aXMsIDApOworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVh
dGVTaGFkZXJQcm9ncmFtIik7CiAgICAgdW5zaWduZWQgdmVydGV4U2hhZGVyID0gbG9hZFNoYWRl
cihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVy
U291cmNlKTsKICAgICBpZiAoIXZlcnRleFNoYWRlcikgewogICAgICAgICBpZiAoIWNvbnRleHRM
b3N0KGNvbnRleHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKaW5kZXggYWVhMjg1Njg5MGRhZjJkNWQ2
YzQ4NDgyN2Y2NTBmNzg3M2EwMTFkNy4uMzkwNDhmOTAzMjBiYWQyNGVjM2M0OWY5NTJkNjk0YzQx
OGU3ZWViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUHJvZ3JhbUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCkBAIC0yOCwyNyArMjgsMjkgQEAKIAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7Cit9CiAK
LWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQ
cm9ncmFtQmluZGluZ0Jhc2UgewogcHVibGljOgogICAgIFByb2dyYW1CaW5kaW5nQmFzZSgpOwog
ICAgIH5Qcm9ncmFtQmluZGluZ0Jhc2UoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50
U2hhZGVyKTsKLSAgICB2b2lkIGNsZWFudXAoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICB2b2lk
IGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFN0cmluZyYgdmVydGV4
U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKTsKKyAgICB2b2lkIGNsZWFudXAo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCopOwogCiAgICAgdW5zaWduZWQgcHJvZ3JhbSgp
IGNvbnN0IHsgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOyByZXR1cm4gbV9wcm9ncmFtOyB9CiAgICAg
Ym9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KIAogcHJv
dGVjdGVkOgogCi0gICAgdW5zaWduZWQgbG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291cmNlKTsKLSAgICB1bnNpZ25lZCBj
cmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0
ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAg
IHVuc2lnbmVkIGxvYWRTaGFkZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291cmNlKTsKKyAgICB1bnNpZ25lZCBjcmVh
dGVTaGFkZXJQcm9ncmFtKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBTdHJp
bmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclNvdXJj
ZSk7CiAKICAgICB1bnNpZ25lZCBtX3Byb2dyYW07CiAgICAgYm9vbCBtX2luaXRpYWxpemVkOwpA
QCAtNTcsMTIgKzU5LDEyIEBAIHByb3RlY3RlZDoKIHRlbXBsYXRlPGNsYXNzIFZlcnRleFNoYWRl
ciwgY2xhc3MgRnJhZ21lbnRTaGFkZXI+CiBjbGFzcyBQcm9ncmFtQmluZGluZyA6IHB1YmxpYyBQ
cm9ncmFtQmluZGluZ0Jhc2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IFByb2dyYW1CaW5kaW5n
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgIGV4cGxpY2l0IFByb2dyYW1CaW5kaW5n
KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgewogICAgICAgICBQ
cm9ncmFtQmluZGluZ0Jhc2U6OmluaXQoY29udGV4dCwgbV92ZXJ0ZXhTaGFkZXIuZ2V0U2hhZGVy
U3RyaW5nKCksIG1fZnJhZ21lbnRTaGFkZXIuZ2V0U2hhZGVyU3RyaW5nKCkpOwogICAgIH0KIAot
ICAgIHZvaWQgaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICB2b2lk
IGluaXRpYWxpemUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0KTsKICAgICAgICAgQVNTRVJUKG1fcHJvZ3JhbSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFk
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5jcHAKaW5kZXggNmVkNmY0YThlNDE5NjQzMjAyMmM1NjY2NjhkNWRk
OGMxOWEzNDAzMS4uMmExNDBkMWQ3ODViNjQzOWIzMWUwYjJmODRmMzI0ZTU4Y2U3MDc4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NoYWRlckNocm9taXVtLmNwcApAQCAtMjksMTIgKzI5LDEzIEBACiAKICNpbmNsdWRlICJT
aGFkZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250
ZXh0M0QuaD4KIAogI2RlZmluZSBTSEFERVIwKFNyYykgI1NyYwogI2RlZmluZSBTSEFERVIoU3Jj
KSBTSEFERVIwKFNyYykKIAordXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBWZXJ0ZXhTaGFkZXJQb3NUZXg6OlZlcnRleFNoYWRlclBv
c1RleCgpCkBAIC00Miw3ICs0Myw3IEBAIFZlcnRleFNoYWRlclBvc1RleDo6VmVydGV4U2hhZGVy
UG9zVGV4KCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBv
c1RleDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3Jh
bSkKIHsKICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJtYXRyaXgiKTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSk7
CkBAIC03MCw3ICs3MSw3IEBAIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OlZlcnRleFNo
YWRlclBvc1RleFlVVlN0cmV0Y2goKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1RleFlV
VlN0cmV0Y2g6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dy
YW0pCit2b2lkIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQoV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9tYXRyaXhMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CiAg
ICAgbV95V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ5X3dpZHRoU2NhbGVGYWN0b3IiKTsKQEAgLTEwMyw3ICsxMDQsNyBAQCBW
ZXJ0ZXhTaGFkZXJQb3M6OlZlcnRleFNoYWRlclBvcygpCiB7CiB9CiAKLXZvaWQgVmVydGV4U2hh
ZGVyUG9zOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
KQordm9pZCBWZXJ0ZXhTaGFkZXJQb3M6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CiAgICAgQVNTRVJUKG1fbWF0
cml4TG9jYXRpb24gIT0gLTEpOwpAQCAtMTI3LDcgKzEyOCw3IEBAIFZlcnRleFNoYWRlclBvc1Rl
eFRyYW5zZm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKCkKIHsKIH0KIAotdm9pZCBW
ZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6
aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsK
ICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJtYXRyaXgiKTsKICAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKQEAgLTE2OSw3ICsxNzAs
NyBAQCBTdHJpbmcgVmVydGV4U2hhZGVyUG9zVGV4SWRlbnRpdHk6OmdldFNoYWRlclN0cmluZygp
IGNvbnN0CiAgICAgKTsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJRdWFkOjppbml0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBWZXJ0ZXhTaGFkZXJR
dWFkOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
KQogewogICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgIm1hdHJpeCIpOwogICAgIG1fcG9pbnRMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAicG9pbnQiKTsKQEAgLTIwNSw3ICsyMDYsNyBAQCBWZXJ0
ZXhTaGFkZXJUaWxlOjpWZXJ0ZXhTaGFkZXJUaWxlKCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFk
ZXJUaWxlOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
KQordm9pZCBWZXJ0ZXhTaGFkZXJUaWxlOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwogICAgIG1fcG9pbnRMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAicG9pbnQiKTsKQEAg
LTI0Miw3ICsyNDMsNyBAQCBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6VmVydGV4U2hhZGVy
VmlkZW9UcmFuc2Zvcm0oKQogewogfQogCi1ib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3Jt
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorYm9v
bCBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX21hdHJpeExvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKICAgICBtX3RleE1h
dHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhN
YXRyaXgiKTsKQEAgLTI3MSw3ICsyNzIsNyBAQCBGcmFnbWVudFRleEFscGhhQmluZGluZzo6RnJh
Z21lbnRUZXhBbHBoYUJpbmRpbmcoKQogewogfQogCi12b2lkIEZyYWdtZW50VGV4QWxwaGFCaW5k
aW5nOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQor
dm9pZCBGcmFnbWVudFRleEFscGhhQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNv
bnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAgICAgbV9h
bHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBo
YSIpOwpAQCAtMjg0LDcgKzI4NSw3IEBAIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6RnJhZ21l
bnRUZXhPcGFxdWVCaW5kaW5nKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFRleE9wYXF1ZUJpbmRp
bmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2
b2lkIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNv
bnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAKQEAgLTMw
Niw3ICszMDcsNyBAQCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhOjpnZXRT
aGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9CiAKLWJvb2wgRnJhZ21lbnRTaGFkZXJPRVNJ
bWFnZUV4dGVybmFsOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtKQorYm9vbCBGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmluaXQoV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9zYW1w
bGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4
dHVyZSIpOwogCkBAIC00MzYsNyArNDM3LDcgQEAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFB
QTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRT
aGFkZXJSR0JBVGV4QWxwaGFBQTo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6aW5pdChX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBt
X3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
c190ZXh0dXJlIik7CiAgICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwpAQCAtNDc4LDcgKzQ3OSw3IEBAIEZyYWdtZW50VGV4
Q2xhbXBBbHBoYUFBQmluZGluZzo6RnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nKCkKIHsK
IH0KIAotdm9pZCBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmc6OmluaXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50VGV4Q2xh
bXBBbHBoYUFBQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAgICAgbV9hbHBoYUxvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwpAQCAtNTQ5
LDcgKzU1MCw3IEBAIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGFNYXNrKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhB
bHBoYU1hc2s6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dy
YW0pCit2b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJM
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJl
Iik7CiAgICAgbV9tYXNrU2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJzX21hc2siKTsKQEAgLTU4Miw3ICs1ODMsNyBAQCBGcmFnbWVudFNoYWRl
clJHQkFUZXhBbHBoYU1hc2tBQTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUEoKQog
ewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjppbml0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAgICAgbV9tYXNrU2Ft
cGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21h
c2siKTsKQEAgLTYyOCw3ICs2MjksNyBAQCBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpGcmFnbWVu
dFNoYWRlcllVVlZpZGVvKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBG
cmFnbWVudFNoYWRlcllVVlZpZGVvOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCB1bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1feVRleHR1cmVMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAieV90ZXh0dXJlIik7CiAgICAgbV91VGV4dHVy
ZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3RleHR1
cmUiKTsKQEAgLTY3MSw3ICs2NzIsNyBAQCBGcmFnbWVudFNoYWRlckNvbG9yOjpGcmFnbWVudFNo
YWRlckNvbG9yKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlckNvbG9yOjppbml0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNo
YWRlckNvbG9yOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtKQogewogICAgIG1fY29sb3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCAiY29sb3IiKTsKICAgICBBU1NFUlQobV9jb2xvckxvY2F0aW9uICE9IC0x
KTsKQEAgLTY5Niw3ICs2OTcsNyBAQCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6RnJhZ21l
bnRTaGFkZXJDaGVja2VyYm9hcmQoKQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVyQ2hlY2tl
cmJvYXJkOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
KQordm9pZCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5pdChXZWJHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX2FscGhhTG9jYXRpb24g
PSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CiAgICAgbV90
ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAidGV4VHJhbnNmb3JtIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAppbmRleCA5Mjc3ZWNjYTUwYzM2
ZDE4OWQ4ZTYxZDcyZTVmZjM3YThlMzU3Yzg0Li40NzViNzg5NjI0NWQ2OGQ1MWM5Y2ZiZjk2MzEw
MTdjZDY2YmMyZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKQEAgLTMxLDE1ICszMSwxNyBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2tDb2xvclByaXYuaCIKIAot
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGlj
c0NvbnRleHQzRDsKK30KIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFZlcnRleFNoYWRlclBvc1RleCB7CiBwdWJsaWM6CiAgICAgVmVydGV4
U2hhZGVyUG9zVGV4KCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNp
Z25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dDsKIAogICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9j
YXRpb247IH0KQEAgLTUyLDcgKzU0LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3Ry
ZXRjaCB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCgpOwogCi0g
ICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAg
dm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFt
KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC02OSw3ICs3
MSw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclBvcyB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVy
UG9zKCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9n
cmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAg
IGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0K
QEAgLTgwLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4SWRl
bnRpdHkgewogcHVibGljOgotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0pIHsgfQorICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSkgeyB9CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygp
IGNvbnN0OwogfTsKIApAQCAtODgsNyArOTAsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXhU
cmFuc2Zvcm0gewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpOwog
Ci0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7Cisg
ICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9n
cmFtKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0
cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC0xMDMs
NyArMTA1LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUXVhZCB7CiBwdWJsaWM6CiAgICAgVmVydGV4
U2hhZGVyUXVhZCgpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWdu
ZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
LCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7
CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0
aW9uOyB9CkBAIC0xMTgsNyArMTIwLDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyVGlsZSB7CiBwdWJs
aWM6CiAgICAgVmVydGV4U2hhZGVyVGlsZSgpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVy
U3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC0xMzUsNyArMTM3LDcgQEAgY2xhc3MgVmVydGV4U2hh
ZGVyVmlkZW9UcmFuc2Zvcm0gewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclZpZGVvVHJhbnNm
b3JtKCk7CiAKLSAgICBib29sIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9n
cmFtKTsKKyAgICBib29sIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAg
IGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0K
QEAgLTE1MCw3ICsxNTIsNyBAQCBjbGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJs
aWM6CiAgICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChHcmFw
aGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50IGFscGhh
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAgICBpbnQgZWRn
ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KICAgICBpbnQgZnJhZ21lbnRUZXhUcmFu
c2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CkBAIC0xNjUsNyArMTY3LDcgQEAg
Y2xhc3MgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFRl
eE9wYXF1ZUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiAtMTsgfQogICAgIGludCBlZGdlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsg
fQogICAgIGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
LTE7IH0KQEAgLTIyMSw3ICsyMjMsNyBAQCBwdWJsaWM6CiBjbGFzcyBGcmFnbWVudFNoYWRlck9F
U0ltYWdlRXh0ZXJuYWwgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewogcHVibGlj
OgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKLSAgICBib29sIGluaXQoR3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBib29sIGluaXQoV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwogcHJpdmF0ZToKICAg
ICBpbnQgbV9zYW1wbGVyTG9jYXRpb247CiB9OwpAQCAtMjMwLDcgKzIzMiw3IEBAIGNsYXNzIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEgewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVy
UkdCQVRleEFscGhhQUEoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNv
bnN0OwogCiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9j
YXRpb247IH0KQEAgLTI0Nyw3ICsyNDksNyBAQCBjbGFzcyBGcmFnbWVudFRleENsYW1wQWxwaGFB
QUJpbmRpbmcgewogcHVibGljOgogICAgIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZygp
OwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7
CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBw
cm9ncmFtKTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFM
b2NhdGlvbjsgfQogICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Nh
bXBsZXJMb2NhdGlvbjsgfQogICAgIGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uOyB9CkBAIC0yNzYs
NyArMjc4LDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygp
OwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50IGFs
cGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAgICBpbnQg
c2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KICAg
ICBpbnQgbWFza1NhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NhbXBsZXJM
b2NhdGlvbjsgfQpAQCAtMjkyLDcgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRl
clJHQkFUZXhBbHBoYU1hc2tBQSgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dDsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0p
OworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQg
cHJvZ3JhbSk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhh
TG9jYXRpb247IH0KICAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9z
YW1wbGVyTG9jYXRpb247IH0KICAgICBpbnQgbWFza1NhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbWFza1NhbXBsZXJMb2NhdGlvbjsgfQpAQCAtMzEwLDcgKzMxMiw3IEBAIHB1Ymxp
YzoKICAgICBGcmFnbWVudFNoYWRlcllVVlZpZGVvKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0
cmluZygpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWdu
ZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
LCB1bnNpZ25lZCBwcm9ncmFtKTsKIAogICAgIGludCB5VGV4dHVyZUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV95VGV4dHVyZUxvY2F0aW9uOyB9CiAgICAgaW50IHVUZXh0dXJlTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3VUZXh0dXJlTG9jYXRpb247IH0KQEAgLTMzMyw3ICszMzUsNyBA
QCBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJDb2xvcigpOwogICAgIFN0cmluZyBnZXRTaGFk
ZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50IGNvbG9yTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvbG9yTG9jYXRpb247IH0KIAogcHJpdmF0ZToKQEAgLTM0NSw3ICszNDcsNyBA
QCBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQoKTsKICAgICBTdHJpbmcg
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHRleFRyYW5zZm9ybUxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQogICAgIGlu
dCBmcmVxdWVuY3lMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJlcXVlbmN5TG9jYXRpb247
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZUNvcGllci5jcHAKaW5kZXggYTI5YzI4NTUxM2YzNTgzMTQ3ZTBjOGI5MWFh
M2NjNzJhNjdlZmIzYS4uMjkwNTg2OTM4NDM1ZDhkNjQzOGQ5YjM4ZWUxYWI1MjY0NTYxOGMxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZUNvcGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZUNvcGllci5jcHAKQEAgLTI3LDE0ICsyNywxOCBAQAogI2luY2x1ZGUgIlRl
eHR1cmVDb3BpZXIuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBG
b3IgdGhlIEdMQygpIG1hY3JvCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6
OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0KQorQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpBY2NlbGVyYXRlZFRleHR1cmVDb3Bp
ZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IG1fY29udGV4
dChjb250ZXh0KQogeworICAgIEFTU0VSVChtX2NvbnRleHQpOwogICAgIEdMQyhtX2NvbnRleHQs
IG1fZmJvID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKTsKICAgICBHTEMobV9jb250
ZXh0LCBtX3Bvc2l0aW9uQnVmZmVyID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKSk7CiAKQEAg
LTQ1LDE3ICs0OSwxNyBAQCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OkFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPgogICAgICAgICB7LTEsIDEs
IDAsIDF9CiAgICAgfTsKIAotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Bvc2l0aW9uQnVmZmVy
KSk7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBo
aWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHNpemVvZihrUG9zaXRpb25zKSwga1Bvc2l0aW9u
cywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7Ci0gICAgR0xDKG1fY29udGV4dC5n
ZXQoKSwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZG
RVIsIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9wb3NpdGlvbkJ1ZmZlcikpOworICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlf
QlVGRkVSLCBzaXplb2Yoa1Bvc2l0aW9ucyksIGtQb3NpdGlvbnMsIEdyYXBoaWNzQ29udGV4dDNE
OjpTVEFUSUNfRFJBVykpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKSk7CiAKLSAgICBtX2JsaXRQcm9n
cmFtID0gYWRvcHRQdHIobmV3IEJsaXRQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1f
YmxpdFByb2dyYW0gPSBhZG9wdFB0cihuZXcgQmxpdFByb2dyYW0obV9jb250ZXh0KSk7CiB9CiAK
IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6fkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpCiB7
CiAgICAgaWYgKG1fYmxpdFByb2dyYW0pCi0gICAgICAgIG1fYmxpdFByb2dyYW0tPmNsZWFudXAo
bV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9ibGl0UHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRl
eHQpOwogICAgIGlmIChtX3Bvc2l0aW9uQnVmZmVyKQogICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihtX3Bvc2l0aW9uQnVmZmVyKSk7CiAgICAgaWYgKG1fZmJv
KQpAQCAtNjYsNyArNzAsNyBAQCB2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRl
eHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNjQ29udGV4dCwgdW5zaWduZQogewogICAgIFRSQUNF
X0VWRU5UKCJUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSIsIHRoaXMsIDApOwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQz
RCgpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVD
b3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVDb3BpZXIuaAppbmRleCAzYWMyZDExOTE0ZmZhMTVmOGRlYzJjYWIzZGY1Y2QyODBhM2E2Zjkw
Li42NDYxODlhYjYxODg0MzRkZDhlZDBlNzcyMGMyNmYwMDgyODFkM2Q2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNv
cGllci5oCkBAIC0yOSw5ICsyOSwxMyBAQAogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4
dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIEludFNpemU7CiAKIGNsYXNzIFRleHR1cmVDb3BpZXIgewogcHVibGljOgpAQCAtNDksNyAr
NTMsNyBAQCBwcm90ZWN0ZWQ6CiBjbGFzcyBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIgOiBwdWJs
aWMgVGV4dHVyZUNvcGllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRU
ZXh0dXJlQ29waWVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBY2NlbGVyYXRl
ZFRleHR1cmVDb3BpZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY3Jl
YXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihjb250ZXh0KSk7
CiAgICAgfQpAQCAtNTgsMTIgKzYyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29w
eVRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVu
c2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKTsKIAogcHJvdGVjdGVkOgotICAg
IGV4cGxpY2l0IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPik7CisgICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFByb2dyYW1C
aW5kaW5nPFZlcnRleFNoYWRlclBvc1RleElkZW50aXR5LCBGcmFnbWVudFNoYWRlclJHQkFUZXg+
IEJsaXRQcm9ncmFtOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7
CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIFBsYXRm
b3JtM0RPYmplY3QgbV9mYm87CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3Bvc2l0aW9uQnVmZmVy
OwogICAgIE93blB0cjxCbGl0UHJvZ3JhbT4gbV9ibGl0UHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5oCmluZGV4IDdjYTE0ZjQzNzg1YzBmMGQzZmVhZTMxOGNhNmRhN2QyYWRjMzg0NzIuLjFiNGNk
MWU2N2I4YTdiZWIzYjk4YTQyZjEwMmZmN2JhZGNlNDA3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
aApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaWZuZGVmIFRleHR1cmVNYW5hZ2VyX2gKICNkZWZpbmUg
VGV4dHVyZU1hbmFnZXJfaAogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVV
cGxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCmluZGV4IGY1Y2YyYTRlMTM5NzdiZDhhOTgzMTUx
NDkwNWQzMTAzYjMyMWQzMDUuLmE4MjUzZDA2NTUxNjI1ZjBiMDczYWVjZjVkZWY3NWNkYWUwMmFm
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgogCiAjaW5j
bHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhp
Y3NDb250ZXh0M0QuaD4KIAogbmFtZXNwYWNlIHsKIApAQCAtMzcsNTcgKzM4LDUyIEBAIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4UGVuZGluZ1F1ZXJpZXMgPSAyOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OlF1ZXJ5KFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCitUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1
ZXJ5OjpRdWVyeShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3F1ZXJ5SWQoMCkKIHsKLSAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwotICAgIG1fcXVlcnlJZCA9IGV4dGVuc2lv
bnMtPmNyZWF0ZVF1ZXJ5RVhUKCk7CisgICAgbV9xdWVyeUlkID0gbV9jb250ZXh0LT5jcmVhdGVR
dWVyeUVYVCgpOwogfQogCiBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojp+UXVlcnko
KQogewotICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8
RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Ci0gICAg
ZXh0ZW5zaW9ucy0+ZGVsZXRlUXVlcnlFWFQobV9xdWVyeUlkKTsKKyAgICBtX2NvbnRleHQtPmRl
bGV0ZVF1ZXJ5RVhUKG1fcXVlcnlJZCk7CiB9CiAKIHZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyOjpRdWVyeTo6YmVnaW4oKQogewotICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7Ci0gICAgZXh0ZW5zaW9ucy0+YmVnaW5RdWVyeUVYVChFeHRlbnNpb25zM0RD
aHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNLCBtX3F1ZXJ5SWQpOworICAgIG1fY29u
dGV4dC0+YmVnaW5RdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVE
X0NIUk9NSVVNLCBtX3F1ZXJ5SWQpOwogfQogCiB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRl
cjo6UXVlcnk6OmVuZCgpCiB7Ci0gICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMg
PSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpKTsKLSAgICBleHRlbnNpb25zLT5lbmRRdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1
bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNKTsKKyAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5RVhU
KEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0pOwogfQogCiBi
b29sIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmlzUGVuZGluZygpCiB7Ci0gICAg
RXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25z
M0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKICAgICB1bnNpZ25lZCBh
dmFpbGFibGUgPSAxOwotICAgIGV4dGVuc2lvbnMtPmdldFF1ZXJ5T2JqZWN0dWl2RVhUKG1fcXVl
cnlJZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhULCAm
YXZhaWxhYmxlKTsKKyAgICBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2RVhUKG1fcXVlcnlJ
ZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhULCAmYXZh
aWxhYmxlKTsKICAgICByZXR1cm4gIWF2YWlsYWJsZTsKIH0KIAogdm9pZCBUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI6OlF1ZXJ5Ojp3YWl0KCkKIHsKLSAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSog
ZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkpOwogICAgIHVuc2lnbmVkIHJlc3VsdDsKLSAgICBleHRlbnNpb25z
LT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpR
VUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0KTsKKyAgICBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0
dWl2RVhUKG1fcXVlcnlJZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlFVRVJZX1JFU1VMVF9FWFQs
ICZyZXN1bHQpOwogfQogCi1UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlRocm90dGxlZFRleHR1
cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9tYXhQZW5kaW5nUXVlcmllcyhtYXhQZW5kaW5nUXVlcmllcykKIHsKIH0KIAotVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgc2l6ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCkKK1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBwZW5kaW5nVXBsb2FkTGltaXQp
CiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbWF4UGVuZGluZ1F1ZXJpZXMocGVu
ZGluZ1VwbG9hZExpbWl0KQogeworICAgIEFTU0VSVChtX2NvbnRleHQpOwogfQogCiBUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXI6On5UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAppbmRleCBkZWEzZDM1NGM1YjFlNWUzMDBmZDA4
MjJhZWQ3MWZlYWVlYThhMTg0Li5hZTViNzQ5MWYyODQ4NDQwZjQxMzFjZTZiYjE0M2U3NWE0ZDZj
OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApAQCAtMjksMTYg
KzI5LDIwIEBACiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRocm90dGxlZFRleHR1cmVVcGxvYWRlcj4g
Y3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgc3RhdGlj
IFBhc3NPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKGNvbnRleHQpKTsKICAgICB9Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgc2l6ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCkK
KyAgICBzdGF0aWMgUGFzc093blB0cjxUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgcGVuZGluZ1VwbG9h
ZExpbWl0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIoY29udGV4dCwgcGVuZGluZ1VwbG9hZExpbWl0KSk7CiAgICAgfQpAQCAtNTIs
NyArNTYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNsYXNzIFF1ZXJ5IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFF1ZXJ5PiBjcmVhdGUoUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFF1ZXJ5KGNv
bnRleHQpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxRdWVyeT4gY3JlYXRlKFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBR
dWVyeShjb250ZXh0KSk7IH0KIAogICAgICAgICB2aXJ0dWFsIH5RdWVyeSgpOwogCkBAIC02Miwx
OCArNjYsMTggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB3YWl0KCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBleHBsaWNpdCBRdWVyeShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7
CisgICAgICAgIGV4cGxpY2l0IFF1ZXJ5KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsK
IAotICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKKyAgICAgICAg
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgICAgICB1bnNpZ25l
ZCBtX3F1ZXJ5SWQ7CiAgICAgfTsKIAotICAgIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcihQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7Ci0gICAgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBzaXplX3QgcGVuZGluZ1VwbG9hZExpbWl0
KTsKKyAgICBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCopOworICAgIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcihXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiwgc2l6ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCk7CiAKICAgICB2b2lkIHByb2Nl
c3NRdWVyaWVzKCk7CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsK
KyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAgICAgc2l6ZV90
IG1fbWF4UGVuZGluZ1F1ZXJpZXM7CiAgICAgRGVxdWU8T3duUHRyPFF1ZXJ5PiA+IG1fcGVuZGlu
Z1F1ZXJpZXM7CiAgICAgRGVxdWU8T3duUHRyPFF1ZXJ5PiA+IG1fYXZhaWxhYmxlUXVlcmllczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
YWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCmluZGV4IDk1NzcxMWVh
YTVkM2NhMzM2ZDVjNTU5NDUyOWM4MzQyZDZkZmFiMDYuLjhlNTg2ZTI1YTA1YWY3OGFkMTNiN2Rh
ZjcyM2JhM2NiYTAzM2NhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmNwcApAQCAtMjcsMTcgKzI3LDE5IEBACiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmgiCiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgdGhlIEdMQygpIG1hY3JvCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKK1RyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcjo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAs
IG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzKDApCiAgICAgLCBtX3RleHR1cmVVc2FnZUhpbnQoQW55
KQogICAgICwgbV91c2VUZXh0dXJlU3RvcmFnZUV4dChmYWxzZSkKIHsKKyAgICBBU1NFUlQobV9j
b250ZXh0KTsKIH0KIAogVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjp+VHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yKCkKQEAgLTcyLDIzICs3NCwyMiBAQCB1bnNpZ25lZCBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZgog
ICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzICs9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VC
eXRlcyhzaXplLCBmb3JtYXQpOwogCiAgICAgdW5zaWduZWQgdGV4dHVyZUlkID0gMDsKLSAgICBH
TEMobV9jb250ZXh0LmdldCgpLCB0ZXh0dXJlSWQgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUo
KSk7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CisgICAgR0xDKG1fY29udGV4
dCwgdGV4dHVyZUlkID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOworICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIHRleHR1cmVJZCkpOwogICAgIC8vIERvIGJhc2ljIGxpbmVhciBmaWx0ZXJpbmcgb24gcmVz
aXplLgotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdMQyhtX2NvbnRl
eHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUikpOwogICAgIC8vIE5QT1QgdGV4dHVyZXMgaW4gR0wgRVMgb25s
eSB3b3JrIHdoZW4gdGhlIHdyYXAgbW9kZSBpcyBzZXQgdG8gR3JhcGhpY3NDb250ZXh0M0Q6OkNM
QU1QX1RPX0VER0UuCi0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0gICAg
R0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdy
YXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9U
T19FREdFKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9X
UkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CiAKICAgICBpZiAobV90
ZXh0dXJlVXNhZ2VIaW50ID09IEZyYW1lYnVmZmVyQXR0YWNobWVudCkKLSAgICAgICAgR0xDKG1f
Y29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9VU0FHRV9BTkdM
RSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUp
KTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVS
RV9VU0FHRV9BTkdMRSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX0ZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfQU5HTEUpKTsKICAgICBpZiAobV91c2VUZXh0dXJlU3RvcmFnZUV4dCAmJiBpc1RleHR1
cmVGb3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdlKGZvcm1hdCkpIHsKLSAgICAgICAgRXh0ZW5zaW9u
czNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1
bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKICAgICAgICAgR0MzRGVudW0gc3RvcmFn
ZUZvcm1hdCA9IHRleHR1cmVUb1N0b3JhZ2VGb3JtYXQoZm9ybWF0KTsKLSAgICAgICAgZXh0ZW5z
aW9ucy0+dGV4U3RvcmFnZTJERVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAxLCBz
dG9yYWdlRm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX2Nv
bnRleHQtPnRleFN0b3JhZ2UyREVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMSwg
c3RvcmFnZUZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKICAgICB9IGVsc2UK
LSAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3Vy
Y2VTYWZlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBmb3JtYXQsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfQllURSkpOworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleEltYWdlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpLCAwLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCAwKSk7CiAgICAgbV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmFkZCh0ZXh0dXJlSWQpOwogICAgIHJl
dHVybiB0ZXh0dXJlSWQ7CiB9CkBAIC05Niw3ICs5Nyw4IEBAIHVuc2lnbmVkIFRyYWNraW5nVGV4
dHVyZUFsbG9jYXRvcjo6Y3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51
bSBmCiB2b2lkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25l
ZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKIHsKICAg
ICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0
ZXMoc2l6ZSwgZm9ybWF0KTsKLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRl
bGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5k
ZWxldGVUZXh0dXJlKHRleHR1cmVJZCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKICAgICBBU1NFUlQobV9hbGxvY2F0ZWRUZXh0dXJl
SWRzLmNvbnRhaW5zKHRleHR1cmVJZCkpOwogICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5yZW1v
dmUodGV4dHVyZUlkKTsKIH0KQEAgLTEwNCw3ICsxMDYsNyBAQCB2b2lkIFRyYWNraW5nVGV4dHVy
ZUFsbG9jYXRvcjo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNp
emUmCiB2b2lkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlQWxsVGV4dHVyZXMoKQog
ewogICAgIGZvciAoSGFzaFNldDx1bnNpZ25lZD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9hbGxv
Y2F0ZWRUZXh0dXJlSWRzLmJlZ2luKCk7IGl0ICE9IG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5lbmQo
KTsgKytpdCkKLSAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5kZWxldGVU
ZXh0dXJlKCppdCkpOworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVRl
eHR1cmUoKml0KSk7CiAgICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMgPSAwOwogICAgIG1fYWxs
b2NhdGVkVGV4dHVyZUlkcy5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuaAppbmRleCA5ODBiOTRlMTJiYTI2ZWZjOGQ4YzNkNzlkMmE3MWRkM2IxMzUxMjY2
Li5jMTBjMjU3MjE0ZTYyZWZlMzQwMmVmY2I2MTIxOGY2MjgwMTRkMjUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaApAQCAtMjUsMTcgKzI1LDIwIEBACiAjaWZuZGVm
IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcl9oCiAjZGVmaW5lIFRyYWNraW5nVGV4dHVyZUFsbG9j
YXRvcl9oCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdyYXBoaWNzQ29udGV4
dDNEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8VHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yPiBjcmVhdGUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yKGNvbnRleHQpKTsKICAgICB9CkBAIC01Myw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFVzZVRleHR1cmVTdG9yYWdlRXh0KGJvb2wgdXNlU3RvcmFnZUV4dCkgeyBtX3VzZVRl
eHR1cmVTdG9yYWdlRXh0ID0gdXNlU3RvcmFnZUV4dDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhw
bGljaXQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+KTsKKyAgICBleHBsaWNpdCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCopOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2Nv
bnRleHQ7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAg
IHNpemVfdCBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsKICAgICBUZXh0dXJlVXNhZ2VIaW50IG1f
dGV4dHVyZVVzYWdlSGludDsKICAgICBib29sIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NHcmFwaGljc0NvbnRleHQuaAppbmRleCAzOTVmMThjMzQ5MWI0YzRkZDYxMTQzOTE0
MTU4Nzk5OGUyODg3NDZmLi40MzUzNmE0MjE0ZDU4YWFlYWYyNWUzYWM4MmYwZDQ2ZjNkMWUxNWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI2LDMyICsyNiwzMyBAQAog
I2lmbmRlZiBDQ0dyYXBoaWNzQ29udGV4dF9oCiAjZGVmaW5lIENDR3JhcGhpY3NDb250ZXh0X2gK
IAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKLWNsYXNzIENDR3JhcGhp
Y3NDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Q0NHcmFwaGljc0NvbnRleHQ+IHsKK2NsYXNz
IENDR3JhcGhpY3NDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0dyYXBoaWNz
Q29udGV4dCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNyZWF0ZTJEKCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
Y3JlYXRlMkQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQ0dyYXBoaWNz
Q29udGV4dCgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0dyYXBoaWNzQ29udGV4
dCgpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNy
ZWF0ZTNEKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQzRCkKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY3JlYXRlM0QoUGFzc093blB0cjxXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0M0QpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENDR3JhcGhpY3NDb250ZXh0KGNvbnRleHQzRCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDR3JhcGhpY3NDb250ZXh0KGNvbnRleHQzRCkpOwogICAgIH0K
IAotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QoKSB7IHJldHVybiBtX2NvbnRleHQz
RC5nZXQoKTsgfQorICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCgp
IHsgcmV0dXJuIG1fY29udGV4dDNELmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgQ0NHcmFwaGlj
c0NvbnRleHQoKSB7IH0KLSAgICBleHBsaWNpdCBDQ0dyYXBoaWNzQ29udGV4dChQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0M0QpCisgICAgZXhwbGljaXQgQ0NHcmFwaGljc0Nv
bnRleHQoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0M0Qp
CiAgICAgICAgIDogbV9jb250ZXh0M0QoY29udGV4dDNEKSB7IH0KIAotICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gbV9jb250ZXh0M0Q7CisgICAgT3duUHRyPFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0Q+IG1fY29udGV4dDNEOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcAppbmRleCAxYjYxMzE3Y2NlYWMxMzU5NzliYWMyZWQzZTlhZTIxNjZkODZjMWQy
Li5mM2Q0MTVkY2ZkMzViNjgzZDdkMzE2MGVhYjI4OTk2M2JjYTIxNTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgImNjL0ND
RGVidWdSZWN0SGlzdG9yeS5oIgogI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjgsNyArNjksNyBAQCBib29sIENDSGVhZHNVcERpc3Bs
YXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBj
b25zdAogdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxh
eWVyVHJlZUhvc3RJbXBsKQogewogICAgIENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIgPSBsYXll
clRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpOwotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCk7CisgICAg
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCktPmNvbnRleHQzRCgpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAg
ICAgICAgIHJldHVybjsKQEAgLTEwNiwxMyArMTA3LDEyIEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxh
eTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICAgICAg
bV9odWRUZXh0dXJlLT5iaW5kVGV4dHVyZShsYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBs
YXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICAgICAgYm9vbCB1cGxv
YWRlZFZpYU1hcCA9IGZhbHNlOwogICAgICAgICBpZiAobGF5ZXJSZW5kZXJlci0+Y2FwYWJpbGl0
aWVzKCkudXNpbmdNYXBTdWIpIHsKLSAgICAgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBl
eHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkpOwotICAgICAgICAgICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgaHVkU2l6ZS53aWR0aCgpLCBodWRT
aXplLmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CisgICAg
ICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29udGV4
dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9u
czNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIAogICAgICAgICAgICAgaWYgKHBpeGVsRGVzdCkg
ewogICAgICAgICAgICAgICAgIHVwbG9hZGVkVmlhTWFwID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBtZW1jcHkocGl4ZWxEZXN0LCBsb2NrZXIucGl4ZWxzKCksIGh1ZFNpemUud2lkdGgoKSAqIGh1
ZFNpemUuaGVpZ2h0KCkgKiA0KTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb25zLT51bm1hcFRl
eFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCmluZGV4
IGY4NDQ2NjcwYThlYmMxNzlmODVkNGVhNTA3NDU3NzMwMWY5ZWQ1MmUuLmNlM2IzOGU5NjRhNDVj
MWRhMTg1OTNjZjYyZmJmMjk2MDNiOWU2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5jcHAKQEAgLTI5LDEzICsyOSwxNCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NJT1N1
cmZhY2VMYXllckltcGwuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCisj
aW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNp
bmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01NCw3ICs1NSw3IEBAIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjp+Q0NJT1N1cmZh
Y2VMYXllckltcGwoKQogCiAgICAgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBsYXllclRy
ZWVIb3N0SW1wbCgpLT5jb250ZXh0KCk7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBh
dGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoY29udGV4
dDNkKQogICAgICAgICBjb250ZXh0M2QtPmRlbGV0ZVRleHR1cmUobV9pb1N1cmZhY2VUZXh0dXJl
SWQpOwogfQpAQCAtNjQsMTQgKzY1LDExIEBAIHZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6Ondp
bGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0CiAgICAg
Q0NMYXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIsIGNvbnRleHQpOwogCiAgICAgaWYg
KG1faW9TdXJmYWNlQ2hhbmdlZCkgewotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgICAgIFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwogICAgICAgICBpZiAo
IWNvbnRleHQzZCkgewogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGgg
Zm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8
RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMoKSk7Ci0gICAg
ICAgIEFTU0VSVChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1faW9zdXJmYWNlIikp
OwotICAgICAgICBBU1NFUlQoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FSQl90ZXh0dXJlX3Jl
Y3RhbmdsZSIpKTsKIAogICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyBpbiBhIHdheSB0aGF0IHdl
IGNhbiB0cmFjayBtZW1vcnkgdXNhZ2UuCiAgICAgICAgIGlmICghbV9pb1N1cmZhY2VUZXh0dXJl
SWQpCkBAIC04MywxMSArODEsMTEgQEAgdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERy
YXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQKICAgICAgICAg
R0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEV4dGVuc2lvbnMzRDo6VEVY
VFVSRV9SRUNUQU5HTEVfQVJCLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVS
LCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CiAgICAgICAgIEdMQyhjb250ZXh0M2QsIGNv
bnRleHQzZC0+dGV4UGFyYW1ldGVyaShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FS
QiwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSkpOwogICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBh
cmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
KTsKLSAgICAgICAgZXh0ZW5zaW9ucy0+dGV4SW1hZ2VJT1N1cmZhY2UyRENIUk9NSVVNKEV4dGVu
c2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pb1N1cmZhY2VTaXplLndpZHRoKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lvU3VyZmFjZVNpemUu
aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2lvU3VyZmFjZUlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCk7CisgICAgICAgIGNvbnRleHQzZC0+dGV4SW1hZ2VJT1N1cmZhY2UyRENIUk9N
SVVNKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lvU3VyZmFjZVNpemUud2lkdGgoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pb1N1cmZh
Y2VTaXplLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2lvU3VyZmFjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwKTsKICAgICAgICAgLy8gRG8gbm90IGNoZWNrIGZvciBlcnJvciBjb25k
aXRpb25zLiB0ZXhJbWFnZUlPU3VyZmFjZTJEQ0hST01JVU0gaXMgc3VwcG9zZWQgdG8gaG9sZCBv
biB0bwogICAgICAgICAvLyB0aGUgbGFzdCBnb29kIElPU3VyZmFjZSBpZiB0aGUgbmV3IG9uZSBp
cyBhbHJlYWR5IGNsb3NlZC4gVGhpcyBpcyBvbmx5IGEgcG9zc2liaWxpdHkKICAgICAgICAgLy8g
ZHVyaW5nIGxpdmUgcmVzaXppbmcgb2YgcGx1Z2lucy4gSG93ZXZlciwgaXQgc2VlbXMgdGhhdCB0
aGlzIGlzIG5vdCBzdWZmaWNpZW50IHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApp
bmRleCA3ZDE0Y2Y1ZGEzYTVjMzJiZTVmMzA0NjVhMmFlOGZkOGY0MGUzY2ZjLi4zZjlhYmYxNjU0
YjcwOTlmMTExNzMzYTA0ZGU4MjliMWM0ODM5MGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTI2MCw5ICsyNjAsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0
Q29tcGxldGUoKQogICAgIG1fY2xpZW50LT5kaWRDb21taXQoKTsKIH0KIAotUGFzc1JlZlB0cjxD
Q0dyYXBoaWNzQ29udGV4dD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGVDb250ZXh0KCkKK1Bhc3NP
d25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29udGV4dCgp
CiB7Ci0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0OwogICAgIGlmIChzZXR0
aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykKICAgICAgICAgcmV0dXJuIENDR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGUyRCgpOwogICAgIHJldHVybiBDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggNmY2OTQ2ZTMxYzdhMzNhYmFkZjc4ZDY1NjUwZTBiOTM1MjY2NjU0Zi4uYWUw
MTE0ZWE5YTFmYzBiNjA2YjZiZDlhYzRiZjhlNDJhM2FmZjUwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUo
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgPSAwOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dDNEKCkgPSAw
OworICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBj
cmVhdGVDb250ZXh0M0QoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4
dChib29sIHN1Y2Nlc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkgPSAwOwpAQCAtMTE3LDYgKzExNyw3IEBAIHN0
cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIHsKICAgICAgICAgLCB1c2luZ1RleHR1cmVT
dG9yYWdlRXh0ZW5zaW9uKGZhbHNlKQogICAgICAgICAsIHVzaW5nR3B1TWVtb3J5TWFuYWdlcihm
YWxzZSkKICAgICAgICAgLCB1c2luZ0Rpc2NhcmRGcmFtZWJ1ZmZlcihmYWxzZSkKKyAgICAgICAg
LCB1c2luZ0VnbEltYWdlKGZhbHNlKQogICAgICAgICAsIG1heFRleHR1cmVTaXplKDApIHsgfQog
CiAgICAgR0MzRGVudW0gYmVzdFRleHR1cmVGb3JtYXQ7CkBAIC0xMzAsNiArMTMxLDcgQEAgc3Ry
dWN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgewogICAgIGJvb2wgdXNpbmdUZXh0dXJlU3Rv
cmFnZUV4dGVuc2lvbjsKICAgICBib29sIHVzaW5nR3B1TWVtb3J5TWFuYWdlcjsKICAgICBib29s
IHVzaW5nRGlzY2FyZEZyYW1lYnVmZmVyOworICAgIGJvb2wgdXNpbmdFZ2xJbWFnZTsKICAgICBp
bnQgbWF4VGV4dHVyZVNpemU7CiB9OwogCkBAIC0xNTUsNyArMTU3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgYmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogICAg
IHZvaWQgZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAg
ICB2b2lkIGNvbW1pdENvbXBsZXRlKCk7Ci0gICAgUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4
dD4gY3JlYXRlQ29udGV4dCgpOworICAgIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNy
ZWF0ZUNvbnRleHQoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1w
bD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwog
ICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKICAgICBlbnVtIFJlY3JlYXRlUmVzdWx0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggOWExMWJkMjgwOGIyOWYz
ZTgyYzk0YzdkNjEwZjFmMDBhYzg1Y2FmOS4uMzAxMWI1ZWNjNjYzMDZjY2Q2MGQ5OTIxNDFkMWY4
NGZlZjdlZTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAg
LTY0OSw5ICs2NDksOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpc2libGUoYm9v
bCB2aXNpYmxlKQogICAgIHNldEJhY2tncm91bmRUaWNraW5nRW5hYmxlZCghbV92aXNpYmxlICYm
IG1fbmVlZHNBbmltYXRlTGF5ZXJzKTsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyKQorYm9vbCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzT3duUHRyPENDR3JhcGhp
Y3NDb250ZXh0PiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVy
KQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0
M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA5
MzllNDJlNmI3NmZjYzc0NTliZjIwZTZjZDZlYTY4YmUwYTRhYTk3Li40ZTRmNmNjYjdlMmY2NTVi
NTJiMjI0MjAzZGRlODU5N2YwMGM2ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoQWxsUmVu
ZGVyaW5nKCk7CiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51
bWJlcjsgfQogCi0gICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEND
R3JhcGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKKyAgICBib29sIGluaXRp
YWxpemVMYXllclJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+LCBUZXh0dXJl
VXBsb2FkZXJPcHRpb24pOwogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwogICAgIENDUmVuZGVy
ZXIqIGxheWVyUmVuZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KICAg
ICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkgY29uc3Q7CkBAIC0yMjQsNyArMjI0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHVt
cFJlbmRlclN1cmZhY2VzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50LCBjb25zdCBDQ0xheWVySW1w
bCopIGNvbnN0OwogCi0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Cisg
ICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgT3duUHRyPENDUmVu
ZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fcm9vdExh
eWVySW1wbDsKICAgICBDQ0xheWVySW1wbCogbV9yb290U2Nyb2xsTGF5ZXJJbXBsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBmNTRiYTc3NTA1MjU0OTdkYWNm
NjcxNWU4MDdiMmMxOGNhOGMyYjdjLi5jYmQ1MWQ0ZmU2OTVjYTUyMmM3ODc2NmVjNTM2ZmQwNDhm
NGQwNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTQw
LDExICsxNDAsMTAgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppc1N0YXJ0ZWQoKSBjb25z
dAogYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCgpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBP
d25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0
ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBBU1NFUlQoY29udGV4dC0+aGFzT25lUmVmKCkpOwotICAgIG1fY29udGV4dEJlZm9yZUluaXRp
YWxpemF0aW9uID0gY29udGV4dDsKKyAgICBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbiA9
IGNvbnRleHQucmVsZWFzZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xODMsMTYgKzE4
MiwxNSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAg
QVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jb250ZXh0TG9z
dCk7CiAKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJl
ZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNv
bnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChjb250ZXh0LT5oYXNPbmVS
ZWYoKSk7CiAgICAgYm9vbCBpbml0aWFsaXplZDsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRl
bnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIp
OworICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAg
ICAgICAgaWYgKGluaXRpYWxpemVkKSB7CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKaW5kZXggNDZjYjMwMmFjNjEyODY4MDcyZDdmOTg4MzVlMmYxNzcwOWFhNDFiNS4uNmZi
NzMzZGYyZWI4Nzc5NTIwMzU1ODI0YTBmODU3ZWNkZjQwMTFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
SG9sZHMgb24gdG8gdGhlIGNvbnRleHQgYmV0d2VlbiBpbml0aWFsaXplQ29udGV4dCgpIGFuZCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLiBTaG91bGRuJ3QKICAgICAvLyBiZSB1c2Vk
IGZvciBhbnl0aGluZyBlbHNlLgotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250
ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb247CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBt
X2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbjsKIAogICAgIE93blB0cjxDQ1NpbmdsZVRocmVh
ZFByb3h5QW5pbWF0aW9uVGltZXI+IG1fYW5pbWF0aW9uVGltZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMWZkMGM3MzZlZTM0OWY3ODhhYmM4OTg0ZWZiZTZiZmJh
OGI0NjI3My4uYzMyOTk5MzliYWQwZjRiZjliZDU3ZjViOTA1YWIzYmQzMDdlZWExZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEND
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsbwogICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWluIHRocmVhZCBw
cm9jZWVkIGFzIGl0IG1heSBtYWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0ZXh0dXJlIG9m
IG9uZSBvZgogICAgIC8vIG91ciBjb3B5IG9wZXJhdGlvbnMuCiAgICAgaWYgKG1fY29weUVudHJp
ZXMuc2l6ZSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgICAgIGlmIChjb250ZXh0M2Qp
CiAgICAgICAgICAgICBjb250ZXh0M2QtPmZsdXNoKCk7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKaW5kZXggZTJlY2I5YzU4NTkxNWE1MzE2NDA3NGVjZjBiNGM3ZjBkNWFjNTUy
NC4uMzY4OTAyMTdhOTQ3NWVkMzRhMTllZjEyZmFiYWY0ZmQ1N2YxZjUxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKQEAgLTE4MCwxNyArMTgwLDEyIEBAIGJvb2wgQ0NUaHJlYWRQcm94
eTo6aXNTdGFydGVkKCkgY29uc3QKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRl
eHQoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4
dCIsIHRoaXMsIDApOwotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1f
bGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOwogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEFTU0VSVChjb250ZXh0LT5o
YXNPbmVSZWYoKSk7Ci0KLSAgICAvLyBMZWFrIHRoZSBjb250ZXh0IHBvaW50ZXIgc28gd2UgY2Fu
IHRyYW5zZmVyIG93bmVyc2hpcCBvZiBpdCB0byB0aGUgb3RoZXIgc2lkZS4uLgotICAgIENDR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gY29udGV4dC5yZWxlYXNlKCkubGVha1JlZigpOwot
ICAgIEFTU0VSVChjb250ZXh0UHRyLT5oYXNPbmVSZWYoKSk7CiAKICAgICBDQ1Byb3h5OjppbXBs
VGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94
eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhj
b250ZXh0UHRyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dC5sZWFrUHRyKCkpKSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0OSwxOSArMjQ0LDEzIEBAIGJvb2wgQ0NUaHJl
YWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
CiAgICAgLy8gVHJ5IHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KLSAgICBSZWZQdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAg
ICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNy
ZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNvbnRleHQoKSAmJiAhbV9sYXll
clRyZWVIb3N0LT5zZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykKICAgICAgICAg
aWYgKCFTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9ySW1wbFRocmVhZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigp
KTsKLQotICAgIC8vIExlYWsgdGhlIGNvbnRleHQgcG9pbnRlciBzbyB3ZSBjYW4gdHJhbnNmZXIg
b3duZXJzaGlwIG9mIGl0IHRvIHRoZSBvdGhlciBzaWRlLi4uCi0gICAgQ0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgQVNTRVJU
KGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKLQogICAgIC8vIE1ha2UgYSBibG9ja2luZyBjYWxs
IHRvIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZC4gVGhlIHJlc3VsdHMgb2YgdGhhdAogICAg
IC8vIGNhbGwgYXJlIHB1c2hlZCBpbnRvIHRoZSByZWNyZWF0ZVN1Y2NlZWRlZCBhbmQgY2FwYWJp
bGl0aWVzIGxvY2FsCiAgICAgLy8gdmFyaWFibGVzLgpAQCAtMjcwLDcgKzI1OSw3IEBAIGJvb2wg
Q0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzIGNhcGFiaWxpdGllczsKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0
T25JbXBsVGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhjb250ZXh0
LmxlYWtQdHIoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmcmVjcmVhdGVTdWNjZWVkZWQpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcykpKTsKICAgICBjb21wbGV0aW9uLndh
aXQoKTsKQEAgLTgyOCw3ICs4MTcsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVD
b250ZXh0T25JbXBsVGhyZWFkKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIFRS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZCIs
IHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgbV9jb250ZXh0QmVm
b3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQgPSBhZG9wdFJlZihjb250ZXh0KTsKKyAgICBt
X2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKGNvbnRl
eHQpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sKiBpbml0aWFsaXpl
U3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMpCkBAIC04
ODcsNyArODc2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEMKICAgICBUUkFDRV9FVkVOVDAo
ImNjIiwgIkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCIpOwogICAg
IEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250
ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvcigpKTsKLSAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFJlZihjb250ZXh0UHRyKSwgdGV4
dHVyZVVwbG9hZGVyKTsKKyAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFB0cihjb250ZXh0UHRyKSwgdGV4dHVy
ZVVwbG9hZGVyKTsKICAgICBpZiAoKnJlY3JlYXRlU3VjY2VlZGVkKSB7CiAgICAgICAgICpjYXBh
YmlsaXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCk7CiAgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRSZWNyZWF0ZUNvbnRleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCA1NzJmOWY0ODgzYWY0NmJhMmQ3MmU5OWQ1
ODg1ZDY1ZjhjNmJlYTQwLi4zM2QzZDk5NmVkZDZkNzc3NjZkZmI4MmZkN2VlYTgwMjFiYjYwZWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBjb250ZXh0IHdlIG1pZ2h0IHVzZSBmb3IgY29tcG9z
aXRpbmcgaW4gYmV0d2VlbiBpbml0aWFsaXplQ29udGV4dCgpCiAgICAgLy8gYW5kIGluaXRpYWxp
emVMYXllclJlbmRlcmVyKCkgY2FsbHMuCi0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBt
X2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZDsKKyAgICBPd25QdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFk
OwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgb24gYSBzY2hl
ZHVsZWRBY3Rpb25CZWdpbkZyYW1lIHRvIGJlIGlzc3VlZC4KICAgICBDQ0NvbXBsZXRpb25FdmVu
dCogbV9iZWdpbkZyYW1lQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBkYmIwN2EwMDRhM2E3MDRhZDUyZjkyZjgzMDY0OGNi
NDhkYWViNTJmLi5kYjZkOGYwNjVlZTMzYTk1ZTU4MTkzMDVmYThmMDZjM2U5ODUxMmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIGJvb2wg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2NhdGVEYXRhKENDR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQogICAgIGlmICh0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGNvbnRleHQtPmNvbnRleHQzRCgp
OworICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGNvbnRleHQt
PmNvbnRleHQzRCgpOwogICAgIGlmICghY29udGV4dDNEKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTMwMSw3ICszMDEsNyBAQCBib29sIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmU6
OmFsbG9jYXRlRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICBHTEMoY29udGV4
dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6
OkNMQU1QX1RPX0VER0UpKTsKICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKIAotICAg
IEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpKTsKKyAg
ICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCBm
b3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAwKSk7CiAKICAgICByZXR1
cm4gdGV4dHVyZUlkOwogfQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6RnJhbWVQbGFuZTo6ZnJlZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAg
aWYgKCF0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0M0QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAo
IWNvbnRleHQzRCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTEsNyArMzUxLDcgQEAgYm9vbCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIs
IENDR3JhcGhpY3NDb250ZXgKICAgICBpZiAoIXNvZnR3YXJlUGxhbmVDb3VudCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4
dC0+Y29udGV4dDNEKCk7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0M2QpIHsKICAgICAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5n
LgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRl
eCA1NDlmZGZhNDRiODRhZTFjYTc1MWFkZTQ0MjdjM2Q3YzhjYzk4YTU1Li5kZDJiZmIyZWU2MGZl
NGEyMWUxM2Y0MWMzYTg3NjU4Y2Q1NzY5MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKQEAgLTk3LDExICs5Nyw5IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRlZFRlc3Qu
aCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaW1lclRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9DbGlwYm9hcmRDaHJvbWl1bVRlc3QuY3BwJywKLSAgICAgICAgICAgICd0ZXN0cy9Db21w
b3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NvbXBv
c2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAndGVzdHMvRGVj
aW1hbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcCcsCi0g
ICAgICAgICAgICAndGVzdHMvRHJhd2luZ0J1ZmZlckNocm9taXVtVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
RmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oJywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlR3Jh
cGhpY3NDb250ZXh0M0RUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IDM1NmFmMWRlMjNmY2Q4MDViNmI0MWZkZmY4ZDgw
ODdjZDg3OWJmNjAuLjdmMjJmNzlmOTNiMjAyZDQ3NGYwZWVkMTk4MzFmMmVkNDc0ZDljYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBA
IC0xNzUsNyArMTc1LDcgQEAgdm9pZCBXZWJMYXllclRyZWVWaWV3OjpmaW5pc2hBbGxSZW5kZXJp
bmcoKQogCiBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVlVmlldzo6Y29udGV4dCgp
CiB7Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBo
aWNzQ29udGV4dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0KCktPmNvbnRl
eHQzRCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbnRleHQo
KS0+Y29udGV4dDNEKCk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6bG9zZUNvbXBvc2l0
b3JDb250ZXh0KGludCBudW1UaW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCAxN2Q1ZmU4Njc1YTdlY2FlMjQyMDYz
ZTJhNzMwMmE3MzY0NzIwOWYwLi44MjVmYzAxZWY5ZWJkOWY5NWIyNWNjYmIzYmFmODQ3NmUzMzEw
OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuY3BwCkBAIC01NCwxMiArNTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBPVkVSUklE
RSB7IG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7IG1fY2xpZW50LT5sYXlvdXQo
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFIHsgbV9jbGll
bnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVsdGEsIHBhZ2VTY2FsZSk7IH0KLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRl
eHQzRCgpIE9WRVJSSURFCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4
dDNEPiBjcmVhdGVDb250ZXh0M0QoKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgT3duUHRyPFdl
YkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQdHIobV9jbGllbnQtPmNyZWF0
ZUNvbnRleHQzRCgpKTsKLSAgICAgICAgaWYgKCF3ZWJDb250ZXh0KQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIGZhbHNlIC8qIHByZXNlcnZl
RHJhd2luZ0J1ZmZlciAqLyApOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobV9jbGllbnQtPmNy
ZWF0ZUNvbnRleHQzRCgpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29u
dGV4dChib29sIHN1Y2Nlc3MpIE9WRVJSSURFIHsgbV9jbGllbnQtPmRpZFJlYmluZEdyYXBoaWNz
Q29udGV4dChzdWNjZXNzKTsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZFUlJJ
REUgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGQxOWIw
MzZiYjAxYTI2Y2FkZTUxODQ3ZDEzMmM2MGY1M2YxZWQ3MTQuLjY1ZjgzN2Y5MGRmOGQzOWUwMGQ0
ZGZkMzUwNTllZTY5YjAzYzg5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zMCw3ICszMCw2IEBA
CiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ1Rlc3RDb21tb24u
aCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNl
TGF5ZXJJbXBsLmgiCkBAIC04Miw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fZGlkUmVxdWVzdENvbW1p
dCA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRo
cmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91
YmxlIHdhbGxDbG9ja1RpbWUpIE9WRVJSSURFIHsgfQogCi0gICAgUGFzc093blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0KGJvb2wgcGFydGlhbFN3YXAsIFBhc3NS
ZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCwgUGFzc093blB0cjxDQ0xh
eWVySW1wbD4gcm9vdFB0cikKKyAgICBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNy
ZWF0ZUxheWVyVHJlZUhvc3QoYm9vbCBwYXJ0aWFsU3dhcCwgUGFzc093blB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gZ3JhcGhpY3NDb250ZXh0LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiByb290UHRy
KQogICAgIHsKICAgICAgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHBhcnRp
YWxTd2FwKTsKIApAQCAtMTYyLDkgKzE2MSw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGVDb250ZXh0KCkKKyAg
ICBQYXNzT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGVDb250ZXh0KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihu
ZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEKCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
RGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKyAgICAgICAgcmV0dXJuIENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEKSk7CiAgICAg
fQogCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1fYWx3YXlzSW1wbFRocmVhZDsKQEAg
LTE1MTEsMTAgKzE1MTAsOSBAQCBwdWJsaWM6CiAvLyB2aWV3cG9ydCBzaXplIGlzIG5ldmVyIHNl
dC4KIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVzaGFwZU5vdENhbGxlZFVudGls
RHJhdykKIHsKLSAgICBSZXNoYXBlVHJhY2tlckNvbnRleHQqIHJlc2hhcGVUcmFja2VyID0gbmV3
IFJlc2hhcGVUcmFja2VyQ29udGV4dCgpOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocmVzaGFwZVRyYWNrZXIpLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNvbnRleHQpOwot
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNjQ29udGV4dCwgVW50aHJv
dHRsZWRVcGxvYWRlcik7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQg
PSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFJlc2hhcGVUcmFja2Vy
Q29udGV4dCkpOworICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCogcmVzaGFwZVRyYWNrZXIgPSBz
dGF0aWNfY2FzdDxSZXNoYXBlVHJhY2tlckNvbnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgp
KTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjY0NvbnRleHQucmVs
ZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKIAogICAgIENDTGF5ZXJJbXBsKiByb290ID0g
bmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQoMCwgMCkpOwpAQCAtMTU1NSwxNiArMTU1MywxNSBAQCBwcml2YXRlOgogLy8g
d2hlcmUgaXQgc2hvdWxkIHJlcXVlc3QgdG8gc3dhcCBvbmx5IHRoZSBzdWJCdWZmZXIgdGhhdCBp
cyBkYW1hZ2VkLgogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJl
Y2VpdmVzRGFtYWdlUmVjdCkKIHsKLSAgICBQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0KiBwYXJ0
aWFsU3dhcFRyYWNrZXIgPSBuZXcgUGFydGlhbFN3YXBUcmFja2VyQ29udGV4dCgpOwotICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocGFydGlhbFN3
YXBUcmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
KTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGUzRChjb250ZXh0KTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgUGFy
dGlhbFN3YXBUcmFja2VyQ29udGV4dCkpOworICAgIFBhcnRpYWxTd2FwVHJhY2tlckNvbnRleHQq
IHBhcnRpYWxTd2FwVHJhY2tlciA9IHN0YXRpY19jYXN0PFBhcnRpYWxTd2FwVHJhY2tlckNvbnRl
eHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKIAogICAgIC8vIFRoaXMgdGVzdCBjcmVhdGVz
IGl0cyBvd24gQ0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAgICAvLyB0aGF0IHdlIGNhbiBmb3Jj
ZSBwYXJ0aWFsIHN3YXAgZW5hYmxlZC4KICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdz
OwogICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZCh0cnVlKTsKICAgICBPd25Q
dHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbGF5ZXJUcmVlSG9zdEltcGwgPSBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwotICAgIGxheWVyVHJlZUhvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihjY0NvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpOwor
ICAgIGxheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjY0NvbnRleHQu
cmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+
c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAwLCA1MDApKTsKIAogICAgIENDTGF5ZXJJbXBsKiBy
b290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwpAQCAtMTcyNSwxNSArMTcyMiwx
NSBAQCBwdWJsaWM6CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9QYXJ0aWFs
U3dhcCkKIHsKLSAgICBNb2NrQ29udGV4dCogbW9ja0NvbnRleHQgPSBuZXcgTW9ja0NvbnRleHQo
KTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihtb2NrQ29udGV4dCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOworICAgIE93blB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihu
ZXcgTW9ja0NvbnRleHQpKTsKKyAgICBNb2NrQ29udGV4dCogbW9ja0NvbnRleHQgPSBzdGF0aWNf
Y2FzdDxNb2NrQ29udGV4dCo+KGNvbnRleHQtPmNvbnRleHQzRCgpKTsKICAgICBNb2NrQ29udGV4
dEhhcm5lc3MgaGFybmVzcyhtb2NrQ29udGV4dCk7CiAKICAgICBoYXJuZXNzLm11c3REcmF3U29s
aWRRdWFkKCk7CiAgICAgaGFybmVzcy5tdXN0U2V0U2Npc3NvcigwLCAwLCAxMCwgMTApOwogCiAg
ICAgLy8gUnVuIHRlc3QgY2FzZQotICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhv
c3RJbXBsID0gY3JlYXRlTGF5ZXJUcmVlSG9zdChmYWxzZSwgY29udGV4dCwgRmFrZUxheWVyV2l0
aFF1YWRzOjpjcmVhdGUoMSkpOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhv
c3RJbXBsID0gY3JlYXRlTGF5ZXJUcmVlSG9zdChmYWxzZSwgY29udGV4dC5yZWxlYXNlKCksIEZh
a2VMYXllcldpdGhRdWFkczo6Y3JlYXRlKDEpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9E
cmF3KGZyYW1lKSk7CkBAIC0xNzQ0LDE0ICsxNzQxLDE0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgbm9QYXJ0aWFsU3dhcCkKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBwYXJ0aWFsU3dhcCkKIHsKLSAgICBNb2NrQ29udGV4dCogbW9ja0NvbnRleHQgPSBuZXcg
TW9ja0NvbnRleHQoKTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBD
Q0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihtb2NrQ29udGV4dCksIEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOworICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUz
RChhZG9wdFB0cihuZXcgTW9ja0NvbnRleHQpKTsKKyAgICBNb2NrQ29udGV4dCogbW9ja0NvbnRl
eHQgPSBzdGF0aWNfY2FzdDxNb2NrQ29udGV4dCo+KGNvbnRleHQtPmNvbnRleHQzRCgpKTsKICAg
ICBNb2NrQ29udGV4dEhhcm5lc3MgaGFybmVzcyhtb2NrQ29udGV4dCk7CiAKICAgICBoYXJuZXNz
Lm11c3REcmF3U29saWRRdWFkKCk7CiAgICAgaGFybmVzcy5tdXN0U2V0U2Npc3NvcigwLCAwLCAx
MCwgMTApOwogCi0gICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBj
cmVhdGVMYXllclRyZWVIb3N0KHRydWUsIGNvbnRleHQsIEZha2VMYXllcldpdGhRdWFkczo6Y3Jl
YXRlKDEpKTsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IGNy
ZWF0ZUxheWVyVHJlZUhvc3QodHJ1ZSwgY29udGV4dC5yZWxlYXNlKCksIEZha2VMYXllcldpdGhR
dWFkczo6Y3JlYXRlKDEpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBm
cmFtZTsKICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7
CkBAIC0xNzYyLDggKzE3NTksOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBh
cnRpYWxTd2FwKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2Fw
Tm9VcGRhdGUpCiB7Ci0gICAgTW9ja0NvbnRleHQqIG1vY2tDb250ZXh0ID0gbmV3IE1vY2tDb250
ZXh0KCk7Ci0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobW9ja0NvbnRleHQpLCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKyAgICBPd25QdHI8Q0NHcmFw
aGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQ
dHIobmV3IE1vY2tDb250ZXh0KSk7CisgICAgTW9ja0NvbnRleHQqIG1vY2tDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8TW9ja0NvbnRleHQqPihjb250ZXh0LT5jb250ZXh0M0QoKSk7CiAgICAgTW9ja0Nv
bnRleHRIYXJuZXNzIGhhcm5lc3MobW9ja0NvbnRleHQpOwogCiAgICAgaGFybmVzcy5tdXN0RHJh
d1NvbGlkUXVhZCgpOwpAQCAtMTc3MSw3ICsxNzY4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBwYXJ0aWFsU3dhcE5vVXBkYXRlKQogICAgIGhhcm5lc3MubXVzdERyYXdTb2xp
ZFF1YWQoKTsKICAgICBoYXJuZXNzLm11c3RTZXRTY2lzc29yKDAsIDAsIDEwLCAxMCk7CiAKLSAg
ICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IGNyZWF0ZUxheWVyVHJl
ZUhvc3QodHJ1ZSwgY29udGV4dCwgRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoMSkpOworICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gY3JlYXRlTGF5ZXJUcmVl
SG9zdCh0cnVlLCBjb250ZXh0LnJlbGVhc2UoKSwgRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUo
MSkpOwogCiAgICAgLy8gRHJhdyBvbmNlIHRvIG1ha2Ugc3VyZSBsYXllciBpcyBub3QgbmV3CiAg
ICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwpAQCAtMTgxMCw3ICsxODA3
LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gc2V0dXBMYXllcnNG
b3JPcGFjaXR5KGJvb2wgcGFydGlhbFN3YXAsIEMKIHsKICAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0
aWFsU3dhcEVuYWJsZWQocGFydGlhbFN3YXApOwogCi0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250
ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIo
bmV3IFBhcnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93KSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0
ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENv
bnRleHQpKTsKIAogICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRy
PENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUoc2V0dGluZ3MsIGNsaWVudCk7CkBAIC0xOTIxLDcgKzE5MTgsNyBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdOb3RDYWxsZWRPblNjaXNzb3JlZExheWVyKQog
ICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgQ0NTZXR0aW5nczo6c2V0UGFy
dGlhbFN3YXBFbmFibGVkKHRydWUpOwogCi0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
b250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IFBh
cnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENvbnRleHQp
KTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAgICAgbXlIb3N0SW1wbC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2Fk
ZXIpOwogICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwpA
QCAtMjAyMSw3ICsyMDE4LDcgQEAgcHVibGljOgogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBmaW5pc2hBbGxSZW5kZXJpbmdBZnRlckNvbnRleHRMb3N0KQogewogICAgIC8vIFRoZSBj
b250ZXh0IGluaXRpYWxpemF0aW9uIHdpbGwgZmFpbCwgYnV0IHdlIHNob3VsZCBzdGlsbCBiZSBh
YmxlIHRvIGNhbGwgZmluaXNoQWxsUmVuZGVyaW5nKCkgd2l0aG91dCBhbnkgaWxsIGVmZmVjdHMu
Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoQ0NHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRE1h
a2VDdXJyZW50RmFpbHMpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RX
aW5kb3cpKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSksIFVudGhyb3R0bGVkVXBs
b2FkZXIpOwogICAgIG1faG9zdEltcGwtPmZpbmlzaEFsbFJlbmRlcmluZygpOwogfQogCkBAIC0y
MTMxLDExICsyMTI4LDYgQEAgcHVibGljOgogICAgICAgICAgICAgQUREX0ZBSUxVUkUoKSA8PCAi
VHJ5aW5nIHRvIGJpbmQgdGV4dHVyZSBpZCAiIDw8IGlkOwogICAgIH0KIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHQoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IFN0cmljdFdlYkdyYXBoaWNzQ29u
dGV4dDNEKCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cp
OwotICAgIH0KLQogcHJpdmF0ZToKICAgICBIYXNoU2V0PHVuc2lnbmVkPiBtX2FsbG9jYXRlZFRl
eHR1cmVJZHM7CiB9OwpAQCAtMjE4NiwxMSArMjE3OCw2IEBAIHB1YmxpYzoKIAogICAgICAgICBy
ZXR1cm4gV2ViU3RyaW5nKCk7CiAgICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCi0gICAgewotICAgICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2Vi
Q29udGV4dChhZG9wdFB0cihuZXcgU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoSU9TdXJm
YWNlKCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwot
ICAgIH0KIH07CiAKIGNsYXNzIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhJT1N1cmZhY2Ug
OiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKQEAgLTIyMDIsMTEgKzIxODksNiBA
QCBwdWJsaWM6CiAKICAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwogICAgIH0KLQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHQo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRFdpdGhJT1N1cmZhY2UoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJl
Y3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgfQogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkKQEAgLTIyNTQsNyAr
MjIzNiw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9sZFJlc291
cmNlc0FmdGVyTG9zdENvbnRleHQpCiAgICAgcm9vdExheWVyLT5hZGRDaGlsZChpb1N1cmZhY2VM
YXllci5yZWxlYXNlKCkpOwogCiAgICAgLy8gVXNlIGEgY29udGV4dCB0aGF0IHN1cHBvcnRzIElP
U3VyZmFjZXMKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihDQ0dyYXBo
aWNzQ29udGV4dDo6Y3JlYXRlM0QoRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aElPU3VyZmFj
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBt
X2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhJT1N1cmZhY2Up
KSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
cm9vdExheWVyLnJlbGVhc2UoKSk7CiAKQEAgLTIyNjYsNyArMjI0OCw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQp
CiAKICAgICAvLyBMb3NlIHRoZSBjb250ZXh0LCByZXBsYWNpbmcgaXQgd2l0aCBhIFN0cmljdFdl
YkdyYXBoaWNzQ29udGV4dDNEV2l0aElPU3VyZmFjZSwKICAgICAvLyB0aGF0IHdpbGwgd2FybiBp
ZiBhbnkgcmVzb3VyY2UgZnJvbSB0aGUgcHJldmlvdXMgY29udGV4dCBnZXRzIHVzZWQuCi0gICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoQ0NHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZTNEKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aElPU3VyZmFjZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCkpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICBtX2hvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQ
dHIobmV3IFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aElPU3VyZmFjZSkpLCBVbnRocm90
dGxlZFVwbG9hZGVyKTsKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgbV9ob3N0
SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CkBAIC0yMzA3LDExICsyMjg5LDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKHRoaXMpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
RGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIH0KLQogICAgIHVuc2lnbmVkIG51bVRleHR1cmVz
KCkgY29uc3QgeyByZXR1cm4gbV9udW1UZXh0dXJlczsgfQogCiBwcml2YXRlOgpAQCAtMjM2Mywx
MSArMjM0MCwxMCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGxheWVyc0ZyZWVU
ZXh0dXJlcykKICAgICBpb1N1cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVlSG9zdEltcGwobV9ob3N0
SW1wbC5nZXQoKSk7CiAgICAgcm9vdExheWVyLT5hZGRDaGlsZChpb1N1cmZhY2VMYXllci5yZWxl
YXNlKCkpOwogCi0gICAgLy8gTG9zZSB0aGUgY29udGV4dCwgcmVwbGFjaW5nIGl0IHdpdGggYSBU
cmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dDNELCB0aGF0Ci0gICAgLy8gdHJhY2tzIHRoZSBudW1i
ZXIgb2YgdGV4dHVyZXMgYWxsb2NhdGVkLiBUaGlzIHBvaW50ZXIgaXMgb3duZWQgYnkgaXRzCi0g
ICAgLy8gR3JhcGhpY3NDb250ZXh0M0QuCi0gICAgVHJhY2tpbmdXZWJHcmFwaGljc0NvbnRleHQz
RCogdHJhY2tpbmdXZWJHcmFwaGljc0NvbnRleHQgPSBuZXcgVHJhY2tpbmdXZWJHcmFwaGljc0Nv
bnRleHQzRCgpOwotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUzRCh0cmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dC0+Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KCkpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICAvLyBMb3NlIHRo
ZSBjb250ZXh0LCByZXBsYWNpbmcgaXQgd2l0aCBhIFRyYWNraW5nV2ViR3JhcGhpY3NDb250ZXh0
M0QgKHdoaWNoIHRoZSBDQ0xheWVyVHJlZUhvc3RJbXBsIHRha2VzIG93bmVyc2hpcCBvZikuCisg
ICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBUcmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dDNEKSkpOwor
ICAgIFRyYWNraW5nV2ViR3JhcGhpY3NDb250ZXh0M0QqIHRyYWNraW5nV2ViR3JhcGhpY3NDb250
ZXh0ID0gc3RhdGljX2Nhc3Q8VHJhY2tpbmdXZWJHcmFwaGljc0NvbnRleHQzRCo+KGNjQ29udGV4
dC0+Y29udGV4dDNEKCkpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KGNjQ29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogCiAgICAgbV9ob3N0
SW1wbC0+c2V0Um9vdExheWVyKHJvb3RMYXllci5yZWxlYXNlKCkpOwogCkBAIC0yMzk1LDExICsy
MzcxLDExIEBAIHB1YmxpYzoKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBoYXNU
cmFuc3BhcmVudEJhY2tncm91bmQpCiB7Ci0gICAgTW9ja0RyYXdRdWFkc1RvRmlsbFNjcmVlbkNv
bnRleHQqIG1vY2tDb250ZXh0ID0gbmV3IE1vY2tEcmF3UXVhZHNUb0ZpbGxTY3JlZW5Db250ZXh0
KCk7Ci0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobW9ja0NvbnRleHQpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIo
bmV3IE1vY2tEcmF3UXVhZHNUb0ZpbGxTY3JlZW5Db250ZXh0KSk7CisgICAgTW9ja0RyYXdRdWFk
c1RvRmlsbFNjcmVlbkNvbnRleHQqIG1vY2tDb250ZXh0ID0gc3RhdGljX2Nhc3Q8TW9ja0RyYXdR
dWFkc1RvRmlsbFNjcmVlbkNvbnRleHQqPihjb250ZXh0LT5jb250ZXh0M0QoKSk7CiAKICAgICAv
LyBSdW4gdGVzdCBjYXNlCi0gICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdElt
cGwgPSBjcmVhdGVMYXllclRyZWVIb3N0KGZhbHNlLCBjb250ZXh0LCBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDEpKTsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IGNy
ZWF0ZUxheWVyVHJlZUhvc3QoZmFsc2UsIGNvbnRleHQucmVsZWFzZSgpLCBDQ0xheWVySW1wbDo6
Y3JlYXRlKDEpKTsKICAgICBteUhvc3RJbXBsLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6Ondo
aXRlKTsKIAogICAgIC8vIFZlcmlmeSBvbmUgcXVhZCBpcyBkcmF3biB3aGVuIHRyYW5zcGFyZW50
IGJhY2tncm91bmQgc2V0IGlzIG5vdCBzZXQuCkBAIC0yNDI0LDcgKzI0MDAsNyBAQCBURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGhhc1RyYW5zcGFyZW50QmFja2dyb3VuZCkKIAogc3Rh
dGljIHZvaWQgc2V0dXBMYXllcnNGb3JUZXh0dXJlQ2FjaGluZyhDQ0xheWVyVHJlZUhvc3RJbXBs
KiBsYXllclRyZWVIb3N0SW1wbCwgQ0NMYXllckltcGwqJiByb290UHRyLCBDQ0xheWVySW1wbCom
IGludGVybWVkaWF0ZUxheWVyUHRyLCBDQ0xheWVySW1wbComIHN1cmZhY2VMYXllclB0ciwgQ0NM
YXllckltcGwqJiBjaGlsZFB0cikKIHsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNv
bnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgUGFy
dGlhbFN3YXBDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCkp
OwogCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRl
eHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAwLCAxMDApKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGQyNzcz
NzkwZWJmNTQ3OWY2ZDAzMmE4ZWYyOWJiYTA1N2NmMzliNmIuLjNiZjI2MjA0ZDFiYWY0YmU0OGIy
Y2MwNjllMWE5YmE3YTY3YjFkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTM2OSw3ICsxMzY5LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVy
VHJlZUhvc3RJbXBsKiBpbXBsKQogICAgIHsKLSAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFw
aGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGwt
PmNvbnRleHQoKS0+Y29udGV4dDNEKCkpKTsKKyAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFw
aGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KGlt
cGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwogCiAgICAgICAgIHN3aXRjaCAoaW1wbC0+c291
cmNlRnJhbWVOdW1iZXIoKSkgewogICAgICAgICBjYXNlIDA6CkBAIC0xNDAzLDcgKzE0MDMsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBs
LT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihp
bXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIAogICAgICAgICAvLyBOdW1iZXIgb2YgdGV4
dHVyZXMgdXNlZCBmb3IgZHJhdyBzaG91bGQgYWx3YXlzIGJlIG9uZS4KICAgICAgICAgRVhQRUNU
X0VRKDEsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKQEAgLTE0NzMsNyArMTQ3Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAgIENvbXBvc2l0b3JGYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcq
PihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChp
bXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7CisgICAgICAgIENvbXBvc2l0b3JGYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcq
PihpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIAogICAgICAgICBzd2l0Y2ggKGltcGwt
PnNvdXJjZUZyYW1lTnVtYmVyKCkpIHsKICAgICAgICAgY2FzZSAwOgpAQCAtMTU0Miw3ICsxNTQy
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKEND
TGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCiAgICAgewotICAgICAgICBDb21wb3NpdG9yRmFrZVdl
YkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19j
YXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5n
Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0Qo
aW1wbC0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSkpOworICAgICAgICBDb21wb3NpdG9yRmFrZVdl
YkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyogY29udGV4dCA9IHN0YXRpY19j
YXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5n
Kj4oaW1wbC0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSk7CiAKICAgICAgICAgLy8gTnVtYmVyIG9m
IHRleHR1cmVzIHVzZWQgZm9yIGRyYXdpbmcgc2hvdWxkIHR3byBleGNlcHQgZm9yIGZyYW1lIDQK
ICAgICAgICAgLy8gd2hlcmUgdGhlIHZpZXdwb3J0IG9ubHkgY29udGFpbnMgb25lIGxheWVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NpbmdsZVRocmVhZFBy
b3h5VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2luZ2xlVGhyZWFk
UHJveHlUZXN0LmNwcAppbmRleCA0ZmU0MGYyNDE4N2NmMDFhM2ZkNGUwN2VjMzQ2ZmVlMWJlNDYw
ZGQ5Li41NDFjMjNmNWM2ZDAwYWViOWU1Y2U1NTFjOWY1OGE5MGE2MTEwMWU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2luZ2xlVGhyZWFkUHJveHlUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2luZ2xlVGhyZWFkUHJveHlU
ZXN0LmNwcApAQCAtNzAsOSArNzAsOSBAQCBwdWJsaWM6CiAgICAgICAgIGVuZFRlc3RBZnRlckRl
bGF5KGNlaWwoQ0NTaW5nbGVUaHJlYWRQcm94eTo6YW5pbWF0aW9uVGltZXJEZWxheSgpICogMTAw
MCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y3JlYXRlQ29udGV4dCgpIE9WRVJSSURFCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkdyYXBo
aWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVu
dEZhaWxzKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtl
Q3VycmVudEZhaWxzKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKQEAg
LTExNyw5ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIGVuZFRlc3RBZnRlckRlbGF5KGNlaWwo
Q0NTaW5nbGVUaHJlYWRQcm94eTo6YW5pbWF0aW9uVGltZXJEZWxheSgpICogMTAwMCkpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29u
dGV4dCgpIE9WRVJSSURFCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4
dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIHJldHVybiBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0
KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZh
aWxzKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKaW5kZXggNTdiNmRmMTRl
MDc1OGMxMmI1YTlhMzRhMjExMWFkM2E4YzJlMWEyYy4uNDBkM2NlNWU2ZmY5NDNiY2QwZTk0ZTc1
YWIzMGJlNmM4MDZlZGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RocmVhZGVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RocmVhZGVkVGVzdC5jcHAKQEAgLTEwMywxNCArMTAzLDkgQEAgQ29tcG9zaXRvckZha2VXZWJH
cmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmc6OkNvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3MKIHsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gVGVzdEhvb2tzOjpj
cmVhdGVDb250ZXh0KCkKK1Bhc3NPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IFRlc3RIb29r
czo6Y3JlYXRlQ29udGV4dCgpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cnM7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgd2ViQXR0cnM7Ci0g
ICAgd2ViQXR0cnMuYWxwaGEgPSBhdHRycy5hbHBoYTsKLQotICAgIE93blB0cjxXZWJHcmFwaGlj
c0NvbnRleHQzRD4gd2ViQ29udGV4dCA9IENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0RXaXRoVGV4dHVyZVRyYWNraW5nOjpjcmVhdGUod2ViQXR0cnMpOwotICAgIHJldHVybiBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0
KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlU
b0hvc3RXaW5kb3cpOworICAgIHJldHVybiBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEV2l0aFRleHR1cmVUcmFja2luZzo6Y3JlYXRlKFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzKCkpOwogfQogCiBQYXNzT3duUHRyPE1vY2tMYXllclRyZWVIb3N0SW1wbD4gTW9ja0xh
eWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDTGF5
ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGll
bnQpCkBAIC0yMzIsNyArMjI3LDcgQEAgcHVibGljOgogICAgICAgICBtX3Rlc3RIb29rcy0+YXBw
bHlTY3JvbGxBbmRTY2FsZShzY3JvbGxEZWx0YSwgc2NhbGUpOwogICAgIH0KIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dDNEKCkgT1ZFUlJJ
REUKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNv
bnRleHQzRCgpIE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gbV90ZXN0SG9va3MtPmNy
ZWF0ZUNvbnRleHQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGhyZWFkZWRUZXN0LmgKaW5kZXggYzBjYTQ0ZmVlN2IwMWI4NDM5MjAzYzYxZGJhNDJhNWYxMTk5
NmEwNS4uNzU4ODZlZmZlZTI1YTY3ZmI4OTc2NWY4MjE4MTUwNDFmZTI3YTE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuaApAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91
YmxlIHRpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChk
b3VibGUgdGltZSkgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpOwogfTsKIAogY2xhc3Mg
VGltZW91dFRhc2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Nh
bnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwCmluZGV4IGJhY2Y4NzNmY2FmMTYyNDk0ZTE0ZDVh
NGRhNDYzYWZjZDQ3ZjJjOGYuLjMwNDUwZGJjNDliZmU2ZGUxNjhhMDU2NjYzNzI3OWRkZDMyZmNj
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXll
ckJyaWRnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFz
MkRMYXllckJyaWRnZVRlc3QuY3BwCkBAIC03NCwxNSArNzQsMTEgQEAgY2xhc3MgQ2FudmFzMkRM
YXllckJyaWRnZVRlc3QgOiBwdWJsaWMgVGVzdCB7CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmdWxs
TGlmZWN5Y2xlVGVzdChUaHJlYWRNb2RlIHRocmVhZE1vZGUsIERlZmVycmFsTW9kZSBkZWZlcnJh
bE1vZGUpCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
czsKLQotICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1haW5Db250ZXh0ID0gR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4
dChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gY2NNYWluQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChtYWluQ29u
dGV4dCk7Ci0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gaW1wbENvbnRleHQgPSBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250
ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICAgICAgUmVmUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBjY0ltcGxDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGltcGxD
b250ZXh0KTsKKyAgICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNv
bnRleHQoYWRvcHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlck9mZnNjcmVlbik7CisgICAgICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NJ
bXBsQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgTW9j
a0NhbnZhc0NvbnRleHQpKTsKIAogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgbWFpbk1vY2sg
PSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtYWluQ29udGV4dC5nZXQoKSkpOwotICAg
ICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZh
c0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0Nv
bnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOworICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYg
aW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihjY0ltcGxDb250ZXh0
LT5jb250ZXh0M0QoKSk7CiAKICAgICAgICAgTW9ja1dlYlRleHR1cmVVcGRhdGVyIHVwZGF0ZXI7
CiAKQEAgLTE1MSw3ICsxNDcsNyBAQCBURVNUKENhbnZhczJETGF5ZXJCcmlkZ2VUZXN0MiwgdGVz
dENsZWFyQ2xpZW50KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
OwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRv
cHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
RGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbWFp
bkNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4dCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiAgICAgT3duUHRyPENhbnZh
czJETGF5ZXJCcmlkZ2U+IGJyaWRnZSA9IENhbnZhczJETGF5ZXJCcmlkZ2U6OmNyZWF0ZShtYWlu
Q29udGV4dC5nZXQoKSwgSW50U2l6ZSgxMDAsIDEwMCksIERlZmVycmVkLCAxKTsKICAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBicmlkZ2UtPmxheWVyKCk7CiAgICAgYnJpZGdlLmNs
ZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NvbXBvc2l0
b3JGYWtlR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5MzdiNjJkNGM3NjJmYWJmYWM4NTkxMTY1NmUxYzA4MzY5MDg4OTg3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDb21wb3NpdG9yRmFr
ZUdyYXBoaWNzQ29udGV4dDNEX2gKLSNkZWZpbmUgQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRl
eHQzRF9oCi0KLSNpbmNsdWRlICJDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0NvbnRleHQz
RChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKLXsKLSAgICBXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIHdlYkF0dHJzOwotICAgIHdlYkF0dHJzLmFs
cGhhID0gYXR0cnMuYWxwaGE7Ci0KLSAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRD4gd2ViQ29udGV4dCA9IFdlYktpdDo6Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKHdlYkF0dHJzKTsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVh
c2UoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RHJhd2luZ0J1ZmZlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0RyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyN2VmNDkyODFiZGY5NDM4NWQxZmNhM2IwMDAwMDkxM2Y4MmEzNjMyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRHJhd2luZ0J1ZmZlckNocm9taXVtVGVzdC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCi0KLSNpbmNsdWRlICJDb21wb3NpdG9yRmFrZUdyYXBo
aWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPGdt
b2NrL2dtb2NrLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1uYW1lc3BhY2UgewotCi1URVNU
KERyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUZvcm1hdHMpCi17Ci0gICAgUmVmUHRy
PERyYXdpbmdCdWZmZXI+IGJ1ZmZlcjsKLQotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzIGFscGhhQXR0cnM7Ci0gICAgYWxwaGFBdHRycy5hbHBoYSA9IHRydWU7Ci0gICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgb3BhcXVlQXR0cnM7Ci0gICAgb3BhcXVlQXR0cnMuYWxw
aGEgPSBmYWxzZTsKLQotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gYWxwaGFDb250ZXh0
ID0gY3JlYXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0NvbnRleHQzRChhbHBoYUF0dHJzKTsKLSAg
ICBFWFBFQ1RfVFJVRShhbHBoYUNvbnRleHQpOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gb3BhcXVlQ29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0Qo
b3BhcXVlQXR0cnMpOwotICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRleHQpOwotCi0gICAgYnVm
ZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgp
LCBEcmF3aW5nQnVmZmVyOjpQcmVzZXJ2ZSwgRHJhd2luZ0J1ZmZlcjo6QWxwaGEpOwotICAgIEVY
UEVDVF9GQUxTRShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwotICAgIGJ1ZmZl
ciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShhbHBoYUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwg
RHJhd2luZ0J1ZmZlcjo6RGlzY2FyZCwgRHJhd2luZ0J1ZmZlcjo6QWxwaGEpOwotICAgIEVYUEVD
VF9GQUxTRShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwotCi0gICAgYnVmZmVy
ID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG9wYXF1ZUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwg
RHJhd2luZ0J1ZmZlcjo6UHJlc2VydmUsIERyYXdpbmdCdWZmZXI6Ok9wYXF1ZSk7Ci0gICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgpKTsKLSAgICBidWZmZXIg
PSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBE
cmF3aW5nQnVmZmVyOjpEaXNjYXJkLCBEcmF3aW5nQnVmZmVyOjpPcGFxdWUpOwotICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xh
eWVyVHJlZUhvc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUND
TGF5ZXJUcmVlSG9zdENsaWVudC5oCmluZGV4IDZhYjYxNmQzYzhhNzk3MTMyZWU0ZWZjZDg3MWI4
OTc5YzA3YjJmNzkuLjg0MjljZjc0NTc1MmM1Mjg2MjNmOTcxY2M1MGU3NDFkZWE1OTJkMTEgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9z
dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKLSNpbmNsdWRlICJDb21wb3NpdG9yRmFr
ZUdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEwICszOSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90
b25pY0ZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29u
c3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREUgeyB9Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0M0Qo
KSBPVkVSUklERQorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEPiBjcmVhdGVDb250ZXh0M0QoKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgICAgIHJldHVybiBjcmVhdGVDb21w
b3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4dDNEKGF0dHJzKTsKKyAgICAgICAgV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKKyAgICAgICAgcmV0dXJuIFdlYktp
dDo6Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSBPVkVSUklERSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgd2lsbENvbW1pdCgpIE9WRVJSSURFIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAKaW5k
ZXggNzFjYjhiYWIxZWQ4OGM1ZWQ3NDBmOGEwYTk0OTc5YTA5MzIyZTdlZC4uNzIwNjMwZTE3NTM0
ZjJjNjMxZDMwZDE3MWM0Zjg3NDFiMGI1MjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9GYWtlR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwCkBAIC0y
NSwxMCArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgotCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAKICNpbmNsdWRlIDxnbW9jay9n
bW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0zNiw1NyArMzMsNiBAQAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1jbGFzcyBG
cmFtZUNvdW50aW5nQ29udGV4dCA6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qgewot
cHVibGljOgotICAgIEZyYW1lQ291bnRpbmdDb250ZXh0KCkgOiBtX2ZyYW1lKDApIHsgfQotCi0g
ICAgLy8gVGhpcyBtZXRob2Qgd291bGQgbm9ybWFsbHkgZG8gYSBnbFN3YXBCdWZmZXJzIHVuZGVy
IHRoZSBob29kLgotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVGV4dHVyZSgpIHsgbV9mcmFtZSsr
OyB9Ci0KLSAgICBpbnQgZnJhbWVDb3VudCgpIHsgcmV0dXJuIG1fZnJhbWU7IH0KLQotcHJpdmF0
ZToKLSAgICBpbnQgbV9mcmFtZTsKLX07Ci0KLVRFU1QoRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVz
dCwgQ2FuT3ZlcnJpZGVNYW51YWxseSkKLXsKLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXRlcyBhdHRyczsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0
KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICBGcmFtZUNvdW50aW5nQ29udGV4dCYg
bW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8RnJhbWVDb3VudGluZ0NvbnRleHQqPihHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0Lmdl
dCgpKSk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKLSAgICAgICAgY29u
dGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKLSAgICAgICAgY29udGV4dC0+cHJlcGFyZVRl
eHR1cmUoKTsKLSAgICB9Ci0gICAgY29udGV4dC0+ZmluaXNoKCk7Ci0KLSAgICBFWFBFQ1RfRVEo
MTAsIG1vY2tDb250ZXh0LmZyYW1lQ291bnQoKSk7Ci19Ci0KLQotY2xhc3MgR01vY2tDb250ZXh0
IDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7Ci1wdWJsaWM6Ci0gICAgTU9DS19N
RVRIT0QwKGdldEVycm9yLCBXR0MzRGVudW0oKSk7Ci19OwotCi1URVNUKEZha2VHcmFwaGljc0Nv
bnRleHQzRFRlc3QsIENhblVzZUdNb2NrKQotewotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRl
eHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
ckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICBHTW9ja0NvbnRleHQmIG1vY2tDb250ZXh0ID0g
KnN0YXRpY19jYXN0PEdNb2NrQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0
cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKLQotICAgIEVYUEVDVF9D
QUxMKG1vY2tDb250ZXh0LCBnZXRFcnJvcigpKQotICAgICAgICAgICAgLldpbGxSZXBlYXRlZGx5
KHRlc3Rpbmc6OlJldHVybigzMTQpKTsKLQotICAgIC8vIEl0J3MgT0sgdG8gY2FsbCBtZXRob2Rz
IEdNb2NrIGRvZXNuJ3Qga25vdyBhYm91dC4KLSAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKLQotICAgIC8vIENoZWNrIHRoYXQgdGhlIG1vY2tlZCBtZXRob2QgaXMgcmV0dXJuaW5n
IGFzIGludGVuZGVkLgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKLSAgICAgICAg
RVhQRUNUX0VRKChpbnQpY29udGV4dC0+Z2V0RXJyb3IoKSwgMzE0KTsKLX0KLQogY2xhc3MgQ29u
dGV4dFRoYXRDb3VudHNNYWtlQ3VycmVudHMgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEIHsKIHB1YmxpYzoKICAgICBDb250ZXh0VGhhdENvdW50c01ha2VDdXJyZW50cygpIDogbV9t
YWtlQ3VycmVudENvdW50KDApIHsgfQpAQCAtMTAxLDIxICs0NywxMCBAQCBwcml2YXRlOgogfTsK
IAogCi1URVNUKEZha2VHcmFwaGljc0NvbnRleHQzRFRlc3QsIENvbnRleHRGb3JUaGlzVGhyZWFk
U2hvdWxkTm90TWFrZUN1cnJlbnQpCi17Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnM7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChh
ZG9wdFB0cihuZXcgQ29udGV4dFRoYXRDb3VudHNNYWtlQ3VycmVudHMoKSksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgRVhQRUNUX1RSVUUoY29u
dGV4dCk7Ci0gICAgQ29udGV4dFRoYXRDb3VudHNNYWtlQ3VycmVudHMmIG1vY2tDb250ZXh0ID0g
KnN0YXRpY19jYXN0PENvbnRleHRUaGF0Q291bnRzTWFrZUN1cnJlbnRzKj4oR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkp
OwotICAgIEVYUEVDVF9FUSgwLCBtb2NrQ29udGV4dC5tYWtlQ3VycmVudENvdW50KCkpOwotfQot
Ci1URVNUKEZha2VHcmFwaGljc0NvbnRleHQzRFRlc3QsIENvbnRleHRGb3JBbm90aGVyVGhyZWFk
U2hvdWxkTm90TWFrZUN1cnJlbnQpCitURVNUKEZha2VHcmFwaGljc0NvbnRleHQzRFRlc3QsIENv
bnRleHRDcmVhdGlvblNob3VsZE5vdE1ha2VDdXJyZW50KQogewotICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJv
bVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IENvbnRleHRUaGF0Q291bnRzTWFrZUN1cnJlbnRzKCkp
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgIE93
blB0cjxDb250ZXh0VGhhdENvdW50c01ha2VDdXJyZW50cz4gY29udGV4dChhZG9wdFB0cihuZXcg
Q29udGV4dFRoYXRDb3VudHNNYWtlQ3VycmVudHMpKTsKICAgICBFWFBFQ1RfVFJVRShjb250ZXh0
KTsKLSAgICBDb250ZXh0VGhhdENvdW50c01ha2VDdXJyZW50cyYgbW9ja0NvbnRleHQgPSAqc3Rh
dGljX2Nhc3Q8Q29udGV4dFRoYXRDb3VudHNNYWtlQ3VycmVudHMqPihHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7Ci0g
ICAgRVhQRUNUX0VRKDAsIG1vY2tDb250ZXh0Lm1ha2VDdXJyZW50Q291bnQoKSk7CisgICAgRVhQ
RUNUX0VRKDAsIGNvbnRleHQtPm1ha2VDdXJyZW50Q291bnQoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCmluZGV4IDQxMGM0NWQ3OGJlN2E4YWNlMTlkNTE4YmI1YjY3NWUzNjkwYTA0MDIuLjE5
NzlkOTM1YzFhYjJiZmIwOTJkNTdkOGM0NTk1YzFkNzg3MDJlMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5o
IgogCiAjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiQ29tcG9z
aXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXIuaCIKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgiCiAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFw
aGljc0NvbnRleHQzRC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNjcsMTAgKzY4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBw
YWdlU2NhbGUpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlQ29udGV4dDNEKCkgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCiAgICAg
ewotICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKLSAgICAgICAg
cmV0dXJuIGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpOworICAg
ICAgICByZXR1cm4gQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdl
YkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxDb21taXQoKSBPVkVSUklERSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IGU0NjUwOTYxYjk4NDZiYTE5ZDIzMDA5YTkzYjM0MWQ1ZmZjOTdkY2YuLmNmZGNkYzE1NmE3
MmI2OWU5OGM2MTZhZGVhYWMyNDE4Y2YyYjY2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkNDVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9z
aXRvci5oIgogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NldHRp
bmdzLmgiCkBAIC0xMDksNyArMTA4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewogcHVibGljOgot
ICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSA6IExheWVyUmVuZGVyZXJDaHJv
bWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQorICAgIEZha2VM
YXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250
ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKSB7IH0KIAogICAgIC8vIExheWVyUmVuZGVyZXJDaHJv
bWl1bSBtZXRob2RzLgogCkBAIC0xMjMsOSArMTIyLDggQEAgcHJvdGVjdGVkOgogICAgIExheWVy
UmVuZGVyZXJDaHJvbWl1bVRlc3QoKQogICAgICAgICA6IG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVy
WWVzKDEsIHRydWUpCiAgICAgICAgICwgbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObygxLCBmYWxz
ZSkKLSAgICAgICAgLCBtX2NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRnJhbWVDb3VudGluZ01l
bW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
ckRpcmVjdGx5VG9Ib3N0V2luZG93KSkKLSAgICAgICAgLCBtX21vY2tDb250ZXh0KCpzdGF0aWNf
Y2FzdDxGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0Kj4oR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0
LmdldCgpKSkpCi0gICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVu
dCwgbV9jb250ZXh0LnJlbGVhc2UoKSkKKyAgICAgICAgLCBtX2NvbnRleHQoYWRvcHRQdHIobmV3
IEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQpKQorICAgICAgICAs
IG1fbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtX21vY2tDbGllbnQsIG1fY29udGV4dC5nZXQoKSkK
ICAgICB7CiAgICAgfQogCkBAIC0xNDgsOCArMTQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkdy
YXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllczsKICAgICBX
ZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24gbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObzsKIAot
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwotICAgIEZyYW1lQ291bnRp
bmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQmIG1fbW9ja0NvbnRleHQ7CisgICAgT3du
UHRyPEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQ+IG1fY29udGV4
dDsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtX21vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bSBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bTsKICAgICBDQ1Njb3BlZFNl
dHRpbmdzIG1fc2NvcGVkU2V0dGluZ3M7CkBAIC0xNjAsMTIgKzE1NywxMiBAQCBwcm90ZWN0ZWQ6
CiAvLyBFeHBlY3RlZDogaXQgZG9lcyBub3RoaW5nLgogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyWWVzV2hlbkl0QWxyZWFkeUV4aXN0c1Nob3VsZERv
Tm90aGluZykKIHsKLSAgICBtX21vY2tDb250ZXh0LnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdn
ZXN0SGF2ZUJhY2tidWZmZXJZZXMpOworICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlv
bihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllcyk7CiAgICAgRVhQRUNUX0VRKDAsIG1fbW9ja0Ns
aWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG1f
bGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKICAgICBz
d2FwQnVmZmVycygpOwotICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDb250ZXh0LmZyYW1lQ291bnQo
KSk7CisgICAgRVhQRUNUX0VRKDEsIG1fY29udGV4dC0+ZnJhbWVDb3VudCgpKTsKIH0KIAogLy8g
VGVzdCBMYXllclJlbmRlcmVyQ2hyb21pdW0gZGlzY2FyZEZyYW1lYnVmZmVyIGZ1bmN0aW9uYWxp
dHk6CkBAIC0xNzQsNyArMTcxLDcgQEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qs
IFN1Z2dlc3RCYWNrYnVmZmVyWWVzV2hlbkl0QWxyZWFkeUV4aXN0c1Nob3VsZEQKIFRFU1RfRihM
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2Fy
ZEJhY2tidWZmZXJBbmREYW1hZ2VSb290TGF5ZXJXaGlsZU5vdFZpc2libGUpCiB7CiAgICAgbV9s
YXllclJlbmRlcmVyQ2hyb21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9tb2NrQ29udGV4
dC5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIG1f
Y29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsK
ICAgICBFWFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3Vu
dCgpKTsKICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVm
ZmVyRGlzY2FyZGVkKCkpOwogfQpAQCAtMTg1LDcgKzE4Miw3IEBAIFRFU1RfRihMYXllclJlbmRl
cmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2FyZEJhY2tidWZm
ZXJBbmRECiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZm
ZXJOb0RvTm90aGluZ1doZW5WaXNpYmxlKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVt
LnNldFZpc2libGUodHJ1ZSk7Ci0gICAgbV9tb2NrQ29udGV4dC5zZXRNZW1vcnlBbGxvY2F0aW9u
KG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxs
b2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9t
b2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1RfRkFM
U0UobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0K
QEAgLTE5NywxMSArMTk0LDExIEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBT
dWdnZXN0QmFja2J1ZmZlck5vRG9Ob3RoaW5nV2hlblZpc2libGUpCiBURVNUX0YoTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0U2hv
dWxkRG9Ob3RoaW5nKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUo
ZmFsc2UpOwotICAgIG1fbW9ja0NvbnRleHQuc2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RI
YXZlQmFja2J1ZmZlck5vKTsKKyAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9z
dWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5z
ZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJl
bmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIAotICAgIG1fbW9ja0Nv
bnRleHQuc2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAg
ICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJO
byk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdl
Q291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFt
ZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KQEAgLTIxMiw3ICsyMDksNyBAQCBURVNUX0YoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0
U2hvdWxkRG9ObwogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIERpc2NhcmRlZEJh
Y2tidWZmZXJJc1JlY3JlYXRlZEZvclNjb3BlRHVyYXRpb24pCiB7CiAgICAgbV9sYXllclJlbmRl
cmVyQ2hyb21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9tb2NrQ29udGV4dC5zZXRNZW1v
cnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIG1fY29udGV4dC0+
c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBF
Q1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkp
OwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNv
dW50KCkpOwogCkBAIC0yMjEsMTMgKzIxOCwxMyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdCwgRGlzY2FyZGVkQmFja2J1ZmZlcklzUmVjcmVhdGVkRm9yU2NvcGVEdXJhdGlvbgog
ICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlz
Y2FyZGVkKCkpOwogCiAgICAgc3dhcEJ1ZmZlcnMoKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9tb2Nr
Q29udGV4dC5mcmFtZUNvdW50KCkpOworICAgIEVYUEVDVF9FUSgxLCBtX2NvbnRleHQtPmZyYW1l
Q291bnQoKSk7CiB9CiAKIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBGcmFtZWJ1
ZmZlckRpc2NhcmRlZEFmdGVyUmVhZGJhY2tXaGVuTm90VmlzaWJsZSkKIHsKICAgICBtX2xheWVy
UmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKGZhbHNlKTsKLSAgICBtX21vY2tDb250ZXh0LnNl
dE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CisgICAgbV9jb250
ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOwogICAg
IEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJk
ZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFt
YWdlQ291bnQoKSk7CiAKQEAgLTMxMSw3ICszMDgsOCBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNOb3RNYWtlU3luY2hyb25vdXNDYWxscykKIHsK
ICAgICBDQ1Njb3BlZFNldHRpbmdzIHNjb3BlZFNldHRpbmdzOwogICAgIEZha2VDQ1JlbmRlcmVy
Q2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJl
bmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZvcmJpZFN5bmNo
cm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpKTsKKyAgICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoYWRv
cHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpKTsKKyAgICBGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4
dC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlh
bGl6ZSgpKTsKIH0KQEAgLTM1Myw3ICszNTEsOCBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhRdWlja2x5TG9zdENvbnRleHREb2VzTm90QXNzZQog
ewogICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7CiAgICAgRmFrZUNDUmVuZGVy
ZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVy
UmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTG9zZUNvbnRl
eHRPbkZpcnN0R2V0Q29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRv
SG9zdFdpbmRvdykpOworICAgIE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChh
ZG9wdFB0cihuZXcgTG9zZUNvbnRleHRPbkZpcnN0R2V0Q29udGV4dCkpOworICAgIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250
ZXh0LmdldCgpKTsKIAogICAgIGxheWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCk7CiB9
CkBAIC0zNzMsNyArMzcyLDggQEAgcHVibGljOgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0MiwgaW5pdGlhbGl6YXRpb25XaXRob3V0R3B1TWVtb3J5TWFuYWdlckV4dGVuc2lvblN1cHBv
cnRTaG91bGREZWZhdWx0VG9Ob25aZXJvQWxsb2NhdGlvbikKIHsKICAgICBGYWtlQ0NSZW5kZXJl
ckNsaWVudCBtb2NrQ2xpZW50OwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJS
ZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBDb250ZXh0VGhh
dERvZXNOb3RTdXBwb3J0TWVtb3J5TWFuYWdtZW50RXh0ZW5zaW9ucyksIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOworICAgIE93blB0cjxXZWJHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dChhZG9wdFB0cihuZXcgQ29udGV4dFRoYXREb2VzTm90U3VwcG9y
dE1lbW9yeU1hbmFnbWVudEV4dGVuc2lvbnMpKTsKKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CiAK
ICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpOwogCkBAIC0zOTgsOCArMzk4
LDggQEAgcHJpdmF0ZToKIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIG9wYXF1ZUJh
Y2tncm91bmQpCiB7CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBDbGVh
ckNvdW50aW5nQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdyk7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hy
b21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQpOworICAgIE93blB0cjxDbGVhckNvdW50aW5nQ29u
dGV4dD4gY29udGV4dChhZG9wdFB0cihuZXcgQ2xlYXJDb3VudGluZ0NvbnRleHQpKTsKKyAgICBG
YWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVu
dCwgY29udGV4dC5nZXQoKSk7CiAKICAgICBtb2NrQ2xpZW50LnJvb3RSZW5kZXJQYXNzKCktPnNl
dEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChmYWxzZSk7CiAKQEAgLTQxMiwxNyArNDEyLDE3IEBA
IFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIG9wYXF1ZUJhY2tncm91bmQpCiAgICAg
Ly8gT24gREVCVUcgYnVpbGRzLCByZW5kZXIgcGFzc2VzIHdpdGggb3BhcXVlIGJhY2tncm91bmQg
Y2xlYXIgdG8gYmx1ZSB0bwogICAgIC8vIGVhc2lseSBzZWUgcmVnaW9ucyB0aGF0IHdlcmUgbm90
IGRyYXduIG9uIHRoZSBzY3JlZW4uCiAjaWYgZGVmaW5lZChOREVCVUcpCi0gICAgRVhQRUNUX0VR
KDAsIHN0YXRpY19jYXN0PENsZWFyQ291bnRpbmdDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpLT5jbGVh
ckNvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCBjb250ZXh0LT5jbGVhckNvdW50KCkpOwogI2Vs
c2UKLSAgICBFWFBFQ1RfRVEoMSwgc3RhdGljX2Nhc3Q8Q2xlYXJDb3VudGluZ0NvbnRleHQqPihH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChjb250
ZXh0LmdldCgpKSktPmNsZWFyQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKDEsIGNvbnRleHQtPmNs
ZWFyQ291bnQoKSk7CiAjZW5kaWYKIH0KIAogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0
MiwgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogewogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1v
Y2tDbGllbnQ7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChh
ZG9wdFB0cihuZXcgQ2xlYXJDb3VudGluZ0NvbnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0g
bGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0KTsKKyAgICBPd25QdHI8
Q2xlYXJDb3VudGluZ0NvbnRleHQ+IGNvbnRleHQoYWRvcHRQdHIobmV3IENsZWFyQ291bnRpbmdD
b250ZXh0KSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hy
b21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkpOwogCiAgICAgbW9ja0NsaWVudC5yb290
UmVuZGVyUGFzcygpLT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQodHJ1ZSk7CiAKQEAgLTQz
Miw1ICs0MzIsNSBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCB0cmFuc3BhcmVu
dEJhY2tncm91bmQpCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmRyYXdSZW5kZXJQYXNzKG1v
Y2tDbGllbnQucm9vdFJlbmRlclBhc3MoKSwgRmxvYXRSZWN0KCkpOwogICAgIGxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5maW5pc2hEcmF3aW5nRnJhbWUoKTsKIAotICAgIEVYUEVDVF9FUSgxLCBzdGF0
aWNfY2FzdDxDbGVhckNvdW50aW5nQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKS0+Y2xlYXJDb3VudCgp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgY29udGV4dC0+Y2xlYXJDb3VudCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKaW5kZXgg
ZDcxYjhjZTQ1YTNlYTMwMzI0NDJmODY0ODk1ZDQ1MzBkZTZhN2Q1Ni4uMmM5MGM0ZWQ1YWYxZmYw
OWExZGU4NGZiZmViZTZhM2NmODJiZGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKQEAgLTUyLDkgKzUyLDggQEAgcHVibGlj
OgogVEVTVChUZXh0dXJlQ29waWVyVGVzdCwgdGVzdERyYXdBcnJheXNDb3B5KQogewogICAgIEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IE1vY2tDb250ZXh0KCkpLCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIE1vY2tDb250
ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxNb2NrQ29udGV4dCo+KEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkp
KTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGUzRChjb250ZXh0KTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgTW9j
a0NvbnRleHQpKTsKKyAgICBNb2NrQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8
TW9ja0NvbnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKIAogICAgIHsKICAgICAgICAg
SW5TZXF1ZW5jZSBzZXF1ZW5jZTsKQEAgLTc5LDcgKzc4LDcgQEAgVEVTVChUZXh0dXJlQ29waWVy
VGVzdCwgdGVzdERyYXdBcnJheXNDb3B5KQogICAgIGludCBzb3VyY2VUZXh0dXJlSWQgPSAxOwog
ICAgIGludCBkZXN0VGV4dHVyZUlkID0gMjsKICAgICBJbnRTaXplIHNpemUoMjU2LCAxMjgpOwot
ICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IGNvcGllcihBY2NlbGVyYXRlZFRl
eHR1cmVDb3BpZXI6OmNyZWF0ZShjb250ZXh0KSk7CisgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKGNjQ29u
dGV4dC0+Y29udGV4dDNEKCkpKTsKICAgICBjb3BpZXItPmNvcHlUZXh0dXJlKGNjQ29udGV4dC5n
ZXQoKSwgc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVyZUlkLCBzaXplKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyVGVzdC5jcHAKaW5kZXggNGIwZGZkMDU5MjE2OWM3ZGJiMjEwM2RhMTgwOWM1YjNk
MDU5NTg5MS4uMzlhNTdkMTMxZmZhNjQ2ODg5YmM1MjNlNTU1MTE3MTA2M2JlOTk2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rocm90dGxlZFRl
eHR1cmVVcGxvYWRlclRlc3QuY3BwCkBAIC02NSwxMSArNjUsMTAgQEAgcHJpdmF0ZToKIFRFU1Qo
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyVGVzdCwgSXNCdXN5KQogewogICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhR
dWVyeVRlc3RpbmcoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdyk7Ci0gICAgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGluZyYgZmFr
ZUNvbnRleHQgPSAqc3RhdGljX2Nhc3Q8RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5
VGVzdGluZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29u
dGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKLSAgICBPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyPiB1cGxvYWRlciA9IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKGNvbnRleHQs
IDIpOworICAgIE93blB0cjxGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5n
PiBmYWtlQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1
ZXJ5VGVzdGluZykpOworICAgIE93blB0cjxUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IHVwbG9h
ZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoZmFrZUNvbnRleHQuZ2V0KCks
IDIpOwogCi0gICAgZmFrZUNvbnRleHQuc2V0UmVzdWx0QXZhaWxhYmxlKDApOworICAgIGZha2VD
b250ZXh0LT5zZXRSZXN1bHRBdmFpbGFibGUoMCk7CiAgICAgRVhQRUNUX0ZBTFNFKHVwbG9hZGVy
LT5pc0J1c3koKSk7CiAgICAgdXBsb2FkZXItPmJlZ2luVXBsb2FkcygpOwogICAgIHVwbG9hZGVy
LT5lbmRVcGxvYWRzKCk7CkBAIC03OCw3ICs3Nyw3IEBAIFRFU1QoVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyVGVzdCwgSXNCdXN5KQogICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7CiAgICAgRVhQ
RUNUX1RSVUUodXBsb2FkZXItPmlzQnVzeSgpKTsKIAotICAgIGZha2VDb250ZXh0LnNldFJlc3Vs
dEF2YWlsYWJsZSgxKTsKKyAgICBmYWtlQ29udGV4dC0+c2V0UmVzdWx0QXZhaWxhYmxlKDEpOwog
ICAgIEVYUEVDVF9GQUxTRSh1cGxvYWRlci0+aXNCdXN5KCkpOwogICAgIHVwbG9hZGVyLT5iZWdp
blVwbG9hZHMoKTsKICAgICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5k
ZXggOTQ5NWU3MDZhNmJiMzdiNTRkYjRmZjM3ZTUyNTZmMzFmZmViM2NkYi4uMDRiM2MzODJlYmY1
ZDczNDlmZmYzNzJjYWMxMWUyNWI5ODNiMjNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC02NzMsOCAr
NjczLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBh
cmUpCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgZmFrZUFsbG9jYXRvcjsKICAgICBGYWtlVGV4
dHVyZUNvcGllciBmYWtlQ29waWVyOwogICAgIEZha2VUZXh0dXJlVXBsb2FkZXIgZmFrZVVwbG9h
ZGVyOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGNyZWF0ZUNvbXBv
c2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMo
KSk7Ci0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlM0QoY29udGV4dCk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoV2ViS2l0OjpDb21wb3Np
dG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcygpKSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgx
MDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149203</attachid>
            <date>2012-06-24 13:41:29 -0700</date>
            <delta_ts>2012-06-25 17:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89700-20120624134129.patch</filename>
            <type>text/plain</type>
            <size>190892</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZWNmMTBiM2UwM2Y3
NzZjZjM4OTRmNmQxOWMyNDI0Zjk2NzQ5Y2RmLi4wM2ViODFmYzliODZjZjU4MjlmOTEzYmU4NTI0
MjdmZmZlNWE3NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0yNCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVXNlIFdlYkdyYXBoaWNzQ29udGV4dDNEIGluIGNvbXBvc2l0b3IgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzAwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHV0cyBhbGwg
Y2FsbGJhY2sgZGVzdHJ1Y3RvcnMgaW4gcHJvdGVjdGVkIHNlY3Rpb24gYW5kIHJlbW92ZXMgb2Jz
b2xldGUgbWVtb3J5IGNhbGxiYWNrIHNpZ25hdHVyZS4KKworICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViR3JhcGhpY3NDb250ZXh0
TG9zdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViR3JhcGhpY3NTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlV
TSk6CisgICAgICAgIChXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tD
SFJPTUlVTSk6CisKIDIwMTItMDYtMjIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjEwNjQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYjk3MmIzMDBlZWFiNWZkMWRkODdjM2RkYmE1MGIyZjk5NDM1MWVmMi4uZWZlZjNhYzg2MTVk
YjVjZjhmMzM5ZjU4ZjdhMGU1OWJkNjJkOWY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxOSBA
QAorMjAxMi0wNi0yMiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gVXNlIFdlYkdyYXBoaWNzQ29udGV4dDNEIGluIGNvbXBvc2l0b3Ig
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBjb252ZXJ0cyB0aGUgY29tcG9zaXRvciBpbXBsZW1lbnRhdGlvbiBmcm9tIHVz
aW5nIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEIHRvIHVzaW5nIHRoZSBQbGF0Zm9ybS1wcm92
aWRlZAorICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRC4gVGhpcyByZW1vdmVzIHNldmVyYWwg
dW5uZWNlc3NhcnkgbGF5ZXJzIG9mIGluZGlyZWN0aW9uL3dyYXBwaW5nIGFuZCBjdXRzIGRvd24g
dGhlCisgICAgICAgIGNvbXBvc2l0b3IncyBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbmNpZXMuIEdy
YXBoaWNzQ29udGV4dDNELmggaXMgc3RpbGwgd2lkZWx5IHVzZWQgdG8gcHJvdmlkZSBHTCBlbnVt
IHZhbHVlcy4KKyAgICAgICAgTW9zdCBvZiB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IG1lY2hhbmlj
YWwgLSBjaGFuZ2luZyB0eXBlIG5hbWVzIGFuZCB0aGUgbGlrZS4KKworICAgICAgICBPd25lcnNo
aXAgaXMgY2hhbmdlZCBhIGJpdC4gSW5zdGVhZCBvZiBtdWx0aXBsZSBjb21wb25lbnRzIGhvbGRp
bmcgcmVmZXJlbmNlcyB0byB0aGUgY29tcG9zaXRvcidzIGNvbnRleHQsIHRoZQorICAgICAgICBj
b250ZXh0IGlzIG5vdyBvd25lZCBieSB0aGUgQ0NHcmFwaGljc0NvbnRleHQsIHdoaWNoIGlzIG5v
dyBvd25lZCBkaXJlY3RseSBieSBDQ0xheWVyVHJlZUhvc3RJbXBsLgorICAgICAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsIGFsc28gaGFzIG93bmVyc2hpcCBvZiBpdHMgQ0NSZW5kZXJlciAoTGF5ZXJS
ZW5kZXJlckNocm9taXVtIGluIDNEIG1vZGUpIGFuZCBwYXNzZXMgYQorICAgICAgICBub24tb3du
aW5nIHBvaW50ZXIgZG93biB0byB0aGUgQ0NSZW5kZXJlci4KKworICAgICAgICBFeHRlbnNpb24g
Y2hlY2tpbmcgaXMgYSBiaXQgZGlmZmVyZW50LiBUaGUgY29tcG9zaXRvciBkb2VzIG5vdCAoYW5k
IG5ldmVyIGhhcykgdXNlZCBleHRlbnNpb25zIHByb3ZpZGVkIGJ5CisgICAgICAgIFdlYkdMJ3Mg
cmVxdWVzdC9lbnN1cmUgbWVjaGFuaXNtLiBJdCBzaW1wbHkgY2hlY2tzIGZvciB0aGUgZXhpc3Rl
bmNlIG9mIGV4dGVuc2lvbnMgaXQgbmVlZHMgaW4gdGhlIEdMX0VYVEVOU0lPTlMKKyAgICAgICAg
c3RyaW5nLgorCisgICAgICAgIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciBoYWQgdG8gYmUgcGF0Y2hlZCBhcyB3ZWxsLCBzaW5jZSBpdCB3YXMgZ3JhYmJpbmcg
YSBHckNvbnRleHQgb2ZmCisgICAgICAgIG9mIHRoZSBjb21wb3NpdG9yJ3MgR3JhcGhpY3NDb250
ZXh0M0QuIFRoaXMgY2F1c2VkIG1hbnkgcHJvYmxlbXMuIEl0IHdhcyBpbmVmZmljaWVudCwgc2lu
Y2UgaXQgcmVxdWlyZWQgYSBmdWxsCisgICAgICAgIHN0YXRlIGZsdXNoIHdoZW4gc3dpdGNoaW5n
IGJldHdlZW4gZ2FuZXNoIGFuZCBjb21wb3NpdG9yIGNhbGxzLiBUaGUgZ3B1IG1lbW9yeSBtYW5h
Z2VtZW50IHdhcyBjb21wbGV0ZWx5IGJyb2tlbgorICAgICAgICBzaW5jZSB0aGUgY29tcG9zaXRv
ciBjbG9iYmVyZWQgZ2FuZXNoJ3Mgb25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZCBjYWxsYmFjay4g
VGhpcyBtb3ZlcyBGQlNrUENMVFUgb3ZlciB0byB1c2luZworICAgICAgICB0aGUgYXBwcm9wcmlh
dGUgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QsIGxpa2UgZmlsdGVycy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAg
ICAgIChGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6Okdlb21ldHJ5QmluZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoR2VvbWV0cnlCaW5kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb21ldHJ5QmluZGluZzo6Y29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06On5MYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVidWdHTENhbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0cmVhbVZpZGVvUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnN3YXBCdWZmZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6b25NZW1vcnlBbGxvY2F0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6b25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRpc2NhcmRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmVuc3VyZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6b25Db250
ZXh0TG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZy
YW1lYnVmZmVyUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlQ2hlY2tlcmJvYXJkUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlkQ29sb3JQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNV
cERpc3BsYXlQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyUGFzc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtT3BhcXVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1BQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenps
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFt
U3dpenpsZU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbGVQcm9ncmFtU3dpenpsZUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGV4dHVyZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0ZXh0dXJlUHJvZ3JhbUZsaXApOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvWVVWUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ29u
dGV4dExvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6aXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRl
eFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2Vk
VGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yOjpiZXN0VGV4dHVyZUZvcm1hdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dExvc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJv
Z3JhbUJpbmRpbmdCYXNlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5n
QmFzZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZ0Jhc2U6Omxv
YWRTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVT
aGFkZXJQcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9n
cmFtQmluZGluZy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFByb2dyYW1CaW5kaW5n
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZzo6UHJvZ3JhbUJpbmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmc6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleDo6aW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6
OlZlcnRleFNoYWRlclBvczo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQ
b3NUZXhUcmFuc2Zvcm06OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUXVh
ZDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJUaWxlOjppbml0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjppbml0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6aW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6aW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmc6OmluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjppbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWVmlkZW86OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRTaGFkZXJDb2xvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNo
YWRlckNoZWNrZXJib2FyZDo6aW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2hhZGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChWZXJ0
ZXhTaGFkZXJQb3NUZXgpOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCk6
CisgICAgICAgIChWZXJ0ZXhTaGFkZXJQb3MpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hh
ZGVyUG9zVGV4SWRlbnRpdHk6OmluaXQpOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4VHJh
bnNmb3JtKToKKyAgICAgICAgKFZlcnRleFNoYWRlclF1YWQpOgorICAgICAgICAoVmVydGV4U2hh
ZGVyVGlsZSk6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSk6CisgICAgICAg
IChGcmFnbWVudFRleEFscGhhQmluZGluZyk6CisgICAgICAgIChGcmFnbWVudFRleE9wYXF1ZUJp
bmRpbmcpOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsKToKKyAgICAg
ICAgKEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEpOgorICAgICAgICAoRnJhZ21lbnRUZXhD
bGFtcEFscGhhQUFCaW5kaW5nKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhh
TWFzayk6CisgICAgICAgIChGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQSk6CisgICAg
ICAgIChGcmFnbWVudFNoYWRlcllVVlZpZGVvKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyQ29s
b3IpOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjp+QWNjZWxlcmF0
ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNv
cGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKToKKyAg
ICAgICAgKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6UXVlcnkpOgorICAgICAgICAo
V2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6flF1ZXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmJlZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojppc1BlbmRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6
d2FpdCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlRocm90
dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6Y3JlYXRlKToKKyAgICAg
ICAgKFF1ZXJ5KToKKyAgICAgICAgKFRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6VHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFsbG9j
YXRvcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yOjpkZWxldGVBbGxUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUp
OgorICAgICAgICAoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoQ0NH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y29udGV4dDNEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0OjpDQ0dyYXBoaWNzQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZUxheWVySW1wbDo6fkNDSU9TdXJmYWNlTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3aWxsRHJhdyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczo6TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyk6Cisg
ICAgICAgIChMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6bmVlZHNTaGFyZWRDb250ZXh0KToKKyAgICAgICAgKENDTGF5ZXJUcmVl
SG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpp
bml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5
OjpyZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpy
ZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4
dE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZWNyZWF0
ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2NhdGVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmU6OmZy
ZWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmNvcHlQbGFuZURh
dGEpOgorCiAyMDEyLTA2LTIyICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFRleHQgd2l0aCB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzIGFuZCB0ZXh0LWFs
aWduOnJpZ2h0IGlzIGxlZnQgYWxpZ25lZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBh
MThlYzQ0ZTU1OGQ3Yzk4MjFmMjkwOTYyOTgxNjUxMjUyNzA4NzJmLi4zMTQ3ZmRjNWQ4MTg3M2Yx
NzBmNWNhZGEwMmJjMGQ4ZTE0MTJmMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ2IEBACisyMDEyLTA2LTI0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVc2UgV2ViR3JhcGhpY3NDb250ZXh0M0QgaW4g
Y29tcG9zaXRvciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODk3MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGVzIHRlc3RzIGZvciByZWZhY3RvciwgbW9zdGx5IGJ5IHJl
bW92aW5nIHVubmVjZXNzYXJ5IEdyYXBoaWNzQ29udGV4dDNEIHdyYXBwZXIgYXJvdW5kIG1vY2sg
Y29udGV4dHMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvV2ViTGF5
ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OmNvbnRl
eHQpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRv
bWljQ29tbWl0Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpkcmF3TGF5ZXJzT25DQ1RocmVhZCk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0
ZTo6Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdEF0b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpkcmF3TGF5ZXJzT25DQ1RocmVh
ZCk6CisgICAgICAgICogdGVzdHMvQ0NTaW5nbGVUaHJlYWRQcm94eVRlc3QuY3BwOgorICAgICAg
ICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpUZXN0
SG9va3M6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0Lmg6
CisgICAgICAgIChUZXN0SG9va3MpOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJCcmlk
Z2VUZXN0LmNwcDoKKyAgICAgICAgKENhbnZhczJETGF5ZXJCcmlkZ2VUZXN0OjpmdWxsTGlmZWN5
Y2xlVGVzdCk6CisgICAgICAgICogdGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQz
RC5oOiBSZW1vdmVkLgorICAgICAgICAqIHRlc3RzL0RyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3Qu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHRlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQu
aDoKKyAgICAgICAgKiB0ZXN0cy9GYWtlR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcDoKKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICAqIHRlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAg
ICAoRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bTo6RmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSk6
CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0OjpMYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0KToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAo
VEVTVF9GKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVDb3BpZXJU
ZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VEVTVCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHA6CisKIDIwMTItMDYtMjIgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogQXZvaWQgaW5maW5pdGUgbG9vcCBpZiB3
ZSB0cnkgdG8gZW5jb2RlIC0xIGZvciBsZXZlbGRiCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZGMwMzVhZWQx
YmJmMzhjZTViN2FlOGZmZDI5MDgwNTEwY2MwMTUxMS4uNTc3ZDcwMjg5YjhmZDU3OWQ3ODFiZTU0
MDk4NzA3N2U5OTNkN2IyNSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTExLDI3ICsxMTEsMzAgQEAgcHVi
bGljOgogICAgIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dExvc3RDYWxsYmFjayB7CiAgICAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgb25Db250ZXh0TG9zdCgpID0gMDsKKworICAgIHBy
b3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+V2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNr
KCkgeyB9CiAgICAgfTsKIAogICAgIGNsYXNzIFdlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJh
Y2sgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG9uRXJyb3JNZXNzYWdlKGNv
bnN0IFdlYlN0cmluZyYsIFdHQzNEaW50KSA9IDA7CisKKyAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgfldlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2soKSB7IH0KICAgICB9Owog
CiAgICAgY2xhc3MgV2ViR3JhcGhpY3NTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlV
TSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBs
ZXRlKCkgPSAwOworCisgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIH5XZWJHcmFwaGlj
c1N3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNKCkgeyB9CiAgICAgfTsKIAogICAg
IGNsYXNzIFdlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVN
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHdlIHN3
aXRjaCB0byBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24gdmVyc2lvbi4KLSAgICAgICAgdmly
dHVhbCB2b2lkIG9uTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWQoc2l6ZV90IGdwdVJlc291cmNlU2l6
ZUluQnl0ZXMpID0gMDsKLSAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBwdXJlIHZpcnR1YWwg
b25jZSB3ZSBpbXBsZW1lbnQgZXZlcnl3aGVyZS4KLSAgICAgICAgdmlydHVhbCB2b2lkIG9uTWVt
b3J5QWxsb2NhdGlvbkNoYW5nZWQoV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIG9uTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWQoV2ViR3JhcGhpY3NN
ZW1vcnlBbGxvY2F0aW9uKSA9IDA7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwg
fldlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBhMmM0M2NlMWJjZmE3MjYxMWRmNjE5
YjQxYWE1YzIyY2Y2NTRlOTI4Li43NDNiY2MxZjcwYjRkY2Y5ZGRlMTUyZDIwNzMwOTg1YzIwYTUz
YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTMxLDkgKzMxLDEwIEBACiAj
aW5jbHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgi
CiAKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlNoYXJlZEdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0dw
dURldmljZS5oIgotI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDkgKzY4LDEyIEBA
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
flRleHR1cmUoKQogewogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDR3JhcGhpY3ND
b250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigp
LT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gc2hhcmVkQ29u
dGV4dCA9IENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSA/IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRGb3JJbXBsVGhyZWFkKCkgOiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCk7Cisg
ICAgaWYgKCFzaGFyZWRDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgdGV4dHVyZVVwZGF0
ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3Qoc2hhcmVkQ29udGV4dC5yZWxlYXNlKCksIGFsbG9jYXRv
ciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiBwYWludGVyKQpAQCAtOTcsMjEgKzEwMSwxNSBAQCBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4
ZWxGb3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9p
ZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRl
eHR1cmVSZWN0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IHBycENvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAo
IWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Ig
c29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KHBycENvbnRleHQpOwogCiAgICAgLy8gTWFrZSBz
dXJlIGdhbmVzaCB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4dDNkLT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICAvLyBOb3RpZnkgZ2FuZXNoIHRvIHN5bmMgaXRzIGlu
dGVybmFsIEdMIHN0YXRlLgotICAgIGNvbnRleHQzZC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4
dCgpOworICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgLy8gQ3JlYXRl
IGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgotICAgIE93blB0cjxTa0NhbnZhcz4g
Y2FudmFzID0gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoY29udGV4dDNkLCBhbGxvY2F0b3IsIHRl
eHR1cmUpOworICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNjZWxlcmF0ZWRD
YW52YXMoY29udGV4dC5nZXQoKSwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKIAogICAgIC8vIFRoZSBj
b21wb3NpdG9yIGV4cGVjdHMgdGhlIHRleHR1cmVzIHRvIGJlIHVwc2lkZS1kb3duIHNvIGl0IGNh
biBmbGlwCiAgICAgLy8gdGhlIGZpbmFsIGNvbXBvc2l0ZWQgaW1hZ2UuIEdhbmVzaCByZW5kZXJz
IHRoZSBpbWFnZSB1cHJpZ2h0IHNvIHdlCkBAIC0xMjcsNyArMTI1LDEwIEBAIHZvaWQgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVj
dChDQ0dyYXBoaWNzCiAgICAgZHJhd1BpY3R1cmUoY2FudmFzLmdldCgpKTsKIAogICAgIC8vIEZs
dXNoIGdhbmVzaCBjb250ZXh0IHNvIHRoYXQgYWxsIHRoZSByZW5kZXJlZCBzdHVmZiBhcHBlYXJz
IG9uIHRoZSB0ZXh0dXJlLgotICAgIGNvbnRleHQzZC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7Cisg
ICAgY29udGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7CisKKyAgICAvLyBGbHVzaCB0aGUgR0wg
Y29udGV4dCBzbyByZW5kZXJpbmcgcmVzdWx0cyBmcm9tIHRoaXMgY29udGV4dCBhcmUgdmlzaWJs
ZSBpbiB0aGUgY29tcG9zaXRvcidzIGNvbnRleHQuCisgICAgY29udGV4dC0+Zmx1c2goKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBh
YmVhZjUyM2QyOGZjNWZiMjlhODNmYzE5ODc4OTdlMDYxMDdiMmIwLi4xZjJmMjBjY2U5MzdiMWEw
MGY3YjE5ZDk1MWE2MDY1YWVjM2VjNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0KSBPVkVSUklERTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwor
ICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4s
IFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0
cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAKaW5kZXgg
YTg1OWFhZTczM2FlMGE2ZmRmMGIxNWRlZGM5Yzc2NjZjYzhjM2M5ZC4uMWE0NTY4YmIwN2ViNjQ4
ZWI2NTc4MTc0ZjgxZGU1ZjVkOTFhYzE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuY3BwCkBA
IC0yOSwxMyArMjksMTMgQEAKIAogI2luY2x1ZGUgIkdlb21ldHJ5QmluZGluZy5oIgogCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HZW9tZXRyeUJp
bmRpbmc6Okdlb21ldHJ5QmluZGluZyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK0dlb21l
dHJ5QmluZGluZzo6R2VvbWV0cnlCaW5kaW5nKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcXVhZFZlcnRpY2Vz
VmJvKDApCiAgICAgLCBtX3F1YWRFbGVtZW50c1ZibygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuaApp
bmRleCBlYzE5OTcwM2U3MDJjODg0ZjFjOGMwZmJjODJjMzgwMGM0OGEwY2ZiLi4yMGIyZDVhMDA1
YjhlOTRjYzFiZTljNzdlYzcyNDJiNmRhY2QzMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuaApA
QCAtMjgsMjAgKzI4LDIwIEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAK
LSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBX
ZWJHcmFwaGljc0NvbnRleHQzRDsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBH
cmFwaGljc0NvbnRleHQzRDsKLQogY2xhc3MgR2VvbWV0cnlCaW5kaW5nIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBHZW9tZXRyeUJpbmRpbmcoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICBleHBs
aWNpdCBHZW9tZXRyeUJpbmRpbmcoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCopOwogICAg
IH5HZW9tZXRyeUJpbmRpbmcoKTsKIAogICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2luaXRpYWxpemVkOyB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KICAgICB1bnNpZ25l
ZCBxdWFkVmVydGljZXNWYm8oKSBjb25zdCB7IHJldHVybiBtX3F1YWRWZXJ0aWNlc1ZibzsgfQog
ICAgIHVuc2lnbmVkIHF1YWRFbGVtZW50c1ZibygpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZEVsZW1l
bnRzVmJvOyB9CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbnQgdGV4
Q29vcmRBdHRyaWJMb2NhdGlvbigpIHsgcmV0dXJuIDE7IH0KIAogcHJpdmF0ZToKLSAgICBHcmFw
aGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqIG1fY29udGV4dDsKICAgICB1bnNpZ25lZCBtX3F1YWRWZXJ0aWNlc1ZibzsKICAgICB1bnNp
Z25lZCBtX3F1YWRFbGVtZW50c1ZibzsKICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1OTVjYWUyZTkyODkzYmEwNzUzYjNj
NzQ0YjBjYmViMmNlNjk4NjA5Li40NDJhNjQ2ZTZhYzY2NTZhMjhmYWJiODI1YjMzMmZjYWQzYzU2
YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHZW9tZXRyeUJpbmRpbmcu
aCIKICNpbmNsdWRlICJHclRleHR1cmUuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lh
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTY3LDExICs2NiwxNSBAQAogI2lu
Y2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0ZyYW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Cit1c2luZyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOwordXNpbmcgV2ViS2l0
OjpXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb247CiB1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTIsMjUgKzExNSw2IEBA
IHN0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5NYXRyaXgoaW50IHgsIGludCB5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgcmV0dXJuIHNjcmVlbjsKIH0KIAotYm9vbCBj
b250ZXh0U3VwcG9ydHNBY2NlbGVyYXRlZFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQotewotICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFi
bGVkKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKTsKLSAgICBlbHNlCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3Jl
YWRfZm9ybWF0X2JncmEiKSkKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghY29udGV4dC0+Z3JDb250ZXh0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIG5lZWRzTGlvbklPU3VyZmFjZVJlYWRiYWNr
V29ya2Fyb3VuZCgpCiB7CiAjaWYgT1MoREFSV0lOKQpAQCAtMTY2LDY2ICsxNTAsNyBAQCBwcm90
ZWN0ZWQ6CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1jbGFzcyBMYXllclJlbmRlcmVy
U3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBFeHRlbnNpb25zM0RD
aHJvbWl1bTo6U3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2Fs
bGJhY2tBZGFwdGVyPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyU3dhcEJ1
ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcihsYXllclJlbmRlcmVyKSk7Ci0gICAgfQotICAg
IHZpcnR1YWwgfkxheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVy
KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkKLSAgICB7
Ci0gICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+b25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IExheWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBs
ZXRlQ2FsbGJhY2tBZGFwdGVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikK
LSAgICB7Ci0gICAgICAgIG1fbGF5ZXJSZW5kZXJlciA9IGxheWVyUmVuZGVyZXI7Ci0gICAgfQot
Ci0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBtX2xheWVyUmVuZGVyZXI7Ci19OwotCi1jbGFz
cyBMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXIg
OiBwdWJsaWMgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2Vk
Q2FsbGJhY2tDSFJPTUlVTSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJS
ZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyPiBjcmVhdGUo
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRD
YWxsYmFja0FkYXB0ZXIobGF5ZXJSZW5kZXJlcikpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5MYXll
clJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXIoKSB7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBvbkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkKEV4dGVuc2lv
bnMzRENocm9taXVtOjpHcHVNZW1vcnlBbGxvY2F0aW9uQ0hST01JVU0gYWxsb2NhdGlvbikKLSAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQg
aW4gc2luZ2xlIHRocmVhZGVkIG1vZGUsIGJ1dCB3ZSBleHBlY3QgaXQgb24gdGhlIGltcGwgdGhy
ZWFkLgotICAgICAgICBpZiAobV9iaW5kVG9JbXBsVGhyZWFkKSB7Ci0gICAgICAgICAgQVNTRVJU
KENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbDsKLSAgICAgICAgICBvbkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkT25JbXBs
KGFsbG9jYXRpb24pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIEFTU0VSVChDQ1Byb3h5
Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgICAgICAgb25HcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdl
ZE9uSW1wbChhbGxvY2F0aW9uKTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0Fk
YXB0ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQotICAgICAgICA6IG1f
bGF5ZXJSZW5kZXJlcihsYXllclJlbmRlcmVyKSwgbV9iaW5kVG9JbXBsVGhyZWFkKCFDQ1Byb3h5
OjpoYXNJbXBsVGhyZWFkKCkpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgb25HcHVNZW1vcnlB
bGxvY2F0aW9uQ2hhbmdlZE9uSW1wbChFeHRlbnNpb25zM0RDaHJvbWl1bTo6R3B1TWVtb3J5QWxs
b2NhdGlvbkNIUk9NSVVNIGFsbG9jYXRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldEdwdU1lbW9y
eUFsbG9jYXRpb24oYWxsb2NhdGlvbik7Ci0gICAgfQotCi0gICAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBtX2xheWVyUmVuZGVyZXI7Ci0gICAgYm9vbCBtX2JpbmRUb0ltcGxUaHJlYWQ7Ci19Owot
Ci1QYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0
dGluZykKK1Bhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsIFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGlu
ZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFk
b3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCB0ZXh0dXJl
VXBsb2FkZXJTZXR0aW5nKSkpOwogICAgIGlmICghbGF5ZXJSZW5kZXJlci0+aW5pdGlhbGl6ZSgp
KQpAQCAtMjM1LDcgKzE2MCw3IEBAIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50CiB9CiAKIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQq
IGNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVVcGxv
YWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogICAgIDogQ0NSZW5kZXJlcihjbGll
bnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJQYXNzKDApCkBAIC0yNDksOTYgKzE3NCw2NSBAQCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xp
ZW50KiBjbGllbnQsCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVwbG9h
ZGVyU2V0dGluZyh0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogewotICAgIEFTU0VSVChtX2NvbnRl
eHQuZ2V0KCkpOworICAgIEFTU0VSVChtX2NvbnRleHQpOwogfQogCi1jbGFzcyBDb250ZXh0TG9z
dENhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQzRDo6Q29udGV4dExvc3RD
YWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGV4dExvc3RDYWxs
YmFja0FkYXB0ZXI+IGNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyKGNsaWVu
dCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBvbkNvbnRleHRMb3N0KCkKLSAgICB7Ci0g
ICAgICAgIG1fY2xpZW50LT5kaWRMb3NlQ29udGV4dCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlcihDQ1JlbmRlcmVyQ2xpZW50KiBj
bGllbnQpCi0gICAgICAgIDogbV9jbGllbnQoY2xpZW50KSB7IH0KLQotICAgIENDUmVuZGVyZXJD
bGllbnQqIG1fY2xpZW50OwotfTsKLQogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRp
YWxpemUoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxi
YWNrKENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyOjpjcmVhdGUobV9jbGllbnQpKTsKKyAgICBt
X2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sodGhpcyk7CiAKLSAgICBpZiAoc2V0dGlu
Z3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcgJiYgY29udGV4dFN1cHBvcnRzQWNjZWxlcmF0ZWRQYWlu
dGluZyhtX2NvbnRleHQuZ2V0KCkpKQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gbV9j
b250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0M0Q6OkVYVEVOU0lPTlMpOworICAgIFZl
Y3RvcjxTdHJpbmc+IGV4dGVuc2lvbnNMaXN0OworICAgIGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQo
JyAnLCBleHRlbnNpb25zTGlzdCk7CisgICAgSGFzaFNldDxTdHJpbmc+IGV4dGVuc2lvbnM7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25zTGlzdC5zaXplKCk7ICsraSkKKyAg
ICAgICAgZXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uc0xpc3RbaV0pOworCisgICAgaWYgKHNldHRp
bmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nICYmIGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICYmIGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIikp
CiAgICAgICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nQWNjZWxlcmF0ZWRQYWludGluZyA9IHRydWU7
CisgICAgZWxzZQorICAgICAgICBtX2NhcGFiaWxpdGllcy51c2luZ0FjY2VsZXJhdGVkUGFpbnRp
bmcgPSBmYWxzZTsKIAotICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIG1fY2FwYWJpbGl0aWVzLmNvbnRleHRIYXND
YWNoZWRGcm9udEJ1ZmZlciA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9mcm9u
dF9idWZmZXJfY2FjaGVkIik7Ci0gICAgaWYgKG1fY2FwYWJpbGl0aWVzLmNvbnRleHRIYXNDYWNo
ZWRGcm9udEJ1ZmZlcikKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hS
T01JVU1fZnJvbnRfYnVmZmVyX2NhY2hlZCIpOwogCi0gICAgbV9jYXBhYmlsaXRpZXMudXNpbmdQ
YXJ0aWFsU3dhcCA9IENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCgpICYmIGV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKLSAgICBpZiAobV9j
YXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dhcCkKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJl
RW5hYmxlZCgiR0xfQ0hST01JVU1fcG9zdF9zdWJfYnVmZmVyIik7CisgICAgbV9jYXBhYmlsaXRp
ZXMuY29udGV4dEhhc0NhY2hlZEZyb250QnVmZmVyID0gZXh0ZW5zaW9ucy5jb250YWlucygiR0xf
Q0hST01JVU1fZnJvbnRfYnVmZmVyX2NhY2hlZCIpOworCisgICAgbV9jYXBhYmlsaXRpZXMudXNp
bmdQYXJ0aWFsU3dhcCA9IENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCgpICYmIGV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogCi0gICAgbV9j
YXBhYmlsaXRpZXMudXNpbmdNYXBTdWIgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01J
VU1fbWFwX3N1YiIpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ01hcFN1YikKLSAgICAg
ICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAg
IG1fY2FwYWJpbGl0aWVzLnVzaW5nTWFwU3ViID0gZXh0ZW5zaW9ucy5jb250YWlucygiR0xfQ0hS
T01JVU1fbWFwX3N1YiIpOwogCiAgICAgLy8gVXNlIHRoZSBzd2FwQnVmZmVycyBjYWxsYmFjayBv
bmx5IHdpdGggdGhlIHRocmVhZGVkIHByb3h5LgogICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhy
ZWFkKCkpCi0gICAgICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nU3dhcENvbXBsZXRlQ2FsbGJhY2sg
PSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29tcGxldGVf
Y2FsbGJhY2siKTsKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdTd2FwQ29tcGxldGVDYWxs
YmFjayA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBs
ZXRlX2NhbGxiYWNrIik7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nU3dhcENvbXBsZXRl
Q2FsbGJhY2spIHsKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01J
VU1fc3dhcGJ1ZmZlcnNfY29tcGxldGVfY2FsbGJhY2siKTsKLSAgICAgICAgRXh0ZW5zaW9uczNE
Q2hyb21pdW0qIGV4dGVuc2lvbnMzRENocm9taXVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihleHRlbnNpb25zKTsKLSAgICAgICAgZXh0ZW5zaW9uczNEQ2hyb21pdW0tPnNl
dFN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNKExheWVyUmVuZGVyZXJTd2FwQnVm
ZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyOjpjcmVhdGUodGhpcykpOworICAgICAgICBtX2Nv
bnRleHQtPnNldFN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNKHRoaXMpOwogICAg
IH0KIAotICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0
X0JHUkE4ODg4IikpCi0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpOworICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nU2V0Vmlz
aWJpbGl0eSA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX3NldF92aXNpYmlsaXR5
Iik7CiAKLSAgICBtX2NhcGFiaWxpdGllcy51c2luZ1NldFZpc2liaWxpdHkgPSBleHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfQ0hST01JVU1fc2V0X3Zpc2liaWxpdHkiKTsKLSAgICBpZiAobV9jYXBh
YmlsaXRpZXMudXNpbmdTZXRWaXNpYmlsaXR5KQotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVF
bmFibGVkKCJHTF9DSFJPTUlVTV9zZXRfdmlzaWJpbGl0eSIpOwotCi0gICAgaWYgKGV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9pb3N1cmZhY2UiKSkgewotICAgICAgICBBU1NFUlQo
ZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKTsKLSAgICAg
ICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIik7
Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2lvc3VyZmFj
ZSIpOworICAgIGlmIChleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9DSFJPTUlVTV9pb3N1cmZhY2Ui
KSkgeworICAgICAgICBBU1NFUlQoZXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1cmVf
cmVjdGFuZ2xlIikpOwogICAgIH0KIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVz
YWdlSGludCA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9BTkdMRV90ZXh0dXJlX3VzYWdlIik7
Ci0gICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVzYWdlSGludCkKLSAgICAgICAg
ZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV91c2FnZSIpOworICAg
IG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVzYWdlSGludCA9IGV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0FOR0xFX3RleHR1cmVfdXNhZ2UiKTsKIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5n
VGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24gPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3Rl
eHR1cmVfc3RvcmFnZSIpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVTdG9y
YWdlRXh0ZW5zaW9uKQotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9zdG9yYWdlIik7CisgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFn
ZUV4dGVuc2lvbiA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2Ui
KTsKIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nR3B1TWVtb3J5TWFuYWdlciA9IGV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9ncHVfbWVtb3J5X21hbmFnZXIiKTsKLSAgICBpZiAo
bV9jYXBhYmlsaXRpZXMudXNpbmdHcHVNZW1vcnlNYW5hZ2VyKSB7Ci0gICAgICAgIGV4dGVuc2lv
bnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2dwdV9tZW1vcnlfbWFuYWdlciIpOwotICAg
ICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9uczNEQ2hyb21pdW0gPSBzdGF0aWNf
Y2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGV4dGVuc2lvbnMpOwotICAgICAgICBleHRlbnNp
b25zM0RDaHJvbWl1bS0+c2V0R3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9N
SVVNKExheWVyUmVuZGVyZXJHcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQWRhcHRl
cjo6Y3JlYXRlKHRoaXMpKTsKLSAgICB9IGVsc2UgeworICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5n
R3B1TWVtb3J5TWFuYWdlciA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX2dwdV9t
ZW1vcnlfbWFuYWdlciIpOworICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ0dwdU1lbW9yeU1h
bmFnZXIpCisgICAgICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxs
YmFja0NIUk9NSVVNKHRoaXMpOworICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQtPnNldE1lbW9y
eUFsbG9jYXRpb25MaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3
cG9ydFNpemUoKSkpOwotICAgIH0KIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nRGlzY2FyZEZy
YW1lYnVmZmVyID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2Rpc2NhcmRfZnJh
bWVidWZmZXIiKTsKLSAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdEaXNjYXJkRnJhbWVidWZm
ZXIpCi0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2Rpc2Nh
cmRfZnJhbWVidWZmZXIiKTsKKyAgICBtX2NhcGFiaWxpdGllcy51c2luZ0Rpc2NhcmRGcmFtZWJ1
ZmZlciA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX2Rpc2NhcmRfZnJhbWVidWZm
ZXIiKTsKKworICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nRWdsSW1hZ2UgPSBleHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIik7CiAKICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVEVYVFVSRV9T
SVpFLCAmbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpKTsKLSAgICBtX2NhcGFiaWxpdGll
cy5iZXN0VGV4dHVyZUZvcm1hdCA9IFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KG1f
Y29udGV4dC5nZXQoKSk7CisgICAgbV9jYXBhYmlsaXRpZXMuYmVzdFRleHR1cmVGb3JtYXQgPSBQ
bGF0Zm9ybUNvbG9yOjpiZXN0VGV4dHVyZUZvcm1hdChtX2NvbnRleHQsIGV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKTsKIAogICAgIGlmICghaW5p
dGlhbGl6ZVNoYXJlZE9iamVjdHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzUxLDE4
ICsyNDUsMTggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp+TGF5ZXJSZW5kZXJlckNocm9taXVtKCkKIHsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBl
eHRlbnNpb25zM0RDaHJvbWl1bSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4o
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwotICAgIGV4dGVuc2lvbnMzRENocm9taXVtLT5z
ZXRTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTShudWxscHRyKTsKLSAgICBleHRl
bnNpb25zM0RDaHJvbWl1bS0+c2V0R3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NI
Uk9NSVVNKG51bGxwdHIpOworICAgIG1fY29udGV4dC0+c2V0U3dhcEJ1ZmZlcnNDb21wbGV0ZUNh
bGxiYWNrQ0hST01JVU0oMCk7CisgICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uQ2hh
bmdlZENhbGxiYWNrQ0hST01JVU0oMCk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENh
bGxiYWNrKDApOwogICAgIGNsZWFudXBTaGFyZWRPYmplY3RzKCk7CiB9CiAKLUdyYXBoaWNzQ29u
dGV4dDNEKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvbnRleHQoKQorV2ViR3JhcGhpY3NDb250
ZXh0M0QqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsKKyAgICByZXR1cm4gbV9jb250ZXh0OwogfQogCi12b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZGVidWdHTENhbGwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNv
bnN0IGNoYXIqIGNvbW1hbmQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQordm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRlYnVnR0xDYWxsKFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkKIHsK
ICAgICB1bnNpZ25lZCBsb25nIGVycm9yID0gY29udGV4dC0+Z2V0RXJyb3IoKTsKICAgICBpZiAo
ZXJyb3IgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKQpAQCAtMzc4LDggKzI3Miw3IEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAg
ICAvLyBUT0RPOiBSZXBsYWNlIHNldFZpc2liaWxpdHlDSFJPTUlVTSB3aXRoIGFuIGV4dGVuc2lv
biB0byBleHBsaWNpdGx5IG1hbmFnZSBmcm9udC9iYWNrYnVmZmVycwogICAgIC8vIGNyYnVnLmNv
bS8xMTYwNDkKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdTZXRWaXNpYmlsaXR5KSB7Ci0g
ICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zM0RDaHJvbWl1bSA9IHN0YXRp
Y19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkp
OwotICAgICAgICBleHRlbnNpb25zM0RDaHJvbWl1bS0+c2V0VmlzaWJpbGl0eUNIUk9NSVVNKHZp
c2libGUpOworICAgICAgICBtX2NvbnRleHQtPnNldFZpc2liaWxpdHlDSFJPTUlVTSh2aXNpYmxl
KTsKICAgICB9CiB9CiAKQEAgLTEwNDcsNyArOTQwLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdTdHJlYW1WaWRlb1F1YWQoY29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkKiBx
dWEKIHsKICAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwogCi0gICAgQVNTRVJUKGNvbnRl
eHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5h
bCIpICYmIGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX09FU19FR0xf
aW1hZ2VfZXh0ZXJuYWwiKSk7CisgICAgQVNTRVJUKG1fY2FwYWJpbGl0aWVzLnVzaW5nRWdsSW1h
Z2UpOwogCiAgICAgY29uc3QgVmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbSogcHJvZ3JhbSA9IHZp
ZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0oKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CkBAIC0xMTY1LDggKzEwNTgsOSBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KE1hbmFnZWRUZXh0
dXJlKiBodWRUZXh0dXJlLCBjb25zdAogICAgIGNvbnN0IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSog
cHJvZ3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwogICAgIEFTU0VSVChwcm9ncmFtICYm
IHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBSZWZQdHI8
Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUz
RChtX2NvbnRleHQpOwotICAgIGh1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNjQ29udGV4dC5nZXQo
KSwgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgaWYgKCFodWRUZXh0dXJlLT50
ZXh0dXJlSWQoKSkKKyAgICAgICAgaHVkVGV4dHVyZS0+YWxsb2NhdGUobV9pbXBsVGV4dHVyZUFs
bG9jYXRvci5nZXQoKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaHVkVGV4dHVyZS0+dGV4dHVyZUlkKCkp
KTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJv
Z3JhbSgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkocHJvZ3Jh
bS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCkBAIC0xMjY3LDIy
ICsxMTYxLDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9GcmFt
ZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC0xKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNl
dEdwdU1lbW9yeUFsbG9jYXRpb24oRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdwdU1lbW9yeUFsbG9j
YXRpb25DSFJPTUlVTSBhbGxvY2F0aW9uKQotewotICAgIGlmIChtX3Zpc2libGUgJiYgIWFsbG9j
YXRpb24uZ3B1UmVzb3VyY2VTaXplSW5CeXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCFhbGxvY2F0aW9uLnN1Z2dlc3RIYXZlQmFja2J1ZmZlciAmJiAhbV92aXNpYmxlKQotICAgICAg
ICBkaXNjYXJkRnJhbWVidWZmZXIoKTsKLQotICAgIGlmICghYWxsb2NhdGlvbi5ncHVSZXNvdXJj
ZVNpemVJbkJ5dGVzKSB7Ci0gICAgICAgIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMoKTsKLSAg
ICAgICAgbV9jbGllbnQtPnJlbGVhc2VDb250ZW50c1RleHR1cmVzKCk7Ci0gICAgICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY2xp
ZW50LT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhhbGxvY2F0aW9uLmdwdVJlc291cmNl
U2l6ZUluQnl0ZXMpOwotfQotCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoKCkK
IHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2giLCB0aGlz
LCAwKTsKQEAgLTEzMDEsMTIgKzExNzksMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZlcikKICAgICAgICAgLy8gSWYgc3Vw
cG9ydGVkLCB3ZSBjYW4gc2F2ZSBzaWduaWZpY2FudCBiYW5kd2lkdGggYnkgb25seSBzd2FwcGlu
ZyB0aGUgZGFtYWdlZC9zY2lzc29yZWQgcmVnaW9uIChjbGFtcGVkIHRvIHRoZSB2aWV3cG9ydCkK
ICAgICAgICAgSW50UmVjdCBjbGlwcGVkU3ViQnVmZmVyID0gc3ViQnVmZmVyOwogICAgICAgICBj
bGlwcGVkU3ViQnVmZmVyLmludGVyc2VjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHZpZXdw
b3J0U2l6ZSgpKSk7Ci0gICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zM0RD
aHJvbWl1bSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkpOwogICAgICAgICBpbnQgZmxpcHBlZFlQb3NPZlJlY3RCb3R0b20gPSB2
aWV3cG9ydEhlaWdodCgpIC0gY2xpcHBlZFN1YkJ1ZmZlci55KCkgLSBjbGlwcGVkU3ViQnVmZmVy
LmhlaWdodCgpOwotICAgICAgICBleHRlbnNpb25zM0RDaHJvbWl1bS0+cG9zdFN1YkJ1ZmZlckNI
Uk9NSVVNKGNsaXBwZWRTdWJCdWZmZXIueCgpLCBmbGlwcGVkWVBvc09mUmVjdEJvdHRvbSwgY2xp
cHBlZFN1YkJ1ZmZlci53aWR0aCgpLCBjbGlwcGVkU3ViQnVmZmVyLmhlaWdodCgpKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5wb3N0U3ViQnVmZmVyQ0hST01JVU0oY2xpcHBlZFN1YkJ1ZmZlci54KCks
IGZsaXBwZWRZUG9zT2ZSZWN0Qm90dG9tLCBjbGlwcGVkU3ViQnVmZmVyLndpZHRoKCksIGNsaXBw
ZWRTdWJCdWZmZXIuaGVpZ2h0KCkpOwogICAgIH0gZWxzZQogICAgICAgICAvLyBOb3RlIHRoYXQg
Y3VycmVudGx5IHRoaXMgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBzd2FwQnVmZmVyczsgd2Ugc2hv
dWxkCi0gICAgICAgIC8vIGNvbnNpZGVyIGV4cG9zaW5nIGEgZGlmZmVyZW50IGVudHJ5IHBvaW50
IG9uIEdyYXBoaWNzQ29udGV4dDNELgorICAgICAgICAvLyBjb25zaWRlciBleHBvc2luZyBhIGRp
ZmZlcmVudCBlbnRyeSBwb2ludCBvbiBXZWJHcmFwaGljc0NvbnRleHQzRC4KICAgICAgICAgbV9j
b250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzE3LDYg
KzExOTQsMzUgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06Om9uU3dhcEJ1ZmZlcnNDb21w
bGV0ZSgpCiAgICAgbV9jbGllbnQtPm9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogfQogCit2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6b25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZChXZWJHcmFw
aGljc01lbW9yeUFsbG9jYXRpb24gYWxsb2NhdGlvbikKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBp
cyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGluIHNpbmdsZSB0aHJlYWRlZCBtb2RlLCBidXQg
d2UgZXhwZWN0IGl0IG9uIHRoZSBpbXBsIHRocmVhZC4KKyAgICBpZiAoIUNDUHJveHk6Omhhc0lt
cGxUaHJlYWQoKSkgeworICAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAg
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOworICAgICAgb25NZW1vcnlBbGxvY2F0
aW9uQ2hhbmdlZE9uSW1wbFRocmVhZChhbGxvY2F0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICAgIG9uTWVtb3J5QWxsb2NhdGlv
bkNoYW5nZWRPbkltcGxUaHJlYWQoYWxsb2NhdGlvbik7CisgICAgfQorfQorCit2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6b25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbFRocmVhZChX
ZWJLaXQ6OldlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBhbGxvY2F0aW9uKQoreworICAgIGlm
IChtX3Zpc2libGUgJiYgIWFsbG9jYXRpb24uZ3B1UmVzb3VyY2VTaXplSW5CeXRlcykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFhbGxvY2F0aW9uLnN1Z2dlc3RIYXZlQmFja2J1ZmZlciAm
JiAhbV92aXNpYmxlKQorICAgICAgICBkaXNjYXJkRnJhbWVidWZmZXIoKTsKKworICAgIGlmICgh
YWxsb2NhdGlvbi5ncHVSZXNvdXJjZVNpemVJbkJ5dGVzKSB7CisgICAgICAgIHJlbGVhc2VSZW5k
ZXJQYXNzVGV4dHVyZXMoKTsKKyAgICAgICAgbV9jbGllbnQtPnJlbGVhc2VDb250ZW50c1RleHR1
cmVzKCk7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7CisgICAg
fSBlbHNlCisgICAgICAgIG1fY2xpZW50LT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhh
bGxvY2F0aW9uLmdwdVJlc291cmNlU2l6ZUluQnl0ZXMpOworfQorCiB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZGlzY2FyZEZyYW1lYnVmZmVyKCkKIHsKICAgICBpZiAobV9pc0ZyYW1lYnVm
ZmVyRGlzY2FyZGVkKQpAQCAtMTMyNSwxMCArMTIzMSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkaXNjYXJkRnJhbWVidWZmZXIoKQogICAgIGlmICghbV9jYXBhYmlsaXRpZXMudXNp
bmdEaXNjYXJkRnJhbWVidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4dGVuc2lvbnMz
RCogZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIEV4dGVuc2lv
bnMzRENocm9taXVtKiBleHRlbnNpb25zM0RDaHJvbWl1bSA9IHN0YXRpY19jYXN0PEV4dGVuc2lv
bnMzRENocm9taXVtKj4oZXh0ZW5zaW9ucyk7CiAgICAgLy8gRklYTUU6IFVwZGF0ZSBhdHRhY2ht
ZW50cyBhcmd1bWVudCB0byBhcHByb3ByaWF0ZSB2YWx1ZXMgb25jZSB0aGV5IGFyZSBubyBsb25n
ZXIgaWdub3JlZC4KLSAgICBleHRlbnNpb25zM0RDaHJvbWl1bS0+ZGlzY2FyZEZyYW1lYnVmZmVy
RVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwKTsKKyAgICBtX2NvbnRleHQt
PmRpc2NhcmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwg
MCk7CiAgICAgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkID0gdHJ1ZTsKIAogICAgIC8vIERhbWFn
ZSB0cmFja2VyIG5lZWRzIGEgZnVsbCByZXNldCBldmVyeSB0aW1lIGZyYW1lYnVmZmVyIGlzIGRp
c2NhcmRlZC4KQEAgLTEzNDMsMTIgKzEyNDcsMTYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmVuc3VyZUZyYW1lYnVmZmVyKCkKICAgICBpZiAoIW1fY2FwYWJpbGl0aWVzLnVzaW5nRGlz
Y2FyZEZyYW1lYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeHRlbnNpb25zM0QqIGV4
dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBFeHRlbnNpb25zM0RD
aHJvbWl1bSogZXh0ZW5zaW9uczNEQ2hyb21pdW0gPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RD
aHJvbWl1bSo+KGV4dGVuc2lvbnMpOwotICAgIGV4dGVuc2lvbnMzRENocm9taXVtLT5lbnN1cmVG
cmFtZWJ1ZmZlckNIUk9NSVVNKCk7CisgICAgbV9jb250ZXh0LT5lbnN1cmVGcmFtZWJ1ZmZlckNI
Uk9NSVVNKCk7CiAgICAgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkID0gZmFsc2U7CiB9CiAKK3Zv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpvbkNvbnRleHRMb3N0KCkKK3sKKyAgICBtX2NsaWVu
dC0+ZGlkTG9zZUNvbnRleHQoKTsKK30KKworCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
ewogICAgIEFTU0VSVChyZWN0Lm1heFgoKSA8PSB2aWV3cG9ydFdpZHRoKCkgJiYgcmVjdC5tYXhZ
KCkgPD0gdmlld3BvcnRIZWlnaHQoKSk7CkBAIC0xMzYyLDcgKzEyNzAsNiBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25z
dCBJbnRSZWN0JiByZQogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZW1wb3JhcnlUZXh0dXJlID0g
TnVsbFBsYXRmb3JtM0RPYmplY3Q7CiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZW1wb3JhcnlGQk8g
PSBOdWxsUGxhdGZvcm0zRE9iamVjdDsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9
IG1fY29udGV4dC5nZXQoKTsKIAogICAgIGlmIChkb1dvcmthcm91bmQpIHsKICAgICAgICAgLy8g
T24gTWFjIE9TIFggMTAuNywgY2FsbGluZyBnbFJlYWRQaXhlbHMgYWdhaW5zdCBhbiBGQk8gd2hv
c2UgY29sb3IgYXR0YWNobWVudCBpcyBhbgpAQCAtMTM3MCwzMSArMTI3NywzMSBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBj
b25zdCBJbnRSZWN0JiByZQogICAgICAgICAvLyBkaWZmZXJlbnQgT3BlbkdMIGNvbnRleHRzLiBJ
dCBpcyBiZWxpZXZlZCB0aGF0IHRoaXMgaXMgdGhlIHJvb3QgY2F1c2Ugb2YgdG9wIGNyYXNoZXIK
ICAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS85OTM5My4gPHJkYXI6Ly9wcm9ibGVtLzEwOTQ5
Njg3PgogCi0gICAgICAgIHRlbXBvcmFyeVRleHR1cmUgPSBjb250ZXh0LT5jcmVhdGVUZXh0dXJl
KCk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgdGVtcG9yYXJ5VGV4dHVyZSkpOwotICAgICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkxJTkVBUikpOwotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQz
RDo6Q0xBTVBfVE9fRURHRSkpOwotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworICAg
ICAgICB0ZW1wb3JhcnlUZXh0dXJlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRlbXBvcmFyeVRleHR1cmUpKTsKKyAgICAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQz
RDo6TElORUFSKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3ND
b250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19F
REdFKSk7CiAgICAgICAgIC8vIENvcHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBjdXJyZW50IChJT1N1
cmZhY2UtYmFja2VkKSBmcmFtZWJ1ZmZlciBpbnRvIGEgdGVtcG9yYXJ5IHRleHR1cmUuCi0gICAg
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIDAsIDAsIHJlY3QubWF4
WCgpLCByZWN0Lm1heFkoKSwgMCkpOwotICAgICAgICB0ZW1wb3JhcnlGQk8gPSBjb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmNv
cHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSwgMCwgMCwgcmVjdC5tYXhYKCksIHJlY3QubWF4WSgpLCAwKSk7CisgICAg
ICAgIHRlbXBvcmFyeUZCTyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKICAgICAg
ICAgLy8gQXR0YWNoIHRoaXMgdGV4dHVyZSB0byBhbiBGQk8sIGFuZCBwZXJmb3JtIHRoZSByZWFk
YmFjayBmcm9tIHRoYXQgRkJPLgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgdGVtcG9yYXJ5RkJPKSk7
Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRlbXBvcmFyeVRleHR1cmUs
IDApKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCB0ZW1wb3JhcnlGQk8pKTsKKyAgICAgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5U
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRlbXBvcmFyeVRleHR1cmUsIDApKTsK
IAotICAgICAgICBBU1NFUlQoY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpID09IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
Ul9DT01QTEVURSk7CisgICAgICAgIEFTU0VSVChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpOwogICAgIH0KIAotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5yZWFkUGl4ZWxzKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpLAorICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+cmVhZFBpeGVscyhyZWN0Lngo
KSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVscykpOwogCiAgICAgaWYgKGRvV29ya2Fyb3Vu
ZCkgewogICAgICAgICAvLyBDbGVhbiB1cC4KLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKLSAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVG
cmFtZWJ1ZmZlcih0ZW1wb3JhcnlGQk8pKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmRlbGV0ZVRleHR1cmUodGVtcG9yYXJ5VGV4dHVyZSkpOworICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIDApKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKHRlbXBvcmFyeUZCTykpOworICAgICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUodGVtcG9yYXJ5VGV4dHVyZSkp
OwogICAgIH0KIAogICAgIGlmICghbV92aXNpYmxlKSB7CkBAIC0xNDExLDggKzEzMTgsOSBAQCBi
b29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFnZWRU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zdAogICAgIGlmICghdGV4dHVyZS0+cmVzZXJ2ZShkZXZpY2VS
ZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUo
Y2NDb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBpZiAo
IXRleHR1cmUtPnRleHR1cmVJZCgpKQorICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShtX2ltcGxU
ZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT50ZXh0dXJl
SWQoKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRl
dmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDAp
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0NTIsOCArMTM2MCw5IEBAIGJvb2wgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRl
eHR1cmUsIGNvCiB7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVy
SWQpKTsKIAotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY29udGV4dCk7Ci0gICAgdGV4dHVyZS0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoY2NDb250ZXh0LmdldCgpLCBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgp
KTsKKyAgICBpZiAoIXRleHR1cmUtPnRleHR1cmVJZCgpKQorICAgICAgICB0ZXh0dXJlLT5hbGxv
Y2F0ZShtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS0+dGV4dHVyZUlkKCksIDApKTsKIAogI2lmICFkZWZp
bmVkICggTkRFQlVHICkKICAgICBpZiAobV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBAIC0xNTE4LDIzICsxNDI3LDIzIEBAIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAKICAgICAvLyBXZSB3
aWxsIGFsd2F5cyBuZWVkIHRoZXNlIHByb2dyYW1zIHRvIHJlbmRlciwgc28gY3JlYXRlIHRoZSBw
cm9ncmFtcyBlYWdlcmx5IHNvIHRoYXQgdGhlIHNoYWRlciBjb21waWxhdGlvbiBjYW4KICAgICAv
LyBzdGFydCB3aGlsZSB3ZSBkbyBvdGhlciB3b3JrLiBPdGhlciBwcm9ncmFtcyBhcmUgY3JlYXRl
ZCBsYXppbHkgb24gZmlyc3QgYWNjZXNzLgotICAgIG1fc2hhcmVkR2VvbWV0cnkgPSBhZG9wdFB0
cihuZXcgR2VvbWV0cnlCaW5kaW5nKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fcmVuZGVyUGFz
c1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW0obV9jb250ZXh0LmdldCgp
KSk7Ci0gICAgbV90aWxlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbShtX2NvbnRl
eHQuZ2V0KCkpKTsKLSAgICBtX3RpbGVQcm9ncmFtT3BhcXVlID0gYWRvcHRQdHIobmV3IFRpbGVQ
cm9ncmFtT3BhcXVlKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fc2hhcmVkR2VvbWV0cnkgPSBh
ZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5kaW5nKG1fY29udGV4dCkpOworICAgIG1fcmVuZGVyUGFz
c1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW0obV9jb250ZXh0KSk7Cisg
ICAgbV90aWxlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbShtX2NvbnRleHQpKTsK
KyAgICBtX3RpbGVQcm9ncmFtT3BhcXVlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtT3BhcXVl
KG1fY29udGV4dCkpOwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVzaCgpKTsK
IAogICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShUZXh0
dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6cmVj
bGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7
Ci0gICAgbV90ZXh0dXJlQ29waWVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjcmVhdGUo
bV9jb250ZXh0LmdldCgpKTsKKyAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1
cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQpOwogICAgIGlmIChtX3RleHR1cmVVcGxvYWRlclNl
dHRpbmcgPT0gVGhyb3R0bGVkVXBsb2FkZXIpCi0gICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0g
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSht
X2NvbnRleHQpOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBVbnRocm90
dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OwotICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6
OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9y
ID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0KTsKKyAgICBtX2lt
cGxUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9j
b250ZXh0KTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50KQog
ICAgICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsKICAgICBpZiAobV9j
YXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbikgewpAQCAtMTU0OCwxMCAr
MTQ1NywxMCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9i
amVjdHMoKQogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlQ2hlY2tlcmJvYXJkUHJv
Z3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSgpCiB7
CiAgICAgaWYgKCFtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtKQotICAgICAgICBtX3RpbGVDaGVj
a2VyYm9hcmRQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKG1f
Y29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtID0gYWRv
cHRQdHIobmV3IFRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICgh
bV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjaGVja2VyYm9hcmRQcm9ncmFtOjppbml0
YWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9n
cmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVDaGVj
a2VyYm9hcmRQcm9ncmFtLmdldCgpOwogfQpAQCAtMTU1OSwxMCArMTQ2OCwxMCBAQCBjb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRpbAogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpTb2xpZENvbG9y
UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb2xpZENvbG9yUHJvZ3JhbSgpCiB7CiAg
ICAgaWYgKCFtX3NvbGlkQ29sb3JQcm9ncmFtKQotICAgICAgICBtX3NvbGlkQ29sb3JQcm9ncmFt
ID0gYWRvcHRQdHIobmV3IFNvbGlkQ29sb3JQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAg
ICAgICBtX3NvbGlkQ29sb3JQcm9ncmFtID0gYWRvcHRQdHIobmV3IFNvbGlkQ29sb3JQcm9ncmFt
KG1fY29udGV4dCkpOwogICAgIGlmICghbV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5pdGlhbGl6ZWQo
KSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb2xpZENv
bG9yUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3NvbGlkQ29sb3JQ
cm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fc29saWRDb2xv
clByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fc29s
aWRDb2xvclByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTcwLDEwICsxNDc5LDEwIEBAIGNvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6U29saWRDb2xvclByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6c29saWRDb2xvCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkhlYWRzVXBEaXNw
bGF5UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW0o
KQogewogICAgIGlmICghbV9oZWFkc1VwRGlzcGxheVByb2dyYW0pCi0gICAgICAgIG1faGVhZHNV
cERpc3BsYXlQcm9ncmFtID0gYWRvcHRQdHIobmV3IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbShtX2Nv
bnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0gPSBhZG9wdFB0
cihuZXcgSGVhZHNVcERpc3BsYXlQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV9oZWFk
c1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQo
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtOjppbml0aWFsaXpl
IiwgdGhpcywgMCk7Ci0gICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXpl
KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0
aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQogICAgIHJldHVybiBtX2hlYWRzVXBEaXNwbGF5UHJv
Z3JhbS5nZXQoKTsKIH0KQEAgLTE1ODMsNyArMTQ5Miw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6UmVuZGVyUGFzc1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
UGFzCiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOwogICAgIGlmICghbV9yZW5kZXJQ
YXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDAp
OwotICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQo
KSk7CisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc1Byb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTkx
LDEwICsxNTAwLDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc1By
b2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzCiBjb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlJlbmRlclBhc3NQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
cmVuZGVyUGFzc1Byb2dyYW1BQSgpCiB7CiAgICAgaWYgKCFtX3JlbmRlclBhc3NQcm9ncmFtQUEp
Ci0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNz
UHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFt
QUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW1BQShtX2NvbnRleHQpKTsKICAgICBp
ZiAoIW1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbUFBOjppbml0
aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlh
bGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtQUEtPmlu
aXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc1Byb2dy
YW1BQS5nZXQoKTsKIH0KQEAgLTE2MDIsMTAgKzE1MTEsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bmRlclAKIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01hc2tQcm9ncmFt
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpCiB7CiAgICAg
aWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5kZXJQYXNzTWFza1By
b2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc01hc2tQcm9ncmFtKG1fY29udGV4dC5nZXQo
KSkpOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5k
ZXJQYXNzTWFza1Byb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3JlbmRlclBhc3NNYXNr
UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAw
KTsKLSAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0
LmdldCgpKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRpYWxpemUobV9j
b250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLmdldCgp
OwogfQpAQCAtMTYxMywxMCArMTUyMiwxMCBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlJlbmRlclBhc3NNYXNrUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZQogY29u
c3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzTWFza1Byb2dyYW1BQSogTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpCiB7CiAgICAgaWYgKCFt
X3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKQotICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3Jh
bUFBID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQo
KSkpOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFJl
bmRlclBhc3NNYXNrUHJvZ3JhbUFBKG1fY29udGV4dCkpOwogICAgIGlmICghbV9yZW5kZXJQYXNz
TWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIs
IHRoaXMsIDApOwotICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXpl
KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmlu
aXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc01hc2tQ
cm9ncmFtQUEuZ2V0KCk7CiB9CkBAIC0xNjI2LDcgKzE1MzUsNyBAQCBjb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9n
cmFtKCkKICAgICBBU1NFUlQobV90aWxlUHJvZ3JhbSk7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFt
LT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fdGls
ZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJv
Z3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJv
Z3JhbS5nZXQoKTsKIH0KQEAgLTE2MzYsNyArMTU0NSw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6VGlsZVByb2dyYW1PcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVBy
b2dyCiAgICAgQVNTRVJUKG1fdGlsZVByb2dyYW1PcGFxdWUpOwogICAgIGlmICghbV90aWxlUHJv
Z3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbU9wYXF1ZTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDAp
OwotICAgICAgICBtX3RpbGVQcm9ncmFtT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQo
KSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9jb250ZXh0KTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1PcGFxdWUuZ2V0KCk7CiB9CkBAIC0xNjQ0
LDEwICsxNTUzLDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1P
cGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyCiBjb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVBy
b2dyYW1BQSgpCiB7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtQUEpCi0gICAgICAgIG1fdGlsZVBy
b2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwor
ICAgICAgICBtX3RpbGVQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1BQShtX2Nv
bnRleHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewogICAg
ICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbUFBOjpp
bml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1BQS0+aW5pdGlhbGl6
ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQcm9ncmFtQUEtPmluaXRpYWxpemUo
bV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1BQS5nZXQoKTsKIH0K
QEAgLTE2NTUsMTAgKzE1NjQsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxl
UHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtQUEKIGNvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9ncmFtU3dpenpsZSgpCiB7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtU3dp
enpsZSkKLSAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUgPSBhZG9wdFB0cihuZXcgVGlsZVBy
b2dyYW1Td2l6emxlKG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3RpbGVQcm9ncmFtU3dp
enpsZSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbVN3aXp6bGUobV9jb250ZXh0KSk7CiAgICAg
aWYgKCFtX3RpbGVQcm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGU6OmluaXRp
YWxpemUiLCB0aGlzLCAwKTsKLSAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxp
emUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUtPmluaXRp
YWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1Td2l6emxl
LmdldCgpOwogfQpAQCAtMTY2NiwxMCArMTU3NSwxMCBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OlRpbGVQcm9ncmFtU3dpenpsZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJv
ZwogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUq
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKCkKIHsKICAg
ICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKQotICAgICAgICBtX3RpbGVQcm9ncmFt
U3dpenpsZU9wYXF1ZSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUobV9j
b250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVlID0gYWRv
cHRQdHIobmV3IFRpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZShtX2NvbnRleHQpKTsKICAgICBpZiAo
IW1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVlLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZU9wYXF1
ZTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZU9w
YXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQcm9ncmFt
U3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4g
bV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUuZ2V0KCk7CiB9CkBAIC0xNjc3LDEwICsxNTg2LDEw
IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlT3BhcXVl
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlRpbGVQcm9ncmFtU3dpenpsZUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFt
U3dpenpsZUFBKCkKIHsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlQUEpCi0gICAgICAg
IG1fdGlsZVByb2dyYW1Td2l6emxlQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxl
QUEobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEgPSBh
ZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxlQUEobV9jb250ZXh0KSk7CiAgICAgaWYgKCFt
X3RpbGVQcm9ncmFtU3dpenpsZUFBLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZUFBOjppbml0aWFs
aXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxp
emUobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVBQS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJvZ3JhbVN3aXp6
bGVBQS5nZXQoKTsKIH0KQEAgLTE2ODgsMTAgKzE1OTcsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlUHIKIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVByb2dyYW0qIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW0oKQogewogICAgIGlmICghbV90ZXh0dXJl
UHJvZ3JhbSkKLSAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUZXh0dXJl
UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbSA9IGFk
b3B0UHRyKG5ldyBUZXh0dXJlUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGV4dHVy
ZVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAg
ICAgICAgbV90ZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAg
ICAgICBtX3RleHR1cmVQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CiAgICAgfQogICAg
IHJldHVybiBtX3RleHR1cmVQcm9ncmFtLmdldCgpOwogfQpAQCAtMTY5OSwxMCArMTYwOCwxMCBA
QCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRleHR1cmVQcm9ncgogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpU
ZXh0dXJlUHJvZ3JhbUZsaXAqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW1G
bGlwKCkKIHsKICAgICBpZiAoIW1fdGV4dHVyZVByb2dyYW1GbGlwKQotICAgICAgICBtX3RleHR1
cmVQcm9ncmFtRmxpcCA9IGFkb3B0UHRyKG5ldyBUZXh0dXJlUHJvZ3JhbUZsaXAobV9jb250ZXh0
LmdldCgpKSk7CisgICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwID0gYWRvcHRQdHIobmV3IFRl
eHR1cmVQcm9ncmFtRmxpcChtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGV4dHVyZVByb2dyYW1G
bGlwLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRleHR1cmVQcm9ncmFtRmxpcDo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAg
ICAgICBtX3RleHR1cmVQcm9ncmFtRmxpcC0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwor
ICAgICAgICBtX3RleHR1cmVQcm9ncmFtRmxpcC0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOwogICAg
IH0KICAgICByZXR1cm4gbV90ZXh0dXJlUHJvZ3JhbUZsaXAuZ2V0KCk7CiB9CkBAIC0xNzEwLDEw
ICsxNjE5LDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVByb2dyYW1G
bGlwKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQCiBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKCkKIHsKICAgICBpZiAoIW1fdGV4dHVyZUlPU3VyZmFj
ZVByb2dyYW0pCi0gICAgICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihu
ZXcgVGV4dHVyZUlPU3VyZmFjZVByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1f
dGV4dHVyZUlPU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGV4dHVyZUlPU3VyZmFjZVBy
b2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtLT5p
bml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21p
dW06OnRleHR1cmVJT1N1cmZhY2VQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAg
ICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgp
KTsKKyAgICAgICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRl
eHQpOwogICAgIH0KICAgICByZXR1cm4gbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS5nZXQoKTsK
IH0KQEAgLTE3MjEsMTAgKzE2MzAsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpU
ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXgKIGNvbnN0
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VmlkZW9ZVVZQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnZpZGVvWVVWUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3ZpZGVvWVVWUHJvZ3JhbSkK
LSAgICAgICAgbV92aWRlb1lVVlByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlkZW9ZVVZQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbSA9IGFkb3B0UHRy
KG5ldyBWaWRlb1lVVlByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3ZpZGVvWVVWUHJv
Z3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp2aWRlb1lVVlByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAgICAg
ICAgbV92aWRlb1lVVlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgbV92aWRlb1lVVlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKICAgICB9CiAgICAg
cmV0dXJuIG1fdmlkZW9ZVVZQcm9ncmFtLmdldCgpOwogfQpAQCAtMTczMiwxMCArMTY0MSwxMCBA
QCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlZpZGVvWVVWUHJvZ3JhbSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp2aWRlb1lVVlBybwogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpW
aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvU3Ry
ZWFtVGV4dHVyZVByb2dyYW0oKQogewogICAgIGlmICghbV92aWRlb1N0cmVhbVRleHR1cmVQcm9n
cmFtKQotICAgICAgICBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0gPSBhZG9wdFB0cihuZXcg
VmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV92
aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFZpZGVvU3RyZWFtVGV4dHVy
ZVByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dy
YW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c3RyZWFtVGV4dHVyZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKLSAg
ICAgICAgbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5n
ZXQoKSk7CisgICAgICAgIG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFt
LmdldCgpOwogfQpAQCAtMTc0Nyw0NiArMTY1Niw0NiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fc2hhcmVkR2VvbWV0cnkuY2xlYXIo
KTsKIAogICAgIGlmIChtX3RpbGVQcm9ncmFtKQotICAgICAgICBtX3RpbGVQcm9ncmFtLT5jbGVh
bnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fdGlsZVByb2dyYW0tPmNsZWFudXAobV9j
b250ZXh0KTsKICAgICBpZiAobV90aWxlUHJvZ3JhbU9wYXF1ZSkKLSAgICAgICAgbV90aWxlUHJv
Z3JhbU9wYXF1ZS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3RpbGVQcm9n
cmFtT3BhcXVlLT5jbGVhbnVwKG1fY29udGV4dCk7CiAgICAgaWYgKG1fdGlsZVByb2dyYW1Td2l6
emxlKQotICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0
KCkpOworICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZS0+Y2xlYW51cChtX2NvbnRleHQpOwog
ICAgIGlmIChtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZSkKLSAgICAgICAgbV90aWxlUHJvZ3Jh
bVN3aXp6bGVPcGFxdWUtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxl
UHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmNsZWFudXAobV9jb250ZXh0KTsKICAgICBpZiAobV90aWxl
UHJvZ3JhbUFBKQotICAgICAgICBtX3RpbGVQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4dCk7CiAgICAg
aWYgKG1fdGlsZVByb2dyYW1Td2l6emxlQUEpCi0gICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxl
QUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6
bGVBQS0+Y2xlYW51cChtX2NvbnRleHQpOwogICAgIGlmIChtX3RpbGVDaGVja2VyYm9hcmRQcm9n
cmFtKQotICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4
dC5nZXQoKSk7CisgICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmNsZWFudXAobV9j
b250ZXh0KTsKIAogICAgIGlmIChtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbSkKLSAgICAgICAgbV9y
ZW5kZXJQYXNzTWFza1Byb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAg
bV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsKICAgICBpZiAobV9y
ZW5kZXJQYXNzUHJvZ3JhbSkKLSAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbS0+Y2xlYW51cCht
X2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtLT5jbGVhbnVwKG1f
Y29udGV4dCk7CiAgICAgaWYgKG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpCi0gICAgICAgIG1f
cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQpOwogICAgIGlm
IChtX3JlbmRlclBhc3NQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+
Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFtQUEt
PmNsZWFudXAobV9jb250ZXh0KTsKIAogICAgIGlmIChtX3RleHR1cmVQcm9ncmFtKQotICAgICAg
ICBtX3RleHR1cmVQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1f
dGV4dHVyZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsKICAgICBpZiAobV90ZXh0dXJlUHJv
Z3JhbUZsaXApCi0gICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwLT5jbGVhbnVwKG1fY29udGV4
dC5nZXQoKSk7CisgICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwLT5jbGVhbnVwKG1fY29udGV4
dCk7CiAgICAgaWYgKG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0pCi0gICAgICAgIG1fdGV4dHVy
ZUlPU3VyZmFjZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV90
ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwogCiAgICAgaWYgKG1f
dmlkZW9ZVVZQcm9ncmFtKQotICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+Y2xlYW51cChtX2Nv
bnRleHQuZ2V0KCkpOworICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRl
eHQpOwogICAgIGlmIChtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0pCi0gICAgICAgIG1fdmlk
ZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAg
ICBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsKIAogICAg
IGlmIChtX3NvbGlkQ29sb3JQcm9ncmFtKQotICAgICAgICBtX3NvbGlkQ29sb3JQcm9ncmFtLT5j
bGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fc29saWRDb2xvclByb2dyYW0tPmNs
ZWFudXAobV9jb250ZXh0KTsKIAogICAgIGlmIChtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSkKLSAg
ICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsK
KyAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsKIAog
ICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7
CkBAIC0xNzk5LDcgKzE3MDgsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51
cFNoYXJlZE9iamVjdHMoKQogCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDb250ZXh0
TG9zdCgpCiB7Ci0gICAgcmV0dXJuIChtX2NvbnRleHQuZ2V0KCktPmdldEV4dGVuc2lvbnMoKS0+
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJP
Uik7CisgICAgcmV0dXJuIChtX2NvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGY3Y2NiNjUxZjg1MGJk
MDM4MmIwOTUwYzQ3ODViMDM1NzFlZGUzOWQuLjM0MjU0YjAwYjkyMjJmMTBlMmY5ZDFjMzc5YTU3
OTFmYzE4NzY5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC00MCw2
ICs0MCwxMCBAQAogI2luY2x1ZGUgImNjL0NDUmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdyYXBoaWNzQ29udGV4
dDNEOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDQ2hlY2tlcmJvYXJkRHJh
d1F1YWQ7CkBAIC01MywyMiArNTcsMjMgQEAgY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQ7CiBjbGFz
cyBDQ1RpbGVEcmF3UXVhZDsKIGNsYXNzIENDWVVWVmlkZW9EcmF3UXVhZDsKIGNsYXNzIEdlb21l
dHJ5QmluZGluZzsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgTGF5ZXJSZW5kZXJl
clN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7CiBjbGFzcyBNYW5hZ2VkVGV4dHVy
ZTsKIGNsYXNzIFNjb3BlZEVuc3VyZUZyYW1lYnVmZmVyQWxsb2NhdGlvbjsKIAogLy8gQ2xhc3Mg
dGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdM
LgotY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIENDUmVuZGVyZXIgeworY2xh
c3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIENDUmVuZGVyZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6
V2ViR3JhcGhpY3NTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
OjpXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlVTSAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRDo6V2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDUmVuZGVyZXJDbGllbnQq
LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShDQ1Jl
bmRlcmVyQ2xpZW50KiwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVVcGxv
YWRlck9wdGlvbik7CiAKICAgICB2aXJ0dWFsIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVz
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KIAotICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0Q2hhbmdlZCgpIE9WRVJS
SURFOwogCkBAIC04OCw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICAvLyBwdXRzIGJhY2tidWZmZXIg
b25zY3JlZW4KICAgICB2aXJ0dWFsIGJvb2wgc3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVjdCYgc3Vi
QnVmZmVyKSBPVkVSUklERTsKIAotICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNz
Q29udGV4dDNEKiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUpOworICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7
CiAKICAgICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJlZEdlb21ldHJ5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQogCkBAIC0xMTEsMTQgKzExNiwxMSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9jYXRpb24sIGludCBxdWFkTG9j
YXRpb24pOwogICAgIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGludCB0ZXh0dXJlSWQs
IGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd01hdHJpeCk7Ci0gICAgdm9pZCBzZXRHcHVNZW1vcnlBbGxvY2F0aW9uKEV4dGVu
c2lvbnMzRENocm9taXVtOjpHcHVNZW1vcnlBbGxvY2F0aW9uQ0hST01JVU0pOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBkaXNjYXJkRnJhbWVidWZmZXIoKTsKLSAgICB2b2lkIGVuc3VyZUZyYW1l
YnVmZmVyKCk7Ci0gICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVt
KENDUmVuZGVyZXJDbGllbnQqLCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZVVwbG9hZGVyT3B0aW9uKTsKIAotICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVy
Q2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1cmVVcGxvYWRlck9w
dGlvbik7CisgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHBy
aXZhdGU6CkBAIC0xNTQsOCArMTU2LDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0aWFsaXpl
U2hhcmVkT2JqZWN0cygpOwogICAgIHZvaWQgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKIAotICAg
IGZyaWVuZCBjbGFzcyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRh
cHRlcjsKLSAgICB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOworICAgIC8vIFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0Q6OldlYkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxi
YWNrQ0hST01JVU0gaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZl
cnNDb21wbGV0ZSgpIE9WRVJSSURFOworCisgICAgLy8gV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRDo6V2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQ0hST01JVU0g
aW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIG9uTWVtb3J5QWxsb2NhdGlvbkNoYW5n
ZWQoV2ViS2l0OjpXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24pIE9WRVJSSURFOworICAgIHZv
aWQgb25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbFRocmVhZChXZWJLaXQ6OldlYkdyYXBo
aWNzTWVtb3J5QWxsb2NhdGlvbik7CisgICAgdm9pZCBkaXNjYXJkRnJhbWVidWZmZXIoKTsKKyAg
ICB2b2lkIGVuc3VyZUZyYW1lYnVmZmVyKCk7CisKKyAgICAvLyBXZWJHcmFwaGljc0NvbnRleHQz
RDo6V2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrIGltcGxlbWVudGF0aW9uLgorICAgIHZp
cnR1YWwgdm9pZCBvbkNvbnRleHRMb3N0KCkgT1ZFUlJJREU7CiAKICAgICBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwogCkBAIC0yNTIsNyArMjYzLDcgQEAgcHJpdmF0
ZToKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2ltcGxU
ZXh0dXJlQWxsb2NhdG9yOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRl
eHQ7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogCiAgICAg
Y29uc3QgQ0NSZW5kZXJQYXNzKiBtX2RlZmF1bHRSZW5kZXJQYXNzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVTdWJJbWFnZS5jcHAKaW5kZXggNGJlYTkwNDJmODJmNDU3NDhmMDAzZTM0NjZkYjYz
ZGI2MzQ0MGE0Ni4uNGFhOTk2NWU3ZjM4YjBiZTM4M2ZiY2QxYjFmYjMwNzVmNzZjMmU1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcApAQCAtODksNyArODksNyBAQCB2b2lk
IExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhf
dCogaW1hZ2UsIGNvbnN0IEludAogICAgICAgICBwaXhlbFNvdXJjZSA9ICZtX3N1YkltYWdlWzBd
OwogICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5j
b250ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2Qg
PSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAg
ICAgICAgIHJldHVybjsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1Yklt
YWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBUUkFDRV9F
VkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRo
aXMsIDApOwotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250
ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBj
b250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCiAgICAg
ICAgIHJldHVybjsKQEAgLTExMiw4ICsxMTIsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdl
Ojp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0CiAg
ICAgSW50UG9pbnQgb2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNl
UmVjdC55KCkgLSBpbWFnZVJlY3QueSgpKTsKIAogICAgIC8vIFVwbG9hZCB0aWxlIGRhdGEgdmlh
IGEgbWFwcGVkIHRyYW5zZmVyIGJ1ZmZlcgotICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRl
bnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0M2QtPmdl
dEV4dGVuc2lvbnMoKSk7Ci0gICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0
LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworICAgIHVp
bnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250ZXh0M2QtPm1hcFRl
eFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVz
dFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdo
dCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25z
M0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOwogCiAgICAgaWYgKCFwaXhlbERlc3QpIHsKICAgICAg
ICAgdXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRl
c3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwpAQCAtMTM3LDcgKzEzNiw3IEBAIHZvaWQgTGF5ZXJU
ZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBp
bWFnZSwgY29uc3QKICAgICAgICAgICAgICAgICAgICAmaW1hZ2VbNCAqIChvZmZzZXQueCgpICsg
KG9mZnNldC55KCkgKyByb3cpICogaW1hZ2VSZWN0LndpZHRoKCkpXSwKICAgICAgICAgICAgICAg
ICAgICBkZXN0UmVjdC53aWR0aCgpICogY29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQZXJDb21w
b25lbnQpOwogICAgIH0KLSAgICBHTEMoY29udGV4dDNkLCBleHRlbnNpb25zLT51bm1hcFRleFN1
YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpKTsKKyAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0
M2QtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggYjA2YWFhOTFiNjhh
NDM4ZTA3Y2Q4ZTU2ZjBjOTk5ZDc4ZGY5YmRkNC4uOGNjMGMyZjkzNDgzYWNmZTg0MzQyZDA5MjBm
NmNhNDVjMjhiYWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtMzAsNiArMzAsOSBA
QAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgor
Cit1c2luZyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTEyMCw3ICsxMjMsNyBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxvY2F0ZShU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB2b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4
dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yKQogewogICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgIFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQz
ZCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUg
Y29tcG9zaXRpbmcuCiAgICAgICAgIHJldHVybjsKQEAgLTEzMSw3ICsxMzQsNyBAQCB2b2lkIE1h
bmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYQogdm9pZCBNYW5hZ2VkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
cikKIHsKICAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0M2Qp
IHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNv
bXBvc2l0aW5nLgogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgKaW5kZXggYWI2NTQ1
ZGNlZTJmMTFjZTU3YjQ1ZGIyYTE3Zjg1NzU5MWE1Y2U5OS4uYTg1NTIxNWJkNzc0OTc5ZGNkZmZj
OGIxZGM4NGMwMWI2ZmIyMTU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ29sb3IuaApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiU2tUeXBlcy5oIiAKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwxNCArNDEsMTQgQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIFJldHVybnMgdGhlIG1vc3QgZWZmaWNpZW50IHRleHR1
cmUgZm9ybWF0IGZvciB0aGlzIHBsYXRmb3JtLgotICAgIHN0YXRpYyBHQzNEZW51bSBiZXN0VGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICBzdGF0aWMgR0MzRGVu
dW0gYmVzdFRleHR1cmVGb3JtYXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgYm9vbCBzdXBwb3J0c0JHUkE4ODg4KQogICAgIHsKICAgICAgICAgR0MzRGVudW0gdGV4dHVy
ZUZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwogICAgICAgICBzd2l0Y2ggKGZvcm1h
dCgpKSB7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQkE4
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNv
dXJjZUZvcm1hdEJHUkE4OgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQorICAgICAgICAg
ICAgaWYgKHN1cHBvcnRzQkdSQTg4ODgpCiAgICAgICAgICAgICAgICAgdGV4dHVyZUZvcm1hdCA9
IEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1Byb2dyYW1CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcAppbmRleCAzNzY0MzRlNjJiZmI0ZDFkYjQxZmZl
MDY4NzdjODljNzA3OGNhZDU2Li42YWZiYjM0YWU2MDdmMzE4MDE0NjlmNTY2MThhNDA3NGQ5MTY5
ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Qcm9ncmFtQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwCkBAIC0yOSwxMiArMjksMTMgQEAKIAogI2lu
Y2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNp
bmNsdWRlICJHZW9tZXRyeUJpbmRpbmcuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaD4KKwordXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSwxOSArNTIsMTkgQEAgUHJvZ3JhbUJp
bmRpbmdCYXNlOjp+UHJvZ3JhbUJpbmRpbmdCYXNlKCkKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6
ZWQpOwogfQogCi1zdGF0aWMgYm9vbCBjb250ZXh0TG9zdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCkKK3N0YXRpYyBib29sIGNvbnRleHRMb3N0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQogewotICAgIHJldHVybiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gKGNvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAhPSBHcmFwaGljc0Nv
bnRleHQzRDo6Tk9fRVJST1IpOwogfQogCiAKLXZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwg
Y29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKK3ZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpp
bml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNo
YWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKIHsKICAgICBtX3Byb2dyYW0gPSBj
cmVhdGVTaGFkZXJQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIp
OwogICAgIEFTU0VSVChtX3Byb2dyYW0gfHwgY29udGV4dExvc3QoY29udGV4dCkpOwogfQogCi12
b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKK3ZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwKFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQogewogICAgIG1faW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBpZiAoIW1fcHJv
Z3JhbSkKQEAgLTc0LDEzICs3NSwxMyBAQCB2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51
cChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICBtX3Byb2dyYW0gPSAwOwogfQogCi11
bnNpZ25lZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmxvYWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIHVuc2lnbmVkIHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291cmNlKQordW5z
aWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsb2FkU2hhZGVyKFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCB0eXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclNvdXJjZSkKIHsK
ICAgICB1bnNpZ25lZCBzaGFkZXIgPSBjb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7CiAgICAg
aWYgKCFzaGFkZXIpCiAgICAgICAgIHJldHVybiAwOwogICAgIFN0cmluZyBzb3VyY2VTdHJpbmco
c2hhZGVyU291cmNlKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+c2hhZGVyU291cmNlKHNo
YWRlciwgc291cmNlU3RyaW5nKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnNoYWRlclNv
dXJjZShzaGFkZXIsIHNvdXJjZVN0cmluZy51dGY4KCkuZGF0YSgpKSk7CiAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKSk7CiAjaWZuZGVmIE5ERUJVRwogICAg
IGludCBjb21waWxlZCA9IDA7CkBAIC05Myw5ICs5NCw5IEBAIHVuc2lnbmVkIFByb2dyYW1CaW5k
aW5nQmFzZTo6bG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
dHlwCiAgICAgcmV0dXJuIHNoYWRlcjsKIH0KIAotdW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNl
OjpjcmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclNv
dXJjZSkKK3Vuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJT
b3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpCiB7Ci0gICAgVFJBQ0Vf
RVZFTlQoIlByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSIsIHRoaXMsIDAp
OworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFk
ZXJQcm9ncmFtIik7CiAgICAgdW5zaWduZWQgdmVydGV4U2hhZGVyID0gbG9hZFNoYWRlcihjb250
ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyU291cmNl
KTsKICAgICBpZiAoIXZlcnRleFNoYWRlcikgewogICAgICAgICBpZiAoIWNvbnRleHRMb3N0KGNv
bnRleHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUHJvZ3JhbUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKaW5kZXggYWVhMjg1Njg5MGRhZjJkNWQ2YzQ4NDgy
N2Y2NTBmNzg3M2EwMTFkNy4uMzkwNDhmOTAzMjBiYWQyNGVjM2M0OWY5NTJkNjk0YzQxOGU3ZWVi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UHJvZ3JhbUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCkBAIC0yOCwyNyArMjgsMjkgQEAKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7Cit9CiAKLWNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEOworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcm9ncmFt
QmluZGluZ0Jhc2UgewogcHVibGljOgogICAgIFByb2dyYW1CaW5kaW5nQmFzZSgpOwogICAgIH5Q
cm9ncmFtQmluZGluZ0Jhc2UoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCos
IGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVy
KTsKLSAgICB2b2lkIGNsZWFudXAoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICB2b2lkIGluaXQo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVy
LCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKTsKKyAgICB2b2lkIGNsZWFudXAoV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRCopOwogCiAgICAgdW5zaWduZWQgcHJvZ3JhbSgpIGNvbnN0
IHsgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOyByZXR1cm4gbV9wcm9ncmFtOyB9CiAgICAgYm9vbCBp
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KIAogcHJvdGVjdGVk
OgogCi0gICAgdW5zaWduZWQgbG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291cmNlKTsKLSAgICB1bnNpZ25lZCBjcmVhdGVT
aGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIHVuc2ln
bmVkIGxvYWRTaGFkZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHR5
cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291cmNlKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVTaGFk
ZXJQcm9ncmFtKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBTdHJpbmcmIHZl
cnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclNvdXJjZSk7CiAK
ICAgICB1bnNpZ25lZCBtX3Byb2dyYW07CiAgICAgYm9vbCBtX2luaXRpYWxpemVkOwpAQCAtNTcs
MTIgKzU5LDEyIEBAIHByb3RlY3RlZDoKIHRlbXBsYXRlPGNsYXNzIFZlcnRleFNoYWRlciwgY2xh
c3MgRnJhZ21lbnRTaGFkZXI+CiBjbGFzcyBQcm9ncmFtQmluZGluZyA6IHB1YmxpYyBQcm9ncmFt
QmluZGluZ0Jhc2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IFByb2dyYW1CaW5kaW5nKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgIGV4cGxpY2l0IFByb2dyYW1CaW5kaW5nKFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgewogICAgICAgICBQcm9ncmFt
QmluZGluZ0Jhc2U6OmluaXQoY29udGV4dCwgbV92ZXJ0ZXhTaGFkZXIuZ2V0U2hhZGVyU3RyaW5n
KCksIG1fZnJhZ21lbnRTaGFkZXIuZ2V0U2hhZGVyU3RyaW5nKCkpOwogICAgIH0KIAotICAgIHZv
aWQgaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICB2b2lkIGluaXRp
YWxpemUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0KTsKICAgICAgICAgQVNTRVJUKG1fcHJvZ3JhbSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFk
ZXJDaHJvbWl1bS5jcHAKaW5kZXggNmVkNmY0YThlNDE5NjQzMjAyMmM1NjY2NjhkNWRkOGMxOWEz
NDAzMS4uMmExNDBkMWQ3ODViNjQzOWIzMWUwYjJmODRmMzI0ZTU4Y2U3MDc4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmNwcApAQCAtMjksMTIgKzI5LDEzIEBACiAKICNpbmNsdWRlICJTaGFkZXJD
aHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aD4KIAogI2RlZmluZSBTSEFERVIwKFNyYykgI1NyYwogI2RlZmluZSBTSEFERVIoU3JjKSBTSEFE
RVIwKFNyYykKIAordXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBWZXJ0ZXhTaGFkZXJQb3NUZXg6OlZlcnRleFNoYWRlclBvc1RleCgp
CkBAIC00Miw3ICs0Myw3IEBAIFZlcnRleFNoYWRlclBvc1RleDo6VmVydGV4U2hhZGVyUG9zVGV4
KCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvc1RleDo6
aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsK
ICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJtYXRyaXgiKTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSk7CkBAIC03
MCw3ICs3MSw3IEBAIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OlZlcnRleFNoYWRlclBv
c1RleFlVVlN0cmV0Y2goKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0
Y2g6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2
b2lkIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9tYXRyaXhMb2NhdGlvbiA9
IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CiAgICAgbV95
V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJ5X3dpZHRoU2NhbGVGYWN0b3IiKTsKQEAgLTEwMyw3ICsxMDQsNyBAQCBWZXJ0ZXhT
aGFkZXJQb3M6OlZlcnRleFNoYWRlclBvcygpCiB7CiB9CiAKLXZvaWQgVmVydGV4U2hhZGVyUG9z
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9p
ZCBWZXJ0ZXhTaGFkZXJQb3M6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVu
c2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CiAgICAgQVNTRVJUKG1fbWF0cml4TG9j
YXRpb24gIT0gLTEpOwpAQCAtMTI3LDcgKzEyOCw3IEBAIFZlcnRleFNoYWRlclBvc1RleFRyYW5z
Zm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhT
aGFkZXJQb3NUZXhUcmFuc2Zvcm06OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVu
c2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdChX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBt
X21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJt
YXRyaXgiKTsKICAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKQEAgLTE2OSw3ICsxNzAsNyBAQCBT
dHJpbmcgVmVydGV4U2hhZGVyUG9zVGV4SWRlbnRpdHk6OmdldFNoYWRlclN0cmluZygpIGNvbnN0
CiAgICAgKTsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJRdWFkOjppbml0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBWZXJ0ZXhTaGFkZXJRdWFkOjpp
bml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogewog
ICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgIm1hdHJpeCIpOwogICAgIG1fcG9pbnRMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAicG9pbnQiKTsKQEAgLTIwNSw3ICsyMDYsNyBAQCBWZXJ0ZXhTaGFk
ZXJUaWxlOjpWZXJ0ZXhTaGFkZXJUaWxlKCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJUaWxl
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9p
ZCBWZXJ0ZXhTaGFkZXJUaWxlOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCBwcm9ncmFtKQogewogICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwogICAgIG1fcG9pbnRMb2NhdGlvbiA9
IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAicG9pbnQiKTsKQEAgLTI0Miw3
ICsyNDMsNyBAQCBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6VmVydGV4U2hhZGVyVmlkZW9U
cmFuc2Zvcm0oKQogewogfQogCi1ib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjppbml0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorYm9vbCBWZXJ0
ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKICAgICBtX3RleE1hdHJpeExv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhNYXRyaXgi
KTsKQEAgLTI3MSw3ICsyNzIsNyBAQCBGcmFnbWVudFRleEFscGhhQmluZGluZzo6RnJhZ21lbnRU
ZXhBbHBoYUJpbmRpbmcoKQogewogfQogCi12b2lkIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjpp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBG
cmFnbWVudFRleEFscGhhQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAgICAgbV9hbHBoYUxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwpA
QCAtMjg0LDcgKzI4NSw3IEBAIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6RnJhZ21lbnRUZXhP
cGFxdWVCaW5kaW5nKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6Omlu
aXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZy
YWdtZW50VGV4T3BhcXVlQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAKQEAgLTMwNiw3ICsz
MDcsNyBAQCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhOjpnZXRTaGFkZXJT
dHJpbmcoKSBjb25zdAogICAgICk7CiB9CiAKLWJvb2wgRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4
dGVybmFsOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
KQorYm9vbCBGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmluaXQoV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9zYW1wbGVyTG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIp
OwogCkBAIC00MzYsNyArNDM3LDcgQEAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6RnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGFBQTo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
cHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6aW5pdChXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBs
ZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0
dXJlIik7CiAgICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJhbHBoYSIpOwpAQCAtNDc4LDcgKzQ3OSw3IEBAIEZyYWdtZW50VGV4Q2xhbXBB
bHBoYUFBQmluZGluZzo6RnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nKCkKIHsKIH0KIAot
dm9pZCBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50VGV4Q2xhbXBBbHBo
YUFBQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
cHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAgICAgbV9hbHBoYUxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwpAQCAtNTQ5LDcgKzU1
MCw3IEBAIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJhZ21lbnRTaGFkZXJSR0JB
VGV4QWxwaGFNYXNrKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1h
c2s6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2
b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChXZWJHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAg
ICAgbV9tYXNrU2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJzX21hc2siKTsKQEAgLTU4Miw3ICs1ODMsNyBAQCBGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYU1hc2tBQTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUEoKQogewogfQog
Ci12b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjppbml0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlclJH
QkFUZXhBbHBoYU1hc2tBQTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CiAgICAgbV9tYXNrU2FtcGxlckxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21hc2siKTsK
QEAgLTYyOCw3ICs2MjksNyBAQCBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpGcmFnbWVudFNoYWRl
cllVVlZpZGVvKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjppbml0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVu
dFNoYWRlcllVVlZpZGVvOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBwcm9ncmFtKQogewogICAgIG1feVRleHR1cmVMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAieV90ZXh0dXJlIik7CiAgICAgbV91VGV4dHVyZUxvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3RleHR1cmUiKTsK
QEAgLTY3MSw3ICs2NzIsNyBAQCBGcmFnbWVudFNoYWRlckNvbG9yOjpGcmFnbWVudFNoYWRlckNv
bG9yKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlckNvbG9yOjppbml0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlckNv
bG9yOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
KQogewogICAgIG1fY29sb3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiY29sb3IiKTsKICAgICBBU1NFUlQobV9jb2xvckxvY2F0aW9uICE9IC0xKTsKQEAg
LTY5Niw3ICs2OTcsNyBAQCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6RnJhZ21lbnRTaGFk
ZXJDaGVja2VyYm9hcmQoKQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJk
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9p
ZCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX2FscGhhTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CiAgICAgbV90ZXhUcmFu
c2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4
VHJhbnNmb3JtIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAppbmRleCA5Mjc3ZWNjYTUwYzM2ZDE4OWQ4
ZTYxZDcyZTVmZjM3YThlMzU3Yzg0Li40NzViNzg5NjI0NWQ2OGQ1MWM5Y2ZiZjk2MzEwMTdjZDY2
YmMyZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TaGFkZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKQEAgLTMxLDE1ICszMSwxNyBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2tDb2xvclByaXYuaCIKIAotbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRl
eHQzRDsKK30KIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CituYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFZlcnRleFNoYWRlclBvc1RleCB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVy
UG9zVGV4KCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBw
cm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAog
ICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247
IH0KQEAgLTUyLDcgKzU0LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCB7
CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCgpOwogCi0gICAgdm9p
ZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBp
bml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAg
ICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC02OSw3ICs3MSw3IEBA
IGNsYXNzIFZlcnRleFNoYWRlclBvcyB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVyUG9zKCk7
CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsK
KyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBt
YXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTgw
LDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4SWRlbnRpdHkg
ewogcHVibGljOgotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0pIHsgfQorICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSkgeyB9CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0
OwogfTsKIApAQCAtODgsNyArOTAsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zv
cm0gewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpOwogCi0gICAg
dm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9p
ZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsK
ICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC0xMDMsNyArMTA1
LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUXVhZCB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVy
UXVhZCgpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJv
Z3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNp
Z25lZCBwcm9ncmFtKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAg
ICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9
CkBAIC0xMTgsNyArMTIwLDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyVGlsZSB7CiBwdWJsaWM6CiAg
ICAgVmVydGV4U2hhZGVyVGlsZSgpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5n
KCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21h
dHJpeExvY2F0aW9uOyB9CkBAIC0xMzUsNyArMTM3LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyVmlk
ZW9UcmFuc2Zvcm0gewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKCk7
CiAKLSAgICBib29sIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsK
KyAgICBib29sIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBt
YXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTE1
MCw3ICsxNTIsNyBAQCBjbGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6CiAg
ICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50IGFscGhhTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAgICBpbnQgZWRnZUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KICAgICBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1M
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CkBAIC0xNjUsNyArMTY3LDcgQEAgY2xhc3Mg
RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFRleE9wYXF1
ZUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biAtMTsgfQogICAgIGludCBlZGdlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsgfQogICAg
IGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0K
QEAgLTIyMSw3ICsyMjMsNyBAQCBwdWJsaWM6CiBjbGFzcyBGcmFnbWVudFNoYWRlck9FU0ltYWdl
RXh0ZXJuYWwgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewogcHVibGljOgogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKLSAgICBib29sIGluaXQoR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBib29sIGluaXQoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwogcHJpdmF0ZToKICAgICBpbnQg
bV9zYW1wbGVyTG9jYXRpb247CiB9OwpAQCAtMjMwLDcgKzIzMiw3IEBAIGNsYXNzIEZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhQUEgewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhQUEoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0Owog
CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247
IH0KQEAgLTI0Nyw3ICsyNDksNyBAQCBjbGFzcyBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRp
bmcgewogcHVibGljOgogICAgIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZygpOwogCi0g
ICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAg
dm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFt
KTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlv
bjsgfQogICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJM
b2NhdGlvbjsgfQogICAgIGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uOyB9CkBAIC0yNzYsNyArMjc4
LDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygpOwogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50IGFscGhhTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAgICBpbnQgc2FtcGxl
ckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KICAgICBpbnQg
bWFza1NhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NhbXBsZXJMb2NhdGlv
bjsgfQpAQCAtMjkyLDcgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYU1hc2tBQSgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAot
ICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAg
IHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3Jh
bSk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRp
b247IH0KICAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVy
TG9jYXRpb247IH0KICAgICBpbnQgbWFza1NhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbWFza1NhbXBsZXJMb2NhdGlvbjsgfQpAQCAtMzEwLDcgKzMxMiw3IEBAIHB1YmxpYzoKICAg
ICBGcmFnbWVudFNoYWRlcllVVlZpZGVvKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygp
IGNvbnN0OwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJv
Z3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNp
Z25lZCBwcm9ncmFtKTsKIAogICAgIGludCB5VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV95VGV4dHVyZUxvY2F0aW9uOyB9CiAgICAgaW50IHVUZXh0dXJlTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3VUZXh0dXJlTG9jYXRpb247IH0KQEAgLTMzMyw3ICszMzUsNyBAQCBwdWJs
aWM6CiAgICAgRnJhZ21lbnRTaGFkZXJDb2xvcigpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSk7CiAgICAgaW50IGNvbG9yTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2NvbG9yTG9jYXRpb247IH0KIAogcHJpdmF0ZToKQEAgLTM0NSw3ICszNDcsNyBAQCBwdWJs
aWM6CiAgICAgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQoKTsKICAgICBTdHJpbmcgZ2V0U2hh
ZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHRleFRyYW5zZm9ybUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQogICAgIGludCBmcmVx
dWVuY3lMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJlcXVlbmN5TG9jYXRpb247IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZUNvcGllci5jcHAKaW5kZXggYTI5YzI4NTUxM2YzNTgzMTQ3ZTBjOGI5MWFhM2NjNzJh
NjdlZmIzYS4uMGYyMzA5MDY4Nzk0YjkwNjg0YThlNjA2Njc0OTFkMzAyZTU2NDhlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNv
cGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZUNvcGllci5jcHAKQEAgLTI1LDE2ICsyNSwxOSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIK
IAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiIC8vIEZvciB0aGUgR0xDKCkgbWFjcm8KKyNpbmNsdWRlICJUcmFjZUV2ZW50
LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLUFjY2VsZXJh
dGVkVGV4dHVyZUNvcGllcjo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCitBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OkFjY2Vs
ZXJhdGVkVGV4dHVyZUNvcGllcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiB7CisgICAgQVNTRVJUKG1fY29udGV4dCk7CiAg
ICAgR0xDKG1fY29udGV4dCwgbV9mYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fcG9zaXRpb25CdWZmZXIgPSBtX2NvbnRleHQtPmNyZWF0
ZUJ1ZmZlcigpKTsKIApAQCAtNDUsMTcgKzQ4LDE3IEBAIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGll
cjo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
CiAgICAgICAgIHstMSwgMSwgMCwgMX0KICAgICB9OwogCi0gICAgR0xDKG1fY29udGV4dC5nZXQo
KSwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIs
IG1fcG9zaXRpb25CdWZmZXIpKTsKLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKGtQb3Np
dGlvbnMpLCBrUG9zaXRpb25zLCBHcmFwaGljc0NvbnRleHQzRDo6U1RBVElDX0RSQVcpKTsKLSAg
ICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Bvc2l0aW9uQnVm
ZmVyKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNz
Q29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHNpemVvZihrUG9zaXRpb25zKSwga1Bvc2l0aW9ucywg
R3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIDApKTsK
IAotICAgIG1fYmxpdFByb2dyYW0gPSBhZG9wdFB0cihuZXcgQmxpdFByb2dyYW0obV9jb250ZXh0
LmdldCgpKSk7CisgICAgbV9ibGl0UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBCbGl0UHJvZ3JhbSht
X2NvbnRleHQpKTsKIH0KIAogQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjp+QWNjZWxlcmF0ZWRU
ZXh0dXJlQ29waWVyKCkKIHsKICAgICBpZiAobV9ibGl0UHJvZ3JhbSkKLSAgICAgICAgbV9ibGl0
UHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX2JsaXRQcm9ncmFt
LT5jbGVhbnVwKG1fY29udGV4dCk7CiAgICAgaWYgKG1fcG9zaXRpb25CdWZmZXIpCiAgICAgICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKG1fcG9zaXRpb25CdWZmZXIp
KTsKICAgICBpZiAobV9mYm8pCkBAIC02Niw3ICs2OSw3IEBAIHZvaWQgQWNjZWxlcmF0ZWRUZXh0
dXJlQ29waWVyOjpjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY2NDb250ZXh0LCB1bnNp
Z25lCiB7CiAgICAgVFJBQ0VfRVZFTlQoIlRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlIiwgdGhp
cywgMCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGNjQ29udGV4dC0+Y29u
dGV4dDNEKCk7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGNj
Q29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGV4dHVyZUNvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCmluZGV4IDNhYzJkMTE5MTRmZmExNWY4ZGVjMmNh
YjNkZjVjZDI4MGEzYTZmOTAuLjY0NjE4OWFiNjE4ODQzNGRkOGVkMGU3NzIwYzI2ZjAwODI4MWQz
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKQEAgLTI5LDkgKzI5LDEzIEBACiAjaW5jbHVkZSAiUHJv
Z3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNj
L0NDR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgVGV4dHVyZUNvcGllciB7CiBw
dWJsaWM6CkBAIC00OSw3ICs1Myw3IEBAIHByb3RlY3RlZDoKIGNsYXNzIEFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllciA6IHB1YmxpYyBUZXh0dXJlQ29waWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8QWNjZWxlcmF0ZWRU
ZXh0dXJlQ29waWVyPiBjcmVhdGUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWNjZWxlcmF0ZWRUZXh0dXJl
Q29waWVyKGNvbnRleHQpKTsKICAgICB9CkBAIC01OCwxMiArNjIsMTIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkIHNv
dXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKyAgICBleHBsaWNpdCBBY2NlbGVyYXRlZFRleHR1
cmVDb3BpZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCopOwogCiBwcml2YXRlOgogICAg
IHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4SWRlbnRpdHksIEZyYWdt
ZW50U2hhZGVyUkdCQVRleD4gQmxpdFByb2dyYW07CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dDsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2Nv
bnRleHQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX2ZibzsKICAgICBQbGF0Zm9ybTNET2JqZWN0
IG1fcG9zaXRpb25CdWZmZXI7CiAgICAgT3duUHRyPEJsaXRQcm9ncmFtPiBtX2JsaXRQcm9ncmFt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmgKaW5kZXggN2NhMTRmNDM3ODVjMGYwZDNmZWFlMzE4Y2E2ZGE3
ZDJhZGMzODQ3Mi4uNDdhMTg5YmNjZDM0MGUzZWM5YjQ3M2VhOGU4ZmUyYjk1MThiYWE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTWFuYWdlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgot
CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyLmNwcAppbmRleCBmNWNmMmE0ZTEzOTc3YmQ4YTk4MzE1MTQ5MDVkMzEwM2IzMjFk
MzA1Li5hODI1M2QwNjU1MTYyNWYwYjA3M2FlY2Y1ZGVmNzVjZGFlMDJhZmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKIAogI2luY2x1ZGUgIkV4dGVuc2lv
bnMzRENocm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+
CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTM3LDU3ICszOCw1MiBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1heFBlbmRpbmdRdWVyaWVzID0gMjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpRdWVyeShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0KQorVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6UXVlcnkoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250
ZXh0KQogICAgICwgbV9xdWVyeUlkKDApCiB7Ci0gICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4
dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpKTsKLSAgICBtX3F1ZXJ5SWQgPSBleHRlbnNpb25zLT5jcmVhdGVRdWVy
eUVYVCgpOworICAgIG1fcXVlcnlJZCA9IG1fY29udGV4dC0+Y3JlYXRlUXVlcnlFWFQoKTsKIH0K
IAogVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6flF1ZXJ5KCkKIHsKLSAgICBFeHRl
bnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENo
cm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwotICAgIGV4dGVuc2lvbnMtPmRl
bGV0ZVF1ZXJ5RVhUKG1fcXVlcnlJZCk7CisgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeUVYVCht
X3F1ZXJ5SWQpOwogfQogCiB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmJl
Z2luKCkKIHsKLSAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19j
YXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwot
ICAgIGV4dGVuc2lvbnMtPmJlZ2luUXVlcnlFWFQoRXh0ZW5zaW9uczNEQ2hyb21pdW06OkNPTU1B
TkRTX0lTU1VFRF9DSFJPTUlVTSwgbV9xdWVyeUlkKTsKKyAgICBtX2NvbnRleHQtPmJlZ2luUXVl
cnlFWFQoRXh0ZW5zaW9uczNEQ2hyb21pdW06OkNPTU1BTkRTX0lTU1VFRF9DSFJPTUlVTSwgbV9x
dWVyeUlkKTsKIH0KIAogdm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjplbmQo
KQogewotICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8
RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Ci0gICAg
ZXh0ZW5zaW9ucy0+ZW5kUXVlcnlFWFQoRXh0ZW5zaW9uczNEQ2hyb21pdW06OkNPTU1BTkRTX0lT
U1VFRF9DSFJPTUlVTSk7CisgICAgbV9jb250ZXh0LT5lbmRRdWVyeUVYVChFeHRlbnNpb25zM0RD
aHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNKTsKIH0KIAogYm9vbCBUaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojppc1BlbmRpbmcoKQogewotICAgIEV4dGVuc2lvbnMzRENo
cm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPiht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gMTsK
LSAgICBleHRlbnNpb25zLT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lv
bnMzRENocm9taXVtOjpRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJmF2YWlsYWJsZSk7Cisg
ICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lvbnMz
RENocm9taXVtOjpRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJmF2YWlsYWJsZSk7CiAgICAg
cmV0dXJuICFhdmFpbGFibGU7CiB9CiAKIHZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpR
dWVyeTo6d2FpdCgpCiB7Ci0gICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBz
dGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpKTsKICAgICB1bnNpZ25lZCByZXN1bHQ7Ci0gICAgZXh0ZW5zaW9ucy0+Z2V0UXVlcnlPYmpl
Y3R1aXZFWFQobV9xdWVyeUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxUX0VY
VCwgJnJlc3VsdCk7CisgICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5
SWQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpRVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0KTsKIH0K
IAotVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKK1Rocm90dGxlZFRleHR1cmVVcGxv
YWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbWF4UGVuZGlu
Z1F1ZXJpZXMobWF4UGVuZGluZ1F1ZXJpZXMpCiB7CiB9CiAKLVRocm90dGxlZFRleHR1cmVVcGxv
YWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQsIHNpemVfdCBwZW5kaW5nVXBsb2FkTGltaXQpCitUaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXI6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBzaXplX3QgcGVuZGluZ1VwbG9hZExpbWl0KQogICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCiAgICAgLCBtX21heFBlbmRpbmdRdWVyaWVzKHBlbmRpbmdVcGxvYWRMaW1p
dCkKIHsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKIH0KIAogVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyOjp+VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyLmgKaW5kZXggZGVhM2QzNTRjNWIxZTVlMzAwZmQwODIyYWVkNzFmZWFlZWE4
YTE4NC4uYWU1Yjc0OTFmMjg0ODQ0MGY0MTMxY2U2YmIxNDNlNzVhNGQ2YzlkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTI5LDE2ICsyOSwyMCBAQAogCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR3Jh
cGhpY3NDb250ZXh0M0Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcihjb250ZXh0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFRocm90dGxlZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQsIHNpemVfdCBwZW5kaW5nVXBsb2FkTGltaXQpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKGNv
bnRleHQsIHBlbmRpbmdVcGxvYWRMaW1pdCkpOwogICAgIH0KQEAgLTUyLDcgKzU2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBjbGFzcyBRdWVyeSB7CiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc093blB0cjxRdWVyeT4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBRdWVyeShjb250ZXh0KSk7IH0KKyAg
ICAgICAgc3RhdGljIFBhc3NPd25QdHI8UXVlcnk+IGNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFB0cihuZXcgUXVlcnkoY29udGV4dCkp
OyB9CiAKICAgICAgICAgdmlydHVhbCB+UXVlcnkoKTsKIApAQCAtNjIsMTggKzY2LDE4IEBAIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgd2FpdCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhw
bGljaXQgUXVlcnkoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworICAgICAgICBleHBs
aWNpdCBRdWVyeShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAKLSAgICAgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAgICAgIFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICAgICAgdW5zaWduZWQgbV9xdWVyeUlkOwog
ICAgIH07CiAKLSAgICBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4pOwotICAgIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgc2l6ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCk7CisgICAgVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICBU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHNp
emVfdCBwZW5kaW5nVXBsb2FkTGltaXQpOwogCiAgICAgdm9pZCBwcm9jZXNzUXVlcmllcygpOwog
Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAgV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIHNpemVfdCBtX21heFBlbmRpbmdR
dWVyaWVzOwogICAgIERlcXVlPE93blB0cjxRdWVyeT4gPiBtX3BlbmRpbmdRdWVyaWVzOwogICAg
IERlcXVlPE93blB0cjxRdWVyeT4gPiBtX2F2YWlsYWJsZVF1ZXJpZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcAppbmRleCA5NTc3MTFlYWE1ZDNjYTMzNmQ1YzU1
OTQ1MjljODM0MmQ2ZGZhYjA2Li44ZTU4NmUyNWEwNWFmNzhhZDEzYjdkYWY3MjNiYTNjYmEwMzNj
YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKQEAgLTI3
LDE3ICsyNywxOSBAQAogI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgogCiAj
aW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hy
b21pdW0uaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNybwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCitUcmFja2luZ1RleHR1cmVBbGxvY2F0
b3I6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2N1cnJlbnRNZW1v
cnlVc2VCeXRlcygwKQogICAgICwgbV90ZXh0dXJlVXNhZ2VIaW50KEFueSkKICAgICAsIG1fdXNl
VGV4dHVyZVN0b3JhZ2VFeHQoZmFsc2UpCiB7CisgICAgQVNTRVJUKG1fY29udGV4dCk7CiB9CiAK
IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6flRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcigpCkBA
IC03MiwyMyArNzQsMjIgQEAgdW5zaWduZWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVh
dGVUZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGYKICAgICBtX2N1cnJlbnRN
ZW1vcnlVc2VCeXRlcyArPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9y
bWF0KTsKIAogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IDA7Ci0gICAgR0xDKG1fY29udGV4dC5n
ZXQoKSwgdGV4dHVyZUlkID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOwotICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIEdMQyhtX2NvbnRleHQsIHRleHR1cmVJZCA9
IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQp
KTsKICAgICAvLyBEbyBiYXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KLSAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9G
SUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpM
SU5FQVIpKTsKICAgICAvLyBOUE9UIHRleHR1cmVzIGluIEdMIEVTIG9ubHkgd29yayB3aGVuIHRo
ZSB3cmFwIG1vZGUgaXMgc2V0IHRvIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFLgot
ICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9T
LCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotICAgIEdMQyhtX2NvbnRleHQu
Z2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQz
RDo6Q0xBTVBfVE9fRURHRSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGlj
c0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwogCiAgICAgaWYgKG1fdGV4dHVyZVVzYWdlSGlu
dCA9PSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpCi0gICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCks
IG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
RXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfVVNBR0VfQU5HTEUsIEV4dGVuc2lvbnMz
RENocm9taXVtOjpHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKSk7CisgICAgICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfVVNBR0VfQU5HTEUs
IEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKSk7
CiAgICAgaWYgKG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgJiYgaXNUZXh0dXJlRm9ybWF0U3VwcG9y
dGVkRm9yU3RvcmFnZShmb3JtYXQpKSB7Ci0gICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBl
eHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAgIEdDM0RlbnVtIHN0b3JhZ2VGb3JtYXQgPSB0ZXh0
dXJlVG9TdG9yYWdlRm9ybWF0KGZvcm1hdCk7Ci0gICAgICAgIGV4dGVuc2lvbnMtPnRleFN0b3Jh
Z2UyREVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMSwgc3RvcmFnZUZvcm1hdCwg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9y
YWdlMkRFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDEsIHN0b3JhZ2VGb3JtYXQs
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpKTsKKyAg
ICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwg
MCwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgMCkpOwogICAgIG1f
YWxsb2NhdGVkVGV4dHVyZUlkcy5hZGQodGV4dHVyZUlkKTsKICAgICByZXR1cm4gdGV4dHVyZUlk
OwogfQpAQCAtOTYsNyArOTcsOCBAQCB1bnNpZ25lZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6
OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZgogdm9pZCBUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkLCBj
b25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCiB7CiAgICAgbV9jdXJyZW50TWVt
b3J5VXNlQnl0ZXMgLT0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1h
dCk7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHRl
eHR1cmVJZCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlSWQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUo
dGV4dHVyZUlkKSk7CiAgICAgQVNTRVJUKG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5jb250YWlucyh0
ZXh0dXJlSWQpKTsKICAgICBtX2FsbG9jYXRlZFRleHR1cmVJZHMucmVtb3ZlKHRleHR1cmVJZCk7
CiB9CkBAIC0xMDQsNyArMTA2LDcgQEAgdm9pZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRl
bGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJgogdm9pZCBUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZUFsbFRleHR1cmVzKCkKIHsKICAgICBmb3IgKEhh
c2hTZXQ8dW5zaWduZWQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fYWxsb2NhdGVkVGV4dHVyZUlk
cy5iZWdpbigpOyBpdCAhPSBtX2FsbG9jYXRlZFRleHR1cmVJZHMuZW5kKCk7ICsraXQpCi0gICAg
ICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSgqaXQpKTsK
KyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKCppdCkpOwog
ICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzID0gMDsKICAgICBtX2FsbG9jYXRlZFRleHR1cmVJ
ZHMuY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKaW5k
ZXggOTgwYjk0ZTEyYmEyNmVmYzhkOGMzZDc5ZDJhNzFkZDNiMTM1MTI2Ni4uYzEwYzI1NzIxNGU2
MmVmZTM0MDJlZmNiNjEyMThmNjI4MDE0ZDI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmgKQEAgLTI1LDE3ICsyNSwyMCBAQAogI2lmbmRlZiBUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3JfaAogI2RlZmluZSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3JfaAogCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IgOiBwdWJs
aWMgVGV4dHVyZUFsbG9jYXRvciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxUcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4g
Y3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihjb250ZXh0
KSk7CiAgICAgfQpAQCAtNTMsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VUZXh0
dXJlU3RvcmFnZUV4dChib29sIHVzZVN0b3JhZ2VFeHQpIHsgbV91c2VUZXh0dXJlU3RvcmFnZUV4
dCA9IHVzZVN0b3JhZ2VFeHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisgICAgZXhw
bGljaXQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqKTsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBzaXplX3QgbV9jdXJy
ZW50TWVtb3J5VXNlQnl0ZXM7CiAgICAgVGV4dHVyZVVzYWdlSGludCBtX3RleHR1cmVVc2FnZUhp
bnQ7CiAgICAgYm9vbCBtX3VzZVRleHR1cmVTdG9yYWdlRXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFwaGljc0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggMzk1ZjE4YzM0OTFiNGM0ZGQ2MTE0MzkxNDE1ODc5OThlMjg4NzQ2
Zi4uNDM1MzZhNDIxNGQ1OGFhZWFmMjVlM2FjODJmMGQ0NmYzZDFlMTVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yNiwzMiArMjYsMzMgQEAKICNpZm5kZWYgQ0NHcmFw
aGljc0NvbnRleHRfaAogI2RlZmluZSBDQ0dyYXBoaWNzQ29udGV4dF9oCiAKLSNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dCA6IHB1
YmxpYyBSZWZDb3VudGVkPENDR3JhcGhpY3NDb250ZXh0PiB7CitjbGFzcyBDQ0dyYXBoaWNzQ29u
dGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NHcmFwaGljc0NvbnRleHQpOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGUyRCgp
CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZTJEKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0NHcmFwaGljc0NvbnRleHQoKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NHcmFwaGljc0NvbnRleHQoKSk7CiAgICAgfQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGUzRChQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0M0QpCisgICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZTNEKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dDNEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDQ0dyYXBoaWNzQ29udGV4dChjb250ZXh0M0QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDQ0dyYXBoaWNzQ29udGV4dChjb250ZXh0M0QpKTsKICAgICB9CiAKLSAgICBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNEKCkgeyByZXR1cm4gbV9jb250ZXh0M0QuZ2V0KCk7IH0KKyAg
ICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QoKSB7IHJldHVybiBtX2Nv
bnRleHQzRC5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIENDR3JhcGhpY3NDb250ZXh0KCkgeyB9
Ci0gICAgZXhwbGljaXQgQ0NHcmFwaGljc0NvbnRleHQoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY29udGV4dDNEKQorICAgIGV4cGxpY2l0IENDR3JhcGhpY3NDb250ZXh0KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dDNEKQogICAgICAgICA6IG1f
Y29udGV4dDNEKGNvbnRleHQzRCkgeyB9CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IG1fY29udGV4dDNEOworICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBt
X2NvbnRleHQzRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5k
ZXggMWI2MTMxN2NjZWFjMTM1OTc5YmFjMmVkM2U5YWUyMTY2ZDg2YzFkMi4uZjNkNDE1ZGNmZDM1
YjY4M2Q3ZDMxNjBlYWIyODk5NjNiY2EyMTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJjYy9DQ0RlYnVnUmVjdEhpc3Rv
cnkuaCIKICNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4
dDNELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTY4LDcgKzY5LDcgQEAgYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdS
ZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKIHZvaWQgQ0NI
ZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1w
bCkKIHsKICAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXIoKTsKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpOworICAgIFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLT5j
b250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgogICAgICAgICByZXR1cm47
CkBAIC0xMDYsMTMgKzEwNywxMiBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXll
clRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgICAgIG1faHVkVGV4dHVyZS0+
YmluZFRleHR1cmUobGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+
aW1wbFRleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgICAgIGJvb2wgdXBsb2FkZWRWaWFNYXAgPSBm
YWxzZTsKICAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLnVzaW5nTWFw
U3ViKSB7Ci0gICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0
YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
KTsKLSAgICAgICAgICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGh1ZFNpemUud2lkdGgoKSwgaHVkU2l6ZS5oZWlnaHQoKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworICAgICAgICAgICAgdWludDhf
dCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNvbnRleHQtPm1hcFRleFN1Yklt
YWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgaHVk
U2l6ZS53aWR0aCgpLCBodWRTaXplLmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpX
UklURV9PTkxZKSk7CiAKICAgICAgICAgICAgIGlmIChwaXhlbERlc3QpIHsKICAgICAgICAgICAg
ICAgICB1cGxvYWRlZFZpYU1hcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgbWVtY3B5KHBpeGVs
RGVzdCwgbG9ja2VyLnBpeGVscygpLCBodWRTaXplLndpZHRoKCkgKiBodWRTaXplLmhlaWdodCgp
ICogNCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hS
T01JVU0ocGl4ZWxEZXN0KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bm1hcFRleFN1Yklt
YWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAppbmRleCBmODQ0NjY3MGE4ZWJj
MTc5Zjg1ZDRlYTUwNzQ1NzczMDFmOWVkNTJlLi5jZTNiMzhlOTY0YTQ1YzFkYTE4NTkzY2Y2MmZi
ZjI5NjAzYjllNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3Bw
CkBAIC0yOSwxMyArMjksMTQgQEAKIAogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlTGF5ZXJJbXBs
LmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgImNjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSA8cHVibGlj
L1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTQs
NyArNTUsNyBAQCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6fkNDSU9TdXJmYWNlTGF5ZXJJbXBsKCkK
IAogICAgIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gbGF5ZXJUcmVlSG9zdEltcGwoKS0+
Y29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2Fy
ZSBjb21wb3NpdGluZy4KLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4
dC0+Y29udGV4dDNEKCk7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKGNvbnRleHQzZCkKICAgICAgICAg
Y29udGV4dDNkLT5kZWxldGVUZXh0dXJlKG1faW9TdXJmYWNlVGV4dHVyZUlkKTsKIH0KQEAgLTY0
LDE0ICs2NSwxMSBAQCB2b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRl
cmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dAogICAgIENDTGF5ZXJJbXBsOjp3
aWxsRHJhdyhsYXllclJlbmRlcmVyLCBjb250ZXh0KTsKIAogICAgIGlmIChtX2lvU3VyZmFjZUNo
YW5nZWQpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQt
PmNvbnRleHQzRCgpOworICAgICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICAgICAgaWYgKCFjb250ZXh0M2QpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBj
b21wb3NpdGluZy4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBFeHRl
bnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENo
cm9taXVtKj4oY29udGV4dDNkLT5nZXRFeHRlbnNpb25zKCkpOwotICAgICAgICBBU1NFUlQoZXh0
ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2lvc3VyZmFjZSIpKTsKLSAgICAgICAgQVNT
RVJUKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUiKSk7CiAK
ICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgaW4gYSB3YXkgdGhhdCB3ZSBjYW4gdHJhY2sgbWVt
b3J5IHVzYWdlLgogICAgICAgICBpZiAoIW1faW9TdXJmYWNlVGV4dHVyZUlkKQpAQCAtODMsMTEg
KzgxLDExIEBAIHZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIq
IGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0CiAgICAgICAgIEdMQyhjb250ZXh0M2Qs
IGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xF
X0FSQiwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVBUikpOwogICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBh
cmFtZXRlcmkoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
KTsKICAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEV4dGVu
c2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0gICAgICAgIGV4
dGVuc2lvbnMtPnRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlVTShFeHRlbnNpb25zM0Q6OlRFWFRV
UkVfUkVDVEFOR0xFX0FSQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW9TdXJmYWNlU2l6ZS53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pb1N1cmZhY2VTaXplLmhlaWdodCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pb1N1cmZhY2VJ
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwor
ICAgICAgICBjb250ZXh0M2QtPnRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlVTShFeHRlbnNpb25z
M0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pb1N1cmZhY2VTaXplLndpZHRoKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW9TdXJmYWNlU2l6ZS5oZWlnaHQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pb1N1
cmZhY2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCk7CiAgICAgICAgIC8vIERvIG5vdCBjaGVjayBmb3IgZXJyb3IgY29uZGl0aW9ucy4gdGV4SW1h
Z2VJT1N1cmZhY2UyRENIUk9NSVVNIGlzIHN1cHBvc2VkIHRvIGhvbGQgb24gdG8KICAgICAgICAg
Ly8gdGhlIGxhc3QgZ29vZCBJT1N1cmZhY2UgaWYgdGhlIG5ldyBvbmUgaXMgYWxyZWFkeSBjbG9z
ZWQuIFRoaXMgaXMgb25seSBhIHBvc3NpYmlsaXR5CiAgICAgICAgIC8vIGR1cmluZyBsaXZlIHJl
c2l6aW5nIG9mIHBsdWdpbnMuIEhvd2V2ZXIsIGl0IHNlZW1zIHRoYXQgdGhpcyBpcyBub3Qgc3Vm
ZmljaWVudCB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggN2QxNGNmNWRh
M2E1YzMyYmU1ZjMwNDY1YTJhZThmZDhmNDBlM2NmYy4uM2Y5YWJmMTY1NGI3MDk5ZjExMTczM2Ew
NGRlODI5YjFjNDgzOTBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0y
NjAsOSArMjYwLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRlKCkKICAg
ICBtX2NsaWVudC0+ZGlkQ29tbWl0KCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29udGV4dCgpCitQYXNzT3duUHRyPENDR3JhcGhp
Y3NDb250ZXh0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvbnRleHQoKQogewotICAgIFJlZlB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dDsKICAgICBpZiAoc2V0dGluZ3MoKS5mb3JjZVNv
ZnR3YXJlQ29tcG9zaXRpbmcpCiAgICAgICAgIHJldHVybiBDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlMkQoKTsKICAgICByZXR1cm4gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKG1fY2xpZW50
LT5jcmVhdGVDb250ZXh0M0QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDZm
Njk0NmUzMWM3YTMzYWJhZGY3OGQ2NTY1MGUwYjkzNTI2NjY1NGYuLjFmNGQzYzk2NzIyODU1MGZm
NjYwOWQ2MTFmODdlZWI2ZGFkMDlmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9u
cyhkb3VibGUgZnJhbWVCZWdpblRpbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpID0gMDsKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dDNE
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNz
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbW1pdCgpID0gMDsKQEAgLTExNyw2ICsxMTcsNyBAQCBzdHJ1Y3QgTGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcyB7CiAgICAgICAgICwgdXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lv
bihmYWxzZSkKICAgICAgICAgLCB1c2luZ0dwdU1lbW9yeU1hbmFnZXIoZmFsc2UpCiAgICAgICAg
ICwgdXNpbmdEaXNjYXJkRnJhbWVidWZmZXIoZmFsc2UpCisgICAgICAgICwgdXNpbmdFZ2xJbWFn
ZShmYWxzZSkKICAgICAgICAgLCBtYXhUZXh0dXJlU2l6ZSgwKSB7IH0KIAogICAgIEdDM0RlbnVt
IGJlc3RUZXh0dXJlRm9ybWF0OwpAQCAtMTMwLDYgKzEzMSw3IEBAIHN0cnVjdCBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzIHsKICAgICBib29sIHVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb247
CiAgICAgYm9vbCB1c2luZ0dwdU1lbW9yeU1hbmFnZXI7CiAgICAgYm9vbCB1c2luZ0Rpc2NhcmRG
cmFtZWJ1ZmZlcjsKKyAgICBib29sIHVzaW5nRWdsSW1hZ2U7CiAgICAgaW50IG1heFRleHR1cmVT
aXplOwogfTsKIApAQCAtMTQ2LDYgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29s
IG5lZWRzRmlsdGVyQ29udGV4dCgpIHsgcmV0dXJuIHNfbmVlZHNGaWx0ZXJDb250ZXh0OyB9CiAg
ICAgc3RhdGljIHZvaWQgc2V0TmVlZHNGaWx0ZXJDb250ZXh0KGJvb2wgbmVlZHNGaWx0ZXJDb250
ZXh0KSB7IHNfbmVlZHNGaWx0ZXJDb250ZXh0ID0gbmVlZHNGaWx0ZXJDb250ZXh0OyB9CisgICAg
Ym9vbCBuZWVkc1NoYXJlZENvbnRleHQoKSBjb25zdCB7IHJldHVybiBuZWVkc0ZpbHRlckNvbnRl
eHQoKSB8fCBzZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZzsgfQogCiAgICAgLy8gQ0NMYXll
clRyZWVIb3N0IGludGVyZmFjZSB0byBDQ1Byb3h5LgogICAgIHZvaWQgd2lsbEJlZ2luRnJhbWUo
KSB7IG1fY2xpZW50LT53aWxsQmVnaW5GcmFtZSgpOyB9CkBAIC0xNTUsNyArMTU4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCopOwogICAgIHZvaWQgZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqKTsKICAgICB2b2lkIGNvbW1pdENvbXBsZXRlKCk7Ci0gICAgUGFzc1JlZlB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4gY3JlYXRlQ29udGV4dCgpOworICAgIFBhc3NPd25QdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNyZWF0ZUNvbnRleHQoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRy
ZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENs
aWVudCopOwogICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKICAgICBlbnVtIFJlY3JlYXRlUmVz
dWx0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggOWExMWJk
MjgwOGIyOWYzZTgyYzk0YzdkNjEwZjFmMDBhYzg1Y2FmOS4uMzAxMWI1ZWNjNjYzMDZjY2Q2MGQ5
OTIxNDFkMWY4NGZlZjdlZTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKQEAgLTY0OSw5ICs2NDksOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZp
c2libGUoYm9vbCB2aXNpYmxlKQogICAgIHNldEJhY2tncm91bmRUaWNraW5nRW5hYmxlZCghbV92
aXNpYmxlICYmIG1fbmVlZHNBbmltYXRlTGF5ZXJzKTsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250
ZXh0PiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyKQorYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVy
ZVVwbG9hZGVyKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0
LT5jb250ZXh0M0QoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcu
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAppbmRleCA5MzllNDJlNmI3NmZjYzc0NTliZjIwZTZjZDZlYTY4YmUwYTRhYTk3Li40ZTRmNmNj
YjdlMmY2NTViNTJiMjI0MjAzZGRlODU5N2YwMGM2ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlu
aXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZU51bWJlcjsgfQogCi0gICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNz
UmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKKyAgICBi
b29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+
LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwogICAg
IENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0
KCk7IH0KICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkgY29uc3Q7CkBAIC0yMjQsNyArMjI0LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZHVtcFJlbmRlclN1cmZhY2VzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50LCBjb25zdCBD
Q0xheWVySW1wbCopIGNvbnN0OwogCi0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2Nv
bnRleHQ7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgT3du
UHRyPENDUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBPd25QdHI8Q0NMYXllckltcGw+
IG1fcm9vdExheWVySW1wbDsKICAgICBDQ0xheWVySW1wbCogbV9yb290U2Nyb2xsTGF5ZXJJbXBs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBmNTRiYTc3NTA1
MjU0OTdkYWNmNjcxNWU4MDdiMmMxOGNhOGMyYjdjLi5jYmQ1MWQ0ZmU2OTVjYTUyMmM3ODc2NmVj
NTM2ZmQwNDhmNGQwNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cApAQCAtMTQwLDExICsxNDAsMTAgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppc1N0YXJ0
ZWQoKSBjb25zdAogYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCgp
CiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICBSZWZQdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQo
KTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhv
c3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBBU1NFUlQoY29udGV4dC0+aGFzT25lUmVmKCkpOwotICAgIG1fY29udGV4dEJl
Zm9yZUluaXRpYWxpemF0aW9uID0gY29udGV4dDsKKyAgICBtX2NvbnRleHRCZWZvcmVJbml0aWFs
aXphdGlvbiA9IGNvbnRleHQucmVsZWFzZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0x
ODMsMTYgKzE4MiwxNSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4
dCgpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9j
b250ZXh0TG9zdCk7CiAKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBt
X2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChjb250ZXh0
LT5oYXNPbmVSZWYoKSk7CiAgICAgYm9vbCBpbml0aWFsaXplZDsKICAgICB7CiAgICAgICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRl
bGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0bGVk
VXBsb2FkZXIpOworICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9h
ZGVyKTsKICAgICAgICAgaWYgKGluaXRpYWxpemVkKSB7CiAgICAgICAgICAgICBtX2xheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgKaW5kZXggNDZjYjMwMmFjNjEyODY4MDcyZDdmOTg4MzVlMmYxNzcwOWFh
NDFiNS4uNmZiNzMzZGYyZWI4Nzc5NTIwMzU1ODI0YTBmODU3ZWNkZjQwMTFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gSG9sZHMgb24gdG8gdGhlIGNvbnRleHQgYmV0d2VlbiBpbml0aWFsaXplQ29udGV4
dCgpIGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLiBTaG91bGRuJ3QKICAgICAv
LyBiZSB1c2VkIGZvciBhbnl0aGluZyBlbHNlLgotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4
dD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb247CisgICAgT3duUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbjsKIAogICAgIE93blB0cjxDQ1Np
bmdsZVRocmVhZFByb3h5QW5pbWF0aW9uVGltZXI+IG1fYW5pbWF0aW9uVGltZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMWZkMGM3MzZlZTM0OWY3ODhhYmM4OTg0
ZWZiZTZiZmJhOGI0NjI3My4uYzMyOTk5MzliYWQwZjRiZjliZDU3ZjViOTA1YWIzYmQzMDdlZWEx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTEyOSw3ICsxMjksNyBA
QCB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsbwogICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWlu
IHRocmVhZCBwcm9jZWVkIGFzIGl0IG1heSBtYWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0
ZXh0dXJlIG9mIG9uZSBvZgogICAgIC8vIG91ciBjb3B5IG9wZXJhdGlvbnMuCiAgICAgaWYgKG1f
Y29weUVudHJpZXMuc2l6ZSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAgICAgV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgICAgIGlmIChj
b250ZXh0M2QpCiAgICAgICAgICAgICBjb250ZXh0M2QtPmZsdXNoKCk7CiAgICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZTJlY2I5YzU4NTkxNWE1MzE2NDA3NGVjZjBiNGM3
ZjBkNWFjNTUyNC4uYWYwNDEyZWQyOWQ2NjE4NTBiZGUxOTcxMDFkOThmOWE2YzY2MWNhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTE4MCwxNyArMTgwLDEyIEBAIGJvb2wgQ0NU
aHJlYWRQcm94eTo6aXNTdGFydGVkKCkgY29uc3QKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aW5pdGlh
bGl6ZUNvbnRleHQoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFs
aXplQ29udGV4dCIsIHRoaXMsIDApOwotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29u
dGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOworICAgIE93blB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgp
OwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEFTU0VSVChj
b250ZXh0LT5oYXNPbmVSZWYoKSk7Ci0KLSAgICAvLyBMZWFrIHRoZSBjb250ZXh0IHBvaW50ZXIg
c28gd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBpdCB0byB0aGUgb3RoZXIgc2lkZS4uLgot
ICAgIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gY29udGV4dC5yZWxlYXNlKCkubGVh
a1JlZigpOwotICAgIEFTU0VSVChjb250ZXh0UHRyLT5oYXNPbmVSZWYoKSk7CiAKICAgICBDQ1By
b3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyhjb250ZXh0UHRyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dC5sZWFr
UHRyKCkpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0OSwxOSArMjQ0LDEzIEBAIGJv
b2wgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCiAgICAgLy8gVHJ5IHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KLSAgICBSZWZQdHI8
Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRl
eHQoKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2xheWVyVHJl
ZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoQ0NMYXllclRyZWVIb3N0OjpuZWVkc0ZpbHRlckNvbnRleHQoKSAm
JiAhbV9sYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykK
KyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVkc1NoYXJlZENvbnRleHQoKSAmJiAhbV9sYXll
clRyZWVIb3N0LT5zZXR0aW5ncygpLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZykKICAgICAgICAg
aWYgKCFTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9ySW1wbFRocmVhZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigp
KTsKLQotICAgIC8vIExlYWsgdGhlIGNvbnRleHQgcG9pbnRlciBzbyB3ZSBjYW4gdHJhbnNmZXIg
b3duZXJzaGlwIG9mIGl0IHRvIHRoZSBvdGhlciBzaWRlLi4uCi0gICAgQ0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgQVNTRVJU
KGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKLQogICAgIC8vIE1ha2UgYSBibG9ja2luZyBjYWxs
IHRvIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZC4gVGhlIHJlc3VsdHMgb2YgdGhhdAogICAg
IC8vIGNhbGwgYXJlIHB1c2hlZCBpbnRvIHRoZSByZWNyZWF0ZVN1Y2NlZWRlZCBhbmQgY2FwYWJp
bGl0aWVzIGxvY2FsCiAgICAgLy8gdmFyaWFibGVzLgpAQCAtMjcwLDcgKzI1OSw3IEBAIGJvb2wg
Q0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzIGNhcGFiaWxpdGllczsKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0
T25JbXBsVGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhjb250ZXh0
LmxlYWtQdHIoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmcmVjcmVhdGVTdWNjZWVkZWQpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcykpKTsKICAgICBjb21wbGV0aW9uLndh
aXQoKTsKQEAgLTQ4MCw3ICs0NjksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKENDTGF5ZXJUcmVlSG9zdDo6bmVl
ZHNGaWx0ZXJDb250ZXh0KCkgJiYgIW1fbGF5ZXJUcmVlSG9zdC0+c2V0dGluZ3MoKS5mb3JjZVNv
ZnR3YXJlQ29tcG9zaXRpbmcgJiYgIVNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpoYXZlRm9ySW1w
bFRocmVhZCgpKQorICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRzU2hhcmVkQ29udGV4dCgp
ICYmICFtX2xheWVyVHJlZUhvc3QtPnNldHRpbmdzKCkuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5n
ICYmICFTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6aGF2ZUZvckltcGxUaHJlYWQoKSkKICAgICAg
ICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZvckltcGxUaHJlYWQoKTsKIAogICAg
IE93blB0cjxCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGU+IHJlcXVlc3QobV9wZW5kaW5nQmVnaW5G
cmFtZVJlcXVlc3QucmVsZWFzZSgpKTsKQEAgLTgyOCw3ICs4MTcsNyBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFkKENDR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29u
dGV4dE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7
Ci0gICAgbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQgPSBhZG9wdFJl
Zihjb250ZXh0KTsKKyAgICBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVh
ZCA9IGFkb3B0UHRyKGNvbnRleHQpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
LCBib29sKiBpbml0aWFsaXplU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBj
YXBhYmlsaXRpZXMpCkBAIC04ODcsNyArODc2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEMK
ICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9u
SW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRy
ZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAqcmVjcmVhdGVTdWNjZWVk
ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFJl
Zihjb250ZXh0UHRyKSwgdGV4dHVyZVVwbG9hZGVyKTsKKyAgICAqcmVjcmVhdGVTdWNjZWVkZWQg
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFB0cihj
b250ZXh0UHRyKSwgdGV4dHVyZVVwbG9hZGVyKTsKICAgICBpZiAoKnJlY3JlYXRlU3VjY2VlZGVk
KSB7CiAgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5k
aWRSZWNyZWF0ZUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCA1NzJmOWY0
ODgzYWY0NmJhMmQ3MmU5OWQ1ODg1ZDY1ZjhjNmJlYTQwLi4zM2QzZDk5NmVkZDZkNzc3NjZkZmI4
MmZkN2VlYTgwMjFiYjYwZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC0xNzEsNyAr
MTcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBjb250ZXh0IHdlIG1p
Z2h0IHVzZSBmb3IgY29tcG9zaXRpbmcgaW4gYmV0d2VlbiBpbml0aWFsaXplQ29udGV4dCgpCiAg
ICAgLy8gYW5kIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgY2FsbHMuCi0gICAgUmVmUHRyPEND
R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVh
ZDsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dEJlZm9yZUluaXRpYWxp
emF0aW9uT25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlz
IHdhaXRpbmcgb24gYSBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIHRvIGJlIGlzc3VlZC4KICAg
ICBDQ0NvbXBsZXRpb25FdmVudCogbV9iZWdpbkZyYW1lQ29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBkYmIwN2EwMDRhM2E3
MDRhZDUyZjkyZjgzMDY0OGNiNDhkYWViNTJmLi5kYjZkOGYwNjVlZTMzYTk1ZTU4MTkzMDVmYThm
MDZjM2U5ODUxMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMjg4
LDcgKzI4OCw3IEBAIGJvb2wgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2NhdGVE
YXRhKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgIGlmICh0ZXh0dXJlSWQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGNv
bnRleHQtPmNvbnRleHQzRCgpOworICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzRCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwogICAgIGlmICghY29udGV4dDNEKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMwMSw3ICszMDEsNyBAQCBib29sIENDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmU6OmFsbG9jYXRlRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywg
R3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKICAgICBHTEMoY29udGV4dDNELCBj
b250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1Q
X1RPX0VER0UpKTsKIAotICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4SW1hZ2UyRFJl
c291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUpKTsKKyAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleEltYWdlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpLCAwLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCAwKSk7CiAKICAgICByZXR1cm4gdGV4dHVyZUlkOwogfQpAQCAtMzExLDcgKzMxMSw3IEBAIHZv
aWQgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6ZnJlZURhdGEoQ0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCiAgICAgaWYgKCF0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAg
ICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBjb250ZXh0LT5jb250
ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzRCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTEs
NyArMzUxLDcgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxhbmVEYXRhKENDUmVuZGVy
ZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXgKICAgICBpZiAoIXNvZnR3YXJlUGxh
bmVDb3VudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFj
b250ZXh0M2QpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNv
ZnR3YXJlIGNvbXBvc2l0aW5nLgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQppbmRleCA1NDlmZGZhNDRiODRhZTFjYTc1MWFkZTQ0MjdjM2Q3YzhjYzk4
YTU1Li5kZDJiZmIyZWU2MGZlNGEyMWUxM2Y0MWMzYTg3NjU4Y2Q1NzY5MTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTk3LDExICs5Nyw5IEBACiAgICAgICAgICAgICAndGVz
dHMvQ0NUaHJlYWRlZFRlc3QuaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaW1lclRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9DbGlwYm9hcmRDaHJvbWl1bVRlc3QuY3BwJywKLSAgICAg
ICAgICAgICd0ZXN0cy9Db21wb3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0NvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAg
ICAgICAgICAndGVzdHMvRGVjaW1hbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9EcmFn
SW1hZ2VUZXN0LmNwcCcsCi0gICAgICAgICAgICAndGVzdHMvRHJhd2luZ0J1ZmZlckNocm9taXVt
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcCcsCiAg
ICAgICAgICAgICAndGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oJywKICAgICAgICAg
ICAgICd0ZXN0cy9GYWtlR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IDM1NmFmMWRlMjNm
Y2Q4MDViNmI0MWZkZmY4ZDgwODdjZDg3OWJmNjAuLjdmMjJmNzlmOTNiMjAyZDQ3NGYwZWVkMTk4
MzFmMmVkNDc0ZDljYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBXZWJMYXllclRyZWVWaWV3
OjpmaW5pc2hBbGxSZW5kZXJpbmcoKQogCiBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJU
cmVlVmlldzo6Y29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgp
LT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllclRy
ZWVIb3N0KCktPmNvbnRleHQoKS0+Y29udGV4dDNEKCk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVl
Vmlldzo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCAxN2Q1
ZmU4Njc1YTdlY2FlMjQyMDYzZTJhNzMwMmE3MzY0NzIwOWYwLi44MjVmYzAxZWY5ZWJkOWY5NWIy
NWNjYmIzYmFmODQ3NmUzMzEwOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC01NCwxMiArNTQsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1l
QmVnaW5UaW1lKSBPVkVSUklERSB7IG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1vbm90b25p
Y0ZyYW1lQmVnaW5UaW1lKTsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7
IG1fY2xpZW50LT5sYXlvdXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNj
YWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUp
IE9WRVJSSURFIHsgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVsdGEsIHBh
Z2VTY2FsZSk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCisgICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYkdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0M0QoKSBPVkVSUklERQogICAgIHsK
LSAgICAgICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQ
dHIobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKLSAgICAgICAgaWYgKCF3ZWJDb250ZXh0
KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQu
cmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cs
IGZhbHNlIC8qIHByZXNlcnZlRHJhd2luZ0J1ZmZlciAqLyApOworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKICAgICB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3MpIE9WRVJSSURFIHsgbV9jbGllbnQt
PmRpZFJlYmluZEdyYXBoaWNzQ29udGV4dChzdWNjZXNzKTsgfQogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ29tbWl0KCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwCmluZGV4IGQxOWIwMzZiYjAxYTI2Y2FkZTUxODQ3ZDEzMmM2MGY1M2YxZWQ3MTQuLjY1
ZjgzN2Y5MGRmOGQzOWUwMGQ0ZGZkMzUwNTllZTY5YjAzYzg5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21tb24uaCIKICNpbmNs
dWRlICJDQ1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1
ZGUgImNjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgiCkBAIC04Miw3ICs4MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7
IG1fZGlkUmVxdWVzdENvbW1pdCA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1h
dGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9u
RXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpIE9WRVJSSURFIHsgfQogCi0gICAg
UGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0KGJvb2wg
cGFydGlhbFN3YXAsIFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4
dCwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gcm9vdFB0cikKKyAgICBQYXNzT3duUHRyPENDTGF5
ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3QoYm9vbCBwYXJ0aWFsU3dhcCwgUGFz
c093blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0LCBQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiByb290UHRyKQogICAgIHsKICAgICAgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlh
bFN3YXBFbmFibGVkKHBhcnRpYWxTd2FwKTsKIApAQCAtMTYyLDkgKzE2MSw5IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
cmVhdGVDb250ZXh0KCkKKyAgICBQYXNzT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGVD
b250ZXh0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
M0QoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2Vi
Q29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEKCkpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKyAgICAgICAgcmV0dXJu
IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNEKSk7CiAgICAgfQogCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1fYWx3
YXlzSW1wbFRocmVhZDsKQEAgLTE1MTEsMTAgKzE1MTAsOSBAQCBwdWJsaWM6CiAvLyB2aWV3cG9y
dCBzaXplIGlzIG5ldmVyIHNldC4KIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVz
aGFwZU5vdENhbGxlZFVudGlsRHJhdykKIHsKLSAgICBSZXNoYXBlVHJhY2tlckNvbnRleHQqIHJl
c2hhcGVUcmFja2VyID0gbmV3IFJlc2hhcGVUcmFja2VyQ29udGV4dCgpOwotICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocmVzaGFwZVRyYWNrZXIp
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIFJl
ZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZTNEKGNvbnRleHQpOwotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KGNjQ29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgT3duUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIo
bmV3IFJlc2hhcGVUcmFja2VyQ29udGV4dCkpOworICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCog
cmVzaGFwZVRyYWNrZXIgPSBzdGF0aWNfY2FzdDxSZXNoYXBlVHJhY2tlckNvbnRleHQqPihjY0Nv
bnRleHQtPmNvbnRleHQzRCgpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihjY0NvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKIAogICAgIEND
TGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwogICAgIHJv
b3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwpAQCAtMTU1NSwxNiArMTU1Mywx
NSBAQCBwcml2YXRlOgogLy8gd2hlcmUgaXQgc2hvdWxkIHJlcXVlc3QgdG8gc3dhcCBvbmx5IHRo
ZSBzdWJCdWZmZXIgdGhhdCBpcyBkYW1hZ2VkLgogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKIHsKLSAgICBQYXJ0aWFsU3dhcFRy
YWNrZXJDb250ZXh0KiBwYXJ0aWFsU3dhcFRyYWNrZXIgPSBuZXcgUGFydGlhbFN3YXBUcmFja2Vy
Q29udGV4dCgpOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQo
YWRvcHRQdHIocGFydGlhbFN3YXBUcmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRp
cmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29u
dGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChjb250ZXh0KTsKKyAgICBPd25QdHI8
Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUz
RChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBUcmFja2VyQ29udGV4dCkpOworICAgIFBhcnRpYWxT
d2FwVHJhY2tlckNvbnRleHQqIHBhcnRpYWxTd2FwVHJhY2tlciA9IHN0YXRpY19jYXN0PFBhcnRp
YWxTd2FwVHJhY2tlckNvbnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKIAogICAgIC8v
IFRoaXMgdGVzdCBjcmVhdGVzIGl0cyBvd24gQ0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAgICAv
LyB0aGF0IHdlIGNhbiBmb3JjZSBwYXJ0aWFsIHN3YXAgZW5hYmxlZC4KICAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIHNldHRpbmdzOwogICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxl
ZCh0cnVlKTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbGF5ZXJUcmVlSG9zdElt
cGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwotICAgIGxh
eWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjY0NvbnRleHQsIFVudGhy
b3R0bGVkVXBsb2FkZXIpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcihjY0NvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBs
YXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAwLCA1MDApKTsKIAog
ICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwpA
QCAtMTcyNSwxNSArMTcyMiwxNSBAQCBwdWJsaWM6CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgbm9QYXJ0aWFsU3dhcCkKIHsKLSAgICBNb2NrQ29udGV4dCogbW9ja0NvbnRleHQg
PSBuZXcgTW9ja0NvbnRleHQoKTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRl
eHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihtb2NrQ29udGV4
dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOworICAg
IE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGUzRChhZG9wdFB0cihuZXcgTW9ja0NvbnRleHQpKTsKKyAgICBNb2NrQ29udGV4dCogbW9j
a0NvbnRleHQgPSBzdGF0aWNfY2FzdDxNb2NrQ29udGV4dCo+KGNvbnRleHQtPmNvbnRleHQzRCgp
KTsKICAgICBNb2NrQ29udGV4dEhhcm5lc3MgaGFybmVzcyhtb2NrQ29udGV4dCk7CiAKICAgICBo
YXJuZXNzLm11c3REcmF3U29saWRRdWFkKCk7CiAgICAgaGFybmVzcy5tdXN0U2V0U2Npc3Nvcigw
LCAwLCAxMCwgMTApOwogCiAgICAgLy8gUnVuIHRlc3QgY2FzZQotICAgIE93blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gY3JlYXRlTGF5ZXJUcmVlSG9zdChmYWxzZSwgY29u
dGV4dCwgRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoMSkpOworICAgIE93blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gY3JlYXRlTGF5ZXJUcmVlSG9zdChmYWxzZSwgY29u
dGV4dC5yZWxlYXNlKCksIEZha2VMYXllcldpdGhRdWFkczo6Y3JlYXRlKDEpKTsKIAogICAgIEND
TGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKICAgICBFWFBFQ1RfVFJVRShteUhv
c3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CkBAIC0xNzQ0LDE0ICsxNzQxLDE0IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9QYXJ0aWFsU3dhcCkKIAogVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcCkKIHsKLSAgICBNb2NrQ29udGV4dCog
bW9ja0NvbnRleHQgPSBuZXcgTW9ja0NvbnRleHQoKTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0
cihtb2NrQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdykpOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgTW9ja0NvbnRleHQpKTsKKyAgICBNb2Nr
Q29udGV4dCogbW9ja0NvbnRleHQgPSBzdGF0aWNfY2FzdDxNb2NrQ29udGV4dCo+KGNvbnRleHQt
PmNvbnRleHQzRCgpKTsKICAgICBNb2NrQ29udGV4dEhhcm5lc3MgaGFybmVzcyhtb2NrQ29udGV4
dCk7CiAKICAgICBoYXJuZXNzLm11c3REcmF3U29saWRRdWFkKCk7CiAgICAgaGFybmVzcy5tdXN0
U2V0U2Npc3NvcigwLCAwLCAxMCwgMTApOwogCi0gICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdElt
cGw+IG15SG9zdEltcGwgPSBjcmVhdGVMYXllclRyZWVIb3N0KHRydWUsIGNvbnRleHQsIEZha2VM
YXllcldpdGhRdWFkczo6Y3JlYXRlKDEpKTsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1w
bD4gbXlIb3N0SW1wbCA9IGNyZWF0ZUxheWVyVHJlZUhvc3QodHJ1ZSwgY29udGV4dC5yZWxlYXNl
KCksIEZha2VMYXllcldpdGhRdWFkczo6Y3JlYXRlKDEpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVw
YXJlVG9EcmF3KGZyYW1lKSk7CkBAIC0xNzYyLDggKzE3NTksOCBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHBhcnRpYWxTd2FwTm9VcGRhdGUpCiB7Ci0gICAgTW9ja0NvbnRleHQqIG1vY2tDb250
ZXh0ID0gbmV3IE1vY2tDb250ZXh0KCk7Ci0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
b250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobW9ja0Nv
bnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsK
KyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IE1vY2tDb250ZXh0KSk7CisgICAgTW9ja0NvbnRleHQq
IG1vY2tDb250ZXh0ID0gc3RhdGljX2Nhc3Q8TW9ja0NvbnRleHQqPihjb250ZXh0LT5jb250ZXh0
M0QoKSk7CiAgICAgTW9ja0NvbnRleHRIYXJuZXNzIGhhcm5lc3MobW9ja0NvbnRleHQpOwogCiAg
ICAgaGFybmVzcy5tdXN0RHJhd1NvbGlkUXVhZCgpOwpAQCAtMTc3MSw3ICsxNzY4LDcgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcE5vVXBkYXRlKQogICAgIGhh
cm5lc3MubXVzdERyYXdTb2xpZFF1YWQoKTsKICAgICBoYXJuZXNzLm11c3RTZXRTY2lzc29yKDAs
IDAsIDEwLCAxMCk7CiAKLSAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1w
bCA9IGNyZWF0ZUxheWVyVHJlZUhvc3QodHJ1ZSwgY29udGV4dCwgRmFrZUxheWVyV2l0aFF1YWRz
OjpjcmVhdGUoMSkpOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBs
ID0gY3JlYXRlTGF5ZXJUcmVlSG9zdCh0cnVlLCBjb250ZXh0LnJlbGVhc2UoKSwgRmFrZUxheWVy
V2l0aFF1YWRzOjpjcmVhdGUoMSkpOwogCiAgICAgLy8gRHJhdyBvbmNlIHRvIG1ha2Ugc3VyZSBs
YXllciBpcyBub3QgbmV3CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1l
OwpAQCAtMTgxMCw3ICsxODA3LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0
SW1wbD4gc2V0dXBMYXllcnNGb3JPcGFjaXR5KGJvb2wgcGFydGlhbFN3YXAsIEMKIHsKICAgICBD
Q1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQocGFydGlhbFN3YXApOwogCi0gICAgUmVm
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdl
YkNvbnRleHQoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CisgICAgT3duUHRyPENDR3JhcGhp
Y3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRy
KG5ldyBQYXJ0aWFsU3dhcENvbnRleHQpKTsKIAogICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0
dGluZ3M7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIGNsaWVudCk7CkBAIC0xOTIxLDcgKzE5
MTgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdOb3RDYWxsZWRP
blNjaXNzb3JlZExheWVyKQogICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAg
Q0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUpOwogCi0gICAgUmVmUHRyPEND
R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRl
eHQoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250
ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQ
YXJ0aWFsU3dhcENvbnRleHQpKTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlI
b3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAg
ICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCks
IFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKDEwLCAxMCkpOwpAQCAtMjAyMSw3ICsyMDE4LDcgQEAgcHVibGljOgogVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBmaW5pc2hBbGxSZW5kZXJpbmdBZnRlckNvbnRleHRMb3N0
KQogewogICAgIC8vIFRoZSBjb250ZXh0IGluaXRpYWxpemF0aW9uIHdpbGwgZmFpbCwgYnV0IHdl
IHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIGNhbGwgZmluaXNoQWxsUmVuZGVyaW5nKCkgd2l0aG91
dCBhbnkgaWxsIGVmZmVjdHMuCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJH
cmFwaGljc0NvbnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxz
KSksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIG1faG9zdEltcGwtPmZpbmlzaEFsbFJlbmRl
cmluZygpOwogfQogCkBAIC0yMTMxLDExICsyMTI4LDYgQEAgcHVibGljOgogICAgICAgICAgICAg
QUREX0ZBSUxVUkUoKSA8PCAiVHJ5aW5nIHRvIGJpbmQgdGV4dHVyZSBpZCAiIDw8IGlkOwogICAg
IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFw
aGljc0NvbnRleHQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IFN0
cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEKCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBIYXNoU2V0PHVuc2ln
bmVkPiBtX2FsbG9jYXRlZFRleHR1cmVJZHM7CiB9OwpAQCAtMjE4NiwxMSArMjE3OCw2IEBAIHB1
YmxpYzoKIAogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiAgICAgfQotCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCi0g
ICAgewotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgU3RyaWN0V2ViR3JhcGhpY3ND
b250ZXh0M0RXaXRoSU9TdXJmYWNlKCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpOwotICAgIH0KIH07CiAKIGNsYXNzIEZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRFdpdGhJT1N1cmZhY2UgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKQEAg
LTIyMDIsMTEgKzIxODksNiBAQCBwdWJsaWM6CiAKICAgICAgICAgcmV0dXJuIFdlYlN0cmluZygp
OwogICAgIH0KLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVh
dGVHcmFwaGljc0NvbnRleHQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIo
bmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhJT1N1cmZhY2UoKSksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgfQogfTsKIAogVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29u
dGV4dCkKQEAgLTIyNTQsNyArMjIzNiw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgZG9udFVzZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAgICAgcm9vdExheWVyLT5h
ZGRDaGlsZChpb1N1cmZhY2VMYXllci5yZWxlYXNlKCkpOwogCiAgICAgLy8gVXNlIGEgY29udGV4
dCB0aGF0IHN1cHBvcnRzIElPU3VyZmFjZXMKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNEV2l0aElPU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpLCBVbnRocm90dGxl
ZFVwbG9hZGVyKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihDQ0dy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRFdpdGhJT1N1cmZhY2UpKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAKICAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIocm9vdExheWVyLnJlbGVhc2UoKSk7CiAKQEAgLTIyNjYsNyArMjI0
OCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9sZFJlc291cmNl
c0FmdGVyTG9zdENvbnRleHQpCiAKICAgICAvLyBMb3NlIHRoZSBjb250ZXh0LCByZXBsYWNpbmcg
aXQgd2l0aCBhIFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aElPU3VyZmFjZSwKICAgICAv
LyB0aGF0IHdpbGwgd2FybiBpZiBhbnkgcmVzb3VyY2UgZnJvbSB0aGUgcHJldmlvdXMgY29udGV4
dCBnZXRzIHVzZWQuCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoQ0NH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aElP
U3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsK
KyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihDQ0dyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aElP
U3VyZmFjZSkpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJ
bXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhm
cmFtZSk7CiAgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CkBAIC0yMzA3
LDExICsyMjg5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiAgICAg
fQogCi0gICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlR3JhcGhpY3NDb250
ZXh0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKHRoaXMpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIH0KLQogICAgIHVu
c2lnbmVkIG51bVRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1UZXh0dXJlczsgfQogCiBw
cml2YXRlOgpAQCAtMjM2MywxMSArMjM0MCwxMCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIGxheWVyc0ZyZWVUZXh0dXJlcykKICAgICBpb1N1cmZhY2VMYXllci0+c2V0TGF5ZXJU
cmVlSG9zdEltcGwobV9ob3N0SW1wbC5nZXQoKSk7CiAgICAgcm9vdExheWVyLT5hZGRDaGlsZChp
b1N1cmZhY2VMYXllci5yZWxlYXNlKCkpOwogCi0gICAgLy8gTG9zZSB0aGUgY29udGV4dCwgcmVw
bGFjaW5nIGl0IHdpdGggYSBUcmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dDNELCB0aGF0Ci0gICAg
Ly8gdHJhY2tzIHRoZSBudW1iZXIgb2YgdGV4dHVyZXMgYWxsb2NhdGVkLiBUaGlzIHBvaW50ZXIg
aXMgb3duZWQgYnkgaXRzCi0gICAgLy8gR3JhcGhpY3NDb250ZXh0M0QuCi0gICAgVHJhY2tpbmdX
ZWJHcmFwaGljc0NvbnRleHQzRCogdHJhY2tpbmdXZWJHcmFwaGljc0NvbnRleHQgPSBuZXcgVHJh
Y2tpbmdXZWJHcmFwaGljc0NvbnRleHQzRCgpOwotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCh0cmFja2luZ1dlYkdyYXBo
aWNzQ29udGV4dC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpLCBVbnRocm90dGxlZFVwbG9hZGVy
KTsKKyAgICAvLyBMb3NlIHRoZSBjb250ZXh0LCByZXBsYWNpbmcgaXQgd2l0aCBhIFRyYWNraW5n
V2ViR3JhcGhpY3NDb250ZXh0M0QgKHdoaWNoIHRoZSBDQ0xheWVyVHJlZUhvc3RJbXBsIHRha2Vz
IG93bmVyc2hpcCBvZikuCisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQo
Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBUcmFja2luZ1dlYkdyYXBo
aWNzQ29udGV4dDNEKSkpOworICAgIFRyYWNraW5nV2ViR3JhcGhpY3NDb250ZXh0M0QqIHRyYWNr
aW5nV2ViR3JhcGhpY3NDb250ZXh0ID0gc3RhdGljX2Nhc3Q8VHJhY2tpbmdXZWJHcmFwaGljc0Nv
bnRleHQzRCo+KGNjQ29udGV4dC0+Y29udGV4dDNEKCkpOworICAgIG1faG9zdEltcGwtPmluaXRp
YWxpemVMYXllclJlbmRlcmVyKGNjQ29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2Fk
ZXIpOwogCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3RMYXllci5yZWxlYXNlKCkp
OwogCkBAIC0yMzk1LDExICsyMzcxLDExIEBAIHB1YmxpYzoKIAogVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmQpCiB7Ci0gICAgTW9ja0RyYXdR
dWFkc1RvRmlsbFNjcmVlbkNvbnRleHQqIG1vY2tDb250ZXh0ID0gbmV3IE1vY2tEcmF3UXVhZHNU
b0ZpbGxTY3JlZW5Db250ZXh0KCk7Ci0gICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobW9ja0NvbnRl
eHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKyAg
ICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlM0QoYWRvcHRQdHIobmV3IE1vY2tEcmF3UXVhZHNUb0ZpbGxTY3JlZW5Db250ZXh0KSk7
CisgICAgTW9ja0RyYXdRdWFkc1RvRmlsbFNjcmVlbkNvbnRleHQqIG1vY2tDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8TW9ja0RyYXdRdWFkc1RvRmlsbFNjcmVlbkNvbnRleHQqPihjb250ZXh0LT5jb250
ZXh0M0QoKSk7CiAKICAgICAvLyBSdW4gdGVzdCBjYXNlCi0gICAgT3duUHRyPENDTGF5ZXJUcmVl
SG9zdEltcGw+IG15SG9zdEltcGwgPSBjcmVhdGVMYXllclRyZWVIb3N0KGZhbHNlLCBjb250ZXh0
LCBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKTsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1w
bD4gbXlIb3N0SW1wbCA9IGNyZWF0ZUxheWVyVHJlZUhvc3QoZmFsc2UsIGNvbnRleHQucmVsZWFz
ZSgpLCBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKTsKICAgICBteUhvc3RJbXBsLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OndoaXRlKTsKIAogICAgIC8vIFZlcmlmeSBvbmUgcXVhZCBpcyBkcmF3
biB3aGVuIHRyYW5zcGFyZW50IGJhY2tncm91bmQgc2V0IGlzIG5vdCBzZXQuCkBAIC0yNDI0LDcg
KzI0MDAsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGhhc1RyYW5zcGFyZW50
QmFja2dyb3VuZCkKIAogc3RhdGljIHZvaWQgc2V0dXBMYXllcnNGb3JUZXh0dXJlQ2FjaGluZyhD
Q0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgQ0NMYXllckltcGwqJiByb290
UHRyLCBDQ0xheWVySW1wbComIGludGVybWVkaWF0ZUxheWVyUHRyLCBDQ0xheWVySW1wbComIHN1
cmZhY2VMYXllclB0ciwgQ0NMYXllckltcGwqJiBjaGlsZFB0cikKIHsKLSAgICBSZWZQdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4
dChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IFBh
cnRpYWxTd2FwQ29udGV4dCkpOwogCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAg
ICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAwLCAxMDApKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCmluZGV4IGQyNzczNzkwZWJmNTQ3OWY2ZDAzMmE4ZWYyOWJiYTA1N2NmMzliNmIuLjNi
ZjI2MjA0ZDFiYWY0YmU0OGIyY2MwNjllMWE5YmE3YTY3YjFkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTM2
OSw3ICsxMzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRl
T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQogICAgIHsKLSAgICAgICAgQ29t
cG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRl
eHR1cmVUcmFja2luZyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBo
aWNzQ29udGV4dDNEKGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpKTsKKyAgICAgICAgQ29t
cG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRl
eHR1cmVUcmFja2luZyo+KGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwogCiAgICAgICAg
IHN3aXRjaCAoaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkgewogICAgICAgICBjYXNlIDA6CkBA
IC0xNDAzLDcgKzE0MDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVy
c09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAgIENv
bXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhU
ZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFw
aGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7CisgICAgICAgIENv
bXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhU
ZXh0dXJlVHJhY2tpbmcqPihpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIAogICAgICAg
ICAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdXNlZCBmb3IgZHJhdyBzaG91bGQgYWx3YXlzIGJlIG9u
ZS4KICAgICAgICAgRVhQRUNUX0VRKDEsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKQEAg
LTE0NzMsNyArMTQ3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21w
bGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAgICB7Ci0gICAgICAg
IENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdp
dGhUZXh0dXJlVHJhY2tpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJH
cmFwaGljc0NvbnRleHQzRChpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKSk7CisgICAgICAg
IENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdp
dGhUZXh0dXJlVHJhY2tpbmcqPihpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIAogICAg
ICAgICBzd2l0Y2ggKGltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkpIHsKICAgICAgICAgY2FzZSAw
OgpAQCAtMTU0Miw3ICsxNTQyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdM
YXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCiAgICAgewotICAgICAg
ICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyog
Y29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RX
aXRoVGV4dHVyZVRyYWNraW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QoaW1wbC0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSkpOworICAgICAg
ICBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyog
Y29udGV4dCA9IHN0YXRpY19jYXN0PENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RX
aXRoVGV4dHVyZVRyYWNraW5nKj4oaW1wbC0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSk7CiAKICAg
ICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGRyYXdpbmcgc2hvdWxkIHR3byBl
eGNlcHQgZm9yIGZyYW1lIDQKICAgICAgICAgLy8gd2hlcmUgdGhlIHZpZXdwb3J0IG9ubHkgY29u
dGFpbnMgb25lIGxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1NpbmdsZVRocmVhZFByb3h5VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2luZ2xlVGhyZWFkUHJveHlUZXN0LmNwcAppbmRleCA0ZmU0MGYyNDE4N2NmMDFhM2Zk
NGUwN2VjMzQ2ZmVlMWJlNDYwZGQ5Li41NDFjMjNmNWM2ZDAwYWViOWU1Y2U1NTFjOWY1OGE5MGE2
MTEwMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2luZ2xl
VGhyZWFkUHJveHlUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2luZ2xlVGhyZWFkUHJveHlUZXN0LmNwcApAQCAtNzAsOSArNzAsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIGVuZFRlc3RBZnRlckRlbGF5KGNlaWwoQ0NTaW5nbGVUaHJlYWRQcm94eTo6YW5pbWF0aW9u
VGltZXJEZWxheSgpICogMTAwMCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFCisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUK
ICAgICB7Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgYWZ0ZXJUZXN0KCkKQEAgLTExNyw5ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIGVuZFRl
c3RBZnRlckRlbGF5KGNlaWwoQ0NTaW5nbGVUaHJlYWRQcm94eTo6YW5pbWF0aW9uVGltZXJEZWxh
eSgpICogMTAwMCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFCisgICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYkdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RN
YWtlQ3VycmVudEZhaWxzKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250
ZXh0M0RNYWtlQ3VycmVudEZhaWxzKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJU
ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRl
ZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5j
cHAKaW5kZXggNTdiNmRmMTRlMDc1OGMxMmI1YTlhMzRhMjExMWFkM2E4YzJlMWEyYy4uNDBkM2Nl
NWU2ZmY5NDNiY2QwZTk0ZTc1YWIzMGJlNmM4MDZlZGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKQEAgLTEwMywxNCArMTAzLDkgQEAg
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmc6OkNv
bXBvc2l0b3JGYWtlV2ViR3JhcGhpY3MKIHsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gVGVzdEhvb2tzOjpjcmVhdGVDb250ZXh0KCkKK1Bhc3NPd25QdHI8V2ViR3JhcGhpY3ND
b250ZXh0M0Q+IFRlc3RIb29rczo6Y3JlYXRlQ29udGV4dCgpCiB7Ci0gICAgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgd2ViQXR0cnM7Ci0gICAgd2ViQXR0cnMuYWxwaGEgPSBhdHRycy5hbHBoYTsKLQotICAg
IE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCA9IENvbXBvc2l0b3JGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nOjpjcmVhdGUod2ViQXR0cnMp
OwotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgIHJldHVybiBDb21wb3NpdG9yRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZzo6Y3JlYXRlKFdlYkdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCkpOwogfQogCiBQYXNzT3duUHRyPE1vY2tMYXllclRy
ZWVIb3N0SW1wbD4gTW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0
SG9va3MsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50KiBjbGllbnQpCkBAIC0yMzIsNyArMjI3LDcgQEAgcHVibGljOgogICAgICAg
ICBtX3Rlc3RIb29rcy0+YXBwbHlTY3JvbGxBbmRTY2FsZShzY3JvbGxEZWx0YSwgc2NhbGUpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRl
Q29udGV4dDNEKCkgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViR3JhcGhpY3ND
b250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1
cm4gbV90ZXN0SG9va3MtPmNyZWF0ZUNvbnRleHQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmgKaW5kZXggYzBjYTQ0ZmVlN2IwMWI4NDM5
MjAzYzYxZGJhNDJhNWYxMTk5NmEwNS4uNzU4ODZlZmZlZTI1YTY3ZmI4OTc2NWY4MjE4MTUwNDFm
ZTI3YTE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVh
ZGVkVGVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRl
c3QuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoZG91YmxlIHRpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlB
bmltYXRpb25GaW5pc2hlZChkb3VibGUgdGltZSkgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKTsKKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4
dCgpOwogfTsKIAogY2xhc3MgVGltZW91dFRhc2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwCmluZGV4IGJhY2Y4
NzNmY2FmMTYyNDk0ZTE0ZDVhNGRhNDYzYWZjZDQ3ZjJjOGYuLjMwNDUwZGJjNDliZmU2ZGUxNjhh
MDU2NjYzNzI3OWRkZDMyZmNjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwCkBAIC03NCwxNSArNzQsMTEg
QEAgY2xhc3MgQ2FudmFzMkRMYXllckJyaWRnZVRlc3QgOiBwdWJsaWMgVGVzdCB7CiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBmdWxsTGlmZWN5Y2xlVGVzdChUaHJlYWRNb2RlIHRocmVhZE1vZGUsIERl
ZmVycmFsTW9kZSBkZWZlcnJhbE1vZGUpCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRyczsKLQotICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IG1haW5Db250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQoKSksIEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgICAgIFJl
ZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NNYWluQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChtYWluQ29udGV4dCk7Ci0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gaW1wbENvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4dCgpKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICAgICAg
UmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0ltcGxDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZTNEKGltcGxDb250ZXh0KTsKKyAgICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBtYWluQ29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbik7CisgICAgICAgIE93blB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4gY2NJbXBsQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUz
RChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQpKTsKIAogICAgICAgICBNb2NrQ2FudmFz
Q29udGV4dCYgbWFpbk1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtYWluQ29u
dGV4dC5nZXQoKSkpOwotICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3Rh
dGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4
dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOworICAgICAgICBN
b2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRl
eHQqPihjY0ltcGxDb250ZXh0LT5jb250ZXh0M0QoKSk7CiAKICAgICAgICAgTW9ja1dlYlRleHR1
cmVVcGRhdGVyIHVwZGF0ZXI7CiAKQEAgLTE1MSw3ICsxNDcsNyBAQCBURVNUKENhbnZhczJETGF5
ZXJCcmlkZ2VUZXN0MiwgdGVzdENsZWFyQ2xpZW50KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWlu
Q29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KCkpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gbWFpbkNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFz
Q29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7
CiAgICAgT3duUHRyPENhbnZhczJETGF5ZXJCcmlkZ2U+IGJyaWRnZSA9IENhbnZhczJETGF5ZXJC
cmlkZ2U6OmNyZWF0ZShtYWluQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgxMDAsIDEwMCksIERlZmVy
cmVkLCAxKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBicmlkZ2UtPmxheWVy
KCk7CiAgICAgYnJpZGdlLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NvbXBvc2l0b3JGYWtlR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzdiNjJkNGM3NjJmYWJmYWM4NTkxMTY1NmUxYzA4
MzY5MDg4OTg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRl
eHQzRC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBDb21wb3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNEX2gKLSNkZWZpbmUgQ29tcG9zaXRv
ckZha2VHcmFwaGljc0NvbnRleHQzRF9oCi0KLSNpbmNsdWRlICJDb21wb3NpdG9yRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29tcG9zaXRvck1v
Y2tHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykK
LXsKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIHdlYkF0dHJz
OwotICAgIHdlYkF0dHJzLmFscGhhID0gYXR0cnMuYWxwaGE7Ci0KLSAgICBPd25QdHI8V2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCA9IFdlYktpdDo6Q29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKHdlYkF0dHJzKTsKLSAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4
dCh3ZWJDb250ZXh0LnJlbGVhc2UoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRHJhd2luZ0J1ZmZlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3QuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2VmNDkyODFiZGY5NDM4NWQxZmNhM2IwMDAwMDkx
M2Y4MmEzNjMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhd2luZ0J1ZmZlckNocm9taXVtVGVzdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCi0KLSNpbmNsdWRlICJD
b21wb3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgotI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1u
YW1lc3BhY2UgewotCi1URVNUKERyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUZvcm1h
dHMpCi17Ci0gICAgUmVmUHRyPERyYXdpbmdCdWZmZXI+IGJ1ZmZlcjsKLQotICAgIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGFscGhhQXR0cnM7Ci0gICAgYWxwaGFBdHRycy5hbHBoYSA9
IHRydWU7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgb3BhcXVlQXR0cnM7Ci0g
ICAgb3BhcXVlQXR0cnMuYWxwaGEgPSBmYWxzZTsKLQotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gYWxwaGFDb250ZXh0ID0gY3JlYXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0NvbnRleHQz
RChhbHBoYUF0dHJzKTsKLSAgICBFWFBFQ1RfVFJVRShhbHBoYUNvbnRleHQpOwotICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gb3BhcXVlQ29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JNb2Nr
R3JhcGhpY3NDb250ZXh0M0Qob3BhcXVlQXR0cnMpOwotICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNv
bnRleHQpOwotCi0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4
dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpQcmVzZXJ2ZSwgRHJhd2luZ0J1ZmZl
cjo6QWxwaGEpOwotICAgIEVYUEVDVF9GQUxTRShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3Bh
cXVlKCkpOwotICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShhbHBoYUNvbnRleHQu
Z2V0KCksIEludFNpemUoKSwgRHJhd2luZ0J1ZmZlcjo6RGlzY2FyZCwgRHJhd2luZ0J1ZmZlcjo6
QWxwaGEpOwotICAgIEVYUEVDVF9GQUxTRShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3BhcXVl
KCkpOwotCi0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG9wYXF1ZUNvbnRleHQu
Z2V0KCksIEludFNpemUoKSwgRHJhd2luZ0J1ZmZlcjo6UHJlc2VydmUsIERyYXdpbmdCdWZmZXI6
Ok9wYXF1ZSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1
ZSgpKTsKLSAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4dC5n
ZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpEaXNjYXJkLCBEcmF3aW5nQnVmZmVyOjpP
cGFxdWUpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUo
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCmluZGV4IDZhYjYxNmQzYzhh
Nzk3MTMyZWU0ZWZjZDg3MWI4OTc5YzA3YjJmNzkuLjBiM2MzZmU5ZTczYTcxZDVmZGU0NDAyM2Zh
MzY3ZmQxYmU2Nzg0OGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKLSNpbmNsdWRlICJD
b21wb3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzksMTAgKzM5LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5p
bWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpIE9WRVJSSURFIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBw
bHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNj
YWxlKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFCiAg
ICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpOwor
ICAgICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwor
ICAgICAgICByZXR1cm4gV2ViS2l0OjpDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKTsKICAg
ICB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3MpIE9W
RVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZFUlJJREUgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRl
eHQzRFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlR3JhcGhpY3ND
b250ZXh0M0RUZXN0LmNwcAppbmRleCA3MWNiOGJhYjFlZDg4YzVlZDc0MGY4YTBhOTQ5NzlhMDkz
MjJlN2VkLi43MjA2MzBlMTc1MzRmMmM2MzFkMzBkMTcxYzRmODc0MWIwYjUyMWQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUdyYXBoaWNzQ29u
dGV4dDNEVGVzdC5jcHAKQEAgLTI1LDEwICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0KICNpbmNsdWRlICJGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIK
IAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAg
LTM2LDU3ICszMyw2IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKLWNsYXNzIEZyYW1lQ291bnRpbmdDb250ZXh0IDogcHVibGljIEZha2VXZWJH
cmFwaGljc0NvbnRleHQzRCB7Ci1wdWJsaWM6Ci0gICAgRnJhbWVDb3VudGluZ0NvbnRleHQoKSA6
IG1fZnJhbWUoMCkgeyB9Ci0KLSAgICAvLyBUaGlzIG1ldGhvZCB3b3VsZCBub3JtYWxseSBkbyBh
IGdsU3dhcEJ1ZmZlcnMgdW5kZXIgdGhlIGhvb2QuCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
ZXh0dXJlKCkgeyBtX2ZyYW1lKys7IH0KLQotICAgIGludCBmcmFtZUNvdW50KCkgeyByZXR1cm4g
bV9mcmFtZTsgfQotCi1wcml2YXRlOgotICAgIGludCBtX2ZyYW1lOwotfTsKLQotVEVTVChGYWtl
R3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDYW5PdmVycmlkZU1hbnVhbGx5KQotewotICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdDb250ZXh0KCkp
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIEZy
YW1lQ291bnRpbmdDb250ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxGcmFtZUNvdW50
aW5nQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNz
Q29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7
IGkrKykgewotICAgICAgICBjb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDEpOwotICAgICAg
ICBjb250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOwotICAgIH0KLSAgICBjb250ZXh0LT5maW5pc2go
KTsKLQotICAgIEVYUEVDVF9FUSgxMCwgbW9ja0NvbnRleHQuZnJhbWVDb3VudCgpKTsKLX0KLQot
Ci1jbGFzcyBHTW9ja0NvbnRleHQgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsK
LXB1YmxpYzoKLSAgICBNT0NLX01FVEhPRDAoZ2V0RXJyb3IsIFdHQzNEZW51bSgpKTsKLX07Ci0K
LVRFU1QoRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ2FuVXNlR01vY2spCi17Ci0gICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgR01vY2tDb250ZXh0KCkpLCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIEdNb2NrQ29u
dGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8R01vY2tDb250ZXh0Kj4oR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQo
KSkpOwotCi0gICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIGdldEVycm9yKCkpCi0gICAgICAg
ICAgICAuV2lsbFJlcGVhdGVkbHkodGVzdGluZzo6UmV0dXJuKDMxNCkpOwotCi0gICAgLy8gSXQn
cyBPSyB0byBjYWxsIG1ldGhvZHMgR01vY2sgZG9lc24ndCBrbm93IGFib3V0LgotICAgIGNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgLy8gQ2hlY2sgdGhhdCB0aGUgbW9ja2Vk
IG1ldGhvZCBpcyByZXR1cm5pbmcgYXMgaW50ZW5kZWQuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMDsgaSsrKQotICAgICAgICBFWFBFQ1RfRVEoKGludCljb250ZXh0LT5nZXRFcnJvcigpLCAz
MTQpOwotfQotCiBjbGFzcyBDb250ZXh0VGhhdENvdW50c01ha2VDdXJyZW50cyA6IHB1YmxpYyBG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgogICAgIENvbnRleHRUaGF0Q291bnRz
TWFrZUN1cnJlbnRzKCkgOiBtX21ha2VDdXJyZW50Q291bnQoMCkgeyB9CkBAIC0xMDEsMjEgKzQ3
LDEwIEBAIHByaXZhdGU6CiB9OwogCiAKLVRFU1QoRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVzdCwg
Q29udGV4dEZvclRoaXNUaHJlYWRTaG91bGROb3RNYWtlQ3VycmVudCkKLXsKLSAgICBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBDb250ZXh0VGhhdENvdW50c01ha2VDdXJy
ZW50cygpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsK
LSAgICBFWFBFQ1RfVFJVRShjb250ZXh0KTsKLSAgICBDb250ZXh0VGhhdENvdW50c01ha2VDdXJy
ZW50cyYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8Q29udGV4dFRoYXRDb3VudHNNYWtlQ3Vy
cmVudHMqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRl
eHQzRChjb250ZXh0LmdldCgpKSk7Ci0gICAgRVhQRUNUX0VRKDAsIG1vY2tDb250ZXh0Lm1ha2VD
dXJyZW50Q291bnQoKSk7Ci19Ci0KLVRFU1QoRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ29u
dGV4dEZvckFub3RoZXJUaHJlYWRTaG91bGROb3RNYWtlQ3VycmVudCkKK1RFU1QoRmFrZUdyYXBo
aWNzQ29udGV4dDNEVGVzdCwgQ29udGV4dENyZWF0aW9uU2hvdWxkTm90TWFrZUN1cnJlbnQpCiB7
Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgQ29udGV4dFRoYXRD
b3VudHNNYWtlQ3VycmVudHMoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRv
SG9zdFdpbmRvdyk7CisgICAgT3duUHRyPENvbnRleHRUaGF0Q291bnRzTWFrZUN1cnJlbnRzPiBj
b250ZXh0KGFkb3B0UHRyKG5ldyBDb250ZXh0VGhhdENvdW50c01ha2VDdXJyZW50cykpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRleHQpOwotICAgIENvbnRleHRUaGF0Q291bnRzTWFrZUN1cnJlbnRz
JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxDb250ZXh0VGhhdENvdW50c01ha2VDdXJyZW50
cyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNE
KGNvbnRleHQuZ2V0KCkpKTsKLSAgICBFWFBFQ1RfRVEoMCwgbW9ja0NvbnRleHQubWFrZUN1cnJl
bnRDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgY29udGV4dC0+bWFrZUN1cnJlbnRDb3VudCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGlj
c0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3Jh
cGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNDEwYzQ1ZDc4YmU3YThhY2UxOWQ1MThi
YjViNjc1ZTM2OTBhMDQwMi4uMTk3OWQ5MzVjMWFiMmJmYjA5MmQ1N2Q4YzQ1OTVjMWQ3ODcwMmUy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24u
aCIKLSNpbmNsdWRlICJDb21wb3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVk
ZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgImNj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02NywxMCArNjgsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVn
aW5UaW1lKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0M0QoKSBPVkVSUklERQor
ICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4
dDNEKCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzIGF0dHJzOwotICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0Nv
bnRleHQzRChhdHRycyk7CisgICAgICAgIHJldHVybiBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUoV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSBP
VkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpIE9WRVJSSURFIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJl
ckNocm9taXVtVGVzdC5jcHAKaW5kZXggZTQ2NTA5NjFiOTg0NmJhMTlkMjMwMDlhOTNiMzQxZDVm
ZmM5N2RjZi4uY2ZkY2RjMTU2YTcyYjY5ZTk4YzYxNmFkZWFhYzI0MThjZjJiNjZlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQ0NUZXN0Q29tbW9u
LmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKQEAgLTEwOSw3ICsxMDgsNyBAQCBwcml2YXRlOgog
CiBjbGFzcyBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIExheWVyUmVuZGVyZXJD
aHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRl
cmVyQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQp
IDogTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgVW50aHJvdHRsZWRVcGxv
YWRlcikgeyB9CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50
KiBjbGllbnQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KSA6IExheWVyUmVuZGVyZXJD
aHJvbWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQogCiAgICAg
Ly8gTGF5ZXJSZW5kZXJlckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTEyMyw5ICsxMjIsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCgpCiAgICAgICAgIDogbV9z
dWdnZXN0SGF2ZUJhY2tidWZmZXJZZXMoMSwgdHJ1ZSkKICAgICAgICAgLCBtX3N1Z2dlc3RIYXZl
QmFja2J1ZmZlck5vKDEsIGZhbHNlKQotICAgICAgICAsIG1fY29udGV4dChHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRy
KG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0KCkpLCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKQotICAgICAgICAsIG1f
bW9ja0NvbnRleHQoKnN0YXRpY19jYXN0PEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0
dGluZ0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGlj
c0NvbnRleHQzRChtX2NvbnRleHQuZ2V0KCkpKSkKLSAgICAgICAgLCBtX2xheWVyUmVuZGVyZXJD
aHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQucmVsZWFzZSgpKQorICAgICAgICAsIG1f
Y29udGV4dChhZG9wdFB0cihuZXcgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5n
Q29udGV4dCkpCisgICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVu
dCwgbV9jb250ZXh0LmdldCgpKQogICAgIHsKICAgICB9CiAKQEAgLTE0OCw4ICsxNDYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uIG1fc3VnZ2VzdEhhdmVC
YWNrYnVmZmVyWWVzOwogICAgIFdlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBtX3N1Z2dlc3RI
YXZlQmFja2J1ZmZlck5vOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRl
eHQ7Ci0gICAgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCYgbV9t
b2NrQ29udGV4dDsKKyAgICBPd25QdHI8RnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0
aW5nQ29udGV4dD4gbV9jb250ZXh0OwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1fbW9ja0Ns
aWVudDsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIG1fbGF5ZXJSZW5kZXJlckNocm9t
aXVtOwogICAgIENDU2NvcGVkU2V0dGluZ3MgbV9zY29wZWRTZXR0aW5nczsKQEAgLTE2MCwxMiAr
MTU3LDEyIEBAIHByb3RlY3RlZDoKIC8vIEV4cGVjdGVkOiBpdCBkb2VzIG5vdGhpbmcuCiBURVNU
X0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJZZXNXaGVuSXRB
bHJlYWR5RXhpc3RzU2hvdWxkRG9Ob3RoaW5nKQogewotICAgIG1fbW9ja0NvbnRleHQuc2V0TWVt
b3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllcyk7CisgICAgbV9jb250ZXh0
LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyWWVzKTsKICAgICBF
WFBFQ1RfRVEoMCwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsK
ICAgICBFWFBFQ1RfRkFMU0UobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRp
c2NhcmRlZCgpKTsKIAogICAgIHN3YXBCdWZmZXJzKCk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbW9j
a0NvbnRleHQuZnJhbWVDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9jb250ZXh0LT5mcmFt
ZUNvdW50KCkpOwogfQogCiAvLyBUZXN0IExheWVyUmVuZGVyZXJDaHJvbWl1bSBkaXNjYXJkRnJh
bWVidWZmZXIgZnVuY3Rpb25hbGl0eToKQEAgLTE3NCw3ICsxNzEsNyBAQCBURVNUX0YoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJZZXNXaGVuSXRBbHJlYWR5RXhp
c3RzU2hvdWxkRAogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNr
YnVmZmVyTm9TaG91bGREaXNjYXJkQmFja2J1ZmZlckFuZERhbWFnZVJvb3RMYXllcldoaWxlTm90
VmlzaWJsZSkKIHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKGZhbHNl
KTsKLSAgICBtX21vY2tDb250ZXh0LnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJh
Y2tidWZmZXJObyk7CisgICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2Vz
dEhhdmVCYWNrYnVmZmVyTm8pOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVs
bFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJl
ckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiB9CkBAIC0xODUsNyArMTgyLDcg
QEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyTm9T
aG91bGREaXNjYXJkQmFja2J1ZmZlckFuZEQKIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vRG9Ob3RoaW5nV2hlblZpc2libGUpCiB7CiAgICAgbV9s
YXllclJlbmRlcmVyQ2hyb21pdW0uc2V0VmlzaWJsZSh0cnVlKTsKLSAgICBtX21vY2tDb250ZXh0
LnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CisgICAgbV9j
b250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOwog
ICAgIEVYUEVDVF9FUSgwLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50
KCkpOwogICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVm
ZmVyRGlzY2FyZGVkKCkpOwogfQpAQCAtMTk3LDExICsxOTQsMTEgQEAgVEVTVF9GKExheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyTm9Eb05vdGhpbmdXaGVuVmlzaWJs
ZSkKIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5v
V2hlbkl0RG9lc250RXhpc3RTaG91bGREb05vdGhpbmcpCiB7CiAgICAgbV9sYXllclJlbmRlcmVy
Q2hyb21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9tb2NrQ29udGV4dC5zZXRNZW1vcnlB
bGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIG1fY29udGV4dC0+c2V0
TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1Rf
RVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBF
WFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
KCkpOwogCi0gICAgbV9tb2NrQ29udGV4dC5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhh
dmVCYWNrYnVmZmVyTm8pOworICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1
Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50LnNl
dEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogfQpAQCAtMjEyLDcgKzIw
OSw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZl
ck5vV2hlbkl0RG9lc250RXhpc3RTaG91bGREb05vCiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdCwgRGlzY2FyZGVkQmFja2J1ZmZlcklzUmVjcmVhdGVkRm9yU2NvcGVEdXJhdGlvbikK
IHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKGZhbHNlKTsKLSAgICBt
X21vY2tDb250ZXh0LnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJO
byk7CisgICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNr
YnVmZmVyTm8pOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJh
bWVidWZmZXJEaXNjYXJkZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRG
dWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAKQEAgLTIyMSwxMyArMjE4LDEzIEBAIFRFU1Rf
RihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBEaXNjYXJkZWRCYWNrYnVmZmVySXNSZWNyZWF0
ZWRGb3JTY29wZUR1cmF0aW9uCiAgICAgRVhQRUNUX0ZBTFNFKG1fbGF5ZXJSZW5kZXJlckNocm9t
aXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKICAgICBzd2FwQnVmZmVycygpOwotICAg
IEVYUEVDVF9FUSgxLCBtX21vY2tDb250ZXh0LmZyYW1lQ291bnQoKSk7CisgICAgRVhQRUNUX0VR
KDEsIG1fY29udGV4dC0+ZnJhbWVDb3VudCgpKTsKIH0KIAogVEVTVF9GKExheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QsIEZyYW1lYnVmZmVyRGlzY2FyZGVkQWZ0ZXJSZWFkYmFja1doZW5Ob3RWaXNp
YmxlKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwot
ICAgIG1fbW9ja0NvbnRleHQuc2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1
ZmZlck5vKTsKKyAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2
ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0u
aXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50
LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKIApAQCAtMzExLDcgKzMwOCw4IEBAIFRF
U1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uRG9lc05vdE1ha2VT
eW5jaHJvbm91c0NhbGxzKQogewogICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7
CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBGYWtlTGF5ZXJSZW5k
ZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9w
dFB0cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOworICAgIE93blB0cjxXZWJHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dChhZG9wdFB0cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4
dCkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVt
KCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCkpOwogfQpAQCAtMzUzLDcgKzM1MSw4IEBAIFRFU1Qo
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uV2l0aFF1aWNrbHlMb3N0
Q29udGV4dERvZXNOb3RBc3NlCiB7CiAgICAgQ0NTY29wZWRTZXR0aW5ncyBzY29wZWRTZXR0aW5n
czsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAgIEZha2VMYXllclJl
bmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFk
b3B0UHRyKG5ldyBMb3NlQ29udGV4dE9uRmlyc3RHZXRDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CisgICAgT3duUHRyPFdlYkdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0KGFkb3B0UHRyKG5ldyBMb3NlQ29udGV4dE9uRmlyc3RHZXRDb250
ZXh0KSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21p
dW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlckNocm9t
aXVtLmluaXRpYWxpemUoKTsKIH0KQEAgLTM3Myw3ICszNzIsOCBAQCBwdWJsaWM6CiBURVNUKExh
eWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhvdXRHcHVNZW1vcnlN
YW5hZ2VyRXh0ZW5zaW9uU3VwcG9ydFNob3VsZERlZmF1bHRUb05vblplcm9BbGxvY2F0aW9uKQog
ewogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRv
cHRQdHIobmV3IENvbnRleHRUaGF0RG9lc05vdFN1cHBvcnRNZW1vcnlNYW5hZ21lbnRFeHRlbnNp
b25zKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7Cisg
ICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KGFkb3B0UHRyKG5ldyBDb250
ZXh0VGhhdERvZXNOb3RTdXBwb3J0TWVtb3J5TWFuYWdtZW50RXh0ZW5zaW9ucykpOworICAgIEZh
a2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50
LCBjb250ZXh0LmdldCgpKTsKIAogICAgIGxheWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXpl
KCk7CiAKQEAgLTM5OCw4ICszOTgsOCBAQCBwcml2YXRlOgogVEVTVChMYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0Miwgb3BhcXVlQmFja2dyb3VuZCkKIHsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVu
dCBtb2NrQ2xpZW50OwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRl
eHQoYWRvcHRQdHIobmV3IENsZWFyQ291bnRpbmdDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4dCk7CisgICAgT3du
UHRyPENsZWFyQ291bnRpbmdDb250ZXh0PiBjb250ZXh0KGFkb3B0UHRyKG5ldyBDbGVhckNvdW50
aW5nQ29udGV4dCkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJl
ckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgpKTsKIAogICAgIG1vY2tDbGllbnQu
cm9vdFJlbmRlclBhc3MoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGZhbHNlKTsKIApA
QCAtNDEyLDE3ICs0MTIsMTcgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Miwgb3Bh
cXVlQmFja2dyb3VuZCkKICAgICAvLyBPbiBERUJVRyBidWlsZHMsIHJlbmRlciBwYXNzZXMgd2l0
aCBvcGFxdWUgYmFja2dyb3VuZCBjbGVhciB0byBibHVlIHRvCiAgICAgLy8gZWFzaWx5IHNlZSBy
ZWdpb25zIHRoYXQgd2VyZSBub3QgZHJhd24gb24gdGhlIHNjcmVlbi4KICNpZiBkZWZpbmVkKE5E
RUJVRykKLSAgICBFWFBFQ1RfRVEoMCwgc3RhdGljX2Nhc3Q8Q2xlYXJDb3VudGluZ0NvbnRleHQq
PihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChj
b250ZXh0LmdldCgpKSktPmNsZWFyQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIGNvbnRleHQt
PmNsZWFyQ291bnQoKSk7CiAjZWxzZQotICAgIEVYUEVDVF9FUSgxLCBzdGF0aWNfY2FzdDxDbGVh
ckNvdW50aW5nQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdy
YXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKS0+Y2xlYXJDb3VudCgpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgY29udGV4dC0+Y2xlYXJDb3VudCgpKTsKICNlbmRpZgogfQogCiBURVNUKExheWVy
UmVuZGVyZXJDaHJvbWl1bVRlc3QyLCB0cmFuc3BhcmVudEJhY2tncm91bmQpCiB7CiAgICAgRmFr
ZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCksIEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgRmFrZUxh
eWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIGNv
bnRleHQpOworICAgIE93blB0cjxDbGVhckNvdW50aW5nQ29udGV4dD4gY29udGV4dChhZG9wdFB0
cihuZXcgQ2xlYXJDb3VudGluZ0NvbnRleHQpKTsKKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CiAK
ICAgICBtb2NrQ2xpZW50LnJvb3RSZW5kZXJQYXNzKCktPnNldEhhc1RyYW5zcGFyZW50QmFja2dy
b3VuZCh0cnVlKTsKIApAQCAtNDMyLDUgKzQzMiw1IEBAIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdDIsIHRyYW5zcGFyZW50QmFja2dyb3VuZCkKICAgICBsYXllclJlbmRlcmVyQ2hyb21p
dW0uZHJhd1JlbmRlclBhc3MobW9ja0NsaWVudC5yb290UmVuZGVyUGFzcygpLCBGbG9hdFJlY3Qo
KSk7CiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmZpbmlzaERyYXdpbmdGcmFtZSgpOwogCi0g
ICAgRVhQRUNUX0VRKDEsIHN0YXRpY19jYXN0PENsZWFyQ291bnRpbmdDb250ZXh0Kj4oR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5n
ZXQoKSkpLT5jbGVhckNvdW50KCkpOworICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0LT5jbGVhckNv
dW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0
dXJlQ29waWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVD
b3BpZXJUZXN0LmNwcAppbmRleCBkNzFiOGNlNDVhM2VhMzAzMjQ0MmY4NjQ4OTVkNDUzMGRlNmE3
ZDU2Li4yYzkwYzRlZDVhZjFmZjA5YTFkZTg0ZmJmZWJlNmEzY2Y4MmJkYjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcApAQCAt
NTIsOSArNTIsOCBAQCBwdWJsaWM6CiBURVNUKFRleHR1cmVDb3BpZXJUZXN0LCB0ZXN0RHJhd0Fy
cmF5c0NvcHkpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0g
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcg
TW9ja0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdyk7Ci0gICAgTW9ja0NvbnRleHQmIG1vY2tDb250ZXh0ID0gKnN0YXRpY19jYXN0PE1vY2tD
b250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250
ZXh0M0QoY29udGV4dC5nZXQoKSkpOwotICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2ND
b250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGNvbnRleHQpOworICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKGFkb3B0UHRyKG5ldyBNb2NrQ29udGV4dCkpOworICAgIE1vY2tDb250ZXh0JiBtb2NrQ29u
dGV4dCA9ICpzdGF0aWNfY2FzdDxNb2NrQ29udGV4dCo+KGNjQ29udGV4dC0+Y29udGV4dDNEKCkp
OwogCiAgICAgewogICAgICAgICBJblNlcXVlbmNlIHNlcXVlbmNlOwpAQCAtNzksNyArNzgsNyBA
QCBURVNUKFRleHR1cmVDb3BpZXJUZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiAgICAgaW50IHNv
dXJjZVRleHR1cmVJZCA9IDE7CiAgICAgaW50IGRlc3RUZXh0dXJlSWQgPSAyOwogICAgIEludFNp
emUgc2l6ZSgyNTYsIDEyOCk7Ci0gICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4g
Y29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKGNvbnRleHQpKTsKKyAgICBP
d25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBjb3BpZXIoQWNjZWxlcmF0ZWRUZXh0dXJl
Q29waWVyOjpjcmVhdGUoY2NDb250ZXh0LT5jb250ZXh0M0QoKSkpOwogICAgIGNvcGllci0+Y29w
eVRleHR1cmUoY2NDb250ZXh0LmdldCgpLCBzb3VyY2VUZXh0dXJlSWQsIGRlc3RUZXh0dXJlSWQs
IHNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LmNwcAppbmRleCA0YjBkZmQwNTkyMTY5
YzdkYmIyMTAzZGExODA5YzViM2QwNTk1ODkxLi4zOWE1N2QxMzFmZmE2NDY4ODliYzUyM2U1NTUx
MTcxMDYzYmU5OTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyVGVzdC5jcHAKQEAgLTY1LDExICs2NSwx
MCBAQCBwcml2YXRlOgogVEVTVChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LCBJc0J1c3kp
CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGluZygpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RX
aXRoUXVlcnlUZXN0aW5nJiBmYWtlQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpl
eHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOwotICAgIE93blB0cjxU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyOjpjcmVhdGUoY29udGV4dCwgMik7CisgICAgT3duUHRyPEZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRFdpdGhRdWVyeVRlc3Rpbmc+IGZha2VDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5nKSk7CisgICAgT3duUHRyPFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0
ZShmYWtlQ29udGV4dC5nZXQoKSwgMik7CiAKLSAgICBmYWtlQ29udGV4dC5zZXRSZXN1bHRBdmFp
bGFibGUoMCk7CisgICAgZmFrZUNvbnRleHQtPnNldFJlc3VsdEF2YWlsYWJsZSgwKTsKICAgICBF
WFBFQ1RfRkFMU0UodXBsb2FkZXItPmlzQnVzeSgpKTsKICAgICB1cGxvYWRlci0+YmVnaW5VcGxv
YWRzKCk7CiAgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKQEAgLTc4LDcgKzc3LDcgQEAgVEVT
VChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LCBJc0J1c3kpCiAgICAgdXBsb2FkZXItPmVu
ZFVwbG9hZHMoKTsKICAgICBFWFBFQ1RfVFJVRSh1cGxvYWRlci0+aXNCdXN5KCkpOwogCi0gICAg
ZmFrZUNvbnRleHQuc2V0UmVzdWx0QXZhaWxhYmxlKDEpOworICAgIGZha2VDb250ZXh0LT5zZXRS
ZXN1bHRBdmFpbGFibGUoMSk7CiAgICAgRVhQRUNUX0ZBTFNFKHVwbG9hZGVyLT5pc0J1c3koKSk7
CiAgICAgdXBsb2FkZXItPmJlZ2luVXBsb2FkcygpOwogICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAppbmRleCA5NDk1ZTcwNmE2YmIzN2I1NGRiNGZmMzdlNTI1NmYzMWZm
ZWIzY2RiLi4wNGIzYzM4MmViZjVkNzM0OWZmZjM3MmNhYzExZTI1Yjk4M2IyM2RlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTY3Myw4ICs2NzMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciBmYWtlQWxs
b2NhdG9yOwogICAgIEZha2VUZXh0dXJlQ29waWVyIGZha2VDb3BpZXI7CiAgICAgRmFrZVRleHR1
cmVVcGxvYWRlciBmYWtlVXBsb2FkZXI7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0ID0gY3JlYXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcygpKTsKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNj
Q29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChjb250ZXh0KTsKKyAgICBPd25Q
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGUzRChXZWJLaXQ6OkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCkpKTsKIAogICAgIC8vIFRo
ZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWlu
dHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwo=
</data>
<flag name="review"
          id="157155"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>