<?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>191663</bug_id>
          
          <creation_ts>2018-11-14 15:45:29 -0800</creation_ts>
          <short_desc>[WebGPU] WebGPUCommandBuffer prototype</short_desc>
          <delta_ts>2018-11-15 13:21:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1478664</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-14 15:45:29 -0800</bug_when>
    <thetext>[WebGPU] WebGPUCommandBuffer prototype</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478674</commentid>
    <comment_count>1</comment_count>
      <attachid>354864</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-14 16:03:17 -0800</bug_when>
    <thetext>Created attachment 354864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478676</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-14 16:06:57 -0800</bug_when>
    <thetext>Patch doesn&apos;t apply because it relies on 191383, which will land soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478690</commentid>
    <comment_count>3</comment_count>
      <attachid>354864</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-14 16:36:40 -0800</bug_when>
    <thetext>Comment on attachment 354864
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Begin implementation of WebGPUCommandBuffers as well as GPUQueues (MTLCommandBuffer, MTLCommandQueue).

This patch has a bit more than just that.

Also, I suggest you get into the habit of writing more detail in the section below, file by file. Look at one of Darin&apos;s patches for an example of how helpful that is. There isn&apos;t a good reason to simply list the set of files changed without explaining what happened.

&gt; Source/WebCore/Modules/webgpu/GPUCommandBuffer.h:2
&gt; +/*
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.

Not for this patch, but I think all the GPU* files should be under platform, not modules. The WebGPU* files can live here.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:31
&gt; +#include &quot;GPUCommandBuffer.h&quot;
&gt; +#include &quot;GPUQueue.h&quot;

Can&apos;t we just forward declare these?

&gt; Source/WebCore/Modules/webgpu/GPUQueue.h:47
&gt; +    PlatformQueue *platformQueue() const { return m_platformQueue.get(); }

Nit: * after PlatformQueue

&gt; Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp:46
&gt; +    UNUSED_PARAM(m_commandBuffer);

Why do you need this? Is it because the member variable is never used?

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUCommandBufferMetal.mm:57
&gt; +    buffer = [mtlQueue commandBuffer];

Don&apos;t you need to adoptNS on this?

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUQueueMetal.mm:50
&gt; +    queue = [device.platformDevice() newCommandQueue];

Needs adoptNS

&gt; LayoutTests/webgpu/command-buffers.html:38
&gt; +&lt;script id=&quot;library&quot; type=&quot;x-shader/x-metal&quot;&gt;
&gt; +    #include &lt;metal_stdlib&gt;
&gt; +    
&gt; +    using namespace metal;
&gt; +    
&gt; +    struct Vertex
&gt; +    {
&gt; +        float4 position [[position]];
&gt; +    };
&gt; +    
&gt; +    vertex Vertex vertex_main(uint vid [[vertex_id]])
&gt; +    {
&gt; +        Vertex v;
&gt; +        switch (vid) {
&gt; +        case 0:
&gt; +            v.position = float4(-.75, -.75, 0, 1);
&gt; +            break;
&gt; +        case 1:
&gt; +            v.position = float4(.75, -.75, 0, 1);
&gt; +            break;
&gt; +        case 2:
&gt; +            v.position = float4(0, .75, 0, 1);
&gt; +            break;
&gt; +        default:
&gt; +            v.position = float4(0, 0, 0, 1);
&gt; +        }
&gt; +        return v;
&gt; +    }
&gt; +    
&gt; +    fragment float4 fragment_main(Vertex vertexIn [[stage_in]])
&gt; +    {
&gt; +        return float4(1.0, 0.0, 0.0, 1.0);
&gt; +    }
&gt; +&lt;/script&gt;

You don&apos;t need a shader for this test.

&gt; LayoutTests/webgpu/command-buffers.html:40
&gt; +&apos;use strict&apos;;

Unimportant, but this isn&apos;t necessary here.

&gt; LayoutTests/webgpu/webgpu-basics.html:91
&gt; +function render() {

How is this different from the test above? Shouldn&apos;t it have a more accurate name for the moment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478762</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-14 20:20:03 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #3)
&gt; Comment on attachment 354864 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354864&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webgpu/GPUDevice.h:31
&gt; &gt; +#include &quot;GPUCommandBuffer.h&quot;
&gt; &gt; +#include &quot;GPUQueue.h&quot;
&gt; 
&gt; Can&apos;t we just forward declare these?


Hmm, the only other place I can put them and have my code still compile (problems in Ref.h template code) is WebGPUDevice.h, and that makes even less sense since there is no mention of either class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479028</commentid>
    <comment_count>5</comment_count>
      <attachid>354970</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-15 12:26:47 -0800</bug_when>
    <thetext>Created attachment 354970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479030</commentid>
    <comment_count>6</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-15 12:27:54 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #3)
&gt; Comment on attachment 354864 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354864&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Begin implementation of WebGPUCommandBuffers as well as GPUQueues (MTLCommandBuffer, MTLCommandQueue).
&gt; 
&gt; This patch has a bit more than just that.

Hmm, I can&apos;t really come up with a better description for this. Suggestions?

There&apos;s a lot of code but the fact is, implementing this stuff is quite a bit of boilerplate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479038</commentid>
    <comment_count>7</comment_count>
      <attachid>354970</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-15 12:38:38 -0800</bug_when>
    <thetext>Comment on attachment 354970
Patch

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

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUQueueMetal.mm:50
&gt; +    queue = adoptNS([device.platformDevice() newCommandQueue]);

Why did you use retainPtr in the other file and adoptNS here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479067</commentid>
    <comment_count>8</comment_count>
      <attachid>354970</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-15 13:20:36 -0800</bug_when>
    <thetext>Comment on attachment 354970
Patch

Clearing flags on attachment: 354970

Committed r238245: &lt;https://trac.webkit.org/changeset/238245&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479068</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-15 13:20:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479070</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-15 13:21:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/46105786&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354864</attachid>
            <date>2018-11-14 16:03:17 -0800</date>
            <delta_ts>2018-11-15 12:26:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191663-20181114160317.patch</filename>
            <type>text/plain</type>
            <size>53097</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlhMmViOTM5ZWMyMDdk
MWI2MTk2ZmMxZmNkYThhNmM5ZWM4ODEzNi4uNTRhZDBjMzllNDRjNmZiMGY2OGJhMzkzMzEyZWI5
Zjc3ZTQ2OTdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE4LTExLTE0ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gV2ViR1BV
Q29tbWFuZEJ1ZmZlciBwcm90b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTY2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVudGF0aW9uIG9mIFdlYkdQVUNvbW1hbmRCdWZm
ZXJzIGFzIHdlbGwgYXMgR1BVUXVldWVzIChNVExDb21tYW5kQnVmZmVyLCBNVExDb21tYW5kUXVl
dWUpLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbAorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb21tYW5kQnVmZmVyLmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6
Y3JlYXRlQ29tbWFuZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OmdldFF1
ZXVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9HUFVRdWV1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R1BVUXVldWU6OnBs
YXRmb3JtUXVldWUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBp
cGVsaW5lLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVSZW5kZXJQaXBlbGluZS5oLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVN3YXBD
aGFpbi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2Ev
R1BVU3dhcENoYWluLmguCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1
ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVQ29tbWFuZEJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OkdQVUNvbW1hbmRCdWZmZXIp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpHUFVEZXZpY2UpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVRdWV1
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVF1ZXVlOjpHUFVRdWV1ZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW06Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZSk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oOgorCiAyMDE4LTExLTE0ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQ29kZSBxdWFsaXR5IGNvbmNlcm5zIHJhaXNlZCBm
b3IgMTkxMjkxOiBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBlIGZvciBXZWJHUFVSZW5k
ZXJQaXBlbGluZSBhbmQgV2ViR1BVU3dhcENoYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDgz
Y2FlZjg5ZWYwYjQ0YTNkMzFlOGYzOGNiNGY4YTY1MmYyZTM1MDguLjY2MDk3ZTZjMmY0OThmMTEx
NjBmOTIwYTgzMWY4MmRmYWFlOTZiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NTgsNiAr
NDU4LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmdw
dS9XZWJHUFUuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwKICAgICBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGwKKyAgICBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlk
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYTc0MDNhNmM5YjM5NDY0MDlmNGY5
NGU2YmY2ZWNhMmI5ZGEzYzljOS4uYjgyMzU5NzFjMzVkYTc1ZmE4OGQ2ZmE2ZWVmNTkyMjEyYTQ5
NzM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zNzUsNiArMzc1LDcgQEAg
SlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdl
RGVzY3JpcHRvci5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
Q29tbWFuZEJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYzczMzI1YTQ2ZWNmZDc3MWJhZjA0ZWE2YTU2
YjhiYmY5YjM1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVDb21tYW5kQnVmZmVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19QUk9UT0NPTChNVExDb21tYW5kQnVmZmVyKTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBHUFVEZXZpY2U7CisKK3VzaW5nIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlciA9
IE1UTENvbW1hbmRCdWZmZXI7Cit1c2luZyBQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciA9
IFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVyPjsKKworY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlciA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbW1hbmRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShHUFVEZXZpY2UmKTsKKworcHJpdmF0
ZToKKyAgICBHUFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYp
OworCisgICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgbV9wbGF0Zm9ybUNvbW1hbmRC
dWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2
aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAKaW5k
ZXggMDRjOTY3ZjJiZGU0OGZhYWY1NThjZjc5NDc0NWQ3ZTU4OTQ4OWZkOS4uZmYxNzc0ZTZjODVi
YTJlNWQ2ZjFjOTE3MjZhOTNkOWE1ZmUzODM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVEZXZpY2UuY3BwCkBAIC00NSw2ICs0NSwxOSBAQCBSZWZQdHI8R1BVUmVuZGVy
UGlwZWxpbmU+IEdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcgogICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKGRlc2NyaXB0b3IpKTsKIH0KIAorUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVURldmlj
ZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIEdQVUNvbW1hbmRCdWZmZXI6
OmNyZWF0ZSgqdGhpcyk7Cit9CisKK1JlZlB0cjxHUFVRdWV1ZT4gR1BVRGV2aWNlOjpnZXRRdWV1
ZSgpCit7CisgICAgaWYgKCFtX3F1ZXVlKQorICAgICAgICBtX3F1ZXVlID0gR1BVUXVldWU6OmNy
ZWF0ZSgqdGhpcyk7CisKKyAgICByZXR1cm4gbV9xdWV1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVRGV2aWNlLmgKaW5kZXggN2ZkNzYxODc4ZGM5ZjI4MGMwZDE1NWYzZGYxZWUw
ODRhZTVjOTA0My4uMmNiYTM5ODI2NzZjMGRlYThhMGVkOTM5MDdkZDA2YjM3MDE3OGRmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKQEAgLTI3LDYgKzI3LDkg
QEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgi
CisjaW5jbHVkZSAiR1BVUXVldWUuaCIKKwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM4
LDggKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgUGxhdGZvcm1EZXZpY2UgPSBN
VExEZXZpY2U7CiB1c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTERl
dmljZT47CiAKLWNsYXNzIEdQVVNoYWRlck1vZHVsZTsKIGNsYXNzIEdQVVJlbmRlclBpcGVsaW5l
OworY2xhc3MgR1BVU2hhZGVyTW9kdWxlOwogCiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvcjsKIHN0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CkBAIC01MSwxMiArNTQs
MTYgQEAgcHVibGljOgogICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1v
ZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0OwogICAgIFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yJiYpIGNvbnN0OwogCisgICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZUNv
bW1hbmRCdWZmZXIoKTsKKworICAgIFJlZlB0cjxHUFVRdWV1ZT4gZ2V0UXVldWUoKTsKICAgICBQ
bGF0Zm9ybURldmljZSAqcGxhdGZvcm1EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
RGV2aWNlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgR1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNl
U21hcnRQdHImJik7CiAKICAgICBQbGF0Zm9ybURldmljZVNtYXJ0UHRyIG1fcGxhdGZvcm1EZXZp
Y2U7CisgICAgUmVmUHRyPEdQVVF1ZXVlPiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVF1ZXVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGRjYzY4ZjdjNjExYTJiZDU1NjQzMzNhM2E1MWZkYzRiNGE1NDJjNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVF1ZXVlLmgKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExDb21tYW5kUXVl
dWUpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKKwordXNpbmcg
UGxhdGZvcm1RdWV1ZSA9IE1UTENvbW1hbmRRdWV1ZTsKK3VzaW5nIFBsYXRmb3JtUXVldWVTbWFy
dFB0ciA9IFJldGFpblB0cjxNVExDb21tYW5kUXVldWU+OworCitjbGFzcyBHUFVRdWV1ZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVVF1ZXVlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxH
UFVRdWV1ZT4gY3JlYXRlKGNvbnN0IEdQVURldmljZSYpOworCisgICAgUGxhdGZvcm1RdWV1ZSAq
cGxhdGZvcm1RdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1RdWV1ZS5nZXQoKTsgfQor
Citwcml2YXRlOgorICAgIEdQVVF1ZXVlKFBsYXRmb3JtUXVldWVTbWFydFB0ciYmKTsKKworICAg
IFBsYXRmb3JtUXVldWVTbWFydFB0ciBtX3BsYXRmb3JtUXVldWU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQz
M2FiYWJlODMwZDg1MDNlY2Q3NGFmZTYwZmJmOWYyNjA4Y2YyOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKQEAgLTAs
MCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQ
aXBlbGluZVN0YXRlKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXZpY2U7
CisKK3N0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CisKK3VzaW5nIFBsYXRmb3Jt
UmVuZGVyUGlwZWxpbmUgPSBNVExSZW5kZXJQaXBlbGluZVN0YXRlOwordXNpbmcgUGxhdGZvcm1S
ZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+
OworCitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVJlbmRl
clBpcGVsaW5lPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGlu
ZT4gY3JlYXRlKGNvbnN0IEdQVURldmljZSYsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYm
KTsKKworICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgKnBsYXRmb3JtUmVuZGVyUGlwZWxpbmUo
KSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUuZ2V0KCk7IH0KKworcHJp
dmF0ZToKKyAgICBHUFVSZW5kZXJQaXBlbGluZShQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQ
dHImJik7CisKKyAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9ybVJl
bmRlclBpcGVsaW5lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU3dhcENo
YWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDEyOTg0NTQ4ZjJjODE4MzgxMzFiNjMyZGYyYzA4YzY5YjViYzYz
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN3
YXBDaGFpbi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENBTWV0YWxMYXllcjsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXZpY2U7CisKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVy
ID0gQ0FNZXRhbExheWVyOwordXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9IFJldGFp
blB0cjxDQU1ldGFsTGF5ZXI+OworCitjbGFzcyBHUFVTd2FwQ2hhaW4gOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVTd2FwQ2hhaW4+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVN3YXBD
aGFpbj4gY3JlYXRlKCk7CisKKyAgICB2b2lkIHNldERldmljZShjb25zdCBHUFVEZXZpY2UmKTsK
KyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHByZXNl
bnQoKTsKKworICAgIFBsYXRmb3JtU3dhcExheWVyICpwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVN3YXBMYXllci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVVN3
YXBDaGFpbihQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1Td2Fw
TGF5ZXJTbWFydFB0ciBtX3BsYXRmb3JtU3dhcExheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGU3N2FlYzg0OGU1MGY2ODQzOTIxNTAyYzAwNzgzNWVjYTBmMTI3ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3Bw
CkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQ
dHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZlB0
cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUNvbW1h
bmRCdWZmZXIoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpKTsKK30KKworV2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQoreworICAgIFVOVVNFRF9Q
QVJBTShtX2NvbW1hbmRCdWZmZXIpOworfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjFiNTIxN2VjYTBiYTcxYWQ5
OTcxNWRjOWQ5NDE2OWYxNThhM2U1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRl
IDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVQ29tbWFuZEJ1ZmZl
cjsKKworY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1h
bmRCdWZmZXI+IGNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CisKK3ByaXZhdGU6
CisgICAgV2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CisKKyAg
ICBSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTAzMzZjODMzMThkYmIwNmE1YmZhY2JmZTIwZjY4YzRhNjk3NzFhYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuaWRsCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9naXRodWIuY29t
L2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwKKworWworICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCitdIGludGVyZmFjZSBXZWJHUFVDb21tYW5kQnVmZmVy
IHsKKy8qIE5vdCBZZXQgSW1wbGVtZW50ZWQKKyAgICBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBi
ZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgZGVzY3JpcHRvcik7Cisg
ICAgV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGJlZ2luQ29tcHV0ZVBhc3MoKTsKKworICAgIC8v
IENvbW1hbmRzIGFsbG93ZWQgb3V0c2lkZSBvZiAicGFzc2VzIgorICAgICAgICB2b2lkIGNvcHlC
dWZmZXJUb0J1ZmZlcigKKyAgICAgICAgV2ViR1BVQnVmZmVyIHNyYywKKyAgICAgICAgdTMyIHNy
Y09mZnNldCwKKyAgICAgICAgV2ViR1BVQnVmZmVyIGRzdCwKKyAgICAgICAgdTMyIGRzdE9mZnNl
dCwKKyAgICAgICAgdTMyIHNpemUpOworCisgICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKAor
ICAgICAgICBXZWJHUFVCdWZmZXJDb3B5VmlldyBzb3VyY2UsCisgICAgICAgIFdlYkdQVVRleHR1
cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKKyAgICAgICAgV2ViR1BVRXh0ZW50M0QgY29weVNpemUp
OworCisgICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKAorICAgICAgICBXZWJHUFVUZXh0dXJl
Q29weVZpZXcgc291cmNlLAorICAgICAgICBXZWJHUFVCdWZmZXJDb3B5VmlldyBkZXN0aW5hdGlv
biwKKyAgICAgICAgV2ViR1BVRXh0ZW50M0QgY29weVNpemUpOworCisgICAgdm9pZCBjb3B5VGV4
dHVyZVRvVGV4dHVyZSgKKyAgICAgICAgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwKKyAg
ICAgICAgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9uLAorICAgICAgICBXZWJHUFVF
eHRlbnQzRCBjb3B5U2l6ZSk7CisKKyAgICAvLyBUT0RPIGZpZ3VyZSB3aGljaCBvdGhlciBjb21t
YW5kcyBhcmUgbmVlZGVkCisgICAgdm9pZCBibGl0KCk7CisqLworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IGE2NTUyMjU1YjE4ODgy
NjBjZTA4ZDdlMWU4NzE2YjQ1N2NjMmQ4OTguLjcyNGFjYThkYWE1MDhkZGRiMDE0NzhhY2E1MDYw
YmVmNzA5ZjI0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmNwcApAQCAtMjgsMTAgKzI4LDEyIEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisj
aW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAj
aW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVUGlw
ZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5o
IgogI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgpAQCAtMTE3LDYg
KzExOSwxMSBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQogICAgIHJldHVybiBXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHZlcnRleFN0YWdlKSwgV1RGTW92ZShmcmFn
bWVudFN0YWdlKSwgc3RhdGljX2Nhc3Q8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpQcmlt
aXRpdmVUb3BvbG9neT4oZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSkgfSkpOwogfQogCitS
ZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kQnVm
ZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKG1f
ZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRleCA3YzI3ZTBiOTcyMzJkMjhhNjA1YTA0ZWJlMzFi
NjY4OTQ4ZjBiZGEzLi41MDdhMTg3ODdkMmU0MDUxMjY1YWM2ODI0NTNhZTA3MDE2NjBhMmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtMzcs
NyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgV2ViR1BVQWRhcHRlcjsKK2NsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7
CiBjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZTsKIGNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZTsK
IApAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVs
ZT4gY3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJikgY29u
c3Q7CiAgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGVSZW5kZXJQaXBlbGlu
ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJikgY29uc3Q7CiAKKyAgICBSZWZQdHI8
V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIFdlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiwgUmVmUHRyPEdQVURl
dmljZT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuaWRsCmluZGV4IDYwM2UzNzZjYjM4ZTEwNDVlZDg5MWMwMmQzMWY2OTU5MWM4M2M3MmMuLmY2
MzFjOWUxYjlkOWYwNzY2Yzc4YjdjNjNjZjAyMDM2ODUyMmZkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbApAQCAtMzYsNiArMzYsOSBAQAog
ICAgIFdlYkdQVVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVh
dGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRv
cik7CiAKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBXZWJHUFVDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvciBpcyBhbiBlbXB0eSBkaWN0aW9uYXJ5LgorICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIgY3Jl
YXRlQ29tbWFuZEJ1ZmZlcigvKldlYkdQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0
b3IqLyk7CisKIC8qIFRvIEJlIEltcGxlbWVudGVkOgogICAgIFdlYkdQVUJ1ZmZlciBjcmVhdGVC
dWZmZXIoV2ViR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVUZXh0
dXJlIGNyZWF0ZVRleHR1cmUoV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CkBA
IC01MCw3ICs1Myw2IEBACiAgICAgV2ViR1BVSW5wdXRTdGF0ZSBjcmVhdGVJbnB1dFN0YXRlKFdl
YkdQVUlucHV0U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVUF0dGFjaG1l
bnRTdGF0ZSBjcmVhdGVBdHRhY2htZW50U3RhdGUoV2ViR1BVQXR0YWNobWVudFN0YXRlRGVzY3Jp
cHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVDb21wdXRlUGlwZWxpbmUgY3JlYXRlQ29tcHV0
ZVBpcGVsaW5lKFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0g
ICAgV2ViR1BVQ29tbWFuZEJ1ZmZlciBjcmVhdGVDb21tYW5kQnVmZmVyKFdlYkdQVUNvbW1hbmRC
dWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVUZlbmNlIGNyZWF0ZUZlbmNl
KFdlYkdQVUZlbmNlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKIAogICAgIFdlYkdQVVF1ZXVlIGdl
dFF1ZXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDIxNTlkMWRjYTY3
YjhmOWQzNDI3ZjlmZDhhMzE1NzhmY2NhYjdjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJH
UFVDb21tYW5kQnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVE
ZXZpY2UuaCIKKyNpbXBvcnQgIkdQVVF1ZXVlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoR1BVRGV2aWNlJiBkZXZpY2UpCit7CisgICAgaWYgKCFkZXZp
Y2UucGxhdGZvcm1EZXZpY2UoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1
ZmZlcjo6Y3JlYXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBhdXRvIGdwdUNvbW1hbmRRdWV1ZSA9IGRldmljZS5nZXRRdWV1
ZSgpOworICAgIGlmICghZ3B1Q29tbWFuZFF1ZXVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gbXRsUXVldWUgPSBncHVDb21tYW5kUXVldWUtPnBsYXRmb3JtUXVldWUoKTsK
KworICAgIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyIGJ1ZmZlcjsKKworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGJ1ZmZlciA9IFttdGxRdWV1ZSBjb21tYW5k
QnVmZmVyXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIWJ1
ZmZlcikgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKCk6
IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFuZEJ1ZmZlciEiKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVDb21tYW5kQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkpOworfQorCitHUFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVm
ZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYgYnVmZmVyKQorICAgIDogbV9wbGF0
Zm9ybUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQoreworICAgIFVOVVNFRF9QQVJBTSht
X3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCmluZGV4IGIyOGNjNDM4MzE5Y2M2MjI1
ZGE1MWMxZmMwZDQ3YWIwMzE1YjBjYzguLmU4Mzg3YTc3MTFiMDIwMGVkOTE5MmZhMTQyMGQzNTky
ZjhlNDgxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVURldmljZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVURldmljZU1ldGFsLm1tCkBAIC01Nyw3ICs1Nyw2IEBAIFJlZlB0cjxHUFVEZXZpY2U+
IEdQVURldmljZTo6Y3JlYXRlKCkKIEdQVURldmljZTo6R1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNl
U21hcnRQdHImJiBkZXZpY2UpCiAgICAgOiBtX3BsYXRmb3JtRGV2aWNlKFdURk1vdmUoZGV2aWNl
KSkKIHsKLSAgICBVTlVTRURfUEFSQU0obV9wbGF0Zm9ybURldmljZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVRdWV1ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NDFmYTMxYjU0YmY5YTdiOTc2YTEy
MzVlNzdkNWY1NTgxNzI0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVVF1ZXVlLmgiCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVEZXZpY2UuaCIKKyNpbXBvcnQgIkxvZ2dpbmcu
aCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNl
cHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEdQVVF1ZXVlPiBHUFVR
dWV1ZTo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQoreworICAgIGlmICghZGV2aWNl
LnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpjcmVh
dGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIFBsYXRmb3JtUXVldWVTbWFydFB0ciBxdWV1ZTsKKworICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKKworICAgIHF1ZXVlID0gW2RldmljZS5wbGF0Zm9ybURldmljZSgp
IG5ld0NvbW1hbmRRdWV1ZV07CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisg
ICAgaWYgKCFxdWV1ZSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OmNyZWF0ZSgp
OiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbW1hbmRRdWV1ZSEiKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVRdWV1ZShXVEZNb3Zl
KHF1ZXVlKSkpOworfQorCitHUFVRdWV1ZTo6R1BVUXVldWUoUGxhdGZvcm1RdWV1ZVNtYXJ0UHRy
JiYgcXVldWUpCisgICAgOiBtX3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBl
bGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlw
ZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQzM2FiYWJlODMwZDg1MDNl
Y2Q3NGFmZTYwZmJmOWYyNjA4Y2YyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5k
ZXJQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I7Ci0KLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBNVExSZW5k
ZXJQaXBlbGluZVN0YXRlOwotdXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0g
UmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+OwotCi1jbGFzcyBHUFVSZW5kZXJQaXBl
bGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVJlbmRlclBpcGVsaW5lPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKTsKLQotICAgIFBsYXRmb3JtUmVuZGVy
UGlwZWxpbmUgKnBsYXRmb3JtUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtUmVuZGVyUGlwZWxpbmUuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVSZW5kZXJQaXBl
bGluZShQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHImJik7Ci0KLSAgICBQbGF0Zm9ybVJl
bmRlclBpcGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5l
TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQ
aXBlbGluZU1ldGFsLm1tCmluZGV4IGZmZjIzNTkyNTlhMTFhNWJjYjhkNDE1YzM0MDBhMzdjZDZk
NjcwMzUuLmM5NDZkNTUwOWQyMjI4ZDQ1ZjA2NGIwZjZkMzViY2NhODYwZDdlYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5l
TWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbQpAQCAtMTMwLDcgKzEzMCw2IEBAIFJlZlB0cjxHUFVSZW5kZXJQ
aXBlbGluZT4gR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmlj
ZSwgR1BVCiBHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlwZWxpbmUoUGxhdGZvcm1SZW5k
ZXJQaXBlbGluZVNtYXJ0UHRyJiYgcGlwZWxpbmUpCiAgICAgOiBtX3BsYXRmb3JtUmVuZGVyUGlw
ZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1fcGxhdGZvcm1S
ZW5kZXJQaXBlbGluZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFs
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxl
TWV0YWwubW0KaW5kZXggYmM3ODU0YmUzYmUyZWJlMTIzNjE0MjAzMjVjZjY0MTZhY2M2ZTkwOC4u
NzZlODUzOTBjYTJjOTFiZTA0ZjllMThiMjMxNjIwNmMwZDAzNTQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxl
TWV0YWwubW0KQEAgLTM5LDEyICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0
cjxHUFVTaGFkZXJNb2R1bGU+IEdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKIHsKLSAg
ICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKQorICAgIGlmICghZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRl
KCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CiAKICAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1vZHVsZTsKIAotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAogICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFw
cGxlLldlYktpdC5HUFUiIGNvZGU6MSB1c2VySW5mbzpuaWxdOwogICAgIG1vZHVsZSA9IGFkb3B0
TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0xpYnJhcnlXaXRoU291cmNlOmRlc2NyaXB0
b3IuY29kZSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdKTsKQEAgLTYyLDcgKzY0LDYgQEAgUmVm
UHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoY29uc3QgR1BVRGV2
aWNlJiBkZXZpY2UsIEdQVVNoYWQKIEdQVVNoYWRlck1vZHVsZTo6R1BVU2hhZGVyTW9kdWxlKFBs
YXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHImJiBtb2R1bGUpCiAgICAgOiBtX3BsYXRmb3JtU2hh
ZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkKIHsKLSAgICBVTlVTRURfUEFSQU0obV9wbGF0Zm9y
bVNoYWRlck1vZHVsZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQxMjk4NDU0OGYyYzgxODM4MTMxYjYzMmRmMmMwOGM2OWI1YmM2MzIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19D
TEFTUyBDQU1ldGFsTGF5ZXI7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2
aWNlOwotCi11c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IENBTWV0YWxMYXllcjsKLXVzaW5nIFBs
YXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBSZXRhaW5QdHI8Q0FNZXRhbExheWVyPjsKLQotY2xh
c3MgR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU3dhcENoYWluPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IGNyZWF0ZSgpOwotCi0gICAgdm9p
ZCBzZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJik7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0
aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBwcmVzZW50KCk7Ci0KLSAgICBQbGF0Zm9ybVN3YXBM
YXllciAqcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Td2FwTGF5ZXIu
Z2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVTd2FwQ2hhaW4oUGxhdGZvcm1Td2FwTGF5ZXJT
bWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgbV9wbGF0Zm9ybVN3
YXBMYXllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDM1ODIwYTRjNjc0ZGY3NGRhYTVmOTgwZjJlYTQ4
YmQzNDNkMmQwYTguLjg2MzNiZDcyYzVhMWE5ODJjYzhlNDQ2OTg3MjE4YmU1YjM4YTIwYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0zMDQsNiArMzA0LDcgQEAgTW9kdWxlcy93ZWJncHUvRE9NV2luZG93
V2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAogTW9kdWxlcy93ZWJncHUv
V2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKK01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAogTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0zMjA4LDYgKzMyMDksNyBAQCBKU1dl
YkFuaW1hdGlvbi5jcHAKIEpTV2ViR1BVLmNwcAogSlNXZWJHUFVBZGFwdGVyLmNwcAogSlNXZWJH
UFVBZGFwdGVyRGVzY3JpcHRvci5jcHAKK0pTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKIEpTV2Vi
R1BVRGV2aWNlLmNwcAogSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcAogSlNXZWJH
UFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IGQxYjE0NDE3N2Q4NzRmZmY2NGEzOTBlNjczMjcxNGQzOTNkNjIwMDAuLmU3ZWUzMDUxZWI1NDc3
MWZhYzgwMTc5YTk1Y2M5OWZkODkzOTAzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAt
MjcsNyArMjcsOSBAQCBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
bW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVz
L3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiAKK01vZHVsZXMvd2Vi
Z3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQogTW9kdWxlcy93ZWJncHUvY29jb2Ev
R1BVRGV2aWNlTWV0YWwubW0KK01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0K
IE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KIE1vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCiBNb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY2OTcyMGE4MjRkNzVlNDllOWY3ZjcxZWNkMWJh
NGNjNDZiMGEzZDYuLjJlNTg2YmQwMDUyODFlNWE0NzUxY2NlNDk5YzhmZTU5ZDE4ZGM2YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEzODQyLDcgKzEzODQyLDYgQEAKIAkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyNzIxNzk1MUQ0MDAz
MjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTNEMjI5MjE3OTU0
MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMDk3MjdCNTIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEdQVVN3YXBDaGFpbi5oOyBwYXRoID0gY29jb2EvR1BVU3dhcENoYWluLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTcyN0I2MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVT
d2FwQ2hhaW5NZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVN3YXBDaGFpbk1ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJG
M0EgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTcy
N0NBMjE4QkQ3QTUwMDk0MkYzQSAvKiBHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R1BVRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODY1LDcgKzEz
ODY0LDYgQEAKIAkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVs
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5k
ZXJQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFE
RSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGQTIxODQwRjZDMDA5RUMx
REUgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVUmVuZGVyUGlwZWxp
bmUuaDsgcGF0aCA9IGNvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5kZXJQaXBlbGlu
ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOTgyMTY4MjRBNjAwMUM5MUM3
IC8qIFdlYk1ldGFsQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbEJ1ZmZlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlBMjE2ODI0QTYwMDFDOTFDNyAvKiBXZWJNZXRh
bENvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg3Niw2ICsxMzg3NCwxNSBAQAogCQlEMERBMEJF
NDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMERBMEJFNTIx
NzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwREEw
QkU2MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVN3
YXBDaGFpbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwRUFDRjc2MjE5Mzcy
MjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBFQUNGNzcy
MTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUQwRUFDRjc4MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDBFQUNGN0IyMTkzODI1MzAwMEZBNzVDIC8qIEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBFQUNGN0MyMTkzODJBRjAwMEZBNzVDIC8qIEdQVVN3YXBD
aGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVTd2FwQ2hhaW4uaDsgcGF0aCA9IE1vZHVsZXMvd2Vi
Z3B1L0dQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUQwRUFD
RjdEMjE5MzgyQjAwMDBGQTc1QyAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBHUFVSZW5kZXJQaXBlbGluZS5oOyBwYXRoID0gTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlw
ZWxpbmUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlEMEVBQ0Y3RTIxOTM4MkIw
MDAwRkE3NUMgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVDb21tYW5k
QnVmZmVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmdwdS9HUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJRDBFQUNGODAyMTkzOTFFRTAwMEZBNzVDIC8qIEdQ
VVF1ZXVlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVRdWV1ZU1ldGFsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEVBQ0Y4MTIxOTM5MjFBMDAwRkE3NUMgLyog
R1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJhd1Jlc291
cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzMxNDNFMzAzQzAw
MjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpbmdMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjU1MzksMTQgKzI1NTQ2LDE2IEBACiAJCQkJRDAwRjU5NDEyMTZFQ0M3
QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5jcHAgKi8sCiAJCQkJRDAwRjU5NDAyMTZFQ0M3
QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5oICovLAogCQkJCUQwMEY1OTQyMjE2RUNDN0Ew
MDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUuaWRsICovLAorCQkJCUQwRUFDRjdFMjE5MzgyQjAw
MDBGQTc1QyAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8sCiAJCQkJRDA5NzI3Q0EyMThCRDdBNTAw
OTQyRjNBIC8qIEdQVURldmljZS5jcHAgKi8sCiAJCQkJRDA2MTVGQ0YyMTdGRjE4NTAwOEE0OEE4
IC8qIEdQVURldmljZS5oICovLAogCQkJCUQwNDZGQjY3MjE4RDE4MDMwMENCOEY2MiAvKiBHUFVQ
aXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICovLAotCQkJCUQwQzQxOUZBMjE4NDBGNkMwMDlFQzFE
RSAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovLAorCQkJCUQwRUFDRjgxMjE5MzkyMUEwMDBGQTc1
QyAvKiBHUFVRdWV1ZS5oICovLAorCQkJCUQwRUFDRjdEMjE5MzgyQjAwMDBGQTc1QyAvKiBHUFVS
ZW5kZXJQaXBlbGluZS5oICovLAogCQkJCUQwNDZGQjY1MjE4RDA3M0MwMENCOEY2MiAvKiBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKIAkJCQlEMDYwRDg4ODIxODI4MEMxMDAzMzkz
MTggLyogR1BVU2hhZGVyTW9kdWxlLmggKi8sCiAJCQkJRDA5NzI3QzIyMThBNDcyOTAwOTQyRjNB
IC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDk3MjdCNTIxODdGNDQz
MDA5NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8sCisJCQkJRDBFQUNGN0MyMTkzODJBRjAwMEZB
NzVDIC8qIEdQVVN3YXBDaGFpbi5oICovLAogCQkJCUQwMEY1OTQ3MjE2RUZFNTQwMDBENzFEQiAv
KiBXZWJHUFUuY3BwICovLAogCQkJCUQwMEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUu
aCAqLywKIAkJCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLywKQEAg
LTI1NTU1LDYgKzI1NTY0LDkgQEAKIAkJCQlEMDBGNTk1MTIxNkZGQUMyMDAwRDcxREIgLyogV2Vi
R1BVQWRhcHRlci5pZGwgKi8sCiAJCQkJRDAyQzI2OTEyMTgxNDE2RDAwRDgxOEU0IC8qIFdlYkdQ
VUFkYXB0ZXJEZXNjcmlwdG9yLmggKi8sCiAJCQkJRDAyQzI2OTIyMTgxNDE2RDAwRDgxOEU0IC8q
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQlEMEVBQ0Y3NzIxOTM3MjI4MDAw
RkE3NUMgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJRDBFQUNGNzYyMTkzNzIy
ODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQlEMEVBQ0Y3ODIxOTM3
MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8sCiAJCQkJRDAwRjU5NTMy
MTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5jcHAgKi8sCiAJCQkJRDAwRjU5NTIyMTcw
MUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5oICovLAogCQkJCUQwMEY1OTU0MjE3MDFEOEMw
MDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaWRsICovLApAQCAtMjU1ODcsNyArMjU1OTksOSBAQAog
CQlEMDYxNUZEMjIxN0ZGRUUzMDA4QTQ4QTggLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUQwRUFDRjdCMjE5MzgyNTMwMDBGQTc1QyAvKiBH
UFVDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8sCiAJCQkJRDA2MTVGRDEyMTdGRjFFMTAwOEE0OEE4
IC8qIEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCUQwRUFDRjgwMjE5MzkxRUUwMDBGQTc1QyAv
KiBHUFVRdWV1ZU1ldGFsLm1tICovLAogCQkJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBH
UFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAogCQkJCUQwNjBEODg5MjE4MjgwQzEwMDMzOTMx
OCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywKIAkJCQlEMDk3MjdCNjIxODdGNDQzMDA5
NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNDJjMTkzMjg5MWZjMjUyNDc1
ZWQ3ZWQ1Y2JhODc2ZmZhMWUwZjc4Ni4uZDdlZGJkZTU0NjAwZmI2MGViMGVlYzVlOGQxNjQwN2Fm
NmVmY2I2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaApAQCAtMTgwLDYgKzE4MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhXZWJHUFUpIFwKICAgICBtYWNybyhXZWJHUFVBZGFwdGVyKSBcCiAgICAgbWFjcm8oV2Vi
R1BVRGV2aWNlKSBcCisgICAgbWFjcm8oV2ViR1BVQ29tbWFuZEJ1ZmZlcikgXAogICAgIG1hY3Jv
KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQpIFwKICAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGlu
ZSkgXAogICAgIG1hY3JvKFdlYkdQVVNoYWRlclN0YWdlKSBcCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWE0NDg2ZTdiNWJm
YjFjODRlNjhhYTEyMDkzMzk3ZDRmNTg3M2UwMy4uZDg3MmE1MjliYzQ4ZmExMmU1ODE3NjZiZTAw
ODdiZWRkYTNlNmZkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTExLTE0ICBKdXN0aW4g
RmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gV2ViR1BVQ29t
bWFuZEJ1ZmZlciBwcm90b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTY2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJlZ2luIGltcGxlbWVudGF0aW9uIG9mIFdlYkdQVUNvbW1hbmRCdWZmZXJz
IGFzIHdlbGwgYXMgR1BVUXVldWVzIChNVExDb21tYW5kQnVmZmVyLCBNVExDb21tYW5kUXVldWUp
LgorCisgICAgICAgIE5ldyB0ZXN0aW5nIGZvciBXZWJHUFVDb21tYW5kQnVmZmVycywgdG8gYmUg
Zmxlc2hlZCBvdXQgd2hlbiBXZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvcnMKKyAgICAgICAg
YXJlIGFkZGVkIHRvIHRoZSBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgICogd2ViZ3B1L2NvbW1h
bmQtYnVmZmVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS9jb21tYW5k
LWJ1ZmZlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRt
bDoKKwogMjAxOC0xMS0xMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogTmV0d29yazogc2hvdyBzZWN1cmUgY2VydGlmaWNhdGUgZGV0
YWlscyBwZXItcmVxdWVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQt
YnVmZmVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmM1NWIxZTZmY2YzMThjYmI2NzViYjUyNTc1N2Nk
OTZkYzQ2YTk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQt
YnVmZmVycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitQQVNTIFtvYmplY3QgV2ViR1BV
XSBpcyBkZWZpbmVkLgorUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBXZWJHUFVDb21tYW5kQnVm
ZmVyLgorQWxsIHRlc3RzIGNvbXBsZXRlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21t
YW5kLWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNjc0YmJkZGJiNDYzMGJkNTcyZmQyNWE5YTVhYjFiNDY1MWMyMGI5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1s
CkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy9z
ZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImxpYnJhcnki
IHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgorICAgICNpbmNsdWRlIDxtZXRhbF9zdGRsaWI+Cisg
ICAgCisgICAgdXNpbmcgbmFtZXNwYWNlIG1ldGFsOworICAgIAorICAgIHN0cnVjdCBWZXJ0ZXgK
KyAgICB7CisgICAgICAgIGZsb2F0NCBwb3NpdGlvbiBbW3Bvc2l0aW9uXV07CisgICAgfTsKKyAg
ICAKKyAgICB2ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKHVpbnQgdmlkIFtbdmVydGV4X2lkXV0p
CisgICAgeworICAgICAgICBWZXJ0ZXggdjsKKyAgICAgICAgc3dpdGNoICh2aWQpIHsKKyAgICAg
ICAgY2FzZSAwOgorICAgICAgICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgtLjc1LCAtLjc1LCAw
LCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB2
LnBvc2l0aW9uID0gZmxvYXQ0KC43NSwgLS43NSwgMCwgMSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgwLCAuNzUs
IDAsIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICB2LnBvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDEpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB2OworICAgIH0KKyAgICAKKyAgICBmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihW
ZXJ0ZXggdmVydGV4SW4gW1tzdGFnZV9pbl1dKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZsb2F0
NCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ug
c3RyaWN0JzsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gc2V0VXBDb21tYW5kQnVmZmVyKCkgeworICAgIC8v
IEZJWE1FOiBjcmVhdGVDb21tYW5kQnVmZmVyIHNob3VsZCB0YWtlIGEgV2ViR1BVQ29tbWFuZEJ1
ZmZlckRlc2NyaXB0b3IsIHdoaWNoIGlzIGN1cnJlbnRseSBhbiBlbXB0eSBkaWN0aW9uYXJ5Lgor
ICAgIGxldCBjb21tYW5kQnVmZmVyID0gZGVmYXVsdERldmljZS5jcmVhdGVDb21tYW5kQnVmZmVy
KCk7CisgICAgaWYgKGNvbW1hbmRCdWZmZXIpCisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3Nm
dWxseSBjcmVhdGVkIFdlYkdQVUNvbW1hbmRCdWZmZXIuIik7CisgICAgZWxzZQorICAgICAgICB0
ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVUNvbW1hbmRCdWZmZXIhIik7Cit9CisK
K2Z1bmN0aW9uIGJhZENvbW1hbmRCdWZmZXIwKCkgeworICAgIC8vIEZJWE1FOiBTdHJlc3MgY29t
bWFuZCBidWZmZXIgY3JlYXRpb24gd2hlbiBXZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciBp
cyBzcGVjaWZpZWQuCit9CisKK3J1bldlYkdQVVRlc3RzKFsKKyAgICAgICAgc2V0VXBDb21tYW5k
QnVmZmVyLCAKKyAgICAgICAgYmFkQ29tbWFuZEJ1ZmZlcjAKKyAgICBdKTsKKworc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sCmluZGV4IDNhMWFmMWJlMGU0
ODdlNzljMDgyMmJkZWZmMGY1Y2YzYzRmMGEyZDYuLjUzNjc3MmNhMGE1YjA0NGE4YTA1MzUyMzIz
MWU0ZjMwNTczOWEyOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFz
aWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbApAQCAt
ODgsNyArODgsMTUgQEAgZnVuY3Rpb24gc2V0VXBQaXBlbGluZSgpIHsKICAgICB9CiB9CiAKLXJ1
bldlYkdQVVRlc3RzKFtzZXRVcFBpcGVsaW5lXSk7CitmdW5jdGlvbiByZW5kZXIoKSB7CisgICAg
bGV0IGNvbW1hbmRCdWZmZXIgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsK
KyAgICBpZiAoIWNvbW1hbmRCdWZmZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGNyZWF0ZSBXZWJHUFVDb21tYW5kQnVmZmVyISIpOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCitydW5XZWJHUFVUZXN0cyhbc2V0VXBQaXBlbGluZSwgcmVuZGVyXSk7CiAKIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354970</attachid>
            <date>2018-11-15 12:26:47 -0800</date>
            <delta_ts>2018-11-15 13:20:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191663-20181115122646.patch</filename>
            <type>text/plain</type>
            <size>54036</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlhMmViOTM5ZWMyMDdk
MWI2MTk2ZmMxZmNkYThhNmM5ZWM4ODEzNi4uNGQwZWFlYjAyYjhjZDA1MjdlZDEzNGI1YzZjYzQy
NzUyZTUxMWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTExLTE0ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gV2ViR1BV
Q29tbWFuZEJ1ZmZlciBwcm90b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTY2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVudGF0aW9uIG9mIFdlYkdQVUNvbW1hbmRCdWZm
ZXJzIGFzIHdlbGwgYXMgR1BVUXVldWVzIChNVExDb21tYW5kQnVmZmVyLCBNVExDb21tYW5kUXVl
dWUpLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbAorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVDb21tYW5kQnVmZmVyLmg6IEFkZGVkLiBXcmFwcGVy
IGNsYXNzIGFyb3VuZCBhIE1UTENvbW1hbmRCdWZmZXIuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6Y3JlYXRlQ29t
bWFuZEJ1ZmZlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpnZXRRdWV1
ZSk6IFJldHVybnMgUmVmUHRyIHRvIHRoZSBkZXZpY2UncyBzaW5nbGV0b24gcXVldWUuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmg6IE5vdyBtYW5hZ2VzIHRoZSBkZXZpY2Un
cyBHUFVRdWV1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6cGxhdGZvcm1EZXZpY2Ug
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVF1ZXVlLmg6IEFkZGVkLiBXcmFw
cGVyIGNsYXNzIGFyb3VuZCBhIE1UTENvbW1hbmRRdWV1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdQ
VVF1ZXVlOjpwbGF0Zm9ybVF1ZXVlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9H
UFVSZW5kZXJQaXBlbGluZS5oOiBNb3ZlZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lLmguCisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5k
ZXJQaXBlbGluZTo6cGxhdGZvcm1SZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFk
ZXJNb2R1bGU6OnBsYXRmb3JtU2hhZGVyTW9kdWxlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9HUFVTd2FwQ2hhaW4uaDogTW92ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW4uaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBD
aGFpbjo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5jcHA6IEFkZGVkLiBXZWIgaW50ZXJmYWNlIGZvciBhIEdQVSBkZXZp
Y2UncyBjb21tYW5kIGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpXZWJH
UFVDb21tYW5kQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRC
dWZmZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kQnVmZmVy
IGNvbnN0KTogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW06IEFkZGVkLiBNVExD
b21tYW5kQnVmZmVyIGltcGwgZm9yIEdQVUNvbW1hbmRCdWZmZXIuCisgICAgICAgIChXZWJDb3Jl
OjpHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUpOiBDcmVhdGUgYSBNVExDb21tYW5kQnVmZmVyIGZy
b20gdGhlIE1UTENvbW1hbmRRdWV1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZm
ZXI6OkdQVUNvbW1hbmRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQ
VURldmljZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpHUFVEZXZpY2Up
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW06IEFkZGVk
LiBNVExDb21tYW5kUXVldWUgaW1wbCBmb3IgR1BVUXVldWUuCisgICAgICAgIChXZWJDb3JlOjpH
UFVRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVF1ZXVlOjpHUFVRdWV1ZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGlu
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwu
bW06CisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZSk6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oOgorCiAyMDE4LTExLTE0ICBKdXN0aW4gRmFuICA8anVzdGluX2Zh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQ29kZSBxdWFsaXR5IGNvbmNlcm5zIHJh
aXNlZCBmb3IgMTkxMjkxOiBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBlIGZvciBXZWJH
UFVSZW5kZXJQaXBlbGluZSBhbmQgV2ViR1BVU3dhcENoYWluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDgzY2FlZjg5ZWYwYjQ0YTNkMzFlOGYzOGNiNGY4YTY1MmYyZTM1MDguLjY2MDk3ZTZjMmY0
OThmMTExNjBmOTIwYTgzMWY4MmRmYWFlOTZiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00
NTgsNiArNDU4LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVz
L3dlYmdwdS9XZWJHUFUuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwK
ICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGwKKyAgICBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0
b3JCYXNlLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYTc0MDNhNmM5YjM5NDY0
MDlmNGY5NGU2YmY2ZWNhMmI5ZGEzYzljOS4uYjgyMzU5NzFjMzVkYTc1ZmE4OGQ2ZmE2ZWVmNTky
MjEyYTQ5NzM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zNzUsNiArMzc1
LDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
V2ViR1BVLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVy
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyRGVzY3Jp
cHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0
b3JCYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvci5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVQ29tbWFuZEJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYzczMzI1YTQ2ZWNmZDc3MWJhZjA0
ZWE2YTU2YjhiYmY5YjM1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVDb21tYW5kQnVmZmVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExDb21tYW5kQnVmZmVyKTsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXZpY2U7CisKK3VzaW5nIFBsYXRmb3JtQ29tbWFuZEJ1
ZmZlciA9IE1UTENvbW1hbmRCdWZmZXI7Cit1c2luZyBQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFy
dFB0ciA9IFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVyPjsKKworY2xhc3MgR1BVQ29tbWFuZEJ1
ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbW1hbmRCdWZmZXI+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShHUFVEZXZpY2UmKTsKKwor
cHJpdmF0ZToKKyAgICBHUFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0
UHRyJiYpOworCisgICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgbV9wbGF0Zm9ybUNv
bW1hbmRCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5j
cHAKaW5kZXggMDRjOTY3ZjJiZGU0OGZhYWY1NThjZjc5NDc0NWQ3ZTU4OTQ4OWZkOS4uZmYxNzc0
ZTZjODViYTJlNWQ2ZjFjOTE3MjZhOTNkOWE1ZmUzODM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuY3BwCkBAIC00NSw2ICs0NSwxOSBAQCBSZWZQdHI8R1BV
UmVuZGVyUGlwZWxpbmU+IEdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcgogICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKIH0KIAorUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQ
VURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIEdQVUNvbW1hbmRC
dWZmZXI6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK1JlZlB0cjxHUFVRdWV1ZT4gR1BVRGV2aWNlOjpn
ZXRRdWV1ZSgpCit7CisgICAgaWYgKCFtX3F1ZXVlKQorICAgICAgICBtX3F1ZXVlID0gR1BVUXVl
dWU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICByZXR1cm4gbV9xdWV1ZTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKaW5kZXggN2ZkNzYxODc4ZGM5ZjI4MGMwZDE1NWYz
ZGYxZWUwODRhZTVjOTA0My4uNTgxNmYxODNmYzA5MmQ3NDZmYjk3MzIyNDQ2ZjhjYjIzM2MxNGZk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKQEAgLTI3LDYg
KzI3LDkgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVDb21tYW5kQnVm
ZmVyLmgiCisjaW5jbHVkZSAiR1BVUXVldWUuaCIKKwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTM4LDggKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgUGxhdGZvcm1EZXZp
Y2UgPSBNVExEZXZpY2U7CiB1c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRyID0gUmV0YWluUHRy
PE1UTERldmljZT47CiAKLWNsYXNzIEdQVVNoYWRlck1vZHVsZTsKIGNsYXNzIEdQVVJlbmRlclBp
cGVsaW5lOworY2xhc3MgR1BVU2hhZGVyTW9kdWxlOwogCiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvcjsKIHN0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CkBAIC01MSwx
MiArNTQsMTYgQEAgcHVibGljOgogICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNo
YWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0OwogICAgIFJlZlB0
cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCi0gICAgUGxhdGZvcm1EZXZpY2UgKnBsYXRmb3JtRGV2
aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURldmljZS5nZXQoKTsgfQorICAgIFJlZlB0
cjxHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGVDb21tYW5kQnVmZmVyKCk7CisKKyAgICBSZWZQdHI8
R1BVUXVldWU+IGdldFF1ZXVlKCk7CisgICAgUGxhdGZvcm1EZXZpY2UqIHBsYXRmb3JtRGV2aWNl
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURldmljZS5nZXQoKTsgfQogCiBwcml2YXRlOgog
ICAgIEdQVURldmljZShQbGF0Zm9ybURldmljZVNtYXJ0UHRyJiYpOwogCiAgICAgUGxhdGZvcm1E
ZXZpY2VTbWFydFB0ciBtX3BsYXRmb3JtRGV2aWNlOworICAgIFJlZlB0cjxHUFVRdWV1ZT4gbV9x
dWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmZGQwMGNmYThjMmExMWNmNjRlM2E0ZDUw
MjU2OGRmNDIyMThiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVRdWV1ZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
K09CSkNfUFJPVE9DT0woTVRMQ29tbWFuZFF1ZXVlKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHUFVEZXZpY2U7CisKK3VzaW5nIFBsYXRmb3JtUXVldWUgPSBNVExDb21tYW5kUXVl
dWU7Cit1c2luZyBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMQ29tbWFuZFF1
ZXVlPjsKKworY2xhc3MgR1BVUXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVRdWV1ZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVUXVldWU+IGNyZWF0ZShjb25zdCBHUFVEZXZp
Y2UmKTsKKworICAgIFBsYXRmb3JtUXVldWUqIHBsYXRmb3JtUXVldWUoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtUXVldWUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVRdWV1ZShQbGF0
Zm9ybVF1ZXVlU21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgbV9wbGF0
Zm9ybVF1ZXVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVSZW5k
ZXJQaXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZmQ5YTMzNWRhYTkxNGM1MmQ5NjczNTlkNjc4MjM5
OTkzYjIzMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSk7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCitzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOworCit1c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lID0gTVRMUmVuZGVyUGlw
ZWxpbmVTdGF0ZTsKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciA9IFJldGFp
blB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPjsKKworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmUg
OiBwdWJsaWMgUmVmQ291bnRlZDxHUFVSZW5kZXJQaXBlbGluZT4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJik7CisKKyAgICBQbGF0Zm9ybVJlbmRlclBpcGVs
aW5lKiBwbGF0Zm9ybVJlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVJl
bmRlclBpcGVsaW5lLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgR1BVUmVuZGVyUGlwZWxpbmUo
UGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1SZW5kZXJQ
aXBlbGluZVNtYXJ0UHRyIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1vZHVsZS5oCmluZGV4IDcyMThkNDUwNWVl
MDI1ZTJiMTY1Yzc4ZmY5YzM5MzI3NzhlYmRlYTEuLmNiZmIzZjliZTA0YWVhYWIwYjY0NjcwNDNh
YmYxYTQ5NTcyMDA5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVNoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VVNoYWRlck1vZHVsZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEdQVVNoYWRlck1vZHVsZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVNoYWRlck1vZHVsZT4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciYmKTsKIAotICAgIFBsYXRmb3JtU2hhZGVyTW9kdWxlICpwbGF0
Zm9ybVNoYWRlck1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUu
Z2V0KCk7IH0KKyAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZSogcGxhdGZvcm1TaGFkZXJNb2R1bGUo
KSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgR1BVU2hhZGVyTW9kdWxlKFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHImJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTd2FwQ2hhaW4u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN3YXBDaGFpbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU1N2RjYTEzNTViODg5Nzk1MzMyY2QzMDZjM2MxYjJhMTM5MmQzZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTd2FwQ2hhaW4uaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19DTEFTUyBDQU1ldGFsTGF5ZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR1BVRGV2aWNlOworCit1c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IENBTWV0YWxMYXll
cjsKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBSZXRhaW5QdHI8Q0FNZXRhbExh
eWVyPjsKKworY2xhc3MgR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU3dhcENo
YWluPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IGNyZWF0ZSgp
OworCisgICAgdm9pZCBzZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJik7CisgICAgdm9pZCByZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBwcmVzZW50KCk7CisKKyAgICBQ
bGF0Zm9ybVN3YXBMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1Td2FwTGF5ZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVTd2FwQ2hhaW4oUGxhdGZv
cm1Td2FwTGF5ZXJTbWFydFB0ciYmKTsKKworICAgIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIg
bV9wbGF0Zm9ybVN3YXBMYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNzdhZWM4NDhlNTBm
Njg0MzkyMTUwMmMwMDc4MzVlY2EwZjEyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVUNv
bW1hbmRCdWZmZXIuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVDb21t
YW5kQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPFdlYkdQVUNvbW1h
bmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1
ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpKSk7Cit9CisKK1dlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNv
bW1hbmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorICAgIDogbV9jb21t
YW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKK3sKKyAgICBVTlVTRURfUEFSQU0obV9jb21tYW5k
QnVmZmVyKTsKK30KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYxYjUyMTdlY2EwYmE3MWFkOTk3MTVkYzlkOTQxNjlm
MTU4YTNlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUNvbW1hbmRCdWZmZXI7CisKK2NsYXNzIFdl
YkdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kQnVmZmVy
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYpOworCitwcml2YXRlOgorICAgIFdlYkdQVUNv
bW1hbmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOworCisgICAgUmVmPEdQVUNvbW1h
bmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMzM2Yzgz
MzE4ZGJiMDZhNWJmYWNiZmUyMGY2OGM0YTY5NzcxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2Vi
L2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK1sKKyAgICBDb25kaXRpb25hbD1X
RUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCisgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZQorXSBpbnRlcmZhY2UgV2ViR1BVQ29tbWFuZEJ1ZmZlciB7CisvKiBOb3QgWWV0
IEltcGxlbWVudGVkCisgICAgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgYmVnaW5SZW5kZXJQYXNz
KFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworICAgIFdlYkdQVUNvbXB1
dGVQYXNzRW5jb2RlciBiZWdpbkNvbXB1dGVQYXNzKCk7CisKKyAgICAvLyBDb21tYW5kcyBhbGxv
d2VkIG91dHNpZGUgb2YgInBhc3NlcyIKKyAgICAgICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIo
CisgICAgICAgIFdlYkdQVUJ1ZmZlciBzcmMsCisgICAgICAgIHUzMiBzcmNPZmZzZXQsCisgICAg
ICAgIFdlYkdQVUJ1ZmZlciBkc3QsCisgICAgICAgIHUzMiBkc3RPZmZzZXQsCisgICAgICAgIHUz
MiBzaXplKTsKKworICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZSgKKyAgICAgICAgV2ViR1BV
QnVmZmVyQ29weVZpZXcgc291cmNlLAorICAgICAgICBXZWJHUFVUZXh0dXJlQ29weVZpZXcgZGVz
dGluYXRpb24sCisgICAgICAgIFdlYkdQVUV4dGVudDNEIGNvcHlTaXplKTsKKworICAgIHZvaWQg
Y29weVRleHR1cmVUb0J1ZmZlcigKKyAgICAgICAgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJj
ZSwKKyAgICAgICAgV2ViR1BVQnVmZmVyQ29weVZpZXcgZGVzdGluYXRpb24sCisgICAgICAgIFdl
YkdQVUV4dGVudDNEIGNvcHlTaXplKTsKKworICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUo
CisgICAgICAgIFdlYkdQVVRleHR1cmVDb3B5VmlldyBzb3VyY2UsCisgICAgICAgIFdlYkdQVVRl
eHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKKyAgICAgICAgV2ViR1BVRXh0ZW50M0QgY29weVNp
emUpOworCisgICAgLy8gVE9ETyBmaWd1cmUgd2hpY2ggb3RoZXIgY29tbWFuZHMgYXJlIG5lZWRl
ZAorICAgIHZvaWQgYmxpdCgpOworKi8KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCBhNjU1MjI1NWIxODg4MjYwY2UwOGQ3ZTFlODcx
NmI0NTdjYzJkODk4Li43MjRhY2E4ZGFhNTA4ZGRkYjAxNDc4YWNhNTA2MGJlZjcwOWYyNGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAg
LTI4LDEwICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIkdQVUNv
bW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgog
I2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lU3RhZ2VEZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKICNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKQEAgLTExNyw2ICsxMTksMTEgQEAgUmVm
UHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVs
aW5lKFdlYkdQVVJlbmRlclBpcGUKICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZShtX2RldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIHsgV1RGTW92ZSh2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoZnJhZ21lbnRTdGFnZSksIHN0
YXRpY19jYXN0PEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6UHJpbWl0aXZlVG9wb2xvZ3k+
KGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3kpIH0pKTsKIH0KIAorUmVmUHRyPFdlYkdQVUNv
bW1hbmRCdWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShtX2RldmljZS0+Y3JlYXRl
Q29tbWFuZEJ1ZmZlcigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmgKaW5kZXggN2MyN2UwYjk3MjMyZDI4YTYwNWEwNGViZTMxYjY2ODk0OGYwYmRhMy4u
NTA3YTE4Nzg3ZDJlNDA1MTI2NWFjNjgyNDUzYWUwNzAxNjYwYTJmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNz
IFdlYkdQVUFkYXB0ZXI7CitjbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyOwogY2xhc3MgV2ViR1BV
UmVuZGVyUGlwZWxpbmU7CiBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7CiAKQEAgLTU0LDYgKzU0
LDggQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRl
ck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0OwogICAgIFJlZlB0
cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCisgICAgUmVmUHRyPFdlYkdQVUNvbW1hbmRC
dWZmZXI+IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJH
UFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYsIFJlZlB0cjxHUFVEZXZpY2U+JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAppbmRleCA2
MDNlMzc2Y2IzOGUxMDQ1ZWQ4OTFjMDJkMzFmNjk1OTFjODNjNzJjLi5mNjMxYzllMWI5ZDlmMDc2
NmM3OGI3YzYzY2YwMjAzNjg1MjJmZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTM2LDYgKzM2LDkgQEAKICAgICBXZWJHUFVTaGFk
ZXJNb2R1bGUgY3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRlUmVuZGVyUGlwZWxp
bmUoV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogCisgICAgLy8g
RklYTUU6IEN1cnJlbnRseSwgV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgaXMgYW4gZW1w
dHkgZGljdGlvbmFyeS4KKyAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGNyZWF0ZUNvbW1hbmRCdWZm
ZXIoLypXZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKi8pOworCiAvKiBU
byBCZSBJbXBsZW1lbnRlZDoKICAgICBXZWJHUFVCdWZmZXIgY3JlYXRlQnVmZmVyKFdlYkdQVUJ1
ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVVGV4dHVyZSBjcmVhdGVUZXh0
dXJlKFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwpAQCAtNTAsNyArNTMsNiBA
QAogICAgIFdlYkdQVUlucHV0U3RhdGUgY3JlYXRlSW5wdXRTdGF0ZShXZWJHUFVJbnB1dFN0YXRl
RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVBdHRhY2htZW50U3RhdGUgY3JlYXRl
QXR0YWNobWVudFN0YXRlKFdlYkdQVUF0dGFjaG1lbnRTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRv
cik7CiAgICAgV2ViR1BVQ29tcHV0ZVBpcGVsaW5lIGNyZWF0ZUNvbXB1dGVQaXBlbGluZShXZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVUNvbW1h
bmRCdWZmZXIgY3JlYXRlQ29tbWFuZEJ1ZmZlcihXZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRv
ciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVGZW5jZSBjcmVhdGVGZW5jZShXZWJHUFVGZW5jZURl
c2NyaXB0b3IgZGVzY3JpcHRvcik7CiAKICAgICBXZWJHUFVRdWV1ZSBnZXRRdWV1ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVQ29tbWFuZEJ1
ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVQ29t
bWFuZEJ1ZmZlck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxMjU5ZDIzNGZiM2ExMjRmOTkxNzg0YTVk
OGZkNjg4NzAzN2UyMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KQEAgLTAsMCArMSw3NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZl
ci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCAiR1BVRGV2aWNlLmgiCisjaW1w
b3J0ICJHUFVRdWV1ZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZlcjo6
Y3JlYXRlKEdQVURldmljZSYgZGV2aWNlKQoreworICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2
aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgp
OiBJbnZhbGlkIEdQVURldmljZSEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgYXV0byBncHVDb21tYW5kUXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKKyAgICBpZiAo
IWdwdUNvbW1hbmRRdWV1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIG10
bFF1ZXVlID0gZ3B1Q29tbWFuZFF1ZXVlLT5wbGF0Zm9ybVF1ZXVlKCk7CisKKyAgICBQbGF0Zm9y
bUNvbW1hbmRCdWZmZXJTbWFydFB0ciBidWZmZXI7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CisKKyAgICBidWZmZXIgPSByZXRhaW5QdHIoW210bFF1ZXVlIGNvbW1hbmRCdWZm
ZXJdKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIWJ1ZmZl
cikgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKCk6IFVu
YWJsZSB0byBjcmVhdGUgTVRMQ29tbWFuZEJ1ZmZlciEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVDb21tYW5kQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkpOworfQorCitHUFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVmZmVy
KFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYgYnVmZmVyKQorICAgIDogbV9wbGF0Zm9y
bUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQoreworICAgIFVOVVNFRF9QQVJBTShtX3Bs
YXRmb3JtQ29tbWFuZEJ1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCmluZGV4IGIyOGNjNDM4MzE5Y2M2MjI1ZGE1
MWMxZmMwZDQ3YWIwMzE1YjBjYzguLmU4Mzg3YTc3MTFiMDIwMGVkOTE5MmZhMTQyMGQzNTkyZjhl
NDgxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQ
VURldmljZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVURldmljZU1ldGFsLm1tCkBAIC01Nyw3ICs1Nyw2IEBAIFJlZlB0cjxHUFVEZXZpY2U+IEdQ
VURldmljZTo6Y3JlYXRlKCkKIEdQVURldmljZTo6R1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNlU21h
cnRQdHImJiBkZXZpY2UpCiAgICAgOiBtX3BsYXRmb3JtRGV2aWNlKFdURk1vdmUoZGV2aWNlKSkK
IHsKLSAgICBVTlVTRURfUEFSQU0obV9wbGF0Zm9ybURldmljZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVVF1ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVRdWV1ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNjliZTNiY2M4NjBiYTc1ZDBmZjg4NTdm
NTY4MTcyZTI1NTU1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVVF1ZXVlLmgiCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVEZXZpY2UuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEdQVVF1ZXVlPiBHUFVRdWV1
ZTo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQoreworICAgIGlmICghZGV2aWNlLnBs
YXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpjcmVhdGUo
KTogSW52YWxpZCBHUFVEZXZpY2UhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIFBsYXRmb3JtUXVldWVTbWFydFB0ciBxdWV1ZTsKKworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKKworICAgIHF1ZXVlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2
aWNlKCkgbmV3Q29tbWFuZFF1ZXVlXSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OworCisgICAgaWYgKCFxdWV1ZSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OmNy
ZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbW1hbmRRdWV1ZSEiKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVRdWV1ZShX
VEZNb3ZlKHF1ZXVlKSkpOworfQorCitHUFVRdWV1ZTo6R1BVUXVldWUoUGxhdGZvcm1RdWV1ZVNt
YXJ0UHRyJiYgcXVldWUpCisgICAgOiBtX3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCit7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5k
ZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVu
ZGVyUGlwZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQzM2FiYWJlODMw
ZDg1MDNlY2Q3NGFmZTYwZmJmOWYyNjA4Y2YyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9H
UFVSZW5kZXJQaXBlbGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I7Ci0KLXVzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBN
VExSZW5kZXJQaXBlbGluZVN0YXRlOwotdXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0
UHRyID0gUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+OwotCi1jbGFzcyBHUFVSZW5k
ZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVJlbmRlclBpcGVsaW5lPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKGNvbnN0IEdQ
VURldmljZSYsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKTsKLQotICAgIFBsYXRmb3Jt
UmVuZGVyUGlwZWxpbmUgKnBsYXRmb3JtUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVSZW5k
ZXJQaXBlbGluZShQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHImJik7Ci0KLSAgICBQbGF0
Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBp
cGVsaW5lTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tCmluZGV4IGZmZjIzNTkyNTlhMTFhNWJjYjhkNDE1YzM0MDBh
MzdjZDZkNjcwMzUuLmM5NDZkNTUwOWQyMjI4ZDQ1ZjA2NGIwZjZkMzViY2NhODYwZDdlYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBp
cGVsaW5lTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2Ev
R1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQpAQCAtMTMwLDcgKzEzMCw2IEBAIFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZT4gR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgR1BVCiBHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlwZWxpbmUoUGxhdGZv
cm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYgcGlwZWxpbmUpCiAgICAgOiBtX3BsYXRmb3JtUmVu
ZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1fcGxh
dGZvcm1SZW5kZXJQaXBlbGluZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVs
ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVy
TW9kdWxlTWV0YWwubW0KaW5kZXggYmM3ODU0YmUzYmUyZWJlMTIzNjE0MjAzMjVjZjY0MTZhY2M2
ZTkwOC4uNzZlODUzOTBjYTJjOTFiZTA0ZjllMThiMjMxNjIwNmMwZDAzNTQzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0
YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVy
TW9kdWxlTWV0YWwubW0KQEAgLTM5LDEyICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikK
IHsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKQorICAgIGlmICghZGV2aWNlLnBs
YXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVNoYWRlck1vZHVsZTo6
Y3JlYXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiAKICAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1vZHVsZTsKIAotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIAogICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAi
Y29tLmFwcGxlLldlYktpdC5HUFUiIGNvZGU6MSB1c2VySW5mbzpuaWxdOwogICAgIG1vZHVsZSA9
IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0xpYnJhcnlXaXRoU291cmNlOmRl
c2NyaXB0b3IuY29kZSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdKTsKQEAgLTYyLDcgKzY0LDYg
QEAgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoY29uc3Qg
R1BVRGV2aWNlJiBkZXZpY2UsIEdQVVNoYWQKIEdQVVNoYWRlck1vZHVsZTo6R1BVU2hhZGVyTW9k
dWxlKFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHImJiBtb2R1bGUpCiAgICAgOiBtX3BsYXRm
b3JtU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkKIHsKLSAgICBVTlVTRURfUEFSQU0obV9w
bGF0Zm9ybVNoYWRlck1vZHVsZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQxMjk4NDU0OGYyYzgxODM4MTMxYjYzMmRmMmMwOGM2OWI1YmM2MzIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQot
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQot
T0JKQ19DTEFTUyBDQU1ldGFsTGF5ZXI7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVRGV2aWNlOwotCi11c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IENBTWV0YWxMYXllcjsKLXVz
aW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBSZXRhaW5QdHI8Q0FNZXRhbExheWVyPjsK
LQotY2xhc3MgR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU3dhcENoYWluPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IGNyZWF0ZSgpOwotCi0g
ICAgdm9pZCBzZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJik7Ci0gICAgdm9pZCByZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBwcmVzZW50KCk7Ci0KLSAgICBQbGF0Zm9y
bVN3YXBMYXllciAqcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Td2Fw
TGF5ZXIuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVTd2FwQ2hhaW4oUGxhdGZvcm1Td2Fw
TGF5ZXJTbWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgbV9wbGF0
Zm9ybVN3YXBMYXllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDM1ODIwYTRjNjc0ZGY3NGRhYTVmOTgw
ZjJlYTQ4YmQzNDNkMmQwYTguLjg2MzNiZDcyYzVhMWE5ODJjYzhlNDQ2OTg3MjE4YmU1YjM4YTIw
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0zMDQsNiArMzA0LDcgQEAgTW9kdWxlcy93ZWJncHUvRE9N
V2luZG93V2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAogTW9kdWxlcy93
ZWJncHUvV2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKK01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2UuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAogTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0zMjA4LDYgKzMyMDksNyBA
QCBKU1dlYkFuaW1hdGlvbi5jcHAKIEpTV2ViR1BVLmNwcAogSlNXZWJHUFVBZGFwdGVyLmNwcAog
SlNXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5jcHAKK0pTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAK
IEpTV2ViR1BVRGV2aWNlLmNwcAogSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcAog
SlNXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IGQxYjE0NDE3N2Q4NzRmZmY2NGEzOTBlNjczMjcxNGQzOTNkNjIwMDAuLmU3ZWUzMDUx
ZWI1NDc3MWZhYzgwMTc5YTk1Y2M5OWZkODkzOTAzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtMjcsNyArMjcsOSBAQCBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBN
b2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiAKK01vZHVs
ZXMvd2ViZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQogTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVRGV2aWNlTWV0YWwubW0KK01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVF1ZXVlTWV0
YWwubW0KIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KIE1v
ZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCiBNb2R1bGVzL3dlYmdw
dS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY2OTcyMGE4MjRkNzVlNDllOWY3Zjcx
ZWNkMWJhNGNjNDZiMGEzZDYuLjJlNTg2YmQwMDUyODFlNWE0NzUxY2NlNDk5YzhmZTU5ZDE4ZGM2
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzODQyLDcgKzEzODQyLDYgQEAKIAkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3
IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVy
aW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyNzIxNzk1
MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTNEMjI5
MjE3OTU0MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEMDk3MjdCNTIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEdQVVN3YXBDaGFpbi5oOyBwYXRoID0gY29jb2EvR1BVU3dhcENoYWluLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTcyN0I2MjE4N0Y0NDMwMDk0MkYzQSAv
KiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVN3YXBDaGFp
bk1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDk3MjdDMjIxOEE0NzI5
MDA5NDJGM0EgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwOTcyN0NBMjE4QkQ3QTUwMDk0MkYzQSAvKiBHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR1BVRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODY1
LDcgKzEzODY0LDYgQEAKIAkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJH
UFVSZW5kZXJQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBl
bGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQzQxOUY5MjE4NDA0REEw
MDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGQTIxODQwRjZD
MDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVUmVuZGVy
UGlwZWxpbmUuaDsgcGF0aCA9IGNvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5kZXJQ
aXBlbGluZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVN
ZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOTgyMTY4MjRBNjAw
MUM5MUM3IC8qIFdlYk1ldGFsQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbEJ1ZmZlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlBMjE2ODI0QTYwMDFDOTFDNyAvKiBX
ZWJNZXRhbENvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg3Niw2ICsxMzg3NCwxNSBAQAogCQlE
MERBMEJFNDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMERB
MEJFNTIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwREEwQkU2MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdQVVN3YXBDaGFpbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwRUFDRjc2
MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBF
QUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUQwRUFDRjc4MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVy
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDBFQUNGN0IyMTkzODI1MzAwMEZBNzVDIC8qIEdQVUNvbW1hbmRCdWZmZXJNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBFQUNGN0MyMTkzODJBRjAwMEZBNzVDIC8qIEdQ
VVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVTd2FwQ2hhaW4uaDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZ3B1L0dQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CUQwRUFDRjdEMjE5MzgyQjAwMDBGQTc1QyAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBHUFVSZW5kZXJQaXBlbGluZS5oOyBwYXRoID0gTW9kdWxlcy93ZWJncHUvR1BVUmVu
ZGVyUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlEMEVBQ0Y3RTIx
OTM4MkIwMDAwRkE3NUMgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVD
b21tYW5kQnVmZmVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmdwdS9HUFVDb21tYW5kQnVmZmVyLmg7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJRDBFQUNGODAyMTkzOTFFRTAwMEZBNzVD
IC8qIEdQVVF1ZXVlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVRdWV1ZU1ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEVBQ0Y4MTIxOTM5MjFBMDAwRkE3
NUMgLyogR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUXVldWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jl
c291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJh
d1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzMxNDNF
MzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpbmdMb2FkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjU1MzksMTQgKzI1NTQ2LDE2IEBACiAJCQkJRDAwRjU5NDEy
MTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5jcHAgKi8sCiAJCQkJRDAwRjU5NDAy
MTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5oICovLAogCQkJCUQwMEY1OTQyMjE2
RUNDN0EwMDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUuaWRsICovLAorCQkJCUQwRUFDRjdFMjE5
MzgyQjAwMDBGQTc1QyAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8sCiAJCQkJRDA5NzI3Q0EyMThC
RDdBNTAwOTQyRjNBIC8qIEdQVURldmljZS5jcHAgKi8sCiAJCQkJRDA2MTVGQ0YyMTdGRjE4NTAw
OEE0OEE4IC8qIEdQVURldmljZS5oICovLAogCQkJCUQwNDZGQjY3MjE4RDE4MDMwMENCOEY2MiAv
KiBHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICovLAotCQkJCUQwQzQxOUZBMjE4NDBGNkMw
MDlFQzFERSAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovLAorCQkJCUQwRUFDRjgxMjE5MzkyMUEw
MDBGQTc1QyAvKiBHUFVRdWV1ZS5oICovLAorCQkJCUQwRUFDRjdEMjE5MzgyQjAwMDBGQTc1QyAv
KiBHUFVSZW5kZXJQaXBlbGluZS5oICovLAogCQkJCUQwNDZGQjY1MjE4RDA3M0MwMENCOEY2MiAv
KiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKIAkJCQlEMDYwRDg4ODIxODI4MEMx
MDAzMzkzMTggLyogR1BVU2hhZGVyTW9kdWxlLmggKi8sCiAJCQkJRDA5NzI3QzIyMThBNDcyOTAw
OTQyRjNBIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDk3MjdCNTIx
ODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8sCisJCQkJRDBFQUNGN0MyMTkzODJB
RjAwMEZBNzVDIC8qIEdQVVN3YXBDaGFpbi5oICovLAogCQkJCUQwMEY1OTQ3MjE2RUZFNTQwMDBE
NzFEQiAvKiBXZWJHUFUuY3BwICovLAogCQkJCUQwMEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAvKiBX
ZWJHUFUuaCAqLywKIAkJCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAq
LywKQEAgLTI1NTU1LDYgKzI1NTY0LDkgQEAKIAkJCQlEMDBGNTk1MTIxNkZGQUMyMDAwRDcxREIg
LyogV2ViR1BVQWRhcHRlci5pZGwgKi8sCiAJCQkJRDAyQzI2OTEyMTgxNDE2RDAwRDgxOEU0IC8q
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmggKi8sCiAJCQkJRDAyQzI2OTIyMTgxNDE2RDAwRDgx
OEU0IC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQlEMEVBQ0Y3NzIxOTM3
MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJRDBFQUNGNzYy
MTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQlEMEVBQ0Y3
ODIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8sCiAJCQkJRDAw
RjU5NTMyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5jcHAgKi8sCiAJCQkJRDAwRjU5
NTIyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5oICovLAogCQkJCUQwMEY1OTU0MjE3
MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaWRsICovLApAQCAtMjU1ODcsNyArMjU1OTks
OSBAQAogCQlEMDYxNUZEMjIxN0ZGRUUzMDA4QTQ4QTggLyogY29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUQwRUFDRjdCMjE5MzgyNTMwMDBGQTc1
QyAvKiBHUFVDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8sCiAJCQkJRDA2MTVGRDEyMTdGRjFFMTAw
OEE0OEE4IC8qIEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCUQwRUFDRjgwMjE5MzkxRUUwMDBG
QTc1QyAvKiBHUFVRdWV1ZU1ldGFsLm1tICovLAogCQkJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFE
RSAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAogCQkJCUQwNjBEODg5MjE4MjgwQzEw
MDMzOTMxOCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywKIAkJCQlEMDk3MjdCNjIxODdG
NDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNDJjMTkzMjg5MWZj
MjUyNDc1ZWQ3ZWQ1Y2JhODc2ZmZhMWUwZjc4Ni4uZDdlZGJkZTU0NjAwZmI2MGViMGVlYzVlOGQx
NjQwN2FmNmVmY2I2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaApAQCAtMTgwLDYgKzE4MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhXZWJHUFUpIFwKICAgICBtYWNybyhXZWJHUFVBZGFwdGVyKSBcCiAgICAgbWFj
cm8oV2ViR1BVRGV2aWNlKSBcCisgICAgbWFjcm8oV2ViR1BVQ29tbWFuZEJ1ZmZlcikgXAogICAg
IG1hY3JvKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQpIFwKICAgICBtYWNybyhXZWJHUFVSZW5kZXJQ
aXBlbGluZSkgXAogICAgIG1hY3JvKFdlYkdQVVNoYWRlclN0YWdlKSBcCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWE0NDg2
ZTdiNWJmYjFjODRlNjhhYTEyMDkzMzk3ZDRmNTg3M2UwMy4uMzUxYTkxNzZhN2YxMWM5MjlhZTg3
NjViZWIwOWJlODgzZWQwYWNiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTExLTE0ICBK
dXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gV2Vi
R1BVQ29tbWFuZEJ1ZmZlciBwcm90b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTY2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVudGF0aW9uIG9mIFdlYkdQVUNvbW1hbmRC
dWZmZXJzIGFzIHdlbGwgYXMgR1BVUXVldWVzIChNVExDb21tYW5kQnVmZmVyLCBNVExDb21tYW5k
UXVldWUpLgorCisgICAgICAgIE5ldyB0ZXN0aW5nIGZvciBXZWJHUFVDb21tYW5kQnVmZmVycywg
dG8gYmUgZmxlc2hlZCBvdXQgd2hlbiBXZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvcnMKKyAg
ICAgICAgYXJlIGFkZGVkIHRvIHRoZSBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgICogd2ViZ3B1
L2NvbW1hbmQtYnVmZmVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS9j
b21tYW5kLWJ1ZmZlcnMuaHRtbDogQmFzaWMgZnVuY3Rpb25hbGl0eSwgd2l0aCBtb3JlIHN0cmVz
cyB0ZXN0cyB0byBiZSBhZGRlZCB3aGVuIHRoZSBzcGVjIGlzIHVwZGF0ZWQuCisgICAgICAgICog
d2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbDogVXBkYXRlZCB0byBjcmVhdGUgdGhlIGNvbW1hbmQg
YnVmZmVyIHVzZWQgYnkgbGF0ZXIgcmVuZGVyaW5nIG9wZXJhdGlvbnMuCisKIDIwMTgtMTEtMTIg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE5ldHdvcms6IHNob3cgc2VjdXJlIGNlcnRpZmljYXRlIGRldGFpbHMgcGVyLXJlcXVlc3QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmJjNTViMWU2ZmNmMzE4Y2JiNjc1YmI1MjU3NTdjZDk2ZGM0NmE5NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNyBAQAorUEFTUyBbb2JqZWN0IFdlYkdQVV0gaXMgZGVmaW5lZC4KK1BB
U1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgV2ViR1BVQ29tbWFuZEJ1ZmZlci4KK0FsbCB0ZXN0cyBj
b21wbGV0ZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ5
NmYzYzEzNzE4MDcyOGU3ZjBhODMwM2Q2MzRjZGVkNjk1NDBjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbApAQCAtMCwwICsxLDMwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ianMvc2V0LXVwLXdlYmdwdS1jb250
ZXh0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gc2V0VXBDb21tYW5k
QnVmZmVyKCkgeworICAgIC8vIEZJWE1FOiBjcmVhdGVDb21tYW5kQnVmZmVyIHNob3VsZCB0YWtl
IGEgV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IsIHdoaWNoIGlzIGN1cnJlbnRseSBhbiBl
bXB0eSBkaWN0aW9uYXJ5LgorICAgIGxldCBjb21tYW5kQnVmZmVyID0gZGVmYXVsdERldmljZS5j
cmVhdGVDb21tYW5kQnVmZmVyKCk7CisgICAgaWYgKGNvbW1hbmRCdWZmZXIpCisgICAgICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIFdlYkdQVUNvbW1hbmRCdWZmZXIuIik7Cisg
ICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVUNvbW1h
bmRCdWZmZXIhIik7Cit9CisKK2Z1bmN0aW9uIGJhZENvbW1hbmRCdWZmZXIwKCkgeworICAgIC8v
IEZJWE1FOiBTdHJlc3MgY29tbWFuZCBidWZmZXIgY3JlYXRpb24gd2hlbiBXZWJHUFVDb21tYW5k
QnVmZmVyRGVzY3JpcHRvciBpcyBzcGVjaWZpZWQuCit9CisKK3J1bldlYkdQVVRlc3RzKFsKKyAg
ICAgICAgc2V0VXBDb21tYW5kQnVmZmVyLCAKKyAgICAgICAgYmFkQ29tbWFuZEJ1ZmZlcjAKKyAg
ICBdKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93
ZWJncHUtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1s
CmluZGV4IDNhMWFmMWJlMGU0ODdlNzljMDgyMmJkZWZmMGY1Y2YzYzRmMGEyZDYuLmVjYmEzNjFm
ZTk2ZTE4YTZiZjI3NWU3Yzk0YzIyNGVjMWU0YWFjZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdw
dS1iYXNpY3MuaHRtbApAQCAtODgsNyArODgsMTcgQEAgZnVuY3Rpb24gc2V0VXBQaXBlbGluZSgp
IHsKICAgICB9CiB9CiAKLXJ1bldlYkdQVVRlc3RzKFtzZXRVcFBpcGVsaW5lXSk7CitmdW5jdGlv
biByZW5kZXIoKSB7CisgICAgbGV0IGNvbW1hbmRCdWZmZXIgPSBkZWZhdWx0RGV2aWNlLmNyZWF0
ZUNvbW1hbmRCdWZmZXIoKTsKKyAgICBpZiAoIWNvbW1hbmRCdWZmZXIpIHsKKyAgICAgICAgdGVz
dEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVDb21tYW5kQnVmZmVyISIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IE1vcmUgY29tbWFuZHMgdG8gZm9sbG93
IGFzIHRoZXkgYXJlIGltcGxlbWVudGVkLgorfQorCitydW5XZWJHUFVUZXN0cyhbc2V0VXBQaXBl
bGluZSwgcmVuZGVyXSk7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>