<?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>232872</bug_id>
          
          <creation_ts>2021-11-09 02:39:16 -0800</creation_ts>
          <short_desc>[WebGPU] Stub out methods in WebGPU.framework</short_desc>
          <delta_ts>2021-11-09 13:09:28 -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="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813045</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-09 02:39:16 -0800</bug_when>
    <thetext>[WebGPU] Stub out methods in WebGPU.framework</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813046</commentid>
    <comment_count>1</comment_count>
      <attachid>443667</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-09 02:45:49 -0800</bug_when>
    <thetext>Created attachment 443667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813047</commentid>
    <comment_count>2</comment_count>
      <attachid>443668</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-09 02:50:00 -0800</bug_when>
    <thetext>Created attachment 443668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813165</commentid>
    <comment_count>3</comment_count>
      <attachid>443668</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-09 08:47:52 -0800</bug_when>
    <thetext>Comment on attachment 443668
Patch

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

rs=me

&gt; Source/WebGPU/WebGPU/Buffer.mm:80
&gt; +void * wgpuBufferGetMappedRange(WGPUBuffer buffer, size_t offset, size_t size)

Don&apos;t we normally use &quot;void*&quot; for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813277</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-09 13:09:02 -0800</bug_when>
    <thetext>Committed r285527 (244044@main): &lt;https://commits.webkit.org/244044@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813278</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-09 13:09:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/85216692&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443667</attachid>
            <date>2021-11-09 02:45:49 -0800</date>
            <delta_ts>2021-11-09 02:49:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232872-20211109024548.patch</filename>
            <type>text/plain</type>
            <size>199301</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDQ4N2RjZDI3Y2M5ZTY2NWJl
NGUxYTI3OTRhMTk0OWJmNTg0NGI1NWQuLjFiNGI5ZDA1ZTVhNzJiMzVhYzBjMjc3OTdkYzM3YWNl
OTM1ZjJhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzA1IEBACisyMDIxLTExLTA5ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gU3R1
YiBvdXQgbWV0aG9kcyBpbiBXZWJHUFUuZnJhbWV3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNyZWF0ZXMgZW1wdHkgaW1wbGVtZW50YXRp
b25zIGZvciBhbGwgdGhlIG1ldGhvZHMgaW4gV2ViR1BVLmZyYW1ld29yay4KKyAgICAgICAgVGhp
cyBtZWFucyB0aGF0IHRoZXJlIGFyZSBub3cgaW1wbGVtZW50YXRpb25zIGZvciBldmVyeSBBUEkg
Y2FsbCwgc28gUEFMCisgICAgICAgIGNhbiBzdWNjZXNzZnVsbHkgY2FsbCBpbnRvIFdlYkdQVS5m
cmFtZXdvcmsgYW5kIGxpbmsgd2l0aCBpdC4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1Zl
cnNpb24ueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkdQVS54
Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJHUFUvQWRhcHRlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQ
VS9TaGFkZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OmdldExpbWl0cyk6CisgICAgICAgIChXZWJHUFU6OkFk
YXB0ZXI6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpoYXNGZWF0
dXJlKToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6cmVxdWVzdERldmljZSk6CisgICAgICAg
ICh3Z3B1QWRhcHRlclJlbGVhc2UpOgorICAgICAgICAod2dwdUFkYXB0ZXJHZXRMaW1pdHMpOgor
ICAgICAgICAod2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKHdncHVBZGFwdGVy
SGFzRmVhdHVyZSk6CisgICAgICAgICh3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2UpOgorICAgICAg
ICAqIFdlYkdQVS9CaW5kR3JvdXAuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUv
U2hhZGVyTW9kdWxlLmguCisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cC5tbTogQ29waWVkIGZy
b20gU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5tbS4KKyAgICAgICAgKHdncHVCaW5k
R3JvdXBSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvQmluZEdyb3VwTGF5b3V0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oLgorICAgICAgICAqIFdl
YkdQVS9CaW5kR3JvdXBMYXlvdXQubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQ
VS9XZWJHUFUuY3BwLgorICAgICAgICAod2dwdUJpbmRHcm91cExheW91dFJlbGVhc2UpOgorICAg
ICAgICAqIFdlYkdQVS9CdWZmZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUv
U2hhZGVyTW9kdWxlLmguCisgICAgICAgICogV2ViR1BVL0J1ZmZlci5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJHUFU6OkJ1ZmZlcjo6ZGVzdHJveSk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6
Z2V0Q29uc3RNYXBwZWRSYW5nZSk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6Z2V0TWFwcGVk
UmFuZ2UpOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6Om1hcEFzeW5jKToKKyAgICAgICAgKFdl
YkdQVTo6QnVmZmVyOjp1bm1hcCk6CisgICAgICAgICh3Z3B1QnVmZmVyUmVsZWFzZSk6CisgICAg
ICAgICh3Z3B1QnVmZmVyRGVzdHJveSk6CisgICAgICAgICh3Z3B1QnVmZmVyR2V0Q29uc3RNYXBw
ZWRSYW5nZSk6CisgICAgICAgICh3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UpOgorICAgICAgICAo
d2dwdUJ1ZmZlck1hcEFzeW5jKToKKyAgICAgICAgKHdncHVCdWZmZXJVbm1hcCk6CisgICAgICAg
ICogV2ViR1BVL0NvbW1hbmRCdWZmZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJH
UFUvU2hhZGVyTW9kdWxlLmguCisgICAgICAgICogV2ViR1BVL0NvbW1hbmRCdWZmZXIubW06IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAgICh3
Z3B1Q29tbWFuZEJ1ZmZlclJlbGVhc2UpOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06IEFkZGVkLgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyk6CisgICAg
ICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAo
V2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKToKKyAgICAgICAgKFdl
YkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2Vi
R1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAgIChXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5j
b2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rl
cjo6cG9wRGVidWdHcm91cCk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpwdXNo
RGVidWdHcm91cCk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpyZXNvbHZlUXVl
cnlTZXQpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAp
OgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyUmVsZWFzZSk6CisgICAgICAgICh3Z3B1Q29t
bWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2Rl
ckJlZ2luUmVuZGVyUGFzcyk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVy
VG9CdWZmZXIpOgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvVGV4dHVy
ZSk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAg
ICAgICAgKHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAg
KHdncHVDb21tYW5kRW5jb2RlckZpbmlzaCk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJJ
bnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJQb3BEZWJ1Z0dy
b3VwKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKToKKyAgICAg
ICAgKHdncHVDb21tYW5kRW5jb2RlclJlc29sdmVRdWVyeVNldCk6CisgICAgICAgICh3Z3B1Q29t
bWFuZEVuY29kZXJXcml0ZVRpbWVzdGFtcCk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQYXNz
RW5jb2Rlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUu
aC4KKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1
ZXJ5KToKKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdCk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcyk6CisgICAgICAgIChX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgor
ICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKToK
KyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6CisgICAg
ICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKToKKyAgICAgICAg
KFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSk6CisgICAgICAgIChXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXApOgorICAgICAgICAod2dwdUNv
bXB1dGVQYXNzRW5jb2RlclJlbGVhc2UpOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2Rl
ckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNz
RW5jb2RlckRpc3BhdGNoKToKKyAgICAgICAgKHdncHVDb21wdXRlUGFzc0VuY29kZXJEaXNwYXRj
aEluZGlyZWN0KToKKyAgICAgICAgKHdncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQYXNzKToKKyAg
ICAgICAgKHdncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6
CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIpOgorICAg
ICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2RlclBvcERlYnVnR3JvdXApOgorICAgICAgICAod2dw
dUNvbXB1dGVQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKHdncHVDb21wdXRl
UGFzc0VuY29kZXJTZXRCaW5kR3JvdXApOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2Rl
clNldFBpcGVsaW5lKToKKyAgICAgICAgKHdncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVz
dGFtcCk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvQ29t
cHV0ZVBpcGVsaW5lLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVP
YmpDLm1tLgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OmdldEJpbmRHcm91cExh
eW91dCk6CisgICAgICAgIChXZWJHUFU6OkNvbXB1dGVQaXBlbGluZTo6c2V0TGFiZWwpOgorICAg
ICAgICAod2dwdUNvbXB1dGVQaXBlbGluZVJlbGVhc2UpOgorICAgICAgICAod2dwdUNvbXB1dGVQ
aXBlbGluZUdldEJpbmRHcm91cExheW91dCk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBpcGVsaW5l
U2V0TGFiZWwpOgorICAgICAgICAqIFdlYkdQVS9EZXZpY2UuaDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL0RldmljZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
QmluZEdyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlv
dXQpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJHUFU6OkRldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViR1BVOjpE
ZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVRdWVy
eVNldCk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rl
cik6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOgorICAgICAg
ICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViR1BVOjpEZXZp
Y2U6OmNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
U3dhcENoYWluKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNl
OjpnZXRMaW1pdHMpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmdldFF1ZXVlKToKKyAgICAg
ICAgKFdlYkdQVTo6RGV2aWNlOjpwb3BFcnJvclNjb3BlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2
aWNlOjpwdXNoRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6c2V0RGV2aWNl
TG9zdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpzZXRVbmNhcHR1cmVkRXJy
b3JDYWxsYmFjayk6CisgICAgICAgICh3Z3B1RGV2aWNlUmVsZWFzZSk6CisgICAgICAgICh3Z3B1
RGV2aWNlQ3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVCaW5kR3Jv
dXBMYXlvdXQpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZUJ1ZmZlcik6CisgICAgICAgICh3
Z3B1RGV2aWNlQ3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAod2dwdURldmljZUNyZWF0
ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAg
ICAgICAgKHdncHVEZXZpY2VDcmVhdGVRdWVyeVNldCk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3Jl
YXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVy
UGlwZWxpbmUpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMp
OgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAod2dwdURldmlj
ZUNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWlu
KToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKHdncHVEZXZp
Y2VEZXN0cm95KToKKyAgICAgICAgKHdncHVEZXZpY2VHZXRMaW1pdHMpOgorICAgICAgICAod2dw
dURldmljZUdldFF1ZXVlKToKKyAgICAgICAgKHdncHVEZXZpY2VQb3BFcnJvclNjb3BlKToKKyAg
ICAgICAgKHdncHVEZXZpY2VQdXNoRXJyb3JTY29wZSk6CisgICAgICAgICh3Z3B1RGV2aWNlU2V0
RGV2aWNlTG9zdENhbGxiYWNrKToKKyAgICAgICAgKHdncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJy
b3JDYWxsYmFjayk6CisgICAgICAgICogV2ViR1BVL0V4cG9ydE1hY3Jvcy5oOgorICAgICAgICAq
IFdlYkdQVS9JbnN0YW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UubW06IEFkZGVkLgorICAgICAg
ICAoV2ViR1BVOjpJbnN0YW5jZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJHUFU6Oklu
c3RhbmNlOjpwcm9jZXNzRXZlbnRzKToKKyAgICAgICAgKFdlYkdQVTo6SW5zdGFuY2U6OnJlcXVl
c3RBZGFwdGVyKToKKyAgICAgICAgKHdncHVJbnN0YW5jZVJlbGVhc2UpOgorICAgICAgICAod2dw
dUNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKHdncHVHZXRQcm9jQWRkcmVzcyk6CisgICAgICAg
ICh3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKHdncHVJbnN0YW5jZVByb2Nl
c3NFdmVudHMpOgorICAgICAgICAod2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIpOgorICAgICAg
ICAqIFdlYkdQVS9QaXBlbGluZUxheW91dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dl
YkdQVS9TaGFkZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvUGlwZWxpbmVMYXlvdXQubW06
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAg
ICh3Z3B1UGlwZWxpbmVMYXlvdXRSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvUXVlcnlTZXQu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmguCisgICAg
ICAgICogV2ViR1BVL1F1ZXJ5U2V0Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQ
VS9XZWJHUFVPYmpDLm1tLgorICAgICAgICAoV2ViR1BVOjpRdWVyeVNldDo6ZGVzdHJveSk6Cisg
ICAgICAgICh3Z3B1UXVlcnlTZXRSZWxlYXNlKToKKyAgICAgICAgKHdncHVRdWVyeVNldERlc3Ry
b3kpOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BV
L1dlYkdQVS9TaGFkZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvUXVldWUubW06IEFkZGVk
LgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6b25TdWJtaXR0ZWRXb3JrRG9uZSk6CisgICAgICAg
IChXZWJHUFU6OlF1ZXVlOjpzdWJtaXQpOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVC
dWZmZXIpOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVUZXh0dXJlKToKKyAgICAgICAg
KHdncHVRdWV1ZVJlbGVhc2UpOgorICAgICAgICAod2dwdVF1ZXVlT25TdWJtaXR0ZWRXb3JrRG9u
ZSk6CisgICAgICAgICh3Z3B1UXVldWVTdWJtaXQpOgorICAgICAgICAod2dwdVF1ZXVlV3JpdGVC
dWZmZXIpOgorICAgICAgICAod2dwdVF1ZXVlV3JpdGVUZXh0dXJlKToKKyAgICAgICAgKiBXZWJH
UFUvUmVuZGVyQnVuZGxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRl
ck1vZHVsZS5oLgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGUubW06IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAgICh3Z3B1UmVuZGVy
QnVuZGxlUmVsZWFzZSk6CisgICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmguCisgICAgICAg
ICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxl
RW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcjo6
aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVy
Ojpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcjo6
cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpz
ZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRJ
bmRleEJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFBp
cGVsaW5lKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0VmVydGV4
QnVmZmVyKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUmVsZWFzZSk6CisgICAg
ICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXcpOgorICAgICAgICAod2dwdVJlbmRlckJ1
bmRsZUVuY29kZXJEcmF3SW5kZXhlZCk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2Rl
ckRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJE
cmF3SW5kaXJlY3QpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJGaW5pc2gpOgor
ICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJJbnNlcnREZWJ1Z01hcmtlcik6CisgICAg
ICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclBvcERlYnVnR3JvdXApOgorICAgICAgICAod2dw
dVJlbmRlckJ1bmRsZUVuY29kZXJQdXNoRGVidWdHcm91cCk6CisgICAgICAgICh3Z3B1UmVuZGVy
QnVuZGxlRW5jb2RlclNldEJpbmRHcm91cCk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5j
b2RlclNldEluZGV4QnVmZmVyKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0
UGlwZWxpbmUpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRWZXJ0ZXhCdWZm
ZXIpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcjo6YmVnaW5PY2NsdXNpb25RdWVyeSk6CisgICAgICAgIChXZWJH
UFU6OlJlbmRlclBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAg
ICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OmRyYXcpOgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAoV2ViR1BVOjpSZW5k
ZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdCk6CisgICAgICAgIChXZWJHUFU6OlJl
bmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kaXJlY3QpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQ
YXNzRW5jb2Rlcjo6ZW5kT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQ
YXNzRW5jb2Rlcjo6ZW5kUGFzcyk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVy
OjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBh
c3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NF
bmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NF
bmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29k
ZXI6OnB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6
OnNldEJpbmRHcm91cCk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyOjpzZXRC
bGVuZENvbnN0YW50KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldElu
ZGV4QnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVs
aW5lKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0
KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldFN0ZW5jaWxSZWZlcmVu
Y2UpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVy
KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdwb3J0KToKKyAg
ICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OndyaXRlVGltZXN0YW1wKToKKyAgICAg
ICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclJlbGVhc2UpOgorICAgICAgICAod2dwdVJlbmRlclBh
c3NFbmNvZGVyQmVnaW5PY2NsdXNpb25RdWVyeSk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKHdncHVSZW5kZXJQ
YXNzRW5jb2RlckRyYXcpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4
ZWQpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCk6
CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJlY3QpOgorICAgICAgICAo
d2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAod2dwdVJl
bmRlclBhc3NFbmNvZGVyRW5kUGFzcyk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJF
bmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29k
ZXJFeGVjdXRlQnVuZGxlcyk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJJbnNlcnRE
ZWJ1Z01hcmtlcik6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJQb3BEZWJ1Z0dyb3Vw
KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKToKKyAgICAg
ICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNldEJpbmRHcm91cCk6CisgICAgICAgICh3Z3B1UmVu
ZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNz
RW5jb2RlclNldEluZGV4QnVmZmVyKToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNl
dFBpcGVsaW5lKToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFNjaXNzb3JSZWN0
KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFN0ZW5jaWxSZWZlcmVuY2UpOgor
ICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0VmVydGV4QnVmZmVyKToKKyAgICAgICAg
KHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0KToKKyAgICAgICAgKHdncHVSZW5kZXJQ
YXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGlwZWxp
bmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmguCisg
ICAgICAgICogV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
R1BVL1dlYkdQVS9XZWJHUFVPYmpDLm1tLgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU6
OnNldExhYmVsKToKKyAgICAgICAgKHdncHVSZW5kZXJQaXBlbGluZVJlbGVhc2UpOgorICAgICAg
ICAod2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKHdncHVS
ZW5kZXJQaXBlbGluZVNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvU2FtcGxlci5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5oLgorICAgICAgICAqIFdl
YkdQVS9TYW1wbGVyLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVP
YmpDLm1tLgorICAgICAgICAod2dwdVNhbXBsZXJSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUv
U2hhZGVyTW9kdWxlLmg6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5tbTogQ29waWVk
IGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5tbS4KKyAgICAgICAgKFdlYkdQ
VTo6U2hhZGVyTW9kdWxlOjpzZXRMYWJlbCk6CisgICAgICAgICh3Z3B1U2hhZGVyTW9kdWxlUmVs
ZWFzZSk6CisgICAgICAgICh3Z3B1U2hhZGVyTW9kdWxlU2V0TGFiZWwpOgorICAgICAgICAqIFdl
YkdQVS9TdXJmYWNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1v
ZHVsZS5oLgorICAgICAgICAqIFdlYkdQVS9TdXJmYWNlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViR1BVL1dlYkdQVS9XZWJHUFVPYmpDLm1tLgorICAgICAgICAoV2ViR1BVOjpTdXJmYWNlOjpn
ZXRQcmVmZXJyZWRGb3JtYXQpOgorICAgICAgICAod2dwdVN1cmZhY2VSZWxlYXNlKToKKyAgICAg
ICAgKHdncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0KToKKyAgICAgICAgKiBXZWJHUFUvU3dh
cENoYWluLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5o
LgorICAgICAgICAqIFdlYkdQVS9Td2FwQ2hhaW4ubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJH
UFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAgIChXZWJHUFU6OlN3YXBDaGFpbjo6Z2V0
Q3VycmVudFRleHR1cmVWaWV3KToKKyAgICAgICAgKFdlYkdQVTo6U3dhcENoYWluOjpwcmVzZW50
KToKKyAgICAgICAgKHdncHVTd2FwQ2hhaW5SZWxlYXNlKToKKyAgICAgICAgKHdncHVTd2FwQ2hh
aW5HZXRDdXJyZW50VGV4dHVyZVZpZXcpOgorICAgICAgICAod2dwdVN3YXBDaGFpblByZXNlbnQp
OgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUv
V2ViR1BVL1NoYWRlck1vZHVsZS5oLgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLm1tOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVPYmpDLm1tLgorICAgICAgICAoV2Vi
R1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6ZGVz
dHJveSk6CisgICAgICAgICh3Z3B1VGV4dHVyZVJlbGVhc2UpOgorICAgICAgICAod2dwdVRleHR1
cmVDcmVhdGVWaWV3KToKKyAgICAgICAgKHdncHVUZXh0dXJlRGVzdHJveSk6CisgICAgICAgICog
V2ViR1BVL1RleHR1cmVWaWV3Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1No
YWRlck1vZHVsZS5oLgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5tbTogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAgICh3Z3B1VGV4
dHVyZVZpZXdSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvV2ViR1BVLm1vZHVsZW1hcDogQWRk
ZWQuCisgICAgICAgICogV2ViR1BVL1dlYkdQVUV4dC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvY29uZmlnLmg6CisKIDIwMjEtMTAtMTkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdlYkdQVS54Y29kZXByb2ogYW5kIFdlYkdQVS5m
cmFtZXdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvVmVyc2lv
bi54Y2NvbmZpZyBiL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZp
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMzliMDkzOWE3NDE2ZTI2YzAxNzc0NjAwNjU0NzE2NmM0NTUxMmY0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhj
Y29uZmlnCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8v
IGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8g
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitNQUpPUl9WRVJTSU9OID0gNjEzOworTUlOT1JfVkVSU0lPTiA9IDE7CitUSU5ZX1ZFUlNJ
T04gPSA4OworTUlDUk9fVkVSU0lPTiA9IDA7CitOQU5PX1ZFUlNJT04gPSAwOworRlVMTF9WRVJT
SU9OID0gJChNQUpPUl9WRVJTSU9OKS4kKE1JTk9SX1ZFUlNJT04pLiQoVElOWV9WRVJTSU9OKTsK
KworLy8gVGhlIGJ1bmRsZSB2ZXJzaW9uIGFuZCBzaG9ydCB2ZXJzaW9uIHN0cmluZyBhcmUgc2V0
IGJhc2VkIG9uIHRoZSBjdXJyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHNlZSBiZWxvdy4KK0JV
TkRMRV9WRVJTSU9OID0gJChCVU5ETEVfVkVSU0lPTl8kKENPTkZJR1VSQVRJT04pKTsKK1NIT1JU
X1ZFUlNJT05fU1RSSU5HID0gJChTSE9SVF9WRVJTSU9OX1NUUklOR18kKENPTkZJR1VSQVRJT04p
KQorCisvLyBUaGUgc3lzdGVtIHZlcnNpb24gcHJlZml4IGlzIGJhc2VkIG9uIHRoZSBjdXJyZW50
IHN5c3RlbSB2ZXJzaW9uLgorU1lTVEVNX1ZFUlNJT05fUFJFRklYID0gJChTWVNURU1fVkVSU0lP
Tl9QUkVGSVhfJChQTEFURk9STV9OQU1FKV8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9S
KSk7CitTWVNURU1fVkVSU0lPTl9QUkVGSVhfbWFjb3N4XzEwMTQwMCA9IDE0OworU1lTVEVNX1ZF
UlNJT05fUFJFRklYX21hY29zeF8xMDE1MDAgPSAxNTsKK1NZU1RFTV9WRVJTSU9OX1BSRUZJWF9t
YWNvc3hfMTEwMDAwID0gMTY7CitTWVNURU1fVkVSU0lPTl9QUkVGSVhfbWFjb3N4XzEyMDAwMCA9
IDE3OworU1lTVEVNX1ZFUlNJT05fUFJFRklYX21hY29zeF8xMzAwMDAgPSAxODsKK1NZU1RFTV9W
RVJTSU9OX1BSRUZJWFtzZGs9aXBob25lKl0gPSA4OworCisvLyBUaGUgcHJvZHVjdGlvbiBidWls
ZCBhbHdheXMgdXNlcyB0aGUgZnVsbCB2ZXJzaW9uIHdpdGggYSBzeXN0ZW0gdmVyc2lvbiBwcmVm
aXguCitCVU5ETEVfVkVSU0lPTl9Qcm9kdWN0aW9uID0gJChTWVNURU1fVkVSU0lPTl9QUkVGSVgp
JChGVUxMX1ZFUlNJT04pOworQlVORExFX1ZFUlNJT05fID0gJChCVU5ETEVfVkVSU0lPTl9Qcm9k
dWN0aW9uKTsKKworLy8gVGhlIHByb2R1Y3Rpb24gYnVpbGQgYWx3YXlzIHVzZXMgdGhlIG1ham9y
IHZlcnNpb24gd2l0aCBhIHN5c3RlbSB2ZXJzaW9uIHByZWZpeAorU0hPUlRfVkVSU0lPTl9TVFJJ
TkdfUHJvZHVjdGlvbiA9ICQoU1lTVEVNX1ZFUlNJT05fUFJFRklYKSQoTUFKT1JfVkVSU0lPTik7
CitTSE9SVF9WRVJTSU9OX1NUUklOR18gPSAkKFNIT1JUX1ZFUlNJT05fU1RSSU5HX1Byb2R1Y3Rp
b24pOworCisvLyBMb2NhbCBidWlsZHMgYXJlIHRoZSBmdWxsIHZlcnNpb24gd2l0aCBhIHBsdXMg
c3VmZml4LgorQlVORExFX1ZFUlNJT05fUmVsZWFzZSA9ICQoRlVMTF9WRVJTSU9OKSs7CitCVU5E
TEVfVkVSU0lPTl9EZWJ1ZyA9ICQoQlVORExFX1ZFUlNJT05fUmVsZWFzZSk7CisKKy8vIExvY2Fs
IGJ1aWxkcyB1c2UgdGhlIG1ham9yIHZlcnNpb24gd2l0aCBhIHBsdXMgc3VmZml4CitTSE9SVF9W
RVJTSU9OX1NUUklOR19SZWxlYXNlID0gJChNQUpPUl9WRVJTSU9OKSs7CitTSE9SVF9WRVJTSU9O
X1NUUklOR19EZWJ1ZyA9ICQoU0hPUlRfVkVSU0lPTl9TVFJJTkdfUmVsZWFzZSk7CisKK0RZTElC
X0NPTVBBVElCSUxJVFlfVkVSU0lPTiA9IDE7CitEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAkKEZV
TExfVkVSU0lPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NvbmZpZ3VyYXRpb25zL1dl
YkdQVS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29u
ZmlnCmluZGV4IDBlOGU4NjgxYTVhYTY1YjgwYjFjMjRmNjc4MGNjMzk3NGQ0ZGMzMDguLjRkNDZm
YzM0MjQ2MjkwOGM0NjA0ZDYzMTNkZDMzYjBmZDYwYmI4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJHUFUv
Q29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCkBAIC0yMSw2ICsyMSw4IEBACiAvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKKyNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmlnIgor
CiBIRUFERVJfU0VBUkNIX1BBVEhTID0gIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwv
aW5jbHVkZSIgJChpbmhlcml0ZWQpOwogCiBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CkBA
IC00OSwzICs1MSw5IEBAIFdLX0lOU1RBTExfUEFUSF9QUkVGSVggPSAkKFdLX0lOU1RBTExfUEFU
SF9QUkVGSVhfREVQTE9ZTUVOVF8kKERFUExPWU1FTlRfTE9DQVRJCiBXS19JTlNUQUxMX1BBVEhf
UFJFRklYX0RFUExPWU1FTlRfWUVTX01BQ09TX1NJTkNFXzEwMTVfVVNFX1NUQUdJTkdfSU5TVEFM
TF9QQVRIX1lFUyA9ICQoUExBVEZPUk1fT09CX1NZU1RFTV9DT05URU5UX0RJUik7CiAKIEdDQ19Q
UkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSBXR1BVX1NIQVJFRF9MSUJSQVJZIFdHUFVfSU1QTEVN
RU5UQVRJT04gJChpbmhlcml0ZWQpOworCitERUZJTkVTX01PRFVMRSA9IFlFUzsKK01PRFVMRU1B
UF9GSUxFID0gV2ViR1BVL1dlYkdQVS5tb2R1bGVtYXA7CisKK1NVUFBPUlRTX1RFWFRfQkFTRURf
QVBJID0gWUVTOworVEFQSV9WRVJJRllfTU9ERSA9IFBlZGFudGljOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWEwODI4MDEyNjRjNWZl
NzJkNDlkZGJjMzM4ZTZmYzkwODBmM2E0My4uNzU4MWUzMTM3ODY1NDJjOTFmZTVjZjQ3NTRjZTAz
M2Y3ZmI5ZTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03LDEzICs3LDM2IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KLQkJMUMyQ0VERUEyNzFFODI4ODAwRURDMTZGIC8qIFdlYkdQ
VU9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzJDRURFOTI3MUU4Mjg4MDBFREMxNkYgLyogV2ViR1BVT2JqQy5tbSAqLzsgfTsKIAkJMUMyQ0VE
RUUyNzFFOEE3MzAwRURDMTZGIC8qIE1ldGFsLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMkNFREVEMjcxRThBNzMwMEVEQzE2RiAv
KiBNZXRhbC5mcmFtZXdvcmsgKi87IH07CisJCTFDNUFDQTk0MjczQTQxQzIwMDk1RjhENSAvKiBJ
bnN0YW5jZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSAqLzsgfTsKKwkJMUM1QUNB
QjYyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTgyNzNBNDI2RDAwOTVGOEQ1IC8q
IFJlbmRlclBpcGVsaW5lLm1tICovOyB9OworCQkxQzVBQ0FCQjI3M0E0MjZEMDA5NUY4RDUgLyog
QnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1QUNBOUQyNzNBNDI2RDAwOTVGOEQ1IC8qIEJ1ZmZlci5tbSAqLzsgfTsKKwkJMUM1QUNBQkQy
NzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOUYyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0
Lm1tICovOyB9OworCQkxQzVBQ0FCRjI3M0E0MjZEMDA5NUY4RDUgLyogU3dhcENoYWluLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQTEyNzNB
NDI2RDAwOTVGOEQ1IC8qIFN3YXBDaGFpbi5tbSAqLzsgfTsKKwkJMUM1QUNBQzAyNzNBNDI2RDAw
OTVGOEQ1IC8qIENvbXB1dGVQaXBlbGluZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUEyMjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlw
ZWxpbmUubW0gKi87IH07CisJCTFDNUFDQUMxMjczQTQyNkQwMDk1RjhENSAvKiBEZXZpY2UubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FBMzI3
M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLm1tICovOyB9OworCQkxQzVBQ0FDMjI3M0E0MjZEMDA5
NUY4RDUgLyogUmVuZGVyUGFzc0VuY29kZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FBNDI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGFz
c0VuY29kZXIubW0gKi87IH07CisJCTFDNUFDQUM2MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRl
UGFzc0VuY29kZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzVBQ0FBODI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBhc3NFbmNvZGVyLm1tICov
OyB9OworCQkxQzVBQ0FDNzI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUE5MjczQTQyNkQwMDk1
RjhENSAvKiBBZGFwdGVyLm1tICovOyB9OworCQkxQzVBQ0FDOTI3M0E0MjZFMDA5NUY4RDUgLyog
Q29tbWFuZEVuY29kZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzVBQ0FBQjI3M0E0MjZEMDA5NUY4RDUgLyogQ29tbWFuZEVuY29kZXIubW0gKi87
IH07CisJCTFDNUFDQUNCMjczQTQyNkUwMDk1RjhENSAvKiBRdWV1ZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUFEMjczQTQyNkQwMDk1RjhE
NSAvKiBRdWV1ZS5tbSAqLzsgfTsKKwkJMUM1QUNBQ0MyNzNBNDI2RTAwOTVGOEQ1IC8qIFJlbmRl
ckJ1bmRsZUVuY29kZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzVBQ0FBRTI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlRW5jb2Rlci5t
bSAqLzsgfTsKKwkJMUM1QUNBQ0UyNzNBNDI2RTAwOTVGOEQ1IC8qIFNoYWRlck1vZHVsZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUIwMjcz
QTQyNkQwMDk1RjhENSAvKiBTaGFkZXJNb2R1bGUubW0gKi87IH07CisJCTFDNUFDQUNGMjczQTQy
NkUwMDk1RjhENSAvKiBUZXh0dXJlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM1QUNBQjEyNzNBNDI2RDAwOTVGOEQ1IC8qIFRleHR1cmUubW0gKi87
IH07CisJCTFDNUFDQUQxMjczQTQyNkUwMDk1RjhENSAvKiBTdXJmYWNlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQjMyNzNBNDI2RDAwOTVG
OEQ1IC8qIFN1cmZhY2UubW0gKi87IH07CisJCTFDNUFDQUQzMjczQTRDODYwMDk1RjhENSAvKiBX
ZWJHUFVFeHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDNUFDQUQyMjczQTRDODYwMDk1RjhENSAvKiBXZWJHUFVFeHQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTFDNUFDQUQ3MjczQTRENzAwMDk1RjhE
NSAvKiBCaW5kR3JvdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDNUFDQUQ1MjczQTRENzAwMDk1RjhENSAvKiBCaW5kR3JvdXAuaCAqLzsgfTsKKwkJ
MUM1QUNBREYyNzNBNTVBRjAwOTVGOEQ1IC8qIEJpbmRHcm91cC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQURFMjczQTU1QUYwMDk1RjhENSAv
KiBCaW5kR3JvdXAubW0gKi87IH07CisJCTFDNUFDQUUxMjczQTU1QzEwMDk1RjhENSAvKiBCaW5k
R3JvdXBMYXlvdXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzVBQ0FFMDI3M0E1NUMxMDA5NUY4RDUgLyogQmluZEdyb3VwTGF5b3V0Lm1tICovOyB9
OworCQkxQzVBQ0FFMzI3M0E1NUNEMDA5NUY4RDUgLyogQ29tbWFuZEJ1ZmZlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUUyMjczQTU1Q0Qw
MDk1RjhENSAvKiBDb21tYW5kQnVmZmVyLm1tICovOyB9OworCQkxQzVBQ0FFNTI3M0E1NUREMDA5
NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FFNDI3M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlv
dXQubW0gKi87IH07CisJCTFDNUFDQUU3MjczQTU1RUYwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FF
NjI3M0E1NUVGMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlLm1tICovOyB9OworCQkxQzVBQ0FFOTI3
M0E1NUZEMDA5NUY4RDUgLyogU2FtcGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUU4MjczQTU1RkQwMDk1RjhENSAvKiBTYW1wbGVyLm1t
ICovOyB9OworCQkxQzVBQ0FFQjI3M0E1NjBEMDA5NUY4RDUgLyogVGV4dHVyZVZpZXcubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FFQTI3M0E1
NjBEMDA5NUY4RDUgLyogVGV4dHVyZVZpZXcubW0gKi87IH07CiAJCTFDQkFCMDkyMjcxOENDQTAw
MDYwODBCQiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JBQjA5MTI3MThDQ0EwMDA2MDgwQkIgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxQ0VCRDdFNzI3MTZBRkJBMDBBNTI1
NEQgLyogV2ViR1BVLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQ0VCRDdFNjI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQ0VCRDdGODI3MTZCMzQ0MDBBNTI1
NEQgLyogV0dTTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNFQkQ3RjcyNzE2QjM0NDAwQTUyNTREIC8qIFdHU0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFDRUJEODAzMjcxNkJGODIwMEE1MjU0RCAv
KiBXR1NMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDRUJEODAyMjcxNkJGODIwMEE1MjU0RCAvKiBXR1NMLmNwcCAqLzsgfTsKLQkJMUNFQkQ4MDky
NzE2QzMyNDAwQTUyNTREIC8qIFdlYkdQVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDgwODI3MTZDMzI0MDBBNTI1NEQgLyogV2ViR1BVLmNw
cCAqLzsgfTsKIAkJMUNFQkQ4MjYyNzE2Q0FDQzAwQTUyNTREIC8qIGxpYndnc2wuYSBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0YyMjcxNkIy
Q0MwMEE1MjU0RCAvKiBsaWJ3Z3NsLmEgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rp
b24gKi8KIApAQCAtMjgsMTAgKzUxLDU2IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0JCTFD
MkNFREU5MjcxRTgyODgwMEVEQzE2RiAvKiBXZWJHUFVPYmpDLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViR1BVT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMyQ0VE
RUIyNzFFODJDMzAwRURDMTZGIC8qIFdlYkdQVU9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
T2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzJDRURFRDI3MUU4QTczMDBF
REMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBNZXRhbC5mcmFtZXdv
cms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01ldGFsLmZyYW1ld29yazsgc291
cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCTFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0
YW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc3RhbmNlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzVBQ0E5NjI3M0E0MjZEMDA5NUY4RDUgLyogU3VyZmFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNUFDQTk3MjczQTQyNkQwMDk1RjhENSAvKiBTd2FwQ2hhaW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3dhcENoYWluLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQTk4MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQaXBl
bGluZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbmRlclBp
cGVsaW5lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0E5OTI3M0E0MjZE
MDA5NUY4RDUgLyogVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQTlBMjczQTQyNkQw
MDk1RjhENSAvKiBSZW5kZXJQYXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzVBQ0E5QjI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzVBQ0E5QzI3M0E0MjZEMDA5NUY4RDUgLyogUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNB
OUQyNzNBNDI2RDAwOTVGOEQ1IC8qIEJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1QUNBOUUyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNUFDQTlGMjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFF1ZXJ5U2V0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FBMDI3M0E0MjZEMDA5NUY4RDUgLyogSW5zdGFu
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zdGFuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBQTEyNzNBNDI2RDAwOTVGOEQ1IC8qIFN3YXBD
aGFpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN3YXBDaGFp
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBQTIyNzNBNDI2RDAwOTVG
OEQ1IC8qIENvbXB1dGVQaXBlbGluZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IENvbXB1dGVQaXBlbGluZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1QUNBQTMyNzNBNDI2RDAwOTVGOEQ1IC8qIERldmljZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERldmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1QUNBQTQyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBhc3NFbmNvZGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVyUGFzc0VuY29k
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUE1MjczQTQyNkQwMDk1
RjhENSAvKiBCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUE2MjczQTQyNkQwMDk1RjhE
NSAvKiBSZW5kZXJCdW5kbGVFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlckJ1bmRsZUVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1QUNBQTcyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBlbGluZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wdXRlUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1QUNBQTgyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQYXNzRW5j
b2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbXB1dGVQ
YXNzRW5jb2Rlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBQTkyNzNB
NDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBZGFwdGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVB
Q0FBQTI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXB1dGVQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzVBQ0FBQjI3M0E0MjZEMDA5NUY4RDUgLyogQ29tbWFuZEVuY29k
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb21tYW5kRW5j
b2Rlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBQUMyNzNBNDI2RDAw
OTVGOEQ1IC8qIFF1ZXJ5U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1
ZXJ5U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUFEMjczQTQyNkQw
MDk1RjhENSAvKiBRdWV1ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFF1ZXVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FBRTI3M0E0
MjZEMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbmRlckJ1bmRsZUVuY29kZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUFGMjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQaXBl
bGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJQaXBlbGluZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FCMDI3M0E0MjZEMDA5NUY4RDUg
LyogU2hhZGVyTW9kdWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2hhZGVyTW9kdWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FC
MTI3M0E0MjZEMDA5NUY4RDUgLyogVGV4dHVyZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFRleHR1cmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNUFDQUIyMjczQTQyNkQwMDk1RjhENSAvKiBBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1QUNBQjMyNzNBNDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdXJmYWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzVBQ0FEMjI3M0E0Qzg2MDA5NUY4RDUgLyogV2ViR1BVRXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVUV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FE
NTI3M0E0RDcwMDA5NUY4RDUgLyogQmluZEdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpbmRHcm91
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FEODI3M0E0REMxMDA5NUY4
RDUgLyogQmluZEdyb3VwTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpbmRHcm91cExheW91dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FEOTI3M0E0REU5MDA5NUY4RDUg
LyogQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQURBMjczQTRFNzEwMDk1RjhENSAvKiBQaXBl
bGluZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaXBlbGluZUxheW91dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FEQjI3M0E0RUI4MDA5NUY4RDUgLyogUmVuZGVyQnVu
ZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckJ1bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzVBQ0FEQzI3M0E0RUZDMDA5NUY4RDUgLyogU2FtcGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTYW1wbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQURE
MjczQTRGM0QwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0dXJl
Vmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FERTI3M0E1NUFGMDA5
NUY4RDUgLyogQmluZEdyb3VwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmluZEdyb3VwLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FFMDI3M0E1NUMxMDA5NUY4RDUg
LyogQmluZEdyb3VwTGF5b3V0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmluZEdyb3VwTGF5
b3V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FFMjI3M0E1NUNEMDA5
NUY4RDUgLyogQ29tbWFuZEJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbW1hbmRC
dWZmZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUU0MjczQTU1REQw
MDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBpcGVs
aW5lTGF5b3V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FFNjI3M0E1
NUVGMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVu
ZGVyQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FFODI3M0E1
NUZEMDA5NUY4RDUgLyogU2FtcGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUVBMjczQTU2MEQwMDk1RjhE
NSAvKiBUZXh0dXJlVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHR1cmVWaWV3Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0JBQjA5MTI3MThDQ0EwMDA2MDgwQkIg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTFD
QzBDOEM5MjczQTdEODkwMEQwQjQ4MSAvKiBXZWJHUFUubW9kdWxlbWFwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9kdWxlLW1h
cCI7IHBhdGggPSBXZWJHUFUubW9kdWxlbWFwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQ0MwQzhDQTI3M0E4MTkxMDBEMEI0ODEgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0VC
RDdFMzI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYkdQVS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTFDRUJEN0U2MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDRUJEN0YyMjcxNkIyQ0MwMEE1MjU0RCAvKiBsaWJ3Z3NsLmEgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IGxpYndnc2wuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKQEAgLTQ0LDcgKzExMyw2IEBACiAJCTFDRUJEODAyMjcxNkJGODIwMEE1MjU0RCAvKiBXR1NM
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdHU0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0VCRDgwNDI3MTZCRkFCMDBBNTI1NEQgLyogY29uZmlnLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0VCRDgwNzI3MTZD
MkMwMDBBNTI1NEQgLyogQVNULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFTVC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQ0VCRDgwODI3MTZDMzI0MDBBNTI1NEQgLyogV2ViR1BVLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDRUJEODBBMjcxNkMzNkMwMEE1MjU0RCAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Y29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUJEODBCMjcxNkMzNzkw
MEE1MjU0RCAvKiBFeHBvcnRNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwb3J0TWFjcm9zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUJEODBEMjcxNkMzRDgwMEE1MjU0RCAv
KiBTaGFkZXJNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZGVyTW9kdWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDAsMTMgKzE2OCw1NyBAQAogCQkxQ0VCRDdFNTI3MTZB
RkJBMDBBNTI1NEQgLyogV2ViR1BVICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzVBQ0FCMjI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5oICovLAor
CQkJCTFDNUFDQUE5MjczQTQyNkQwMDk1RjhENSAvKiBBZGFwdGVyLm1tICovLAorCQkJCTFDNUFD
QUQ1MjczQTRENzAwMDk1RjhENSAvKiBCaW5kR3JvdXAuaCAqLywKKwkJCQkxQzVBQ0FERTI3M0E1
NUFGMDA5NUY4RDUgLyogQmluZEdyb3VwLm1tICovLAorCQkJCTFDNUFDQUQ4MjczQTREQzEwMDk1
RjhENSAvKiBCaW5kR3JvdXBMYXlvdXQuaCAqLywKKwkJCQkxQzVBQ0FFMDI3M0E1NUMxMDA5NUY4
RDUgLyogQmluZEdyb3VwTGF5b3V0Lm1tICovLAorCQkJCTFDNUFDQUE1MjczQTQyNkQwMDk1RjhE
NSAvKiBCdWZmZXIuaCAqLywKKwkJCQkxQzVBQ0E5RDI3M0E0MjZEMDA5NUY4RDUgLyogQnVmZmVy
Lm1tICovLAorCQkJCTFDNUFDQUQ5MjczQTRERTkwMDk1RjhENSAvKiBDb21tYW5kQnVmZmVyLmgg
Ki8sCisJCQkJMUM1QUNBRTIyNzNBNTVDRDAwOTVGOEQ1IC8qIENvbW1hbmRCdWZmZXIubW0gKi8s
CisJCQkJMUM1QUNBOUUyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbW1hbmRFbmNvZGVyLmggKi8sCisJ
CQkJMUM1QUNBQUIyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbW1hbmRFbmNvZGVyLm1tICovLAorCQkJ
CTFDNUFDQUFBMjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGFzc0VuY29kZXIuaCAqLywKKwkJ
CQkxQzVBQ0FBODI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBhc3NFbmNvZGVyLm1tICovLAor
CQkJCTFDNUFDQUE3MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlwZWxpbmUuaCAqLywKKwkJ
CQkxQzVBQ0FBMjI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBpcGVsaW5lLm1tICovLAogCQkJ
CTFDRUJEODBBMjcxNkMzNkMwMEE1MjU0RCAvKiBjb25maWcuaCAqLywKKwkJCQkxQzVBQ0E5QjI3
M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmggKi8sCisJCQkJMUM1QUNBQTMyNzNBNDI2RDAwOTVG
OEQ1IC8qIERldmljZS5tbSAqLywKIAkJCQkxQ0VCRDgwQjI3MTZDMzc5MDBBNTI1NEQgLyogRXhw
b3J0TWFjcm9zLmggKi8sCisJCQkJMUM1QUNBQTAyNzNBNDI2RDAwOTVGOEQ1IC8qIEluc3RhbmNl
LmggKi8sCisJCQkJMUM1QUNBOTIyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tICovLAor
CQkJCTFDNUFDQURBMjczQTRFNzEwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5oICovLAorCQkJ
CTFDNUFDQUU0MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSAqLywKKwkJCQkx
QzVBQ0FBQzI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQuaCAqLywKKwkJCQkxQzVBQ0E5RjI3
M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0gKi8sCisJCQkJMUM1QUNBOUMyNzNBNDI2RDAw
OTVGOEQ1IC8qIFF1ZXVlLmggKi8sCisJCQkJMUM1QUNBQUQyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1
ZXVlLm1tICovLAorCQkJCTFDNUFDQURCMjczQTRFQjgwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGUu
aCAqLywKKwkJCQkxQzVBQ0FFNjI3M0E1NUVGMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlLm1tICov
LAorCQkJCTFDNUFDQUE2MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGVFbmNvZGVyLmgg
Ki8sCisJCQkJMUM1QUNBQUUyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZUVuY29kZXIu
bW0gKi8sCisJCQkJMUM1QUNBOUEyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBhc3NFbmNvZGVy
LmggKi8sCisJCQkJMUM1QUNBQTQyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBhc3NFbmNvZGVy
Lm1tICovLAorCQkJCTFDNUFDQUFGMjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQaXBlbGluZS5o
ICovLAorCQkJCTFDNUFDQTk4MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQaXBlbGluZS5tbSAq
LywKKwkJCQkxQzVBQ0FEQzI3M0E0RUZDMDA5NUY4RDUgLyogU2FtcGxlci5oICovLAorCQkJCTFD
NUFDQUU4MjczQTU1RkQwMDk1RjhENSAvKiBTYW1wbGVyLm1tICovLAogCQkJCTFDRUJEODBEMjcx
NkMzRDgwMEE1MjU0RCAvKiBTaGFkZXJNb2R1bGUuaCAqLywKLQkJCQkxQ0VCRDgwODI3MTZDMzI0
MDBBNTI1NEQgLyogV2ViR1BVLmNwcCAqLywKKwkJCQkxQzVBQ0FCMDI3M0E0MjZEMDA5NUY4RDUg
LyogU2hhZGVyTW9kdWxlLm1tICovLAorCQkJCTFDNUFDQTk2MjczQTQyNkQwMDk1RjhENSAvKiBT
dXJmYWNlLmggKi8sCisJCQkJMUM1QUNBQjMyNzNBNDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UubW0g
Ki8sCisJCQkJMUM1QUNBOTcyNzNBNDI2RDAwOTVGOEQ1IC8qIFN3YXBDaGFpbi5oICovLAorCQkJ
CTFDNUFDQUExMjczQTQyNkQwMDk1RjhENSAvKiBTd2FwQ2hhaW4ubW0gKi8sCisJCQkJMUM1QUNB
OTkyNzNBNDI2RDAwOTVGOEQ1IC8qIFRleHR1cmUuaCAqLywKKwkJCQkxQzVBQ0FCMTI3M0E0MjZE
MDA5NUY4RDUgLyogVGV4dHVyZS5tbSAqLywKKwkJCQkxQzVBQ0FERDI3M0E0RjNEMDA5NUY4RDUg
LyogVGV4dHVyZVZpZXcuaCAqLywKKwkJCQkxQzVBQ0FFQTI3M0E1NjBEMDA5NUY4RDUgLyogVGV4
dHVyZVZpZXcubW0gKi8sCiAJCQkJMUNFQkQ3RTYyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQVS5o
ICovLAotCQkJCTFDMkNFREVCMjcxRTgyQzMwMEVEQzE2RiAvKiBXZWJHUFVPYmpDLmggKi8sCi0J
CQkJMUMyQ0VERTkyNzFFODI4ODAwRURDMTZGIC8qIFdlYkdQVU9iakMubW0gKi8sCisJCQkJMUND
MEM4QzkyNzNBN0Q4OTAwRDBCNDgxIC8qIFdlYkdQVS5tb2R1bGVtYXAgKi8sCisJCQkJMUM1QUNB
RDIyNzNBNEM4NjAwOTVGOEQ1IC8qIFdlYkdQVUV4dC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBX
ZWJHUFU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTI4LDYgKzI0MCw3IEBACiAJ
CQkJMUNFQkQ3RkEyNzE2QjNENTAwQTUyNTREIC8qIEJhc2UueGNjb25maWcgKi8sCiAJCQkJMUNF
QkQ3RkIyNzE2QjVCNDAwQTUyNTREIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKIAkJCQkx
Q0VCRDgwMTI3MTZCOUFCMDBBNTI1NEQgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLywKKwkJCQkx
Q0MwQzhDQTI3M0E4MTkxMDBEMEI0ODEgLyogVmVyc2lvbi54Y2NvbmZpZyAqLywKIAkJCQkxQ0VC
RDdGQzI3MTZCNjQ0MDBBNTI1NEQgLyogV2ViR1BVLnhjY29uZmlnICovLAogCQkJCTFDRUJEN0ZE
MjcxNkI2NEYwMEE1MjU0RCAvKiBXR1NMLnhjY29uZmlnICovLAogCQkJKTsKQEAgLTE1NCw3ICsy
NjcsOSBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMUM1QUNBRDcyNzNBNEQ3MDAwOTVG
OEQ1IC8qIEJpbmRHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFQkQ3RTcyNzE2QUZCQTAw
QTUyNTREIC8qIFdlYkdQVS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM1QUNBRDMyNzNBNEM4NjAw
OTVGOEQ1IC8qIFdlYkdQVUV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTYsOCArMzcxLDI5IEBA
CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQkxQ0VCRDgwOTI3MTZDMzI0MDBBNTI1NEQgLyog
V2ViR1BVLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDMkNFREVBMjcxRTgyODgwMEVEQzE2RiAv
KiBXZWJHUFVPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzcyNzNBNDI2RDAwOTVG
OEQ1IC8qIEFkYXB0ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzVBQ0FERjI3M0E1NUFGMDA5
NUY4RDUgLyogQmluZEdyb3VwLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBRTEyNzNBNTVD
MTAwOTVGOEQ1IC8qIEJpbmRHcm91cExheW91dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFD
QUJCMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzVB
Q0FFMzI3M0E1NUNEMDA5NUY4RDUgLyogQ29tbWFuZEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTFDNUFDQUM5MjczQTQyNkUwMDk1RjhENSAvKiBDb21tYW5kRW5jb2Rlci5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTFDNUFDQUM2MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGFzc0VuY29k
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzVBQ0FDMDI3M0E0MjZEMDA5NUY4RDUgLyogQ29t
cHV0ZVBpcGVsaW5lLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzEyNzNBNDI2RDAwOTVG
OEQ1IC8qIERldmljZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQTk0MjczQTQxQzIwMDk1
RjhENSAvKiBJbnN0YW5jZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUU1MjczQTU1REQw
MDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUJE
MjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFD
QUNCMjczQTQyNkUwMDk1RjhENSAvKiBRdWV1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFD
QUU3MjczQTU1RUYwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGUubW0gaW4gU291cmNlcyAqLywKKwkJ
CQkxQzVBQ0FDQzI3M0E0MjZFMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTFDNUFDQUMyMjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQYXNzRW5j
b2Rlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUI2MjczQTQyNkQwMDk1RjhENSAvKiBS
ZW5kZXJQaXBlbGluZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUU5MjczQTU1RkQwMDk1
RjhENSAvKiBTYW1wbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQ0UyNzNBNDI2RTAw
OTVGOEQ1IC8qIFNoYWRlck1vZHVsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUQxMjcz
QTQyNkUwMDk1RjhENSAvKiBTdXJmYWNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQkYy
NzNBNDI2RDAwOTVGOEQ1IC8qIFN3YXBDaGFpbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFD
QUNGMjczQTQyNkUwMDk1RjhENSAvKiBUZXh0dXJlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1
QUNBRUIyNzNBNTYwRDAwOTVGOEQ1IC8qIFRleHR1cmVWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmggYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9BZGFwdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWEyZDZiMThjNGUyNTJkM2ZmMmYxM2RjOWY4
MjQ2MDY4YWRhZWI3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Fk
YXB0ZXIuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIldlYkdQVS5oIgorI2ltcG9y
dCA8ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIERldmljZTsKKwor
Y2xhc3MgQWRhcHRlciB7CitwdWJsaWM6CisgICAgYm9vbCBnZXRMaW1pdHMoV0dQVVN1cHBvcnRl
ZExpbWl0cyAqKTsKKyAgICB2b2lkIGdldFByb3BlcnRpZXMoV0dQVUFkYXB0ZXJQcm9wZXJ0aWVz
ICopOworICAgIGJvb2wgaGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpOworICAgIHZvaWQgcmVx
dWVzdERldmljZShXR1BVRGV2aWNlRGVzY3JpcHRvciBjb25zdCAqLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIERldmljZSYmLCBjaGFyIGNvbnN0ICopPiYmIGNh
bGxiYWNrKTsKK307CisKK30KKworc3RydWN0IFdHUFVBZGFwdGVySW1wbCB7CisgICAgV2ViR1BV
OjpBZGFwdGVyIGFkYXB0ZXI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
QWRhcHRlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTAwZDM4MmE3M2JlYzNkYjM2OTI5NTRlZmUzYmNmYjM5YWVkMzUzZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KQEAgLTAsMCArMSw4NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiQWRhcHRlci5oIgorCisjaW1wb3J0ICJEZXZpY2UuaCIKKyNpbXBvcnQg
IldlYkdQVUV4dC5oIgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2Ug
V2ViR1BVIHsKKworYm9vbCBBZGFwdGVyOjpnZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyAq
IGxpbWl0cykKK3sKKyAgICBVTlVTRURfUEFSQU0obGltaXRzKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgQWRhcHRlcjo6Z2V0UHJvcGVydGllcyhXR1BVQWRhcHRlclByb3BlcnRpZXMg
KiBwcm9wZXJ0aWVzKQoreworICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0aWVzKTsKK30KKworYm9v
bCBBZGFwdGVyOjpoYXNGZWF0dXJlKFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKQoreworICAgIFVO
VVNFRF9QQVJBTShmZWF0dXJlKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWRhcHRl
cjo6cmVxdWVzdERldmljZShXR1BVRGV2aWNlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3Is
IHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgRGV2aWNlJiYsIGNo
YXIgY29uc3QgKik+JiYgY2FsbGJhY2spCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3Ip
OworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQ
VQorCit2b2lkIHdncHVBZGFwdGVyUmVsZWFzZShXR1BVQWRhcHRlciBhZGFwdGVyKQoreworICAg
IGRlbGV0ZSBhZGFwdGVyOworfQorCitib29sIHdncHVBZGFwdGVyR2V0TGltaXRzKFdHUFVBZGFw
dGVyIGFkYXB0ZXIsIFdHUFVTdXBwb3J0ZWRMaW1pdHMgKiBsaW1pdHMpCit7CisgICAgcmV0dXJu
IGFkYXB0ZXItPmFkYXB0ZXIuZ2V0TGltaXRzKGxpbWl0cyk7Cit9CisKK3ZvaWQgd2dwdUFkYXB0
ZXJHZXRQcm9wZXJ0aWVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVBZGFwdGVyUHJvcGVydGll
cyAqIHByb3BlcnRpZXMpCit7CisgICAgYWRhcHRlci0+YWRhcHRlci5nZXRQcm9wZXJ0aWVzKHBy
b3BlcnRpZXMpOworfQorCitib29sIHdncHVBZGFwdGVySGFzRmVhdHVyZShXR1BVQWRhcHRlciBh
ZGFwdGVyLCBXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKK3sKKyAgICByZXR1cm4gYWRhcHRlci0+
YWRhcHRlci5oYXNGZWF0dXJlKGZlYXR1cmUpOworfQorCit2b2lkIHdncHVBZGFwdGVyUmVxdWVz
dERldmljZShXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVRGV2aWNlRGVzY3JpcHRvciBjb25zdCAq
IGRlc2NyaXB0b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKiB1
c2VyZGF0YSkKK3sKKyAgICBhZGFwdGVyLT5hZGFwdGVyLnJlcXVlc3REZXZpY2UoZGVzY3JpcHRv
ciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0YXR1cywg
V2ViR1BVOjpEZXZpY2UmJiBkZXZpY2UsIGNoYXIgY29uc3QgKiBtZXNzYWdlKSB7CisgICAgICAg
IGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVEZXZpY2VJbXBsIHsgV1RGTW92ZShkZXZpY2UpIH0s
IG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0JpbmRHcm91cC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzM0NWYzNWRmNmNiMDBlYTViNjhkYjZiZGVkYmEwMWE4ZGFlNjk2YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCkBAIC0wLDAg
KzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJHUFUgewor
CitjbGFzcyBCaW5kR3JvdXAgeworCit9OworCit9CisKK3N0cnVjdCBXR1BVQmluZEdyb3VwSW1w
bCB7CisgICAgV2ViR1BVOjpCaW5kR3JvdXAgYmluZEdyb3VwOworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Jp
bmRHcm91cC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmRiZTBmZTE1NjcwNDExOWZhMzI3OTYyNjc3Y2RkZjEz
MzI1MGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3Vw
Lm1tCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkJpbmRHcm91cC5oIgorCisj
aW1wb3J0ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK30KKwordm9pZCB3
Z3B1QmluZEdyb3VwUmVsZWFzZShXR1BVQmluZEdyb3VwIGJpbmRHcm91cCkKK3sKKyAgICBkZWxl
dGUgYmluZEdyb3VwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdy
b3VwTGF5b3V0LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMGZlMjg1ODI5MGFiMTVjNjM1NDg4ZDFiOWMwYjk1ZWY4NTdiNWZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0LmgKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7
CisKK2NsYXNzIEJpbmRHcm91cExheW91dCB7CisKK307CisKK30KKworc3RydWN0IFdHUFVCaW5k
R3JvdXBMYXlvdXRJbXBsIHsKKyAgICBXZWJHUFU6OkJpbmRHcm91cExheW91dCBiaW5kR3JvdXBM
YXlvdXQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5
b3V0Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY1NGFiMmQ2ODRjMDE2YWNjZTQ0NGEwOGNlMGI1ZTlhZjY5YmY3MWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQmluZEdyb3VwTGF5b3V0LmgiCisKKyNpbXBvcnQg
IldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworfQorCit2b2lkIHdncHVCaW5k
R3JvdXBMYXlvdXRSZWxlYXNlKFdHUFVCaW5kR3JvdXBMYXlvdXQgYmluZEdyb3VwTGF5b3V0KQor
eworICAgIGRlbGV0ZSBiaW5kR3JvdXBMYXlvdXQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9CdWZmZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4MjQxNDUzYjVlZjNlYjE1M2JhMWZjOWJiNWU5ZTEyODYyYTc1MjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbXBvcnQgIldlYkdQVS5oIgorI2ltcG9ydCA8ZnVuY3Rpb25hbD4KKworbmFtZXNw
YWNlIFdlYkdQVSB7CisKK2NsYXNzIEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdm9pZCBkZXN0cm95
KCk7CisgICAgdm9pZCBjb25zdCAqIGdldENvbnN0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwg
c2l6ZV90KTsKKyAgICB2b2lkICogZ2V0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90
KTsKKyAgICB2b2lkIG1hcEFzeW5jKFdHUFVNYXBNb2RlRmxhZ3MsIHNpemVfdCBvZmZzZXQsIHNp
emVfdCwgc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1cyk+JiYgY2Fs
bGJhY2spOworICAgIHZvaWQgdW5tYXAoKTsKK307CisKK30KKworc3RydWN0IFdHUFVCdWZmZXJJ
bXBsIHsKKyAgICBXZWJHUFU6OkJ1ZmZlciBidWZmZXI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhM2M0NTIyMTQyMzQ0N2JlMjI1NTk4Yzc0ZGRkMjQ0MDY2MTQwNWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KQEAgLTAsMCAr
MSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQnVmZmVyLmgiCisKKyNpbXBvcnQgIldlYkdQVUV4
dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKwordm9pZCBCdWZmZXI6OmRlc3Ryb3koKQorewor
fQorCit2b2lkIGNvbnN0ICogQnVmZmVyOjpnZXRDb25zdE1hcHBlZFJhbmdlKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBzaXplKQoreworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNF
RF9QQVJBTShzaXplKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCAqIEJ1ZmZlcjo6
Z2V0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCit7CisgICAgVU5VU0VE
X1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCit2b2lkIEJ1ZmZlcjo6bWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBz
aXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVCdWZmZXJN
YXBBc3luY1N0YXR1cyk+JiYgY2FsbGJhY2spCit7CisgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwor
ICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBV
TlVTRURfUEFSQU0oY2FsbGJhY2spOworfQorCit2b2lkIEJ1ZmZlcjo6dW5tYXAoKQoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1QnVmZmVyUmVsZWFzZShXR1BVQnVm
ZmVyIGJ1ZmZlcikKK3sKKyAgICBkZWxldGUgYnVmZmVyOworfQorCit2b2lkIHdncHVCdWZmZXJE
ZXN0cm95KFdHUFVCdWZmZXIgYnVmZmVyKQoreworICAgIGJ1ZmZlci0+YnVmZmVyLmRlc3Ryb3ko
KTsKK30KKwordm9pZCBjb25zdCAqIHdncHVCdWZmZXJHZXRDb25zdE1hcHBlZFJhbmdlKFdHUFVC
dWZmZXIgYnVmZmVyLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4g
YnVmZmVyLT5idWZmZXIuZ2V0Q29uc3RNYXBwZWRSYW5nZShvZmZzZXQsIHNpemUpOworfQorCit2
b2lkICogd2dwdUJ1ZmZlckdldE1hcHBlZFJhbmdlKFdHUFVCdWZmZXIgYnVmZmVyLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gYnVmZmVyLT5idWZmZXIuZ2V0TWFw
cGVkUmFuZ2Uob2Zmc2V0LCBzaXplKTsKK30KKwordm9pZCB3Z3B1QnVmZmVyTWFwQXN5bmMoV0dQ
VUJ1ZmZlciBidWZmZXIsIFdHUFVNYXBNb2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IHNpemUsIFdHUFVCdWZmZXJNYXBDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVzZXJkYXRh
KQoreworICAgIGJ1ZmZlci0+YnVmZmVyLm1hcEFzeW5jKG1vZGUsIG9mZnNldCwgc2l6ZSwgW2Nh
bGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1cyBzdGF0dXMpIHsKKyAg
ICAgICAgY2FsbGJhY2soc3RhdHVzLCB1c2VyZGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgd2dw
dUJ1ZmZlclVubWFwKFdHUFVCdWZmZXIgYnVmZmVyKQoreworICAgIGJ1ZmZlci0+YnVmZmVyLnVu
bWFwKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVy
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M1
YzlhNjMwNTg0ZWUxYTQ2NTZkNjNkNTk0OGJjNDlhZjE0NzQ3MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuaApAQCAtMCwwICsxLDQwIEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbXBvcnQgIldlYkdQVS5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQ29t
bWFuZEJ1ZmZlciB7CisKK307CisKK30KKworc3RydWN0IFdHUFVDb21tYW5kQnVmZmVySW1wbCB7
CisgICAgV2ViR1BVOjpDb21tYW5kQnVmZmVyIGNvbW1hbmRCdWZmZXI7Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbSBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRCdWZmZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgwNTY4NDNhZjBiNDNkNDRkNmMz
NGI4OTZjMDM0NWFhNTUyN2RlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRCdWZmZXIubW0KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
Q29tbWFuZEJ1ZmZlci5oIgorCisjaW1wb3J0ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdl
YkdQVSB7CisKK30KKwordm9pZCB3Z3B1Q29tbWFuZEJ1ZmZlclJlbGVhc2UoV0dQVUNvbW1hbmRC
dWZmZXIgY29tbWFuZEJ1ZmZlcikKK3sKKyAgICBkZWxldGUgY29tbWFuZEJ1ZmZlcjsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3M2E4MGFiMTExZGNj
MmFjNTU3YmI2OTE0ZTBkNDIzOGZhOTg3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9y
dCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBCdWZmZXI7CitjbGFz
cyBDb21tYW5kQnVmZmVyOworY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOworY2xhc3MgUXVlcnlT
ZXQ7CitjbGFzcyBSZW5kZXJQYXNzRW5jb2RlcjsKKworY2xhc3MgQ29tbWFuZEVuY29kZXIgewor
cHVibGljOgorICAgIENvbXB1dGVQYXNzRW5jb2RlciBiZWdpbkNvbXB1dGVQYXNzKFdHUFVDb21w
dXRlUGFzc0Rlc2NyaXB0b3IgY29uc3QgKik7CisgICAgUmVuZGVyUGFzc0VuY29kZXIgYmVnaW5S
ZW5kZXJQYXNzKFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICB2b2lkIGNv
cHlCdWZmZXJUb0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zm
c2V0LCBjb25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNl
dCwgdWludDY0X3Qgc2l6ZSk7CisgICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKFdHUFVJbWFn
ZUNvcHlCdWZmZXIgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlUZXh0dXJlIGNvbnN0ICog
ZGVzdGluYXRpb24sIFdHUFVFeHRlbnQzRCBjb25zdCAqIGNvcHlTaXplKTsKKyAgICB2b2lkIGNv
cHlUZXh0dXJlVG9CdWZmZXIoV0dQVUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBzb3VyY2UsIFdH
UFVJbWFnZUNvcHlCdWZmZXIgY29uc3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNvbnN0
ICogY29weVNpemUpOworICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUoV0dQVUltYWdlQ29w
eVRleHR1cmUgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlUZXh0dXJlIGNvbnN0ICogZGVz
dGluYXRpb24sIFdHUFVFeHRlbnQzRCBjb25zdCAqIGNvcHlTaXplKTsKKyAgICBDb21tYW5kQnVm
ZmVyIGZpbmlzaChXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgY29uc3QgKik7CisgICAgdm9p
ZCBpbnNlcnREZWJ1Z01hcmtlcihjaGFyIGNvbnN0ICogbWFya2VyTGFiZWwpOworICAgIHZvaWQg
cG9wRGVidWdHcm91cCgpOworICAgIHZvaWQgcHVzaERlYnVnR3JvdXAoY2hhciBjb25zdCAqIGdy
b3VwTGFiZWwpOworICAgIHZvaWQgcmVzb2x2ZVF1ZXJ5U2V0KGNvbnN0IFF1ZXJ5U2V0JiwgdWlu
dDMyX3QgZmlyc3RRdWVyeSwgdWludDMyX3QgcXVlcnlDb3VudCwgY29uc3QgQnVmZmVyJiBkZXN0
aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PZmZzZXQpOworICAgIHZvaWQgd3JpdGVUaW1l
c3RhbXAoY29uc3QgUXVlcnlTZXQmLCB1aW50MzJfdCBxdWVyeUluZGV4KTsKK307CisKK30KKwor
c3RydWN0IFdHUFVDb21tYW5kRW5jb2RlckltcGwgeworICAgIFdlYkdQVTo6Q29tbWFuZEVuY29k
ZXIgY29tbWFuZEVuY29kZXI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tbWFuZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xM2FiZmU4ODA2OTA4M2EyNDVjOGViMDk0NjNiNDczODI5ZWJkMzY1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0K
QEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvbW1hbmRFbmNvZGVyLmgiCisK
KyNpbXBvcnQgIkJ1ZmZlci5oIgorI2ltcG9ydCAiQ29tbWFuZEJ1ZmZlci5oIgorI2ltcG9ydCAi
Q29tcHV0ZVBhc3NFbmNvZGVyLmgiCisjaW1wb3J0ICJRdWVyeVNldC5oIgorI2ltcG9ydCAiUmVu
ZGVyUGFzc0VuY29kZXIuaCIKKyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2Vi
R1BVIHsKKworQ29tcHV0ZVBhc3NFbmNvZGVyIENvbW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1dGVQ
YXNzKFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAg
IFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4geyB9OworfQorCitSZW5kZXJQ
YXNzRW5jb2RlciBDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQYXNzKFdHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlC
dWZmZXJUb0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0
LCBjb25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwg
dWludDY0X3Qgc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKKyAgICBVTlVTRURf
UEFSQU0oc291cmNlT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOworICAg
IFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUp
OworfQorCit2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKFdHUFVJbWFn
ZUNvcHlCdWZmZXIgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlUZXh0dXJlIGNvbnN0ICog
ZGVzdGluYXRpb24sIFdHUFVFeHRlbnQzRCBjb25zdCAqIGNvcHlTaXplKQoreworICAgIFVOVVNF
RF9QQVJBTShzb3VyY2UpOworICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKGNvcHlTaXplKTsKK30KKwordm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1
cmVUb0J1ZmZlcihXR1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIHNvdXJjZSwgV0dQVUltYWdl
Q29weUJ1ZmZlciBjb25zdCAqIGRlc3RpbmF0aW9uLCBXR1BVRXh0ZW50M0QgY29uc3QgKiBjb3B5
U2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKKyAgICBVTlVTRURfUEFSQU0oZGVz
dGluYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShjb3B5U2l6ZSk7Cit9CisKK3ZvaWQgQ29tbWFu
ZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKFdHUFVJbWFnZUNvcHlUZXh0dXJlIGNvbnN0
ICogc291cmNlLCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIGRlc3RpbmF0aW9uLCBXR1BV
RXh0ZW50M0QgY29uc3QgKiBjb3B5U2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc291cmNlKTsK
KyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShjb3B5U2l6
ZSk7Cit9CisKK0NvbW1hbmRCdWZmZXIgQ29tbWFuZEVuY29kZXI6OmZpbmlzaChXR1BVQ29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJB
TShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIENvbW1hbmRFbmNvZGVy
OjppbnNlcnREZWJ1Z01hcmtlcihjaGFyIGNvbnN0ICogbWFya2VyTGFiZWwpCit7CisgICAgVU5V
U0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKK30KKwordm9pZCBDb21tYW5kRW5jb2Rlcjo6cG9wRGVi
dWdHcm91cCgpCit7Cit9CisKK3ZvaWQgQ29tbWFuZEVuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKGNo
YXIgY29uc3QgKiBncm91cExhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsK
K30KKwordm9pZCBDb21tYW5kRW5jb2Rlcjo6cmVzb2x2ZVF1ZXJ5U2V0KGNvbnN0IFF1ZXJ5U2V0
JiBxdWVyeVNldCwgdWludDMyX3QgZmlyc3RRdWVyeSwgdWludDMyX3QgcXVlcnlDb3VudCwgY29u
c3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PZmZzZXQpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsKKyAgICBVTlVTRURfUEFSQU0oZmlyc3RRdWVyeSk7
CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5Q291bnQpOworICAgIFVOVVNFRF9QQVJBTShkZXN0aW5h
dGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uT2Zmc2V0KTsKK30KKwordm9pZCBD
b21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1
aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7CisgICAg
VU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwor
dm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJSZWxlYXNlKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5k
RW5jb2RlcikKK3sKKyAgICBkZWxldGUgY29tbWFuZEVuY29kZXI7Cit9CisKK1dHUFVDb21wdXRl
UGFzc0VuY29kZXIgd2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5Db21wdXRlUGFzcyhXR1BVQ29tbWFu
ZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IgY29uc3Qg
KiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVUNvbXB1dGVQYXNzRW5jb2Rlcklt
cGwgeyBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcyhkZXNj
cmlwdG9yKSB9OworfQorCitXR1BVUmVuZGVyUGFzc0VuY29kZXIgd2dwdUNvbW1hbmRFbmNvZGVy
QmVnaW5SZW5kZXJQYXNzKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVVJl
bmRlclBhc3NEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3
IFdHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwgeyBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29k
ZXIuYmVnaW5SZW5kZXJQYXNzKGRlc2NyaXB0b3IpIH07Cit9CisKK3ZvaWQgd2dwdUNvbW1hbmRF
bmNvZGVyQ29weUJ1ZmZlclRvQnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2Rl
ciwgV0dQVUJ1ZmZlciBzb3VyY2UsIHVpbnQ2NF90IHNvdXJjZU9mZnNldCwgV0dQVUJ1ZmZlciBk
ZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PZmZzZXQsIHVpbnQ2NF90IHNpemUpCit7
CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihz
b3VyY2UtPmJ1ZmZlciwgc291cmNlT2Zmc2V0LCBkZXN0aW5hdGlvbi0+YnVmZmVyLCBkZXN0aW5h
dGlvbk9mZnNldCwgc2l6ZSk7Cit9CisKK3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZl
clRvVGV4dHVyZShXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVJbWFnZUNv
cHlCdWZmZXIgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlUZXh0dXJlIGNvbnN0ICogZGVz
dGluYXRpb24sIFdHUFVFeHRlbnQzRCBjb25zdCAqIGNvcHlTaXplKQoreworICAgIGNvbW1hbmRF
bmNvZGVyLT5jb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGNvcHlTaXplKTsKK30KKwordm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVy
ZVRvQnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUltYWdlQ29w
eVRleHR1cmUgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlCdWZmZXIgY29uc3QgKiBkZXN0
aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNvbnN0ICogY29weVNpemUpCit7CisgICAgY29tbWFuZEVu
Y29kZXItPmNvbW1hbmRFbmNvZGVyLmNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5h
dGlvbiwgY29weVNpemUpOworfQorCit2b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJl
VG9UZXh0dXJlKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUltYWdlQ29w
eVRleHR1cmUgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlUZXh0dXJlIGNvbnN0ICogZGVz
dGluYXRpb24sIFdHUFVFeHRlbnQzRCBjb25zdCAqIGNvcHlTaXplKQoreworICAgIGNvbW1hbmRF
bmNvZGVyLT5jb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBjb3B5U2l6ZSk7Cit9CisKK1dHUFVDb21tYW5kQnVmZmVyIHdncHVDb21tYW5kRW5j
b2RlckZpbmlzaChXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVDb21tYW5k
QnVmZmVyRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBX
R1BVQ29tbWFuZEJ1ZmZlckltcGwgeyBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuZmlu
aXNoKGRlc2NyaXB0b3IpIH07Cit9CisKK3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVi
dWdNYXJrZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjaGFyIGNvbnN0ICog
bWFya2VyTGFiZWwpCit7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLmluc2Vy
dERlYnVnTWFya2VyKG1hcmtlckxhYmVsKTsKK30KKwordm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJQ
b3BEZWJ1Z0dyb3VwKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlcikKK3sKKyAgICBj
b21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIucG9wRGVidWdHcm91cCgpOworfQorCit2b2lk
IHdncHVDb21tYW5kRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKFdHUFVDb21tYW5kRW5jb2RlciBjb21t
YW5kRW5jb2RlciwgY2hhciBjb25zdCAqIGdyb3VwTGFiZWwpCit7CisgICAgY29tbWFuZEVuY29k
ZXItPmNvbW1hbmRFbmNvZGVyLnB1c2hEZWJ1Z0dyb3VwKGdyb3VwTGFiZWwpOworfQorCit2b2lk
IHdncHVDb21tYW5kRW5jb2RlclJlc29sdmVRdWVyeVNldChXR1BVQ29tbWFuZEVuY29kZXIgY29t
bWFuZEVuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNldCwgdWludDMyX3QgZmlyc3RRdWVyeSwg
dWludDMyX3QgcXVlcnlDb3VudCwgV0dQVUJ1ZmZlciBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVz
dGluYXRpb25PZmZzZXQpCit7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLnJl
c29sdmVRdWVyeVNldChxdWVyeVNldC0+cXVlcnlTZXQsIGZpcnN0UXVlcnksIHF1ZXJ5Q291bnQs
IGRlc3RpbmF0aW9uLT5idWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0KTsKK30KKwordm9pZCB3Z3B1
Q29tbWFuZEVuY29kZXJXcml0ZVRpbWVzdGFtcChXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVu
Y29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNldCwgdWludDMyX3QgcXVlcnlJbmRleCkKK3sKKyAg
ICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIud3JpdGVUaW1lc3RhbXAocXVlcnlTZXQt
PnF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRl
UGFzc0VuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTM4MjJiN2EyODY1OTY1ZmM4NTg3NjBhNDg5OGNh
N2ZiNzA0YjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0
ZVBhc3NFbmNvZGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIK
KworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIEJpbmRHcm91cDsKK2NsYXNzIEJ1ZmZlcjsK
K2NsYXNzIENvbXB1dGVQaXBlbGluZTsKK2NsYXNzIFF1ZXJ5U2V0OworCitjbGFzcyBDb21wdXRl
UGFzc0VuY29kZXIgeworcHVibGljOgorICAgIHZvaWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NR
dWVyeShjb25zdCBRdWVyeVNldCYsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpOworICAgIHZvaWQgZGlz
cGF0Y2godWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3Qgeik7CisgICAgdm9pZCBkaXNw
YXRjaEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGly
ZWN0T2Zmc2V0KTsKKyAgICB2b2lkIGVuZFBhc3MoKTsKKyAgICB2b2lkIGVuZFBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KCk7CisgICAgdm9pZCBpbnNlcnREZWJ1Z01hcmtlcihjaGFyIGNvbnN0ICog
bWFya2VyTGFiZWwpOworICAgIHZvaWQgcG9wRGVidWdHcm91cCgpOworICAgIHZvaWQgcHVzaERl
YnVnR3JvdXAoY2hhciBjb25zdCAqIGdyb3VwTGFiZWwpOworICAgIHZvaWQgc2V0QmluZEdyb3Vw
KHVpbnQzMl90IGdyb3VwSW5kZXgsIGNvbnN0IEJpbmRHcm91cCYsIHVpbnQzMl90IGR5bmFtaWNP
ZmZzZXRDb3VudCwgdWludDMyX3QgY29uc3QgKiBkeW5hbWljT2Zmc2V0cyk7CisgICAgdm9pZCBz
ZXRQaXBlbGluZShjb25zdCBDb21wdXRlUGlwZWxpbmUmKTsKKyAgICB2b2lkIHdyaXRlVGltZXN0
YW1wKGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMyX3QgcXVlcnlJbmRleCk7Cit9OworCit9CisKK3N0
cnVjdCBXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbCB7CisgICAgV2ViR1BVOjpDb21wdXRlUGFz
c0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bXB1dGVQYXNzRW5jb2Rlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTYxOTI5MjgyMzFiYTllYzUyMjllOGM4
YTczMTdlNTU5ZGRmN2I1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tcHV0ZVBhc3NFbmNvZGVyLm1tCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0
IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJDb21wdXRlUGFzc0VuY29kZXIuaCIKKworI2ltcG9ydCAiQmluZEdyb3VwLmgiCisjaW1wb3J0
ICJCdWZmZXIuaCIKKyNpbXBvcnQgIkNvbXB1dGVQaXBlbGluZS5oIgorI2ltcG9ydCAiUXVlcnlT
ZXQuaCIKKyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKwordm9p
ZCBDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3Qg
UXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9Q
QVJBTShxdWVyeVNldCk7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQorCit2b2lk
IENvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2godWludDMyX3QgeCwgdWludDMyX3QgeSwgdWlu
dDMyX3QgeikKK3sKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkpOwor
ICAgIFVOVVNFRF9QQVJBTSh6KTsKK30KKwordm9pZCBDb21wdXRlUGFzc0VuY29kZXI6OmRpc3Bh
dGNoSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJl
Y3RPZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKKyAgICBVTlVT
RURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworfQorCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6
ZW5kUGFzcygpCit7Cit9CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0
YXRpc3RpY3NRdWVyeSgpCit7Cit9CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjppbnNlcnRE
ZWJ1Z01hcmtlcihjaGFyIGNvbnN0ICogbWFya2VyTGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFN
KG1hcmtlckxhYmVsKTsKK30KKwordm9pZCBDb21wdXRlUGFzc0VuY29kZXI6OnBvcERlYnVnR3Jv
dXAoKQoreworfQorCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoY2hh
ciBjb25zdCAqIGdyb3VwTGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOwor
fQorCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVpbnQzMl90IGdyb3Vw
SW5kZXgsIGNvbnN0IEJpbmRHcm91cCYgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3Vu
dCwgdWludDMyX3QgY29uc3QgKiBkeW5hbWljT2Zmc2V0cykKK3sKKyAgICBVTlVTRURfUEFSQU0o
Z3JvdXBJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwKTsKKyAgICBVTlVTRURfUEFSQU0o
ZHluYW1pY09mZnNldENvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHMpOwor
fQorCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgQ29tcHV0ZVBp
cGVsaW5lJiBwaXBlbGluZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ocGlwZWxpbmUpOworfQorCit2
b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1
ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeVNl
dCk7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJHUFUKKwordm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUmVsZWFzZShXR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlcikKK3sKKyAgICBkZWxldGUgY29tcHV0ZVBhc3NF
bmNvZGVyOworfQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJCZWdpblBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBX
R1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCit7CisgICAgY29tcHV0
ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIuYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NR
dWVyeShxdWVyeVNldC0+cXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOworfQorCit2b2lkIHdncHVDb21w
dXRlUGFzc0VuY29kZXJEaXNwYXRjaChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNz
RW5jb2RlciwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeikKK3sKKyAgICBjb21w
dXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaCh4LCB5LCB6KTsKK30K
Kwordm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2hJbmRpcmVjdChXR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVUJ1ZmZlciBpbmRpcmVjdEJ1ZmZl
ciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQpCit7CisgICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5j
b21wdXRlUGFzc0VuY29kZXIuZGlzcGF0Y2hJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+YnVmZmVy
LCBpbmRpcmVjdE9mZnNldCk7Cit9CisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlckVuZFBh
c3MoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIpCit7CisgICAgY29t
cHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIuZW5kUGFzcygpOworfQorCit2b2lk
IHdncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlcikKK3sKKyAgICBjb21wdXRlUGFzc0Vu
Y29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwor
fQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlcihXR1BVQ29t
cHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgY2hhciBjb25zdCAqIG1hcmtlckxh
YmVsKQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLmluc2Vy
dERlYnVnTWFya2VyKG1hcmtlckxhYmVsKTsKK30KKwordm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNv
ZGVyUG9wRGVidWdHcm91cChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2Rl
cikKK3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci5wb3BEZWJ1
Z0dyb3VwKCk7Cit9CisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3Vw
KFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBjaGFyIGNvbnN0ICog
Z3JvdXBMYWJlbCkKK3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rl
ci5wdXNoRGVidWdHcm91cChncm91cExhYmVsKTsKK30KKwordm9pZCB3Z3B1Q29tcHV0ZVBhc3NF
bmNvZGVyU2V0QmluZEdyb3VwKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNv
ZGVyLCB1aW50MzJfdCBncm91cEluZGV4LCBXR1BVQmluZEdyb3VwIGdyb3VwLCB1aW50MzJfdCBk
eW5hbWljT2Zmc2V0Q291bnQsIHVpbnQzMl90IGNvbnN0ICogZHluYW1pY09mZnNldHMpCit7Cisg
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKGdy
b3VwSW5kZXgsIGdyb3VwLT5iaW5kR3JvdXAsIGR5bmFtaWNPZmZzZXRDb3VudCwgZHluYW1pY09m
ZnNldHMpOworfQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJTZXRQaXBlbGluZShXR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVUNvbXB1dGVQaXBlbGlu
ZSBwaXBlbGluZSkKK3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rl
ci5zZXRQaXBlbGluZShwaXBlbGluZS0+Y29tcHV0ZVBpcGVsaW5lKTsKK30KKwordm9pZCB3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVyV3JpdGVUaW1lc3RhbXAoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBj
b21wdXRlUGFzc0VuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNldCwgdWludDMyX3QgcXVlcnlJ
bmRleCkKK3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci53cml0
ZVRpbWVzdGFtcChxdWVyeVNldC0+cXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOworfQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MmNhZGQ4MDFkMWIzYTYw
MjExYTVjZWM1ODMzYzJhMjM1ZWY3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQg
IldlYkdQVS5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQmluZEdyb3VwTGF5b3V0
OworCitjbGFzcyBDb21wdXRlUGlwZWxpbmUgeworcHVibGljOgorICAgIEJpbmRHcm91cExheW91
dCBnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgZ3JvdXBJbmRleCk7CisgICAgdm9pZCBzZXRM
YWJlbChjaGFyIGNvbnN0ICopOworfTsKKworfQorCitzdHJ1Y3QgV0dQVUNvbXB1dGVQaXBlbGlu
ZUltcGwgeworICAgIFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBlbGluZTsKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU0ODZi
NmUwODQ4NzdmYjNjMWU2MDU0ODdlYmVjMWE4NTljMTRhNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbQpAQCAtMCwwICsxLDYyIEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJDb21wdXRlUGlwZWxpbmUuaCIKKworCisjaW1wb3J0ICJCaW5kR3Jv
dXBMYXlvdXQuaCIKKyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsK
KworQmluZEdyb3VwTGF5b3V0IENvbXB1dGVQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVp
bnQzMl90IGdyb3VwSW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwSW5kZXgpOworICAg
IHJldHVybiB7IH07Cit9CisKK3ZvaWQgQ29tcHV0ZVBpcGVsaW5lOjpzZXRMYWJlbChjaGFyIGNv
bnN0ICogbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdUNvbXB1dGVQaXBlbGluZVJlbGVhc2UoV0dQVUNvbXB1
dGVQaXBlbGluZSBjb21wdXRlUGlwZWxpbmUpCit7CisgICAgZGVsZXRlIGNvbXB1dGVQaXBlbGlu
ZTsKK30KKworV0dQVUJpbmRHcm91cExheW91dCB3Z3B1Q29tcHV0ZVBpcGVsaW5lR2V0QmluZEdy
b3VwTGF5b3V0KFdHUFVDb21wdXRlUGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lLCB1aW50MzJfdCBn
cm91cEluZGV4KQoreworICAgIHJldHVybiBuZXcgV0dQVUJpbmRHcm91cExheW91dEltcGwgeyBj
b21wdXRlUGlwZWxpbmUtPmNvbXB1dGVQaXBlbGluZS5nZXRCaW5kR3JvdXBMYXlvdXQoZ3JvdXBJ
bmRleCkgfTsKK30KKwordm9pZCB3Z3B1Q29tcHV0ZVBpcGVsaW5lU2V0TGFiZWwoV0dQVUNvbXB1
dGVQaXBlbGluZSBjb21wdXRlUGlwZWxpbmUsIGNoYXIgY29uc3QgKiBsYWJlbCkKK3sKKyAgICBj
b21wdXRlUGlwZWxpbmUtPmNvbXB1dGVQaXBlbGluZS5zZXRMYWJlbChsYWJlbCk7Cit9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvRGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAxODBlYTNlZGM0MTFlNzliY2UxMjQ5MTQ4ZTIz
OTM3YWJkYTQ2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rldmlj
ZS5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisjaW1wb3J0IDxm
dW5jdGlvbmFsPgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQmluZEdyb3VwOworY2xh
c3MgQmluZEdyb3VwTGF5b3V0OworY2xhc3MgQnVmZmVyOworY2xhc3MgQ29tbWFuZEVuY29kZXI7
CitjbGFzcyBDb21wdXRlUGlwZWxpbmU7CitjbGFzcyBQaXBlbGluZUxheW91dDsKK2NsYXNzIFF1
ZXJ5U2V0OworY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKK2NsYXNzIFJlbmRlclBpcGVsaW5l
OworY2xhc3MgU2FtcGxlcjsKK2NsYXNzIFNoYWRlck1vZHVsZTsKK2NsYXNzIFN1cmZhY2U7Citj
bGFzcyBTd2FwQ2hhaW47CitjbGFzcyBUZXh0dXJlOworY2xhc3MgUXVldWU7CisKK2NsYXNzIERl
dmljZSB7CitwdWJsaWM6CisgICAgQmluZEdyb3VwIGNyZWF0ZUJpbmRHcm91cChXR1BVQmluZEdy
b3VwRGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICBCaW5kR3JvdXBMYXlvdXQgY3JlYXRlQmluZEdy
b3VwTGF5b3V0KFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yIGNvbnN0ICopOworICAgIEJ1
ZmZlciBjcmVhdGVCdWZmZXIoV0dQVUJ1ZmZlckRlc2NyaXB0b3IgY29uc3QgKik7CisgICAgQ29t
bWFuZEVuY29kZXIgY3JlYXRlQ29tbWFuZEVuY29kZXIoV0dQVUNvbW1hbmRFbmNvZGVyRGVzY3Jp
cHRvciBjb25zdCAqKTsKKyAgICBDb21wdXRlUGlwZWxpbmUgY3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICopOworICAgIHZvaWQgY3JlYXRl
Q29tcHV0ZVBpcGVsaW5lQXN5bmMoV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgY29uc3Qg
Kiwgc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBDb21w
dXRlUGlwZWxpbmUmJiwgY2hhciBjb25zdCAqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKKyAgICBQ
aXBlbGluZUxheW91dCBjcmVhdGVQaXBlbGluZUxheW91dChXR1BVUGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yIGNvbnN0ICopOworICAgIFF1ZXJ5U2V0IGNyZWF0ZVF1ZXJ5U2V0KFdHUFVRdWVyeVNl
dERlc2NyaXB0b3IgY29uc3QgKik7CisgICAgUmVuZGVyQnVuZGxlRW5jb2RlciBjcmVhdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciBjb25zdCAq
KTsKKyAgICBSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICopOworICAgIHZvaWQgY3JlYXRlUmVuZGVyUGlwZWxpbmVB
c3luYyhXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICosIHN0ZDo6ZnVuY3Rpb248
dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVuZGVyUGlwZWxpbmUmJiwgY2hh
ciBjb25zdCAqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKKyAgICBTYW1wbGVyIGNyZWF0ZVNhbXBs
ZXIoV0dQVVNhbXBsZXJEZXNjcmlwdG9yIGNvbnN0ICopOworICAgIFNoYWRlck1vZHVsZSBjcmVh
dGVTaGFkZXJNb2R1bGUoV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgY29uc3QgKik7CisgICAg
U3dhcENoYWluIGNyZWF0ZVN3YXBDaGFpbihjb25zdCBTdXJmYWNlJiwgV0dQVVN3YXBDaGFpbkRl
c2NyaXB0b3IgY29uc3QgKik7CisgICAgVGV4dHVyZSBjcmVhdGVUZXh0dXJlKFdHUFVUZXh0dXJl
RGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICB2b2lkIGRlc3Ryb3koKTsKKyAgICBib29sIGdldExp
bWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzICopOworICAgIFF1ZXVlIGdldFF1ZXVlKCk7CisgICAg
Ym9vbCBwb3BFcnJvclNjb3BlKHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVRXJyb3JUeXBlLCBjaGFy
IGNvbnN0ICopPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHB1c2hFcnJvclNjb3BlKFdHUFVFcnJv
ckZpbHRlcik7CisgICAgdm9pZCBzZXREZXZpY2VMb3N0Q2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2
b2lkKFdHUFVEZXZpY2VMb3N0UmVhc29uLCBjaGFyIGNvbnN0ICopPiYmKTsKKyAgICB2b2lkIHNl
dFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVRXJyb3JUeXBl
LCBjaGFyIGNvbnN0ICopPiYmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCitzdHJ1
Y3QgV0dQVURldmljZUltcGwgeworICAgIFdlYkdQVTo6RGV2aWNlIGRldmljZTsKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9EZXZpY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc1MTkzNWNkYWEyNGI1ZDAwZjNlZGU1NWFiOWQ1
MjY0ODQ1OTEzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rldmlj
ZS5tbQpAQCAtMCwwICsxLDMwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRGV2aWNlLmgiCisKKyNp
bXBvcnQgIkJpbmRHcm91cC5oIgorI2ltcG9ydCAiQmluZEdyb3VwTGF5b3V0LmgiCisjaW1wb3J0
ICJCdWZmZXIuaCIKKyNpbXBvcnQgIkNvbW1hbmRFbmNvZGVyLmgiCisjaW1wb3J0ICJDb21wdXRl
UGlwZWxpbmUuaCIKKyNpbXBvcnQgIlBpcGVsaW5lTGF5b3V0LmgiCisjaW1wb3J0ICJRdWVyeVNl
dC5oIgorI2ltcG9ydCAiUXVldWUuaCIKKyNpbXBvcnQgIlJlbmRlckJ1bmRsZUVuY29kZXIuaCIK
KyNpbXBvcnQgIlJlbmRlclBpcGVsaW5lLmgiCisjaW1wb3J0ICJTYW1wbGVyLmgiCisjaW1wb3J0
ICJTaGFkZXJNb2R1bGUuaCIKKyNpbXBvcnQgIlN1cmZhY2UuaCIKKyNpbXBvcnQgIlN3YXBDaGFp
bi5oIgorI2ltcG9ydCAiVGV4dHVyZS5oIgorI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisjaW1wb3J0
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJHUFUgeworCitCaW5kR3JvdXAg
RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoV0dQVUJpbmRHcm91cERlc2NyaXB0b3IgY29uc3QgKiBk
ZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4g
eyB9OworfQorCitCaW5kR3JvdXBMYXlvdXQgRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQo
V0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAg
IFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4geyB9OworfQorCitCdWZmZXIg
RGV2aWNlOjpjcmVhdGVCdWZmZXIoV0dQVUJ1ZmZlckRlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlw
dG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4geyB9Owor
fQorCitDb21tYW5kRW5jb2RlciBEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKFdHUFVDb21t
YW5kRW5jb2RlckRlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9Q
QVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4geyB9OworfQorCitDb21wdXRlUGlwZWxpbmUg
RGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsK
KyAgICByZXR1cm4geyB9OworfQorCit2b2lkIERldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5l
QXN5bmMoV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIENvbXB1dGVQ
aXBlbGluZSYmLCBjaGFyIGNvbnN0ICogbWVzc2FnZSk+JiYgY2FsbGJhY2spCit7CisgICAgVU5V
U0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Cit9CisK
K1BpcGVsaW5lTGF5b3V0IERldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoV0dQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK1F1ZXJ5U2V0IERldmljZTo6Y3Jl
YXRlUXVlcnlTZXQoV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7
CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK1Jl
bmRlckJ1bmRsZUVuY29kZXIgRGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFdHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAg
VU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK1JlbmRlclBp
cGVsaW5lIERldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoV0dQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0
b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBl
bGluZUFzeW5jKFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9y
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlbmRl
clBpcGVsaW5lJiYsIGNoYXIgY29uc3QgKiBtZXNzYWdlKT4mJiBjYWxsYmFjaykKK3sKKyAgICBV
TlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKK30K
KworU2FtcGxlciBEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoV0dQVVNhbXBsZXJEZXNjcmlwdG9yIGNv
bnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAg
cmV0dXJuIHsgfTsKK30KKworU2hhZGVyTW9kdWxlIERldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxl
KFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICBV
TlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHsgfTsKK30KKworU3dhcENoYWlu
IERldmljZTo6Y3JlYXRlU3dhcENoYWluKGNvbnN0IFN1cmZhY2UmIHN1cmZhY2UsIFdHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0o
c3VyZmFjZSk7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiB7IH07
Cit9CisKK1RleHR1cmUgRGV2aWNlOjpjcmVhdGVUZXh0dXJlKFdHUFVUZXh0dXJlRGVzY3JpcHRv
ciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwor
ICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgRGV2aWNlOjpkZXN0cm95KCkKK3sKK30KKworYm9v
bCBEZXZpY2U6OmdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzICogbGltaXRzKQoreworICAg
IFVOVVNFRF9QQVJBTShsaW1pdHMpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUXVldWUgRGV2
aWNlOjpnZXRRdWV1ZSgpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBEZXZpY2U6OnBv
cEVycm9yU2NvcGUoc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNoYXIgY29uc3Qg
Kik+JiYgY2FsbGJhY2spCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgRGV2aWNlOjpwdXNoRXJyb3JTY29wZShXR1BVRXJyb3JGaWx0
ZXIgZmlsdGVyKQoreworICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIpOworfQorCit2b2lkIERldmlj
ZTo6c2V0RGV2aWNlTG9zdENhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVRGV2aWNlTG9z
dFJlYXNvbiwgY2hhciBjb25zdCAqKT4mJiBjYWxsYmFjaykKK3sKKyAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2spOworfQorCit2b2lkIERldmljZTo6c2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2so
c3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNoYXIgY29uc3QgKik+JiYgY2FsbGJh
Y2spCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViR1BVCisKK3ZvaWQgd2dwdURldmljZVJlbGVhc2UoV0dQVURldmljZSBkZXZpY2UpCit7Cisg
ICAgZGVsZXRlIGRldmljZTsKK30KKworV0dQVUJpbmRHcm91cCB3Z3B1RGV2aWNlQ3JlYXRlQmlu
ZEdyb3VwKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciBjb25zdCAq
IGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVQmluZEdyb3VwSW1wbCB7IGRldmlj
ZS0+ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChkZXNjcmlwdG9yKSB9OworfQorCitXR1BVQmluZEdy
b3VwTGF5b3V0IHdncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXBMYXlvdXQoV0dQVURldmljZSBkZXZp
Y2UsIFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gbmV3IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBsIHsgZGV2aWNlLT5kZXZpY2Uu
Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGRlc2NyaXB0b3IpIH07Cit9CisKK1dHUFVCdWZmZXIgd2dw
dURldmljZUNyZWF0ZUJ1ZmZlcihXR1BVRGV2aWNlIGRldmljZSwgV0dQVUJ1ZmZlckRlc2NyaXB0
b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVUJ1ZmZlckltcGwg
eyBkZXZpY2UtPmRldmljZS5jcmVhdGVCdWZmZXIoZGVzY3JpcHRvcikgfTsKK30KKworV0dQVUNv
bW1hbmRFbmNvZGVyIHdncHVEZXZpY2VDcmVhdGVDb21tYW5kRW5jb2RlcihXR1BVRGV2aWNlIGRl
dmljZSwgV0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7
CisgICAgcmV0dXJuIG5ldyBXR1BVQ29tbWFuZEVuY29kZXJJbXBsIHsgZGV2aWNlLT5kZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoZGVzY3JpcHRvcikgfTsKK30KKworV0dQVUNvbXB1dGVQaXBl
bGluZSB3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lKFdHUFVEZXZpY2UgZGV2aWNlLCBX
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAg
cmV0dXJuIG5ldyBXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0
ZUNvbXB1dGVQaXBlbGluZShkZXNjcmlwdG9yKSB9OworfQorCit2b2lkIHdncHVEZXZpY2VDcmVh
dGVDb21wdXRlUGlwZWxpbmVBc3luYyhXR1BVRGV2aWNlIGRldmljZSwgV0dQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yLCBXR1BVQ3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmNDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVzZXJkYXRhKQoreworICAgIGRldmlj
ZS0+ZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGRlc2NyaXB0b3IsIFtjYWxsYmFj
aywgdXNlcmRhdGFdIChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFdlYkdQ
VTo6Q29tcHV0ZVBpcGVsaW5lJiYgcGlwZWxpbmUsIGNoYXIgY29uc3QgKiBtZXNzYWdlKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsIHsgV1RG
TW92ZShwaXBlbGluZSkgfSwgbWVzc2FnZSwgdXNlcmRhdGEpOworICAgIH0pOworfQorCitXR1BV
UGlwZWxpbmVMYXlvdXQgd2dwdURldmljZUNyZWF0ZVBpcGVsaW5lTGF5b3V0KFdHUFVEZXZpY2Ug
ZGV2aWNlLCBXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikK
K3sKKyAgICByZXR1cm4gbmV3IFdHUFVQaXBlbGluZUxheW91dEltcGwgeyBkZXZpY2UtPmRldmlj
ZS5jcmVhdGVQaXBlbGluZUxheW91dChkZXNjcmlwdG9yKSB9OworfQorCitXR1BVUXVlcnlTZXQg
d2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0KFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVUXVlcnlTZXRE
ZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVRdWVy
eVNldEltcGwgeyBkZXZpY2UtPmRldmljZS5jcmVhdGVRdWVyeVNldChkZXNjcmlwdG9yKSB9Owor
fQorCitXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciB3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxl
RW5jb2RlcihXR1BVRGV2aWNlIGRldmljZSwgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlw
dG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVSZW5kZXJCdW5k
bGVFbmNvZGVySW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIo
ZGVzY3JpcHRvcikgfTsKK30KKworV0dQVVJlbmRlclBpcGVsaW5lIHdncHVEZXZpY2VDcmVhdGVS
ZW5kZXJQaXBlbGluZShXR1BVRGV2aWNlIGRldmljZSwgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVUmVuZGVyUGlw
ZWxpbmVJbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRv
cikgfTsKK30KKwordm9pZCB3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhXR1BV
RGV2aWNlIGRldmljZSwgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBjb25zdCAqIGRlc2Ny
aXB0b3IsIFdHUFVDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jQ2FsbGJhY2sgY2FsbGJhY2ssIHZv
aWQgKiB1c2VyZGF0YSkKK3sKKyAgICBkZXZpY2UtPmRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGlu
ZUFzeW5jKGRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVQ3JlYXRlUGlwZWxp
bmVBc3luY1N0YXR1cyBzdGF0dXMsIFdlYkdQVTo6UmVuZGVyUGlwZWxpbmUmJiBwaXBlbGluZSwg
Y2hhciBjb25zdCAqIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQ
VVJlbmRlclBpcGVsaW5lSW1wbCB7IFdURk1vdmUocGlwZWxpbmUpIH0sIG1lc3NhZ2UsIHVzZXJk
YXRhKTsKKyAgICB9KTsKK30KKworV0dQVVNhbXBsZXIgd2dwdURldmljZUNyZWF0ZVNhbXBsZXIo
V0dQVURldmljZSBkZXZpY2UsIFdHUFVTYW1wbGVyRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0
b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVU2FtcGxlckltcGwgeyBkZXZpY2UtPmRldmljZS5j
cmVhdGVTYW1wbGVyKGRlc2NyaXB0b3IpIH07Cit9CisKK1dHUFVTaGFkZXJNb2R1bGUgd2dwdURl
dmljZUNyZWF0ZVNoYWRlck1vZHVsZShXR1BVRGV2aWNlIGRldmljZSwgV0dQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVVNo
YWRlck1vZHVsZUltcGwgeyBkZXZpY2UtPmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoZGVzY3Jp
cHRvcikgfTsKK30KKworV0dQVVN3YXBDaGFpbiB3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWluKFdH
UFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VyZmFjZSBzdXJmYWNlLCBXR1BVU3dhcENoYWluRGVzY3Jp
cHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVU3dhcENoYWlu
SW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0ZVN3YXBDaGFpbihzdXJmYWNlLT5zdXJmYWNlLCBk
ZXNjcmlwdG9yKSB9OworfQorCitXR1BVVGV4dHVyZSB3Z3B1RGV2aWNlQ3JlYXRlVGV4dHVyZShX
R1BVRGV2aWNlIGRldmljZSwgV0dQVVRleHR1cmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRv
cikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVUZXh0dXJlSW1wbCB7IGRldmljZS0+ZGV2aWNlLmNy
ZWF0ZVRleHR1cmUoZGVzY3JpcHRvcikgfTsKK30KKwordm9pZCB3Z3B1RGV2aWNlRGVzdHJveShX
R1BVRGV2aWNlIGRldmljZSkKK3sKKyAgICBkZXZpY2UtPmRldmljZS5kZXN0cm95KCk7Cit9CisK
K2Jvb2wgd2dwdURldmljZUdldExpbWl0cyhXR1BVRGV2aWNlIGRldmljZSwgV0dQVVN1cHBvcnRl
ZExpbWl0cyAqIGxpbWl0cykKK3sKKyAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2UuZ2V0TGltaXRz
KGxpbWl0cyk7Cit9CisKK1dHUFVRdWV1ZSB3Z3B1RGV2aWNlR2V0UXVldWUoV0dQVURldmljZSBk
ZXZpY2UpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVUXVldWVJbXBsIHsgZGV2aWNlLT5kZXZpY2Uu
Z2V0UXVldWUoKSB9OworfQorCitib29sIHdncHVEZXZpY2VQb3BFcnJvclNjb3BlKFdHUFVEZXZp
Y2UgZGV2aWNlLCBXR1BVRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVzZXJkYXRhKQor
eworICAgIHJldHVybiBkZXZpY2UtPmRldmljZS5wb3BFcnJvclNjb3BlKFtjYWxsYmFjaywgdXNl
cmRhdGFdIChXR1BVRXJyb3JUeXBlIHR5cGUsIGNoYXIgY29uc3QgKiBtZXNzYWdlKSB7CisgICAg
ICAgIGNhbGxiYWNrKHR5cGUsIG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICB9KTsKK30KKwordm9p
ZCB3Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckZp
bHRlciBmaWx0ZXIpCit7CisgICAgZGV2aWNlLT5kZXZpY2UucHVzaEVycm9yU2NvcGUoZmlsdGVy
KTsKK30KKwordm9pZCB3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENhbGxiYWNrKFdHUFVEZXZpY2Ug
ZGV2aWNlLCBXR1BVRGV2aWNlTG9zdENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEp
Cit7CisgICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLnNldERldmljZUxvc3RDYWxsYmFjayhbY2Fs
bGJhY2ssIHVzZXJkYXRhXSAoV0dQVURldmljZUxvc3RSZWFzb24gcmVhc29uLCBjaGFyIGNvbnN0
ICogbWVzc2FnZSkgeworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFj
ayhyZWFzb24sIG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCB3Z3B1RGV2
aWNlU2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEpCit7CisgICAgcmV0dXJuIGRldmlj
ZS0+ZGV2aWNlLnNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKFtjYWxsYmFjaywgdXNlcmRhdGFd
IChXR1BVRXJyb3JUeXBlIHR5cGUsIGNoYXIgY29uc3QgKiBtZXNzYWdlKSB7CisgICAgICAgIGlm
IChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKHR5cGUsIG1lc3NhZ2UsIHVzZXJkYXRh
KTsKKyAgICB9KTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRXhwb3J0
TWFjcm9zLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9FeHBvcnRNYWNyb3MuaAppbmRleCAwMmY2
NDkyZDJjMjkxYTUzYTVmOGU2NzY2ODJmNDU2NDE5OWJjZTZlLi5jN2U0ZWY4NjQxNGRkOTI4OWEx
MTZiM2ZlOWU3NmRhZGRiZDgyNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9F
eHBvcnRNYWNyb3MuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9FeHBvcnRNYWNyb3MuaApA
QCAtMjksNyArMjksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9FeHBvcnRN
YWNyb3MuaD4KKyNpbXBvcnQgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAogI2lmICFkZWZpbmVkKFdF
QkdQVV9FWFBPUlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNl
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMWY3YTk2
ZTUyMDRjMTBiZmM4NDdmNTRiNGM2NDBhMjVhYjE4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9y
dCAiV2ViR1BVLmgiCisjaW1wb3J0IDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2UgV2ViR1BVIHsK
KworY2xhc3MgQWRhcHRlcjsKK2NsYXNzIFN1cmZhY2U7CisKK2NsYXNzIEluc3RhbmNlIHsKK3B1
YmxpYzoKKyAgICBTdXJmYWNlIGNyZWF0ZVN1cmZhY2UoV0dQVVN1cmZhY2VEZXNjcmlwdG9yIGNv
bnN0ICopOworICAgIHZvaWQgcHJvY2Vzc0V2ZW50cygpOworICAgIHZvaWQgcmVxdWVzdEFkYXB0
ZXIoV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyBjb25zdCAqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
V0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBBZGFwdGVyJiYsIGNoYXIgY29uc3QgKik+JiYgY2Fs
bGJhY2spOworfTsKKworfQorCitzdHJ1Y3QgV0dQVUluc3RhbmNlSW1wbCB7CisgICAgV2ViR1BV
OjpJbnN0YW5jZSBpbnN0YW5jZTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9JbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUwOWIwOWUzZmY0YTc5MTdkMTBlYWM4ZjA1MDk2NDYyOWM1MWM4OTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQpAQCAtMCwwICsxLDMwNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiSW5zdGFuY2UuaCIKKworI2ltcG9ydCAiQWRhcHRlci5oIgor
I2ltcG9ydCAiU3VyZmFjZS5oIgorI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisjaW1wb3J0IDxjc3Ry
aW5nPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViR1BVIHsK
KworU3VyZmFjZSBJbnN0YW5jZTo6Y3JlYXRlU3VyZmFjZShXR1BVU3VyZmFjZURlc2NyaXB0b3Ig
Y29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAg
ICByZXR1cm4geyB9OworfQorCit2b2lkIEluc3RhbmNlOjpwcm9jZXNzRXZlbnRzKCkKK3sKK30K
Kwordm9pZCBJbnN0YW5jZTo6cmVxdWVzdEFkYXB0ZXIoV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cyBjb25zdCAqIG9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJT
dGF0dXMsIEFkYXB0ZXImJiwgY2hhciBjb25zdCAqKT4mJiBjYWxsYmFjaykKK3sKKyAgICBVTlVT
RURfUEFSQU0ob3B0aW9ucyk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdUluc3RhbmNlUmVsZWFzZShXR1BVSW5zdGFu
Y2UgaW5zdGFuY2UpCit7CisgICAgZGVsZXRlIGluc3RhbmNlOworfQorCitXR1BVSW5zdGFuY2Ug
d2dwdUNyZWF0ZUluc3RhbmNlKFdHUFVJbnN0YW5jZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlw
dG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBj
aGFyIGNvbnN0ICogcHJvY05hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7CisgICAg
Ly8gRklYTUU6IFVzZSBncGVyZiB0byBtYWtlIHRoaXMgZmFzdGVyLgorICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUNyZWF0ZUluc3RhbmNlIikpCisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNyZWF0ZUluc3RhbmNlKTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVHZXRQcm9jQWRkcmVzcyIpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVHZXRQcm9jQWRkcmVzcyk7CisgICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1QWRhcHRlckdldExpbWl0cyIpKQorICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVyR2V0TGltaXRzKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyR2V0UHJvcGVydGllcyIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVyR2V0UHJvcGVydGll
cyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QWRhcHRlckhhc0ZlYXR1cmUiKSkK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QWRhcHRlckhh
c0ZlYXR1cmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUFkYXB0ZXJSZXF1ZXN0
RGV2aWNlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVC
dWZmZXJEZXN0cm95IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUJ1ZmZlckRlc3Ryb3kpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUJ1
ZmZlckdldENvbnN0TWFwcGVkUmFuZ2UiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1QnVmZmVyR2V0Q29uc3RNYXBwZWRSYW5nZSk7CisgICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2Up
OworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUJ1ZmZlck1hcEFzeW5jIikpCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlck1hcEFzeW5j
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJVbm1hcCIpKQorICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJVbm1hcCk7Cisg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQ
YXNzIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNv
bW1hbmRFbmNvZGVyQmVnaW5Db21wdXRlUGFzcyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1Q29tbWFuZEVuY29kZXJCZWdpblJlbmRlclBhc3MiKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJCZWdpblJlbmRlclBh
c3MpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1
ZmZlclRvQnVmZmVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvQnVmZmVyKTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb1RleHR1cmUiKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29k
ZXJDb3B5QnVmZmVyVG9UZXh0dXJlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVD
b21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9CdWZmZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVyZVRvQnVm
ZmVyKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlckNvcHlU
ZXh0dXJlVG9UZXh0dXJlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUpOworICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyRmluaXNoIikpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyRmluaXNo
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2Rlckluc2VydERl
YnVnTWFya2VyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIpOworICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyUG9wRGVidWdHcm91cCIpKQorICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2RlclBvcERlYnVn
R3JvdXApOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyUHVz
aERlYnVnR3JvdXAiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1Q29tbWFuZEVuY29kZXJQdXNoRGVidWdHcm91cCk7CisgICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJSZXNvbHZlUXVlcnlTZXQiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJSZXNvbHZl
UXVlcnlTZXQpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVy
V3JpdGVUaW1lc3RhbXAiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJXcml0ZVRpbWVzdGFtcCk7CisgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NR
dWVyeSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVD
b21wdXRlUGFzc0VuY29kZXJCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJEaXNwYXRjaCIpKQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGFzc0Vu
Y29kZXJEaXNwYXRjaCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBh
c3NFbmNvZGVyRGlzcGF0Y2hJbmRpcmVjdCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGFzc0VuY29kZXJEaXNwYXRjaEluZGlyZWN0KTsK
KyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQYXNz
IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1
dGVQYXNzRW5jb2RlckVuZFBhc3MpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNv
bXB1dGVQYXNzRW5jb2RlckVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5IikpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlckVu
ZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVDb21wdXRlUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlciIpKQorICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGFzc0VuY29kZXJJbnNlcnRE
ZWJ1Z01hcmtlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NF
bmNvZGVyUG9wRGVidWdHcm91cCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVDb21wdXRlUGFzc0VuY29kZXJQb3BEZWJ1Z0dyb3VwKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJQdXNoRGVidWdHcm91cCIp
KQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRl
UGFzc0VuY29kZXJQdXNoRGVidWdHcm91cCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0QmluZEdyb3VwIikpCisgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91
cCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0
UGlwZWxpbmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3
Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0UGlwZWxpbmUpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wIikpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2Rlcldy
aXRlVGltZXN0YW1wKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGlw
ZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KTsKKyAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGlwZWxpbmVTZXRMYWJlbCIpKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGlw
ZWxpbmVTZXRMYWJlbCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3Jl
YXRlQmluZEdyb3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdURldmljZUNyZWF0ZUJpbmRHcm91cCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1RGV2aWNlQ3JlYXRlQmluZEdyb3VwTGF5b3V0IikpCisgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZUJpbmRHcm91cExheW91dCk7
CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlQnVmZmVyIikpCisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0
ZUJ1ZmZlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlQ29t
bWFuZEVuY29kZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1RGV2aWNlQ3JlYXRlQ29tbWFuZEVuY29kZXIpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZSIpKQorICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxp
bmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0ZUNvbXB1dGVQ
aXBlbGluZUFzeW5jIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVQaXBlbGluZUxheW91dCIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVQaXBlbGlu
ZUxheW91dCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlUXVl
cnlTZXQiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
RGV2aWNlQ3JlYXRlUXVlcnlTZXQpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURl
dmljZUNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik7
CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxp
bmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2
aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmVBc3lu
Yyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlU2FtcGxlciIp
KQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VD
cmVhdGVTYW1wbGVyKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVh
dGVTaGFkZXJNb2R1bGUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlU2hhZGVyTW9kdWxlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVEZXZpY2VDcmVhdGVTd2FwQ2hhaW4iKSkKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWluKTsKKyAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVUZXh0dXJlIikpCisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVRleHR1
cmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZURlc3Ryb3kiKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlRGVzdHJv
eSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlR2V0TGltaXRzIikpCisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUdldExp
bWl0cyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlR2V0UXVldWUiKSkK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlR2V0
UXVldWUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVBvcEVycm9yU2Nv
cGUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2
aWNlUG9wRXJyb3JTY29wZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNl
UHVzaEVycm9yU2NvcGUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdURldmljZVNldERldmljZUxvc3RDYWxsYmFjayIpKQorICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VTZXREZXZpY2VMb3N0Q2FsbGJhY2sp
OworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVNldFVuY2FwdHVyZWRFcnJv
ckNhbGxiYWNrIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdURldmljZVNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVJbnN0YW5jZUNyZWF0ZVN1cmZhY2UiKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKTsKKyAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMiKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VQcm9j
ZXNzRXZlbnRzKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVJbnN0YW5jZVJlcXVl
c3RBZGFwdGVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdVF1ZXJ5U2V0RGVzdHJveSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVRdWVyeVNldERlc3Ryb3kpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdVF1ZXVlT25TdWJtaXR0ZWRXb3JrRG9uZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVRdWV1ZU9uU3VibWl0dGVkV29ya0RvbmUpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlU3VibWl0IikpCisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXVlU3VibWl0KTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZVdyaXRlQnVmZmVyIikpCisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXVlV3JpdGVCdWZmZXIpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlV3JpdGVUZXh0dXJlIikpCisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXVlV3JpdGVUZXh0dXJl
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJh
dyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5k
ZXJCdW5kbGVFbmNvZGVyRHJhdyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVu
ZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRleGVkIikpCisgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3SW5kZXhlZCk7Cisg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRl
eGVkSW5kaXJlY3QiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRleGVkSW5kaXJlY3QpOworICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3SW5kaXJlY3QiKSkK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVu
ZGxlRW5jb2RlckRyYXdJbmRpcmVjdCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UmVuZGVyQnVuZGxlRW5jb2RlckZpbmlzaCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVySW5zZXJ0RGVidWdNYXJr
ZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVu
ZGVyQnVuZGxlRW5jb2Rlckluc2VydERlYnVnTWFya2VyKTsKKyAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyUG9wRGVidWdHcm91cCIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVy
UG9wRGVidWdHcm91cCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVu
ZGxlRW5jb2RlclB1c2hEZWJ1Z0dyb3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQdXNoRGVidWdHcm91cCk7Cisg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEJpbmRH
cm91cCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVS
ZW5kZXJCdW5kbGVFbmNvZGVyU2V0QmluZEdyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0SW5kZXhCdWZmZXIiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNl
dEluZGV4QnVmZmVyKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5k
bGVFbmNvZGVyU2V0UGlwZWxpbmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFBpcGVsaW5lKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0VmVydGV4QnVmZmVy
IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJTZXRWZXJ0ZXhCdWZmZXIpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5PY2NsdXNpb25RdWVyeSIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckJl
Z2luT2NjbHVzaW9uUXVlcnkpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRl
clBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSIpKQorICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2lu
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dVJlbmRlclBhc3NFbmNvZGVyRHJhdyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckRyYXcpOworICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWQiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJE
cmF3SW5kZXhlZCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJEcmF3SW5kZXhlZEluZGlyZWN0IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCk7
CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5k
aXJlY3QiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJlY3QpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kT2NjbHVzaW9uUXVlcnkiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRP
Y2NsdXNpb25RdWVyeSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFz
c0VuY29kZXJFbmRQYXNzIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kUGFzcyk7CisgICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSIp
KQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQ
YXNzRW5jb2RlckVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlckV4ZWN1dGVCdW5kbGVzIikpCisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVy
RXhlY3V0ZUJ1bmRsZXMpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBh
c3NFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlcik7
CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJQb3BEZWJ1
Z0dyb3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVJlbmRlclBhc3NFbmNvZGVyUG9wRGVidWdHcm91cCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJQdXNoRGVidWdHcm91cCIpKQorICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclB1c2hE
ZWJ1Z0dyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5j
b2RlclNldEJpbmRHcm91cCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldEJpbmRHcm91cCk7CisgICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50IikpCisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NF
bmNvZGVyU2V0QmxlbmRDb25zdGFudCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJTZXRJbmRleEJ1ZmZlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldEluZGV4QnVmZmVy
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldFBp
cGVsaW5lIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVJlbmRlclBhc3NFbmNvZGVyU2V0UGlwZWxpbmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0U2Npc3NvclJlY3QiKSkKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTY2lz
c29yUmVjdCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29k
ZXJTZXRTdGVuY2lsUmVmZXJlbmNlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0U3RlbmNpbFJlZmVyZW5jZSk7Cisg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRWZXJ0ZXhC
dWZmZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJTZXRWZXJ0ZXhCdWZmZXIpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0Vmlld3BvcnQiKSkKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRWaWV3
cG9ydCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJX
cml0ZVRpbWVzdGFtcCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVSZW5kZXJQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVSZW5kZXJQaXBlbGluZUdldEJpbmRHcm91cExheW91dCIpKQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQaXBlbGlu
ZUdldEJpbmRHcm91cExheW91dCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVu
ZGVyUGlwZWxpbmVTZXRMYWJlbCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVSZW5kZXJQaXBlbGluZVNldExhYmVsKTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVTaGFkZXJNb2R1bGVTZXRMYWJlbCIpKQorICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVTaGFkZXJNb2R1bGVTZXRMYWJlbCk7CisgICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U3VyZmFjZUdldFByZWZlcnJlZEZvcm1hdCIpKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVTdXJmYWNlR2V0
UHJlZmVycmVkRm9ybWF0KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTd2FwQ2hh
aW5HZXRDdXJyZW50VGV4dHVyZVZpZXciKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1U3dhcENoYWluR2V0Q3VycmVudFRleHR1cmVWaWV3KTsKKyAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTd2FwQ2hhaW5QcmVzZW50IikpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVN3YXBDaGFpblByZXNlbnQpOwor
ICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVRleHR1cmVDcmVhdGVWaWV3IikpCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVRleHR1cmVDcmVhdGVW
aWV3KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVUZXh0dXJlRGVzdHJveSIpKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJlRGVz
dHJveSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1dHUFVTdXJmYWNlIHdncHVJbnN0YW5j
ZUNyZWF0ZVN1cmZhY2UoV0dQVUluc3RhbmNlIGluc3RhbmNlLCBXR1BVU3VyZmFjZURlc2NyaXB0
b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVVN1cmZhY2VJbXBs
IHsgaW5zdGFuY2UtPmluc3RhbmNlLmNyZWF0ZVN1cmZhY2UoZGVzY3JpcHRvcikgfTsKK30KKwor
dm9pZCB3Z3B1SW5zdGFuY2VQcm9jZXNzRXZlbnRzKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkKK3sK
KyAgICBpbnN0YW5jZS0+aW5zdGFuY2UucHJvY2Vzc0V2ZW50cygpOworfQorCit2b2lkIHdncHVJ
bnN0YW5jZVJlcXVlc3RBZGFwdGVyKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSwgV0dQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucyBjb25zdCAqIG9wdGlvbnMsIFdHUFVSZXF1ZXN0QWRhcHRlckNhbGxiYWNr
IGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEpCit7CisgICAgcmV0dXJuIGluc3RhbmNlLT5pbnN0
YW5jZS5yZXF1ZXN0QWRhcHRlcihvcHRpb25zLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVJl
cXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1cywgV2ViR1BVOjpBZGFwdGVyJiYgYWRhcHRlciwgY2hh
ciBjb25zdCAqIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVUFk
YXB0ZXJJbXBsIHsgV1RGTW92ZShhZGFwdGVyKSB9LCBtZXNzYWdlLCB1c2VyZGF0YSk7CisgICAg
fSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1
YTE5YjM1NzI3ZmEzZGQ3YjEwZTk5NDJjNWNjNWY5NmEyNWEwMDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5oCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBQ
aXBlbGluZUxheW91dCB7CisKK307CisKK30KKworc3RydWN0IFdHUFVQaXBlbGluZUxheW91dElt
cGwgeworICAgIFdlYkdQVTo6UGlwZWxpbmVMYXlvdXQgcGlwZWxpbmVMYXlvdXQ7Cit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQubW0gYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzAxYjA2ZjRlMmNi
NjNlYmMzMTc0ZWM4ZDBhMWE4YzI2YmQ0YzlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQubW0KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiUGlwZWxpbmVMYXlvdXQuaCIKKworI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisKK25h
bWVzcGFjZSBXZWJHUFUgeworCit9CisKK3ZvaWQgd2dwdVBpcGVsaW5lTGF5b3V0UmVsZWFzZShX
R1BVUGlwZWxpbmVMYXlvdXQgcGlwZWxpbmVMYXlvdXQpCit7CisgICAgZGVsZXRlIHBpcGVsaW5l
TGF5b3V0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRmYzIxNjBhOWZh
YzAyZDhlZmE1YjlhMmY3ZDA4OThhYzdiYTEzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJX
ZWJHUFUuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIFF1ZXJ5U2V0IHsKK3B1Ymxp
YzoKKyAgICB2b2lkIGRlc3Ryb3koKTsKK307CisKK30KKworc3RydWN0IFdHUFVRdWVyeVNldElt
cGwgeworICAgIFdlYkdQVTo6UXVlcnlTZXQgcXVlcnlTZXQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVy
eVNldC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NTU4Yjk3NWRlMmI3MGM5MTg1NTJkOTM4NjU0NjUyNmM1YzQw
ZWYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0K
QEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUXVlcnlTZXQuaCIKKworI2ltcG9y
dCAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCit2b2lkIFF1ZXJ5U2V0Ojpk
ZXN0cm95KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdVF1ZXJ5
U2V0UmVsZWFzZShXR1BVUXVlcnlTZXQgcXVlcnlTZXQpCit7CisgICAgZGVsZXRlIHF1ZXJ5U2V0
OworfQorCit2b2lkIHdncHVRdWVyeVNldERlc3Ryb3koV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0KQor
eworICAgIHF1ZXJ5U2V0LT5xdWVyeVNldC5kZXN0cm95KCk7Cit9CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU0MjgyZGQwZTY4NjI1MDk5YmM3MDMxZjJjYzQ0MWVjZjA3MjgzMjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5oCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisjaW1wb3J0IDxmdW5jdGlvbmFsPgorI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQnVmZmVy
OworY2xhc3MgQ29tbWFuZEJ1ZmZlcjsKKworY2xhc3MgUXVldWUgeworcHVibGljOgorICAgIHZv
aWQgb25TdWJtaXR0ZWRXb3JrRG9uZSh1aW50NjRfdCBzaWduYWxWYWx1ZSwgc3RkOjpmdW5jdGlv
bjx2b2lkKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBz
dWJtaXQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQ29tbWFuZEJ1ZmZlcj4+
JiYgY29tbWFuZHMpOworICAgIHZvaWQgd3JpdGVCdWZmZXIoY29uc3QgQnVmZmVyJiwgdWludDY0
X3QgYnVmZmVyT2Zmc2V0LCB2b2lkIGNvbnN0ICogZGF0YSwgc2l6ZV90KTsKKyAgICB2b2lkIHdy
aXRlVGV4dHVyZShXR1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIGRlc3RpbmF0aW9uLCB2b2lk
IGNvbnN0ICogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBXR1BVVGV4dHVyZURhdGFMYXlvdXQgY29u
c3QgKiwgV0dQVUV4dGVudDNEIGNvbnN0ICogd3JpdGVTaXplKTsKK307CisKK30KKworc3RydWN0
IFdHUFVRdWV1ZUltcGwgeworICAgIFdlYkdQVTo6UXVldWUgcXVldWU7Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9R
dWV1ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NzcxYTQ3MDk2MjliYTBkZDA3NzU5NGI5Y2MxMDM0NTM1YmMy
NzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KQEAg
LTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUXVldWUuaCIKKworI2ltcG9ydCAiQnVm
ZmVyLmgiCisjaW1wb3J0ICJDb21tYW5kQnVmZmVyLmgiCisjaW1wb3J0ICJXZWJHUFVFeHQuaCIK
KworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3ZvaWQgUXVldWU6Om9uU3VibWl0dGVkV29ya0RvbmUo
dWludDY0X3Qgc2lnbmFsVmFsdWUsIHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVUXVldWVXb3JrRG9u
ZVN0YXR1cyk+JiYgY2FsbGJhY2spCit7CisgICAgVU5VU0VEX1BBUkFNKHNpZ25hbFZhbHVlKTsK
KyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworfQorCit2b2lkIFF1ZXVlOjpzdWJtaXQoVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQ29tbWFuZEJ1ZmZlcj4+JiYgY29tbWFu
ZHMpCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbW1hbmRzKTsKK30KKwordm9pZCBRdWV1ZTo6d3Jp
dGVCdWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IGJ1ZmZlck9mZnNldCwgdm9p
ZCBjb25zdCAqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIp
OworICAgIFVOVVNFRF9QQVJBTShidWZmZXJPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShkYXRh
KTsKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Cit9CisKK3ZvaWQgUXVldWU6OndyaXRlVGV4dHVy
ZShXR1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIGRlc3RpbmF0aW9uLCB2b2lkIGNvbnN0ICog
ZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBXR1BVVGV4dHVyZURhdGFMYXlvdXQgY29uc3QgKiBkYXRh
TGF5b3V0LCBXR1BVRXh0ZW50M0QgY29uc3QgKiB3cml0ZVNpemUpCit7CisgICAgVU5VU0VEX1BB
UkFNKGRlc3RpbmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BB
UkFNKGRhdGFTaXplKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YUxheW91dCk7CisgICAgVU5VU0VE
X1BBUkFNKHdyaXRlU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2b2lkIHdn
cHVRdWV1ZVJlbGVhc2UoV0dQVVF1ZXVlIHF1ZXVlKQoreworICAgIGRlbGV0ZSBxdWV1ZTsKK30K
Kwordm9pZCB3Z3B1UXVldWVPblN1Ym1pdHRlZFdvcmtEb25lKFdHUFVRdWV1ZSBxdWV1ZSwgdWlu
dDY0X3Qgc2lnbmFsVmFsdWUsIFdHUFVRdWV1ZVdvcmtEb25lQ2FsbGJhY2sgY2FsbGJhY2ssIHZv
aWQgKiB1c2VyZGF0YSkKK3sKKyAgICBxdWV1ZS0+cXVldWUub25TdWJtaXR0ZWRXb3JrRG9uZShz
aWduYWxWYWx1ZSwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVz
IHN0YXR1cykgeworICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHVzZXJkYXRhKTsKKyAgICB9KTsK
K30KKwordm9pZCB3Z3B1UXVldWVTdWJtaXQoV0dQVVF1ZXVlIHF1ZXVlLCB1aW50MzJfdCBjb21t
YW5kQ291bnQsIFdHUFVDb21tYW5kQnVmZmVyIGNvbnN0ICogY29tbWFuZHMpCit7CisgICAgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgV2ViR1BVOjpDb21tYW5kQnVmZmVyPj4g
Y29tbWFuZHNUb0ZvcndhcmQ7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNvbW1hbmRD
b3VudDsgKytpKQorICAgICAgICBjb21tYW5kc1RvRm9yd2FyZC5hcHBlbmQoY29tbWFuZHNbaV0t
PmNvbW1hbmRCdWZmZXIpOworICAgIHF1ZXVlLT5xdWV1ZS5zdWJtaXQoV1RGTW92ZShjb21tYW5k
c1RvRm9yd2FyZCkpOworfQorCit2b2lkIHdncHVRdWV1ZVdyaXRlQnVmZmVyKFdHUFVRdWV1ZSBx
dWV1ZSwgV0dQVUJ1ZmZlciBidWZmZXIsIHVpbnQ2NF90IGJ1ZmZlck9mZnNldCwgdm9pZCBjb25z
dCAqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIHF1ZXVlLT5xdWV1ZS53cml0ZUJ1ZmZlcihi
dWZmZXItPmJ1ZmZlciwgYnVmZmVyT2Zmc2V0LCBkYXRhLCBzaXplKTsKK30KKwordm9pZCB3Z3B1
UXVldWVXcml0ZVRleHR1cmUoV0dQVVF1ZXVlIHF1ZXVlLCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSBj
b25zdCAqIGRlc3RpbmF0aW9uLCB2b2lkIGNvbnN0ICogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBX
R1BVVGV4dHVyZURhdGFMYXlvdXQgY29uc3QgKiBkYXRhTGF5b3V0LCBXR1BVRXh0ZW50M0QgY29u
c3QgKiB3cml0ZVNpemUpCit7CisgICAgcXVldWUtPnF1ZXVlLndyaXRlVGV4dHVyZShkZXN0aW5h
dGlvbiwgZGF0YSwgZGF0YVNpemUsIGRhdGFMYXlvdXQsIHdyaXRlU2l6ZSk7Cit9CisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5oIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUmVuZGVyQnVuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJkYTFkODRlMmNhZGIxOGZkMTFh
NTQxMTkwMTg2Y2UxZDY0OGQ2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1JlbmRlckJ1bmRsZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BV
LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBSZW5kZXJCdW5kbGUgeworCit9Owor
Cit9CisKK3N0cnVjdCBXR1BVUmVuZGVyQnVuZGxlSW1wbCB7CisgICAgV2ViR1BVOjpSZW5kZXJC
dW5kbGUgcmVuZGVyQnVuZGxlOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlckJ1bmRsZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NTc5ZWRkNTEyMTVlMjk2NTM5OTEwNTE1YjhmYzQxOWYyMzdiMjA3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCkBAIC0w
LDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbmRlckJ1bmRsZS5oIgorCisjaW1wb3J0
ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK30KKwordm9pZCB3Z3B1UmVu
ZGVyQnVuZGxlUmVsZWFzZShXR1BVUmVuZGVyQnVuZGxlIHJlbmRlckJ1bmRsZSkKK3sKKyAgICBk
ZWxldGUgcmVuZGVyQnVuZGxlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
UmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxl
RW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYjY1ZWQ1MmU0NzMxODYwOTJhMzAzZjhjY2Q0YmNiZDVi
NmMwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5k
bGVFbmNvZGVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKwor
bmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIEJpbmRHcm91cDsKK2NsYXNzIEJ1ZmZlcjsKK2Ns
YXNzIFJlbmRlckJ1bmRsZTsKK2NsYXNzIFJlbmRlclBpcGVsaW5lOworCitjbGFzcyBSZW5kZXJC
dW5kbGVFbmNvZGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIGRyYXcodWludDMyX3QgdmVydGV4Q291
bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0VmVydGV4LCB1aW50MzJf
dCBmaXJzdEluc3RhbmNlKTsKKyAgICB2b2lkIGRyYXdJbmRleGVkKHVpbnQzMl90IGluZGV4Q291
bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMyX3Qg
YmFzZVZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSk7CisgICAgdm9pZCBkcmF3SW5kZXhl
ZEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0
T2Zmc2V0KTsKKyAgICB2b2lkIGRyYXdJbmRpcmVjdChjb25zdCBCdWZmZXImIGluZGlyZWN0QnVm
ZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCk7CisgICAgUmVuZGVyQnVuZGxlIGZpbmlzaChX
R1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICB2b2lkIGluc2VydERlYnVn
TWFya2VyKGNoYXIgY29uc3QgKiBtYXJrZXJMYWJlbCk7CisgICAgdm9pZCBwb3BEZWJ1Z0dyb3Vw
KCk7CisgICAgdm9pZCBwdXNoRGVidWdHcm91cChjaGFyIGNvbnN0ICogZ3JvdXBMYWJlbCk7Cisg
ICAgdm9pZCBzZXRCaW5kR3JvdXAodWludDMyX3QgZ3JvdXBJbmRleCwgY29uc3QgQmluZEdyb3Vw
JiwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCB1aW50MzJfdCBjb25zdCAqIGR5bmFtaWNP
ZmZzZXRzKTsKKyAgICB2b2lkIHNldEluZGV4QnVmZmVyKGNvbnN0IEJ1ZmZlciYsIFdHUFVJbmRl
eEZvcm1hdCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKKyAgICB2b2lkIHNldFBp
cGVsaW5lKGNvbnN0IFJlbmRlclBpcGVsaW5lJik7CisgICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXIo
dWludDMyX3Qgc2xvdCwgY29uc3QgQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBz
aXplKTsKK307CisKK30KKworc3RydWN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbCB7Cisg
ICAgV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXI7Cit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTUyMDVhZWJjYTRkOTJhMzA4YzViNGE4N2EyYTZkOTcxYmM0MGE5OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KQEAgLTAsMCAr
MSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbmRlckJ1bmRsZUVuY29kZXIuaCIKKworI2lt
cG9ydCAiQmluZEdyb3VwLmgiCisjaW1wb3J0ICJCdWZmZXIuaCIKKyNpbXBvcnQgIlJlbmRlckJ1
bmRsZS5oIgorI2ltcG9ydCAiUmVuZGVyUGlwZWxpbmUuaCIKKyNpbXBvcnQgIldlYkdQVUV4dC5o
IgorCituYW1lc3BhY2UgV2ViR1BVIHsKK3ZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhdyh1
aW50MzJfdCB2ZXJ0ZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmly
c3RWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCit7CisgICAgVU5VU0VEX1BBUkFNKHZl
cnRleENvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7CisgICAgVU5VU0VE
X1BBUkFNKGZpcnN0VmVydGV4KTsKKyAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7Cit9
CisKK3ZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodWludDMyX3QgaW5kZXhD
b3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RJbmRleCwgaW50MzJf
dCBiYXNlVmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQoreworICAgIFVOVVNFRF9QQVJB
TShpbmRleENvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7CisgICAgVU5V
U0VEX1BBUkFNKGZpcnN0SW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShiYXNlVmVydGV4KTsKKyAg
ICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7Cit9CisKK3ZvaWQgUmVuZGVyQnVuZGxlRW5j
b2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChjb25zdCBCdWZmZXImIGluZGlyZWN0QnVmZmVyLCB1
aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZm
ZXIpOworICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNldCk7Cit9CisKK3ZvaWQgUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIs
IHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1
ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKK30KKworUmVuZGVyQnVu
ZGxlIFJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaChXR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRv
ciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwor
ICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6aW5zZXJ0RGVi
dWdNYXJrZXIoY2hhciBjb25zdCAqIG1hcmtlckxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTSht
YXJrZXJMYWJlbCk7Cit9CisKK3ZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6cG9wRGVidWdHcm91
cCgpCit7CisKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVidWdHcm91cChj
aGFyIGNvbnN0ICogZ3JvdXBMYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ3JvdXBMYWJlbCk7
Cit9CisKK3ZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVpbnQzMl90IGdy
b3VwSW5kZXgsIGNvbnN0IEJpbmRHcm91cCYgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRD
b3VudCwgdWludDMyX3QgY29uc3QgKiBkeW5hbWljT2Zmc2V0cykKK3sKKyAgICBVTlVTRURfUEFS
QU0oZ3JvdXBJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwKTsKKyAgICBVTlVTRURfUEFS
QU0oZHluYW1pY09mZnNldENvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHMp
OworfQorCit2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEluZGV4QnVmZmVyKGNvbnN0IEJ1
ZmZlciYgYnVmZmVyLCBXR1BVSW5kZXhGb3JtYXQgZm9ybWF0LCB1aW50NjRfdCBvZmZzZXQsIHVp
bnQ2NF90IHNpemUpCit7CisgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgVU5VU0VEX1BB
UkFNKGZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFN
KHNpemUpOworfQorCit2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFBpcGVsaW5lKGNvbnN0
IFJlbmRlclBpcGVsaW5lJiBwaXBlbGluZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ocGlwZWxpbmUp
OworfQorCit2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcih1aW50MzJf
dCBzbG90LCBjb25zdCBCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBz
aXplKQoreworICAgIFVOVVNFRF9QQVJBTShzbG90KTsKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVy
KTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVy
UmVsZWFzZShXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyKQorewor
ICAgIGRlbGV0ZSByZW5kZXJCdW5kbGVFbmNvZGVyOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5k
bGVFbmNvZGVyRHJhdyhXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVy
LCB1aW50MzJfdCB2ZXJ0ZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3Qg
Zmlyc3RWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCit7CisgICAgcmVuZGVyQnVuZGxl
RW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNv
dW50LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlckJ1
bmRsZUVuY29kZXJEcmF3SW5kZXhlZChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5k
bGVFbmNvZGVyLCB1aW50MzJfdCBpbmRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1
aW50MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90IGJhc2VWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5z
dGFuY2UpCit7CisgICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci5k
cmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdEluZGV4LCBiYXNlVmVy
dGV4LCBmaXJzdEluc3RhbmNlKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRy
YXdJbmRleGVkSW5kaXJlY3QoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5j
b2RlciwgV0dQVUJ1ZmZlciBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQp
Cit7CisgICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci5kcmF3SW5k
ZXhlZEluZGlyZWN0KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKK30K
Kwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRpcmVjdChXR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVmZmVy
LCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5y
ZW5kZXJCdW5kbGVFbmNvZGVyLmRyYXdJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+YnVmZmVyLCBp
bmRpcmVjdE9mZnNldCk7Cit9CisKK1dHUFVSZW5kZXJCdW5kbGUgd2dwdVJlbmRlckJ1bmRsZUVu
Y29kZXJGaW5pc2goV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2Rlciwg
V0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIHJl
dHVybiBuZXcgV0dQVVJlbmRlckJ1bmRsZUltcGwgeyByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5k
ZXJCdW5kbGVFbmNvZGVyLmZpbmlzaChkZXNjcmlwdG9yKSB9OworfQorCit2b2lkIHdncHVSZW5k
ZXJCdW5kbGVFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIg
cmVuZGVyQnVuZGxlRW5jb2RlciwgY2hhciBjb25zdCAqIG1hcmtlckxhYmVsKQoreworICAgIHJl
bmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuaW5zZXJ0RGVidWdNYXJrZXIo
bWFya2VyTGFiZWwpOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUG9wRGVidWdH
cm91cChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyKQoreworICAg
IHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIucG9wRGVidWdHcm91cCgp
OworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUHVzaERlYnVnR3JvdXAoV0dQVVJl
bmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgY2hhciBjb25zdCAqIGdyb3Vw
TGFiZWwpCit7CisgICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci5w
dXNoRGVidWdHcm91cChncm91cExhYmVsKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5j
b2RlclNldEJpbmRHcm91cChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNv
ZGVyLCB1aW50MzJfdCBncm91cEluZGV4LCBXR1BVQmluZEdyb3VwIGdyb3VwLCB1aW50MzJfdCBk
eW5hbWljT2Zmc2V0Q291bnQsIHVpbnQzMl90IGNvbnN0ICogZHluYW1pY09mZnNldHMpCit7Cisg
ICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci5zZXRCaW5kR3JvdXAo
Z3JvdXBJbmRleCwgZ3JvdXAtPmJpbmRHcm91cCwgZHluYW1pY09mZnNldENvdW50LCBkeW5hbWlj
T2Zmc2V0cyk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRJbmRleEJ1ZmZl
cihXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBXR1BVQnVmZmVy
IGJ1ZmZlciwgV0dQVUluZGV4Rm9ybWF0IGZvcm1hdCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRf
dCBzaXplKQoreworICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIu
c2V0SW5kZXhCdWZmZXIoYnVmZmVyLT5idWZmZXIsIGZvcm1hdCwgb2Zmc2V0LCBzaXplKTsKK30K
Kwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFBpcGVsaW5lKFdHUFVSZW5kZXJCdW5k
bGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdHUFVSZW5kZXJQaXBlbGluZSBwaXBlbGlu
ZSkKK3sKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLnNldFBp
cGVsaW5lKHBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlckJ1
bmRsZUVuY29kZXJTZXRWZXJ0ZXhCdWZmZXIoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVy
QnVuZGxlRW5jb2RlciwgdWludDMyX3Qgc2xvdCwgV0dQVUJ1ZmZlciBidWZmZXIsIHVpbnQ2NF90
IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKK3sKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5k
ZXJCdW5kbGVFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcihzbG90LCBidWZmZXItPmJ1ZmZlciwgb2Zm
c2V0LCBzaXplKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVy
UGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjIyMGE2NmRmNzBkZDAwZmUzZDNiMjgzMWY0OTUxZDQ3ZjE2NGU4NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgK
QEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPGZ1bmN0
aW9uYWw+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJHUFUgeworCitj
bGFzcyBCaW5kR3JvdXA7CitjbGFzcyBCdWZmZXI7CitjbGFzcyBRdWVyeVNldDsKK2NsYXNzIFJl
bmRlckJ1bmRsZTsKK2NsYXNzIFJlbmRlclBpcGVsaW5lOworCitjbGFzcyBSZW5kZXJQYXNzRW5j
b2RlciB7CitwdWJsaWM6CisgICAgdm9pZCBiZWdpbk9jY2x1c2lvblF1ZXJ5KHVpbnQzMl90IHF1
ZXJ5SW5kZXgpOworICAgIHZvaWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBR
dWVyeVNldCYsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpOworICAgIHZvaWQgZHJhdyh1aW50MzJfdCB2
ZXJ0ZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RWZXJ0ZXgs
IHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpOworICAgIHZvaWQgZHJhd0luZGV4ZWQodWludDMyX3Qg
aW5kZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RJbmRleCwg
aW50MzJfdCBiYXNlVmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKTsKKyAgICB2b2lkIGRy
YXdJbmRleGVkSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3Qg
aW5kaXJlY3RPZmZzZXQpOworICAgIHZvaWQgZHJhd0luZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5k
aXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KTsKKyAgICB2b2lkIGVuZE9jY2x1
c2lvblF1ZXJ5KCk7CisgICAgdm9pZCBlbmRQYXNzKCk7CisgICAgdm9pZCBlbmRQaXBlbGluZVN0
YXRpc3RpY3NRdWVyeSgpOworICAgIHZvaWQgZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8Y29uc3QgUmVuZGVyQnVuZGxlPj4mJiBidW5kbGVzKTsKKyAgICB2b2lk
IGluc2VydERlYnVnTWFya2VyKGNoYXIgY29uc3QgKiBtYXJrZXJMYWJlbCk7CisgICAgdm9pZCBw
b3BEZWJ1Z0dyb3VwKCk7CisgICAgdm9pZCBwdXNoRGVidWdHcm91cChjaGFyIGNvbnN0ICogZ3Jv
dXBMYWJlbCk7CisgICAgdm9pZCBzZXRCaW5kR3JvdXAodWludDMyX3QgZ3JvdXBJbmRleCwgY29u
c3QgQmluZEdyb3VwJiwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCB1aW50MzJfdCBjb25z
dCAqIGR5bmFtaWNPZmZzZXRzKTsKKyAgICB2b2lkIHNldEJsZW5kQ29uc3RhbnQoV0dQVUNvbG9y
IGNvbnN0ICopOworICAgIHZvaWQgc2V0SW5kZXhCdWZmZXIoY29uc3QgQnVmZmVyJiwgV0dQVUlu
ZGV4Rm9ybWF0LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpOworICAgIHZvaWQgc2V0
UGlwZWxpbmUoY29uc3QgUmVuZGVyUGlwZWxpbmUmKTsKKyAgICB2b2lkIHNldFNjaXNzb3JSZWN0
KHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQp
OworICAgIHZvaWQgc2V0U3RlbmNpbFJlZmVyZW5jZSh1aW50MzJfdCk7CisgICAgdm9pZCBzZXRW
ZXJ0ZXhCdWZmZXIodWludDMyX3Qgc2xvdCwgY29uc3QgQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0
LCB1aW50NjRfdCBzaXplKTsKKyAgICB2b2lkIHNldFZpZXdwb3J0KGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0
aCk7CisgICAgdm9pZCB3cml0ZVRpbWVzdGFtcChjb25zdCBRdWVyeVNldCYsIHVpbnQzMl90IHF1
ZXJ5SW5kZXgpOworfTsKKworfQorCitzdHJ1Y3QgV0dQVVJlbmRlclBhc3NFbmNvZGVySW1wbCB7
CisgICAgV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlcjsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbSBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2Yjk2
MDVjZGZhNmZhMGQ4YmRmYzUyNWIxNmFkMGNjYjE2ZTJmMDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbQpAQCAtMCwwICsxLDI5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVuZGVyUGFzc0VuY29kZXIuaCIKKworI2ltcG9ydCAiQmlu
ZEdyb3VwLmgiCisjaW1wb3J0ICJCdWZmZXIuaCIKKyNpbXBvcnQgIlF1ZXJ5U2V0LmgiCisjaW1w
b3J0ICJSZW5kZXJCdW5kbGUuaCIKKyNpbXBvcnQgIlJlbmRlclBpcGVsaW5lLmgiCisjaW1wb3J0
ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3ZvaWQgUmVuZGVyUGFzc0Vu
Y29kZXI6OmJlZ2luT2NjbHVzaW9uUXVlcnkodWludDMyX3QgcXVlcnlJbmRleCkKK3sKKyAgICBV
TlVTRURfUEFSQU0ocXVlcnlJbmRleCk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OmJl
Z2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50
MzJfdCBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7CisgICAgVU5V
U0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpkcmF3
KHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBm
aXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dmVydGV4Q291bnQpOworICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKKyAgICBVTlVT
RURfUEFSQU0oZmlyc3RWZXJ0ZXgpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNlKTsK
K30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodWludDMyX3QgaW5kZXhD
b3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RJbmRleCwgaW50MzJf
dCBiYXNlVmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQoreworICAgIFVOVVNFRF9QQVJB
TShpbmRleENvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7CisgICAgVU5V
U0VEX1BBUkFNKGZpcnN0SW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShiYXNlVmVydGV4KTsKKyAg
ICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29k
ZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWlu
dDY0X3QgaW5kaXJlY3RPZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVy
KTsKKyAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworfQorCit2b2lkIFJlbmRlclBh
c3NFbmNvZGVyOjpkcmF3SW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWlu
dDY0X3QgaW5kaXJlY3RPZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVy
KTsKKyAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworfQorCit2b2lkIFJlbmRlclBh
c3NFbmNvZGVyOjplbmRPY2NsdXNpb25RdWVyeSgpCit7CisKK30KKwordm9pZCBSZW5kZXJQYXNz
RW5jb2Rlcjo6ZW5kUGFzcygpCit7CisKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5k
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQoreworCit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29k
ZXI6OmV4ZWN1dGVCdW5kbGVzKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFJl
bmRlckJ1bmRsZT4+JiYgYnVuZGxlcykKK3sKKyAgICBVTlVTRURfUEFSQU0oYnVuZGxlcyk7Cit9
CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKGNoYXIgY29uc3Qg
KiBtYXJrZXJMYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworfQorCit2
b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKK3sKKworfQorCit2b2lkIFJl
bmRlclBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cChjaGFyIGNvbnN0ICogZ3JvdXBMYWJlbCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oZ3JvdXBMYWJlbCk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0Vu
Y29kZXI6OnNldEJpbmRHcm91cCh1aW50MzJfdCBncm91cEluZGV4LCBjb25zdCBCaW5kR3JvdXAm
IGdyb3VwLCB1aW50MzJfdCBkeW5hbWljT2Zmc2V0Q291bnQsIHVpbnQzMl90IGNvbnN0ICogZHlu
YW1pY09mZnNldHMpCit7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwSW5kZXgpOworICAgIFVOVVNF
RF9QQVJBTShncm91cCk7CisgICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRDb3VudCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0QmxlbmRDb25zdGFudChXR1BVQ29sb3IgY29uc3QgKiBjb2xvcikKK3sKKyAgICBV
TlVTRURfUEFSQU0oY29sb3IpOworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRl
eEJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1ZmZlciwgV0dQVUluZGV4Rm9ybWF0IGZvcm1hdCwgdWlu
dDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIp
OworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwor
ICAgIFVOVVNFRF9QQVJBTShzaXplKTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0
UGlwZWxpbmUoY29uc3QgUmVuZGVyUGlwZWxpbmUmIHBpcGVsaW5lKQoreworICAgIFVOVVNFRF9Q
QVJBTShwaXBlbGluZSk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JS
ZWN0KHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWln
aHQpCit7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAgICBV
TlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworfQorCit2b2lk
IFJlbmRlclBhc3NFbmNvZGVyOjpzZXRTdGVuY2lsUmVmZXJlbmNlKHVpbnQzMl90IHJlZmVyZW5j
ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVmZXJlbmNlKTsKK30KKwordm9pZCBSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKHVpbnQzMl90IHNsb3QsIGNvbnN0IEJ1ZmZlciYgYnVm
ZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCit7CisgICAgVU5VU0VEX1BBUkFN
KHNsb3QpOworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShvZmZz
ZXQpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rl
cjo6c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQoreworICAgIFVOVVNFRF9QQVJBTSh4
KTsKKyAgICBVTlVTRURfUEFSQU0oeSk7CisgICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKKyAgICBV
TlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURfUEFSQU0obWluRGVwdGgpOworICAgIFVO
VVNFRF9QQVJBTShtYXhEZXB0aCk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OndyaXRl
VGltZXN0YW1wKGNvbnN0IFF1ZXJ5U2V0JiBxdWVyeVNldCwgdWludDMyX3QgcXVlcnlJbmRleCkK
K3sKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlTZXQpOworICAgIFVOVVNFRF9QQVJBTShxdWVyeUlu
ZGV4KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdVJlbmRlclBhc3NF
bmNvZGVyUmVsZWFzZShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCit7
CisgICAgZGVsZXRlIHJlbmRlclBhc3NFbmNvZGVyOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNz
RW5jb2RlckJlZ2luT2NjbHVzaW9uUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBh
c3NFbmNvZGVyLCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIHJlbmRlclBhc3NFbmNvZGVy
LT5yZW5kZXJQYXNzRW5jb2Rlci5iZWdpbk9jY2x1c2lvblF1ZXJ5KHF1ZXJ5SW5kZXgpOworfQor
Cit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnko
V0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVl
cnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJl
bmRlclBhc3NFbmNvZGVyLmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkocXVlcnlTZXQtPnF1
ZXJ5U2V0LCBxdWVyeUluZGV4KTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3
KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3QgdmVydGV4
Q291bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0VmVydGV4LCB1aW50
MzJfdCBmaXJzdEluc3RhbmNlKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNz
RW5jb2Rlci5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmly
c3RJbnN0YW5jZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWQo
V0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCBpbmRleENv
dW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90
IGJhc2VWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCit7CisgICAgcmVuZGVyUGFzc0Vu
Y29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNl
Q291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworfQorCit2b2lk
IHdncHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJbmRleGVkSW5kaXJlY3QoV0dQVVJlbmRlclBhc3NF
bmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVmZmVyLCB1aW50
NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFz
c0VuY29kZXIuZHJhd0luZGV4ZWRJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+YnVmZmVyLCBpbmRp
cmVjdE9mZnNldCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGlyZWN0
KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgV0dQVUJ1ZmZlciBpbmRp
cmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQpCit7CisgICAgcmVuZGVyUGFzc0Vu
Y29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmRyYXdJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+YnVm
ZmVyLCBpbmRpcmVjdE9mZnNldCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRW5k
T2NjbHVzaW9uUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyKQor
eworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5lbmRPY2NsdXNpb25R
dWVyeSgpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBhc3MoV0dQVVJlbmRl
clBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVy
LT5yZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NF
bmNvZGVyRW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJl
bmRlclBhc3NFbmNvZGVyKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5j
b2Rlci5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOworfQorCit2b2lkIHdncHVSZW5kZXJQ
YXNzRW5jb2RlckV4ZWN1dGVCdW5kbGVzKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNz
RW5jb2RlciwgdWludDMyX3QgYnVuZGxlc0NvdW50LCBXR1BVUmVuZGVyQnVuZGxlIGNvbnN0ICog
YnVuZGxlcykKK3sKKyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBXZWJH
UFU6OlJlbmRlckJ1bmRsZT4+IGJ1bmRsZXNUb0ZvcndhcmQ7CisgICAgZm9yICh1aW50MzJfdCBp
ID0gMDsgaSA8IGJ1bmRsZXNDb3VudDsgKytpKQorICAgICAgICBidW5kbGVzVG9Gb3J3YXJkLmFw
cGVuZChidW5kbGVzW2ldLT5yZW5kZXJCdW5kbGUpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5y
ZW5kZXJQYXNzRW5jb2Rlci5leGVjdXRlQnVuZGxlcyhXVEZNb3ZlKGJ1bmRsZXNUb0ZvcndhcmQp
KTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlcihXR1BV
UmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIGNoYXIgY29uc3QgKiBtYXJrZXJM
YWJlbCkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIuaW5zZXJ0
RGVidWdNYXJrZXIobWFya2VyTGFiZWwpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2Rl
clBvcERlYnVnR3JvdXAoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyKQor
eworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5wb3BEZWJ1Z0dyb3Vw
KCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXAoV0dQVVJl
bmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBjaGFyIGNvbnN0ICogZ3JvdXBMYWJl
bCkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIucHVzaERlYnVn
R3JvdXAoZ3JvdXBMYWJlbCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0Qmlu
ZEdyb3VwKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3Qg
Z3JvdXBJbmRleCwgV0dQVUJpbmRHcm91cCBncm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENv
dW50LCB1aW50MzJfdCBjb25zdCAqIGR5bmFtaWNPZmZzZXRzKQoreworICAgIHJlbmRlclBhc3NF
bmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoZ3JvdXBJbmRleCwgZ3JvdXAt
PmJpbmRHcm91cCwgZHluYW1pY09mZnNldENvdW50LCBkeW5hbWljT2Zmc2V0cyk7Cit9CisKK3Zv
aWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0QmxlbmRDb25zdGFudChXR1BVUmVuZGVyUGFzc0Vu
Y29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVDb2xvciBjb25zdCAqIGNvbG9yKQoreworICAg
IHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5zZXRCbGVuZENvbnN0YW50KGNv
bG9yKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRJbmRleEJ1ZmZlcihXR1BV
UmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCBX
R1BVSW5kZXhGb3JtYXQgZm9ybWF0LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCit7
CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLnNldEluZGV4QnVmZmVy
KGJ1ZmZlci0+YnVmZmVyLCBmb3JtYXQsIG9mZnNldCwgc2l6ZSk7Cit9CisKK3ZvaWQgd2dwdVJl
bmRlclBhc3NFbmNvZGVyU2V0UGlwZWxpbmUoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBh
c3NFbmNvZGVyLCBXR1BVUmVuZGVyUGlwZWxpbmUgcGlwZWxpbmUpCit7CisgICAgcmVuZGVyUGFz
c0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lLT5yZW5kZXJQ
aXBlbGluZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0U2Npc3NvclJlY3Qo
V0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCB4LCB1aW50
MzJfdCB5LCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQoreworICAgIHJlbmRlclBh
c3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5zZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTdGVuY2lsUmVmZXJl
bmNlKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3QgcmVm
ZXJlbmNlKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5zZXRT
dGVuY2lsUmVmZXJlbmNlKHJlZmVyZW5jZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNv
ZGVyU2V0VmVydGV4QnVmZmVyKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2Rl
ciwgdWludDMyX3Qgc2xvdCwgV0dQVUJ1ZmZlciBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWlu
dDY0X3Qgc2l6ZSkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIu
c2V0VmVydGV4QnVmZmVyKHNsb3QsIGJ1ZmZlci0+YnVmZmVyLCBvZmZzZXQsIHNpemUpOworfQor
Cit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0KFdHUFVSZW5kZXJQYXNzRW5j
b2RlciByZW5kZXJQYXNzRW5jb2RlciwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQoreworICAgIHJlbmRl
clBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBtaW5EZXB0aCwgbWF4RGVwdGgpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5j
b2RlcldyaXRlVGltZXN0YW1wKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2Rl
ciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIHJl
bmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci53cml0ZVRpbWVzdGFtcChxdWVyeVNl
dC0+cXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlw
ZWxpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NjliOTgyZDllYzQ1Yjc3ZTY3MmRhNWZjMGI2NjZkY2NjYTk5
ZTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxp
bmUuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIldlYkdQVS5oIgorCituYW1lc3Bh
Y2UgV2ViR1BVIHsKKworY2xhc3MgQmluZEdyb3VwTGF5b3V0OworCitjbGFzcyBSZW5kZXJQaXBl
bGluZSB7CitwdWJsaWM6CisgICAgQmluZEdyb3VwTGF5b3V0IGdldEJpbmRHcm91cExheW91dCh1
aW50MzJfdCBncm91cEluZGV4KTsKKyAgICB2b2lkIHNldExhYmVsKGNoYXIgY29uc3QgKik7Cit9
OworCit9CisKK3N0cnVjdCBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsKKyAgICBXZWJHUFU6OlJl
bmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5lOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVy
UGlwZWxpbmUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA1YzBiOGUyMTI4ZjZlZWI5YTA2ZGZiMTcwYmE1ZGY2
YWM5MDc1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBp
cGVsaW5lLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbmRlclBpcGVs
aW5lLmgiCisKKyNpbXBvcnQgIkJpbmRHcm91cExheW91dC5oIgorI2ltcG9ydCAiV2ViR1BVRXh0
LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitCaW5kR3JvdXBMYXlvdXQgUmVuZGVyUGlwZWxp
bmU6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBncm91cEluZGV4KQoreworICAgIFVOVVNF
RF9QQVJBTShncm91cEluZGV4KTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFJlbmRlclBp
cGVsaW5lOjpzZXRMYWJlbChjaGFyIGNvbnN0ICogbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFN
KGxhYmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdVJlbmRlclBp
cGVsaW5lUmVsZWFzZShXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUpCit7CisgICAg
ZGVsZXRlIHJlbmRlclBpcGVsaW5lOworfQorCitXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVSZW5k
ZXJQaXBlbGluZUdldEJpbmRHcm91cExheW91dChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlw
ZWxpbmUsIHVpbnQzMl90IGdyb3VwSW5kZXgpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVQmluZEdy
b3VwTGF5b3V0SW1wbCB7IHJlbmRlclBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZS5nZXRCaW5kR3Jv
dXBMYXlvdXQoZ3JvdXBJbmRleCkgfTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGlwZWxpbmVTZXRM
YWJlbChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUsIGNoYXIgY29uc3QgKiBsYWJl
bCkKK3sKKyAgICByZW5kZXJQaXBlbGluZS0+cmVuZGVyUGlwZWxpbmUuc2V0TGFiZWwobGFiZWwp
OworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmggYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE0ODNlMmJiNmFjZTQzZDU4
MzIyMDEwMWQ1MjE5YmZhOGFmNGEwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1NhbXBsZXIuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIldlYkdQVS5o
IgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgU2FtcGxlciB7CisKK307CisKK30KKwor
c3RydWN0IFdHUFVTYW1wbGVySW1wbCB7CisgICAgV2ViR1BVOjpTYW1wbGVyIHNhbXBsZXI7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI3YTQ1NTRkOGE4ZDRlZjE4NjVk
YWJmMTc2Y2EzNmQ3NWE5NjU4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1NhbXBsZXIubW0KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2FtcGxl
ci5oIgorCisjaW1wb3J0ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK30K
Kwordm9pZCB3Z3B1U2FtcGxlclJlbGVhc2UoV0dQVVNhbXBsZXIgc2FtcGxlcikKK3sKKyAgICBk
ZWxldGUgc2FtcGxlcjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRl
ck1vZHVsZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKaW5kZXggMmM4
M2JlNjEzMGYyY2MzNzlmY2UwYTU0ZjY2NzU3YWEyNDM1NGMzNC4uMTEyZWQxMzIwYTFmNTFiOWZh
ZGYwMzdmMzFjYjNlOGU3MzEwNDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
U2hhZGVyTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgK
QEAgLTI1LDYgKzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCi1zdHJ1Y3QgV0dQVVNoYWRlck1v
ZHVsZUltcGwgeworI2ltcG9ydCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitj
bGFzcyBTaGFkZXJNb2R1bGUgeworcHVibGljOgorICAgIHZvaWQgc2V0TGFiZWwoY2hhciBjb25z
dCAqKTsKK307CisKK30KIAorc3RydWN0IFdHUFVTaGFkZXJNb2R1bGVJbXBsIHsKKyAgICBXZWJH
UFU6OlNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVy
TW9kdWxlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxMjY2ZjMxYzJiOTg1ODc0ZWY4MGIwNTk3Njc1ZjgzMTk5
ZTFlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1
bGUubW0KQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2hhZGVyTW9kdWxlLmgi
CisKKyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKwordm9pZCBT
aGFkZXJNb2R1bGU6OnNldExhYmVsKGNoYXIgY29uc3QgKiBsYWJlbCkKK3sKKyAgICBVTlVTRURf
UEFSQU0obGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1U2hh
ZGVyTW9kdWxlUmVsZWFzZShXR1BVU2hhZGVyTW9kdWxlIHNoYWRlck1vZHVsZSkKK3sKKyAgICBk
ZWxldGUgc2hhZGVyTW9kdWxlOworfQorCit2b2lkIHdncHVTaGFkZXJNb2R1bGVTZXRMYWJlbChX
R1BVU2hhZGVyTW9kdWxlIHNoYWRlck1vZHVsZSwgY2hhciBjb25zdCAqIGxhYmVsKQoreworICAg
IHNoYWRlck1vZHVsZS0+c2hhZGVyTW9kdWxlLnNldExhYmVsKGxhYmVsKTsKK30KKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5oIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhZTVmYzI1NjBjY2FmZTUwNDIxODZiN2E2OTE0ZWE1
OTRhMjkyMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNl
LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKworbmFtZXNwYWNl
IFdlYkdQVSB7CisKK2NsYXNzIEFkYXB0ZXI7CisKK2NsYXNzIFN1cmZhY2UgeworcHVibGljOgor
ICAgIFdHUFVUZXh0dXJlRm9ybWF0IGdldFByZWZlcnJlZEZvcm1hdChjb25zdCBBZGFwdGVyJik7
Cit9OworCit9CisKK3N0cnVjdCBXR1BVU3VyZmFjZUltcGwgeworICAgIFdlYkdQVTo6U3VyZmFj
ZSBzdXJmYWNlOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkNjRkMjM4
N2Q4YzNiOGY4YzE1OWQxMGQzNDJhYzA0ZGVlNGE1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlN1cmZhY2UuaCIKKworI2ltcG9ydCAiQWRhcHRlci5oIgorI2ltcG9ydCAiV2ViR1BV
RXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitXR1BVVGV4dHVyZUZvcm1hdCBTdXJmYWNl
OjpnZXRQcmVmZXJyZWRGb3JtYXQoY29uc3QgQWRhcHRlciYgYWRhcHRlcikKK3sKKyAgICBVTlVT
RURfUEFSQU0oYWRhcHRlcik7CisgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X1VuZGVmaW5l
ZDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdVN1cmZhY2VSZWxlYXNl
KFdHUFVTdXJmYWNlIHN1cmZhY2UpCit7CisgICAgZGVsZXRlIHN1cmZhY2U7Cit9CisKK1dHUFVU
ZXh0dXJlRm9ybWF0IHdncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0KFdHUFVTdXJmYWNlIHN1
cmZhY2UsIFdHUFVBZGFwdGVyIGFkYXB0ZXIpCit7CisgICAgcmV0dXJuIHN1cmZhY2UtPnN1cmZh
Y2UuZ2V0UHJlZmVycmVkRm9ybWF0KGFkYXB0ZXItPmFkYXB0ZXIpOworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1N3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZDkwMzE3YTMxMzk2MjI3N2ZmMjg4YTU0ZGQ1YzI5
N2UxM2MyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hh
aW4uaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIldlYkdQVS5oIgorCituYW1lc3Bh
Y2UgV2ViR1BVIHsKKworY2xhc3MgVGV4dHVyZVZpZXc7CisKK2NsYXNzIFN3YXBDaGFpbiB7Citw
dWJsaWM6CisgICAgVGV4dHVyZVZpZXcgZ2V0Q3VycmVudFRleHR1cmVWaWV3KCk7CisgICAgdm9p
ZCBwcmVzZW50KCk7Cit9OworCit9CisKK3N0cnVjdCBXR1BVU3dhcENoYWluSW1wbCB7CisgICAg
V2ViR1BVOjpTd2FwQ2hhaW4gc3dhcENoYWluOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1N3YXBDaGFpbi5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xOThiM2ViOGFlOWJiMzgzNjI1NGYxNDRiZmViN2Q0NTU1MGQwYTFjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tCkBAIC0w
LDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlN3YXBDaGFpbi5oIgorCisjaW1wb3J0ICJU
ZXh0dXJlVmlldy5oIgorI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUg
eworCitUZXh0dXJlVmlldyBTd2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0dXJlVmlldygpCit7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBTd2FwQ2hhaW46OnByZXNlbnQoKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1U3dhcENoYWluUmVsZWFzZShXR1BVU3dh
cENoYWluIHN3YXBDaGFpbikKK3sKKyAgICBkZWxldGUgc3dhcENoYWluOworfQorCitXR1BVVGV4
dHVyZVZpZXcgd2dwdVN3YXBDaGFpbkdldEN1cnJlbnRUZXh0dXJlVmlldyhXR1BVU3dhcENoYWlu
IHN3YXBDaGFpbikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVUZXh0dXJlVmlld0ltcGwgeyBzd2Fw
Q2hhaW4tPnN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZVZpZXcoKSB9OworfQorCit2b2lkIHdn
cHVTd2FwQ2hhaW5QcmVzZW50KFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQoreworICAgIHN3YXBD
aGFpbi0+c3dhcENoYWluLnByZXNlbnQoKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY1MjVhZDVjYzgxMGQ4Yzg3YTcxNmFlM2JhYzI2MDA1YTY0NTliMjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNz
IFRleHR1cmVWaWV3OworCitjbGFzcyBUZXh0dXJlIHsKK3B1YmxpYzoKKyAgICBUZXh0dXJlVmll
dyBjcmVhdGVWaWV3KFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgY29uc3QgKik7CisgICAgdm9p
ZCBkZXN0cm95KCk7Cit9OworCit9CisKK3N0cnVjdCBXR1BVVGV4dHVyZUltcGwgeworICAgIFdl
YkdQVTo6VGV4dHVyZSB0ZXh0dXJlOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmViOGVhODA2ZTEzNzllNjhjMDI2OTNmZWJkMjFmOTM1N2IwZDE0OGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCkBAIC0wLDAgKzEsNjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlRleHR1cmUuaCIKKworI2ltcG9ydCAiVGV4dHVyZVZpZXcuaCIK
KyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworVGV4dHVyZVZp
ZXcgVGV4dHVyZTo6Y3JlYXRlVmlldyhXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIGNvbnN0ICog
ZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJu
IHsgfTsKK30KKwordm9pZCBUZXh0dXJlOjpkZXN0cm95KCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViR1BVCisKK3ZvaWQgd2dwdVRleHR1cmVSZWxlYXNlKFdHUFVUZXh0dXJlIHRleHR1cmUp
Cit7CisgICAgZGVsZXRlIHRleHR1cmU7Cit9CisKK1dHUFVUZXh0dXJlVmlldyB3Z3B1VGV4dHVy
ZUNyZWF0ZVZpZXcoV0dQVVRleHR1cmUgdGV4dHVyZSwgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVVGV4dHVyZVZpZXdJ
bXBsIHsgdGV4dHVyZS0+dGV4dHVyZS5jcmVhdGVWaWV3KGRlc2NyaXB0b3IpIH07Cit9CisKK3Zv
aWQgd2dwdVRleHR1cmVEZXN0cm95KFdHUFVUZXh0dXJlIHRleHR1cmUpCit7CisgICAgdGV4dHVy
ZS0+dGV4dHVyZS5kZXN0cm95KCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUwYTczMjcyMTg2YTlkNjFkNTY0Y2UzOGZjMWQ3NjliZWFmMmE1MGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCkBAIC0wLDAg
KzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJHUFUgewor
CitjbGFzcyBUZXh0dXJlVmlldyB7CisKK307CisKK30KKworc3RydWN0IFdHUFVUZXh0dXJlVmll
d0ltcGwgeworICAgIFdlYkdQVTo6VGV4dHVyZVZpZXcgdGV4dHVyZVZpZXc7Cit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9UZXh0dXJlVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzFlYWI4ZWMzZGQwYjU5OGIxYjJm
YjhiNjU3YjE3MDQzOTdmNmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvVGV4dHVyZVZpZXcubW0KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGV4
dHVyZVZpZXcuaCIKKworI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUg
eworCit9CisKK3ZvaWQgd2dwdVRleHR1cmVWaWV3UmVsZWFzZShXR1BVVGV4dHVyZVZpZXcgdGV4
dHVyZVZpZXcpCit7CisgICAgVU5VU0VEX1BBUkFNKHRleHR1cmVWaWV3KTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9XZWJHUFUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWU5ODQ5NmJhYTFh
MGI2Mjc1OWMyNzQzZjMxMjM3YzM4NTI0MTNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVS5oIgot
Ci0jaW5jbHVkZSAiU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8V0dTTC5oPgotCi1XR1BVU2hh
ZGVyTW9kdWxlIHdncHVEZXZpY2VDcmVhdGVTaGFkZXJNb2R1bGUoV0dQVURldmljZSwgV0dQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IgY29uc3QgKikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICBXR1NMOjpjaGVjayhTdHJpbmdJbXBsOjplbXB0eSgpLCBzdGQ6Om51bGxvcHQpOwot
ICAgIHJldHVybiBuZXcgV0dQVVNoYWRlck1vZHVsZUltcGw7Ci19Ci0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVS5tb2R1bGVtYXAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9XZWJHUFUubW9kdWxlbWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YTU1YWQwZTU5NDA1MWFjNGIzZjdiMDI0
MmZhMTM4OWUyMTJkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9X
ZWJHUFUubW9kdWxlbWFwCkBAIC0wLDAgKzEsNiBAQAorZnJhbWV3b3JrIG1vZHVsZSBXZWJHUFUg
W2V4dGVybl9jXSB7CisgIGhlYWRlciAiV2ViR1BVLmgiCisgIGhlYWRlciAiV2ViR1BVRXh0Lmgi
CisgIGV4cG9ydCAqCisgIG1vZHVsZSAqIHsgZXhwb3J0ICogfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJH
UFVFeHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MzE0YWY1YTYxNWNhMDZjODY3NTdjZjM2NDVjYWFjMTc1ODFk
MWI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0LmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV0VCR1BVRVhUX0hfCisjZGVmaW5lIFdFQkdQVUVYVF9IXworCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dHUFVfRVhQT1JUIHZvaWQg
d2dwdUFkYXB0ZXJSZWxlYXNlKFdHUFVBZGFwdGVyIGFkYXB0ZXIpOworV0dQVV9FWFBPUlQgdm9p
ZCB3Z3B1QmluZEdyb3VwUmVsZWFzZShXR1BVQmluZEdyb3VwIGJpbmRHcm91cCk7CitXR1BVX0VY
UE9SVCB2b2lkIHdncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlKFdHUFVCaW5kR3JvdXBMYXlvdXQg
YmluZEdyb3VwTGF5b3V0KTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdUJ1ZmZlclJlbGVhc2UoV0dQ
VUJ1ZmZlciBidWZmZXIpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1Q29tbWFuZEJ1ZmZlclJlbGVh
c2UoV0dQVUNvbW1hbmRCdWZmZXIgY29tbWFuZEJ1ZmZlcik7CitXR1BVX0VYUE9SVCB2b2lkIHdn
cHVDb21tYW5kRW5jb2RlclJlbGVhc2UoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVy
KTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclJlbGVhc2UoV0dQVUNv
bXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIpOworV0dQVV9FWFBPUlQgdm9pZCB3
Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZShXR1BVQ29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBl
bGluZSk7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVEZXZpY2VSZWxlYXNlKFdHUFVEZXZpY2UgZGV2
aWNlKTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdUluc3RhbmNlUmVsZWFzZShXR1BVSW5zdGFuY2Ug
aW5zdGFuY2UpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1UGlwZWxpbmVMYXlvdXRSZWxlYXNlKFdH
UFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxheW91dCk7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVR
dWVyeVNldFJlbGVhc2UoV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0KTsKK1dHUFVfRVhQT1JUIHZvaWQg
d2dwdVF1ZXVlUmVsZWFzZShXR1BVUXVldWUgcXVldWUpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1
UmVuZGVyQnVuZGxlUmVsZWFzZShXR1BVUmVuZGVyQnVuZGxlIHJlbmRlckJ1bmRsZSk7CitXR1BV
X0VYUE9SVCB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUmVsZWFzZShXR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyKTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdVJl
bmRlclBhc3NFbmNvZGVyUmVsZWFzZShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0Vu
Y29kZXIpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNlKFdHUFVS
ZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGluZSk7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVTYW1w
bGVyUmVsZWFzZShXR1BVU2FtcGxlciBzYW1wbGVyKTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdVNo
YWRlck1vZHVsZVJlbGVhc2UoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUpOworV0dQVV9F
WFBPUlQgdm9pZCB3Z3B1U3VyZmFjZVJlbGVhc2UoV0dQVVN1cmZhY2Ugc3VyZmFjZSk7CitXR1BV
X0VYUE9SVCB2b2lkIHdncHVTd2FwQ2hhaW5SZWxlYXNlKFdHUFVTd2FwQ2hhaW4gc3dhcENoYWlu
KTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdVRleHR1cmVSZWxlYXNlKFdHUFVUZXh0dXJlIHRleHR1
cmUpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1VGV4dHVyZVZpZXdSZWxlYXNlKFdHUFVUZXh0dXJl
VmlldyB0ZXh0dXJlVmlldyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfSAvLyBleHRlcm4gIkMi
CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJH
UFVPYmpDLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVPYmpDLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDY1N2RjN2I4ZTNhYTIyZTA5MzExMDQxNGNlYTU0NDZiNDM4YjM3
YjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi12b2lkIG9iamNGdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvV2ViR1BVT2JqQy5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNzZiMWVjNzc3YmViOTdmMjU3NzhmMWRi
MTU5YTExMTI5MWNhYjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkdQVU9iakMuaCIKLQotI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KLQotdm9pZCBvYmpjRnVuY3Rpb24oKQotewotICAgIGlkPE1UTERl
dmljZT4gZGV2aWNlID0gTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOwotICAgIFVOVVNF
RF9WQVJJQUJMRShkZXZpY2UpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9jb25maWcuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL2NvbmZpZy5oCmluZGV4IDhjMTI3YTk0
MzQwYTdkN2FjMDI5OWJiZjQyN2ExMjc2ZTUxNTY3M2IuLmFhYjkwYTAzMDRkNWY4Mzk3MmY5Nzhl
MGExNTU0YmQ1M2I0Y2QyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL2NvbmZp
Zy5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL2NvbmZpZy5oCkBAIC0yMCwxMyArMjAsMTMg
QEAKICAqLwogCiAjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYm
IGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKLSNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgor
I2ltcG9ydCAiY21ha2Vjb25maWcuaCIKICNlbmRpZgogCi0jaW5jbHVkZSAiRXhwb3J0TWFjcm9z
LmgiCisjaW1wb3J0ICJFeHBvcnRNYWNyb3MuaCIKIAotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCi0jaW5jbHVkZSA8d3RmL0Rpc2FsbG93
Q1R5cGUuaD4KKyNpbXBvcnQgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CiAKLSNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKyNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJlMDhlMzcyOTJhYmE0YTIwZDBhOTYx
M2E2YmRiMjQ2ZTE4Y2RkYWQuLjFhOTQ3ZTYxNjM0MjQ2YTA4YThjYmMxMGY1NWZkY2FiOTZmY2E4
YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAyMS0xMS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIFN0dWIgb3V0IG1ldGhvZHMgaW4gV2ViR1BV
LmZyYW1ld29yaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMyODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisKIDIwMjEtMTEtMDggIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdl
YkdQVS54Y29kZXByb2ogYW5kIFdlYkdQVS5mcmFtZXdvcmsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weQppbmRleCAwNmI1ZjMxMjQ0ODhjMzI5YWQxNmQ1NTFkNTQ2OGYwOTVm
MTNiYzcwLi4yOTUwNjlhMTY3OGNlNjA2MTM2ZDhiYWNmYWFmNmYwZGVhZGQ3Zjg3IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0zOTgsNyArMzk4LDggQEAgX1NL
SVBQRURfRklMRVNfV0lUSF9XQVJOSU5HID0gWwogICAgIG9zLnBhdGguam9pbignU291cmNlJywg
J1dlYktpdCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdndGsnLCAn
d2Via2l0LXdlYi1leHRlbnNpb24uaCcpLAogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dl
YktpdCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnd2Vi
a2l0LXdlYi1leHRlbnNpb24uaCcpLAogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYktp
dCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnRE9NJywg
J3dlYmtpdGRvbS5oJyksCi0gICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViR1BVJywgJ1dl
YkdQVScsICdXZWJHUFUuaCcpXQorICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkdQVScs
ICdXZWJHUFUnLCAnV2ViR1BVLmgnKSwKKyAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJH
UFUnLCAnV2ViR1BVJywgJ1dlYkdQVUV4dC5oJyldCiAKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFy
ZSBtb3JlIGNvbW1vbiBvciBvYnZpb3VzLgogIwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443668</attachid>
            <date>2021-11-09 02:50:00 -0800</date>
            <delta_ts>2021-11-09 08:47:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232872-20211109024959.patch</filename>
            <type>text/plain</type>
            <size>198633</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDQ4N2RjZDI3Y2M5ZTY2NWJl
NGUxYTI3OTRhMTk0OWJmNTg0NGI1NWQuLmM2NDNlNDgxODBiZDRhZDdkNTNhYTVmOWMwZjhkYmQ4
ZmU0MTZmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzA0IEBACisyMDIxLTExLTA5ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gU3R1
YiBvdXQgbWV0aG9kcyBpbiBXZWJHUFUuZnJhbWV3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNyZWF0ZXMgZW1wdHkgaW1wbGVtZW50YXRp
b25zIGZvciBhbGwgdGhlIG1ldGhvZHMgaW4gV2ViR1BVLmZyYW1ld29yay4KKyAgICAgICAgVGhp
cyBtZWFucyB0aGF0IHRoZXJlIGFyZSBub3cgaW1wbGVtZW50YXRpb25zIGZvciBldmVyeSBBUEkg
Y2FsbCwgc28gUEFMCisgICAgICAgIGNhbiBzdWNjZXNzZnVsbHkgY2FsbCBpbnRvIFdlYkdQVS5m
cmFtZXdvcmsgYW5kIGxpbmsgd2l0aCBpdC4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1Zl
cnNpb24ueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkdQVS54
Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJHUFUvQWRhcHRlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQ
VS9TaGFkZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OmdldExpbWl0cyk6CisgICAgICAgIChXZWJHUFU6OkFk
YXB0ZXI6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpoYXNGZWF0
dXJlKToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6cmVxdWVzdERldmljZSk6CisgICAgICAg
ICh3Z3B1QWRhcHRlclJlbGVhc2UpOgorICAgICAgICAod2dwdUFkYXB0ZXJHZXRMaW1pdHMpOgor
ICAgICAgICAod2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKHdncHVBZGFwdGVy
SGFzRmVhdHVyZSk6CisgICAgICAgICh3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2UpOgorICAgICAg
ICAqIFdlYkdQVS9CaW5kR3JvdXAuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUv
U2hhZGVyTW9kdWxlLmguCisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cC5tbTogQ29waWVkIGZy
b20gU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5tbS4KKyAgICAgICAgKHdncHVCaW5k
R3JvdXBSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvQmluZEdyb3VwTGF5b3V0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oLgorICAgICAgICAqIFdl
YkdQVS9CaW5kR3JvdXBMYXlvdXQubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQ
VS9XZWJHUFUuY3BwLgorICAgICAgICAod2dwdUJpbmRHcm91cExheW91dFJlbGVhc2UpOgorICAg
ICAgICAqIFdlYkdQVS9CdWZmZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUv
U2hhZGVyTW9kdWxlLmguCisgICAgICAgICogV2ViR1BVL0J1ZmZlci5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJHUFU6OkJ1ZmZlcjo6ZGVzdHJveSk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6
Z2V0Q29uc3RNYXBwZWRSYW5nZSk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6Z2V0TWFwcGVk
UmFuZ2UpOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6Om1hcEFzeW5jKToKKyAgICAgICAgKFdl
YkdQVTo6QnVmZmVyOjp1bm1hcCk6CisgICAgICAgICh3Z3B1QnVmZmVyUmVsZWFzZSk6CisgICAg
ICAgICh3Z3B1QnVmZmVyRGVzdHJveSk6CisgICAgICAgICh3Z3B1QnVmZmVyR2V0Q29uc3RNYXBw
ZWRSYW5nZSk6CisgICAgICAgICh3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UpOgorICAgICAgICAo
d2dwdUJ1ZmZlck1hcEFzeW5jKToKKyAgICAgICAgKHdncHVCdWZmZXJVbm1hcCk6CisgICAgICAg
ICogV2ViR1BVL0NvbW1hbmRCdWZmZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJH
UFUvU2hhZGVyTW9kdWxlLmguCisgICAgICAgICogV2ViR1BVL0NvbW1hbmRCdWZmZXIubW06IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAgICh3
Z3B1Q29tbWFuZEJ1ZmZlclJlbGVhc2UpOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06IEFkZGVkLgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyk6CisgICAg
ICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAo
V2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKToKKyAgICAgICAgKFdl
YkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2Vi
R1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAgIChXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5j
b2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rl
cjo6cG9wRGVidWdHcm91cCk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpwdXNo
RGVidWdHcm91cCk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpyZXNvbHZlUXVl
cnlTZXQpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAp
OgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyUmVsZWFzZSk6CisgICAgICAgICh3Z3B1Q29t
bWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2Rl
ckJlZ2luUmVuZGVyUGFzcyk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVy
VG9CdWZmZXIpOgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvVGV4dHVy
ZSk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAg
ICAgICAgKHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAg
KHdncHVDb21tYW5kRW5jb2RlckZpbmlzaCk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJJ
bnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJQb3BEZWJ1Z0dy
b3VwKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKToKKyAgICAg
ICAgKHdncHVDb21tYW5kRW5jb2RlclJlc29sdmVRdWVyeVNldCk6CisgICAgICAgICh3Z3B1Q29t
bWFuZEVuY29kZXJXcml0ZVRpbWVzdGFtcCk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQYXNz
RW5jb2Rlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUu
aC4KKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1
ZXJ5KToKKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdCk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcyk6CisgICAgICAgIChX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgor
ICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKToK
KyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6CisgICAg
ICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKToKKyAgICAgICAg
KFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSk6CisgICAgICAgIChXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXApOgorICAgICAgICAod2dwdUNv
bXB1dGVQYXNzRW5jb2RlclJlbGVhc2UpOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2Rl
ckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNz
RW5jb2RlckRpc3BhdGNoKToKKyAgICAgICAgKHdncHVDb21wdXRlUGFzc0VuY29kZXJEaXNwYXRj
aEluZGlyZWN0KToKKyAgICAgICAgKHdncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQYXNzKToKKyAg
ICAgICAgKHdncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6
CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIpOgorICAg
ICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2RlclBvcERlYnVnR3JvdXApOgorICAgICAgICAod2dw
dUNvbXB1dGVQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKHdncHVDb21wdXRl
UGFzc0VuY29kZXJTZXRCaW5kR3JvdXApOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2Rl
clNldFBpcGVsaW5lKToKKyAgICAgICAgKHdncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVz
dGFtcCk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvQ29t
cHV0ZVBpcGVsaW5lLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVP
YmpDLm1tLgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OmdldEJpbmRHcm91cExh
eW91dCk6CisgICAgICAgIChXZWJHUFU6OkNvbXB1dGVQaXBlbGluZTo6c2V0TGFiZWwpOgorICAg
ICAgICAod2dwdUNvbXB1dGVQaXBlbGluZVJlbGVhc2UpOgorICAgICAgICAod2dwdUNvbXB1dGVQ
aXBlbGluZUdldEJpbmRHcm91cExheW91dCk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBpcGVsaW5l
U2V0TGFiZWwpOgorICAgICAgICAqIFdlYkdQVS9EZXZpY2UuaDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL0RldmljZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
QmluZEdyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlv
dXQpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJHUFU6OkRldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViR1BVOjpE
ZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVRdWVy
eVNldCk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rl
cik6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOgorICAgICAg
ICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViR1BVOjpEZXZp
Y2U6OmNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
U3dhcENoYWluKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNl
OjpnZXRMaW1pdHMpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmdldFF1ZXVlKToKKyAgICAg
ICAgKFdlYkdQVTo6RGV2aWNlOjpwb3BFcnJvclNjb3BlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2
aWNlOjpwdXNoRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6c2V0RGV2aWNl
TG9zdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpzZXRVbmNhcHR1cmVkRXJy
b3JDYWxsYmFjayk6CisgICAgICAgICh3Z3B1RGV2aWNlUmVsZWFzZSk6CisgICAgICAgICh3Z3B1
RGV2aWNlQ3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVCaW5kR3Jv
dXBMYXlvdXQpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZUJ1ZmZlcik6CisgICAgICAgICh3
Z3B1RGV2aWNlQ3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAod2dwdURldmljZUNyZWF0
ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAg
ICAgICAgKHdncHVEZXZpY2VDcmVhdGVRdWVyeVNldCk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3Jl
YXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVy
UGlwZWxpbmUpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMp
OgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAod2dwdURldmlj
ZUNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWlu
KToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKHdncHVEZXZp
Y2VEZXN0cm95KToKKyAgICAgICAgKHdncHVEZXZpY2VHZXRMaW1pdHMpOgorICAgICAgICAod2dw
dURldmljZUdldFF1ZXVlKToKKyAgICAgICAgKHdncHVEZXZpY2VQb3BFcnJvclNjb3BlKToKKyAg
ICAgICAgKHdncHVEZXZpY2VQdXNoRXJyb3JTY29wZSk6CisgICAgICAgICh3Z3B1RGV2aWNlU2V0
RGV2aWNlTG9zdENhbGxiYWNrKToKKyAgICAgICAgKHdncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJy
b3JDYWxsYmFjayk6CisgICAgICAgICogV2ViR1BVL0V4cG9ydE1hY3Jvcy5oOgorICAgICAgICAq
IFdlYkdQVS9JbnN0YW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UubW06IEFkZGVkLgorICAgICAg
ICAoV2ViR1BVOjpJbnN0YW5jZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJHUFU6Oklu
c3RhbmNlOjpwcm9jZXNzRXZlbnRzKToKKyAgICAgICAgKFdlYkdQVTo6SW5zdGFuY2U6OnJlcXVl
c3RBZGFwdGVyKToKKyAgICAgICAgKHdncHVJbnN0YW5jZVJlbGVhc2UpOgorICAgICAgICAod2dw
dUNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKHdncHVHZXRQcm9jQWRkcmVzcyk6CisgICAgICAg
ICh3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKHdncHVJbnN0YW5jZVByb2Nl
c3NFdmVudHMpOgorICAgICAgICAod2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIpOgorICAgICAg
ICAqIFdlYkdQVS9QaXBlbGluZUxheW91dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dl
YkdQVS9TaGFkZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvUGlwZWxpbmVMYXlvdXQubW06
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAg
ICh3Z3B1UGlwZWxpbmVMYXlvdXRSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvUXVlcnlTZXQu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmguCisgICAg
ICAgICogV2ViR1BVL1F1ZXJ5U2V0Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQ
VS9XZWJHUFVPYmpDLm1tLgorICAgICAgICAoV2ViR1BVOjpRdWVyeVNldDo6ZGVzdHJveSk6Cisg
ICAgICAgICh3Z3B1UXVlcnlTZXRSZWxlYXNlKToKKyAgICAgICAgKHdncHVRdWVyeVNldERlc3Ry
b3kpOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BV
L1dlYkdQVS9TaGFkZXJNb2R1bGUuaC4KKyAgICAgICAgKiBXZWJHUFUvUXVldWUubW06IEFkZGVk
LgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6b25TdWJtaXR0ZWRXb3JrRG9uZSk6CisgICAgICAg
IChXZWJHUFU6OlF1ZXVlOjpzdWJtaXQpOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVC
dWZmZXIpOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVUZXh0dXJlKToKKyAgICAgICAg
KHdncHVRdWV1ZVJlbGVhc2UpOgorICAgICAgICAod2dwdVF1ZXVlT25TdWJtaXR0ZWRXb3JrRG9u
ZSk6CisgICAgICAgICh3Z3B1UXVldWVTdWJtaXQpOgorICAgICAgICAod2dwdVF1ZXVlV3JpdGVC
dWZmZXIpOgorICAgICAgICAod2dwdVF1ZXVlV3JpdGVUZXh0dXJlKToKKyAgICAgICAgKiBXZWJH
UFUvUmVuZGVyQnVuZGxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRl
ck1vZHVsZS5oLgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGUubW06IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAgICh3Z3B1UmVuZGVy
QnVuZGxlUmVsZWFzZSk6CisgICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmguCisgICAgICAg
ICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxl
RW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcjo6
aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVy
Ojpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcjo6
cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpz
ZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRJ
bmRleEJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFBp
cGVsaW5lKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0VmVydGV4
QnVmZmVyKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUmVsZWFzZSk6CisgICAg
ICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXcpOgorICAgICAgICAod2dwdVJlbmRlckJ1
bmRsZUVuY29kZXJEcmF3SW5kZXhlZCk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2Rl
ckRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJE
cmF3SW5kaXJlY3QpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJGaW5pc2gpOgor
ICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJJbnNlcnREZWJ1Z01hcmtlcik6CisgICAg
ICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclBvcERlYnVnR3JvdXApOgorICAgICAgICAod2dw
dVJlbmRlckJ1bmRsZUVuY29kZXJQdXNoRGVidWdHcm91cCk6CisgICAgICAgICh3Z3B1UmVuZGVy
QnVuZGxlRW5jb2RlclNldEJpbmRHcm91cCk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5j
b2RlclNldEluZGV4QnVmZmVyKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0
UGlwZWxpbmUpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRWZXJ0ZXhCdWZm
ZXIpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcjo6YmVnaW5PY2NsdXNpb25RdWVyeSk6CisgICAgICAgIChXZWJH
UFU6OlJlbmRlclBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAg
ICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OmRyYXcpOgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAoV2ViR1BVOjpSZW5k
ZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdCk6CisgICAgICAgIChXZWJHUFU6OlJl
bmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kaXJlY3QpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQ
YXNzRW5jb2Rlcjo6ZW5kT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQ
YXNzRW5jb2Rlcjo6ZW5kUGFzcyk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVy
OjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBh
c3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NF
bmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NF
bmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29k
ZXI6OnB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6
OnNldEJpbmRHcm91cCk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyOjpzZXRC
bGVuZENvbnN0YW50KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldElu
ZGV4QnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVs
aW5lKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0
KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldFN0ZW5jaWxSZWZlcmVu
Y2UpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVy
KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdwb3J0KToKKyAg
ICAgICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OndyaXRlVGltZXN0YW1wKToKKyAgICAg
ICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclJlbGVhc2UpOgorICAgICAgICAod2dwdVJlbmRlclBh
c3NFbmNvZGVyQmVnaW5PY2NsdXNpb25RdWVyeSk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKHdncHVSZW5kZXJQ
YXNzRW5jb2RlckRyYXcpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4
ZWQpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCk6
CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJlY3QpOgorICAgICAgICAo
d2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAod2dwdVJl
bmRlclBhc3NFbmNvZGVyRW5kUGFzcyk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJF
bmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29k
ZXJFeGVjdXRlQnVuZGxlcyk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJJbnNlcnRE
ZWJ1Z01hcmtlcik6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJQb3BEZWJ1Z0dyb3Vw
KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKToKKyAgICAg
ICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNldEJpbmRHcm91cCk6CisgICAgICAgICh3Z3B1UmVu
ZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNz
RW5jb2RlclNldEluZGV4QnVmZmVyKToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNl
dFBpcGVsaW5lKToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFNjaXNzb3JSZWN0
KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFN0ZW5jaWxSZWZlcmVuY2UpOgor
ICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0VmVydGV4QnVmZmVyKToKKyAgICAgICAg
KHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0KToKKyAgICAgICAgKHdncHVSZW5kZXJQ
YXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGlwZWxp
bmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmguCisg
ICAgICAgICogV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
R1BVL1dlYkdQVS9XZWJHUFVPYmpDLm1tLgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU6
OnNldExhYmVsKToKKyAgICAgICAgKHdncHVSZW5kZXJQaXBlbGluZVJlbGVhc2UpOgorICAgICAg
ICAod2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKHdncHVS
ZW5kZXJQaXBlbGluZVNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvU2FtcGxlci5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5oLgorICAgICAgICAqIFdl
YkdQVS9TYW1wbGVyLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVP
YmpDLm1tLgorICAgICAgICAod2dwdVNhbXBsZXJSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUv
U2hhZGVyTW9kdWxlLmg6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5tbTogQ29waWVk
IGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5tbS4KKyAgICAgICAgKFdlYkdQ
VTo6U2hhZGVyTW9kdWxlOjpzZXRMYWJlbCk6CisgICAgICAgICh3Z3B1U2hhZGVyTW9kdWxlUmVs
ZWFzZSk6CisgICAgICAgICh3Z3B1U2hhZGVyTW9kdWxlU2V0TGFiZWwpOgorICAgICAgICAqIFdl
YkdQVS9TdXJmYWNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1v
ZHVsZS5oLgorICAgICAgICAqIFdlYkdQVS9TdXJmYWNlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViR1BVL1dlYkdQVS9XZWJHUFVPYmpDLm1tLgorICAgICAgICAoV2ViR1BVOjpTdXJmYWNlOjpn
ZXRQcmVmZXJyZWRGb3JtYXQpOgorICAgICAgICAod2dwdVN1cmZhY2VSZWxlYXNlKToKKyAgICAg
ICAgKHdncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0KToKKyAgICAgICAgKiBXZWJHUFUvU3dh
cENoYWluLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5o
LgorICAgICAgICAqIFdlYkdQVS9Td2FwQ2hhaW4ubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJH
UFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAgIChXZWJHUFU6OlN3YXBDaGFpbjo6Z2V0
Q3VycmVudFRleHR1cmVWaWV3KToKKyAgICAgICAgKFdlYkdQVTo6U3dhcENoYWluOjpwcmVzZW50
KToKKyAgICAgICAgKHdncHVTd2FwQ2hhaW5SZWxlYXNlKToKKyAgICAgICAgKHdncHVTd2FwQ2hh
aW5HZXRDdXJyZW50VGV4dHVyZVZpZXcpOgorICAgICAgICAod2dwdVN3YXBDaGFpblByZXNlbnQp
OgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUv
V2ViR1BVL1NoYWRlck1vZHVsZS5oLgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLm1tOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVPYmpDLm1tLgorICAgICAgICAoV2Vi
R1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6ZGVz
dHJveSk6CisgICAgICAgICh3Z3B1VGV4dHVyZVJlbGVhc2UpOgorICAgICAgICAod2dwdVRleHR1
cmVDcmVhdGVWaWV3KToKKyAgICAgICAgKHdncHVUZXh0dXJlRGVzdHJveSk6CisgICAgICAgICog
V2ViR1BVL1RleHR1cmVWaWV3Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1No
YWRlck1vZHVsZS5oLgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5tbTogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMubW0uCisgICAgICAgICh3Z3B1VGV4
dHVyZVZpZXdSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvV2ViR1BVLm1vZHVsZW1hcDogQWRk
ZWQuCisgICAgICAgICogV2ViR1BVL1dlYkdQVUV4dC5oOiBBZGRlZC4KKwogMjAyMS0xMC0xOSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ug
V2ViR1BVLnhjb2RlcHJvaiBhbmQgV2ViR1BVLmZyYW1ld29yawpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnIGIvU291cmNlL1dlYkdQVS9D
b25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzOWIwOTM5YTc0MTZl
MjZjMDE3NzQ2MDA2NTQ3MTY2YzQ1NTEyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL0NvbmZpZ3VyYXRpb25zL1ZlcnNpb24ueGNjb25maWcKQEAgLTAsMCArMSw2MSBAQAorLy8g
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BSk9SX1ZFUlNJT04gPSA2MTM7CitN
SU5PUl9WRVJTSU9OID0gMTsKK1RJTllfVkVSU0lPTiA9IDg7CitNSUNST19WRVJTSU9OID0gMDsK
K05BTk9fVkVSU0lPTiA9IDA7CitGVUxMX1ZFUlNJT04gPSAkKE1BSk9SX1ZFUlNJT04pLiQoTUlO
T1JfVkVSU0lPTikuJChUSU5ZX1ZFUlNJT04pOworCisvLyBUaGUgYnVuZGxlIHZlcnNpb24gYW5k
IHNob3J0IHZlcnNpb24gc3RyaW5nIGFyZSBzZXQgYmFzZWQgb24gdGhlIGN1cnJlbnQgYnVpbGQg
Y29uZmlndXJhdGlvbiwgc2VlIGJlbG93LgorQlVORExFX1ZFUlNJT04gPSAkKEJVTkRMRV9WRVJT
SU9OXyQoQ09ORklHVVJBVElPTikpOworU0hPUlRfVkVSU0lPTl9TVFJJTkcgPSAkKFNIT1JUX1ZF
UlNJT05fU1RSSU5HXyQoQ09ORklHVVJBVElPTikpCisKKy8vIFRoZSBzeXN0ZW0gdmVyc2lvbiBw
cmVmaXggaXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3lzdGVtIHZlcnNpb24uCitTWVNURU1fVkVS
U0lPTl9QUkVGSVggPSAkKFNZU1RFTV9WRVJTSU9OX1BSRUZJWF8kKFBMQVRGT1JNX05BTUUpXyQo
VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK1NZU1RFTV9WRVJTSU9OX1BSRUZJWF9t
YWNvc3hfMTAxNDAwID0gMTQ7CitTWVNURU1fVkVSU0lPTl9QUkVGSVhfbWFjb3N4XzEwMTUwMCA9
IDE1OworU1lTVEVNX1ZFUlNJT05fUFJFRklYX21hY29zeF8xMTAwMDAgPSAxNjsKK1NZU1RFTV9W
RVJTSU9OX1BSRUZJWF9tYWNvc3hfMTIwMDAwID0gMTc7CitTWVNURU1fVkVSU0lPTl9QUkVGSVhf
bWFjb3N4XzEzMDAwMCA9IDE4OworU1lTVEVNX1ZFUlNJT05fUFJFRklYW3Nkaz1pcGhvbmUqXSA9
IDg7CisKKy8vIFRoZSBwcm9kdWN0aW9uIGJ1aWxkIGFsd2F5cyB1c2VzIHRoZSBmdWxsIHZlcnNp
b24gd2l0aCBhIHN5c3RlbSB2ZXJzaW9uIHByZWZpeC4KK0JVTkRMRV9WRVJTSU9OX1Byb2R1Y3Rp
b24gPSAkKFNZU1RFTV9WRVJTSU9OX1BSRUZJWCkkKEZVTExfVkVSU0lPTik7CitCVU5ETEVfVkVS
U0lPTl8gPSAkKEJVTkRMRV9WRVJTSU9OX1Byb2R1Y3Rpb24pOworCisvLyBUaGUgcHJvZHVjdGlv
biBidWlsZCBhbHdheXMgdXNlcyB0aGUgbWFqb3IgdmVyc2lvbiB3aXRoIGEgc3lzdGVtIHZlcnNp
b24gcHJlZml4CitTSE9SVF9WRVJTSU9OX1NUUklOR19Qcm9kdWN0aW9uID0gJChTWVNURU1fVkVS
U0lPTl9QUkVGSVgpJChNQUpPUl9WRVJTSU9OKTsKK1NIT1JUX1ZFUlNJT05fU1RSSU5HXyA9ICQo
U0hPUlRfVkVSU0lPTl9TVFJJTkdfUHJvZHVjdGlvbik7CisKKy8vIExvY2FsIGJ1aWxkcyBhcmUg
dGhlIGZ1bGwgdmVyc2lvbiB3aXRoIGEgcGx1cyBzdWZmaXguCitCVU5ETEVfVkVSU0lPTl9SZWxl
YXNlID0gJChGVUxMX1ZFUlNJT04pKzsKK0JVTkRMRV9WRVJTSU9OX0RlYnVnID0gJChCVU5ETEVf
VkVSU0lPTl9SZWxlYXNlKTsKKworLy8gTG9jYWwgYnVpbGRzIHVzZSB0aGUgbWFqb3IgdmVyc2lv
biB3aXRoIGEgcGx1cyBzdWZmaXgKK1NIT1JUX1ZFUlNJT05fU1RSSU5HX1JlbGVhc2UgPSAkKE1B
Sk9SX1ZFUlNJT04pKzsKK1NIT1JUX1ZFUlNJT05fU1RSSU5HX0RlYnVnID0gJChTSE9SVF9WRVJT
SU9OX1NUUklOR19SZWxlYXNlKTsKKworRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsK
K0RZTElCX0NVUlJFTlRfVkVSU0lPTiA9ICQoRlVMTF9WRVJTSU9OKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnIGIvU291cmNlL1dlYkdQ
VS9Db25maWd1cmF0aW9ucy9XZWJHUFUueGNjb25maWcKaW5kZXggMGU4ZTg2ODFhNWFhNjViODBi
MWMyNGY2NzgwY2MzOTc0ZDRkYzMwOC4uNGQ0NmZjMzQyNDYyOTA4YzQ2MDRkNjMxM2RkMzNiMGZk
NjBiYjgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUueGNjb25m
aWcKQEAgLTIxLDYgKzIxLDggQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAor
I2luY2x1ZGUgIlZlcnNpb24ueGNjb25maWciCisKIEhFQURFUl9TRUFSQ0hfUEFUSFMgPSAiJChC
VUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKGluaGVyaXRlZCk7CiAKIElO
Rk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKQEAgLTQ5LDMgKzUxLDkgQEAgV0tfSU5TVEFMTF9Q
QVRIX1BSRUZJWCA9ICQoV0tfSU5TVEFMTF9QQVRIX1BSRUZJWF9ERVBMT1lNRU5UXyQoREVQTE9Z
TUVOVF9MT0NBVEkKIFdLX0lOU1RBTExfUEFUSF9QUkVGSVhfREVQTE9ZTUVOVF9ZRVNfTUFDT1Nf
U0lOQ0VfMTAxNV9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfWUVTID0gJChQTEFURk9STV9PT0Jf
U1lTVEVNX0NPTlRFTlRfRElSKTsKIAogR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9IFdH
UFVfU0hBUkVEX0xJQlJBUlkgV0dQVV9JTVBMRU1FTlRBVElPTiAkKGluaGVyaXRlZCk7CisKK0RF
RklORVNfTU9EVUxFID0gWUVTOworTU9EVUxFTUFQX0ZJTEUgPSBXZWJHUFUvV2ViR1BVLm1vZHVs
ZW1hcDsKKworU1VQUE9SVFNfVEVYVF9CQVNFRF9BUEkgPSBZRVM7CitUQVBJX1ZFUklGWV9NT0RF
ID0gUGVkYW50aWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5YTA4MjgwMTI2NGM1ZmU3MmQ0OWRkYmMzMzhlNmZjOTA4MGYzYTQzLi43
NTgxZTMxMzc4NjU0MmM5MWZlNWNmNDc1NGNlMDMzZjdmYjllMTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcsMTMgKzcsMzYgQEAK
IAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQzJD
RURFQTI3MUU4Mjg4MDBFREMxNkYgLyogV2ViR1BVT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMkNFREU5MjcxRTgyODgwMEVEQzE2RiAvKiBX
ZWJHUFVPYmpDLm1tICovOyB9OwogCQkxQzJDRURFRTI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUMyQ0VERUQyNzFFOEE3MzAwRURDMTZGIC8qIE1ldGFsLmZyYW1ld29yayAqLzsgfTsKKwkJ
MUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTIyNzNBNDFDMjAwOTVGOEQ1IC8q
IEluc3RhbmNlLm1tICovOyB9OworCQkxQzVBQ0FCNjI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVy
UGlwZWxpbmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzVBQ0E5ODI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUubW0gKi87IH07CisJ
CTFDNUFDQUJCMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5RDI3M0E0MjZEMDA5NUY4RDUgLyog
QnVmZmVyLm1tICovOyB9OworCQkxQzVBQ0FCRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5
RjI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0gKi87IH07CisJCTFDNUFDQUJGMjczQTQy
NkQwMDk1RjhENSAvKiBTd2FwQ2hhaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FBMTI3M0E0MjZEMDA5NUY4RDUgLyogU3dhcENoYWluLm1t
ICovOyB9OworCQkxQzVBQ0FDMDI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBpcGVsaW5lLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQTIy
NzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBlbGluZS5tbSAqLzsgfTsKKwkJMUM1QUNBQzEy
NzNBNDI2RDAwOTVGOEQ1IC8qIERldmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUEzMjczQTQyNkQwMDk1RjhENSAvKiBEZXZpY2UubW0g
Ki87IH07CisJCTFDNUFDQUMyMjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQYXNzRW5jb2Rlci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUE0
MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQYXNzRW5jb2Rlci5tbSAqLzsgfTsKKwkJMUM1QUNB
QzYyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQYXNzRW5jb2Rlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUE4MjczQTQyNkQwMDk1RjhE
NSAvKiBDb21wdXRlUGFzc0VuY29kZXIubW0gKi87IH07CisJCTFDNUFDQUM3MjczQTQyNkQwMDk1
RjhENSAvKiBBZGFwdGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM1QUNBQTkyNzNBNDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIubW0gKi87IH07CisJ
CTFDNUFDQUM5MjczQTQyNkUwMDk1RjhENSAvKiBDb21tYW5kRW5jb2Rlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUFCMjczQTQyNkQwMDk1
RjhENSAvKiBDb21tYW5kRW5jb2Rlci5tbSAqLzsgfTsKKwkJMUM1QUNBQ0IyNzNBNDI2RTAwOTVG
OEQ1IC8qIFF1ZXVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM1QUNBQUQyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXVlLm1tICovOyB9OworCQkxQzVB
Q0FDQzI3M0E0MjZFMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUFFMjczQTQyNkQwMDk1
RjhENSAvKiBSZW5kZXJCdW5kbGVFbmNvZGVyLm1tICovOyB9OworCQkxQzVBQ0FDRTI3M0E0MjZF
MDA5NUY4RDUgLyogU2hhZGVyTW9kdWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQjAyNzNBNDI2RDAwOTVGOEQ1IC8qIFNoYWRlck1vZHVs
ZS5tbSAqLzsgfTsKKwkJMUM1QUNBQ0YyNzNBNDI2RTAwOTVGOEQ1IC8qIFRleHR1cmUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FCMTI3M0E0
MjZEMDA5NUY4RDUgLyogVGV4dHVyZS5tbSAqLzsgfTsKKwkJMUM1QUNBRDEyNzNBNDI2RTAwOTVG
OEQ1IC8qIFN1cmZhY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzVBQ0FCMzI3M0E0MjZEMDA5NUY4RDUgLyogU3VyZmFjZS5tbSAqLzsgfTsKKwkJ
MUM1QUNBRDMyNzNBNEM4NjAwOTVGOEQ1IC8qIFdlYkdQVUV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRDIyNzNBNEM4NjAwOTVGOEQ1IC8q
IFdlYkdQVUV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKKwkJMUM1QUNBRDcyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRHcm91cC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRDUyNzNBNEQ3MDAwOTVG
OEQ1IC8qIEJpbmRHcm91cC5oICovOyB9OworCQkxQzVBQ0FERjI3M0E1NUFGMDA5NUY4RDUgLyog
QmluZEdyb3VwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM1QUNBREUyNzNBNTVBRjAwOTVGOEQ1IC8qIEJpbmRHcm91cC5tbSAqLzsgfTsKKwkJMUM1
QUNBRTEyNzNBNTVDMTAwOTVGOEQ1IC8qIEJpbmRHcm91cExheW91dC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUUwMjczQTU1QzEwMDk1RjhE
NSAvKiBCaW5kR3JvdXBMYXlvdXQubW0gKi87IH07CisJCTFDNUFDQUUzMjczQTU1Q0QwMDk1RjhE
NSAvKiBDb21tYW5kQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM1QUNBRTIyNzNBNTVDRDAwOTVGOEQ1IC8qIENvbW1hbmRCdWZmZXIubW0g
Ki87IH07CisJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUU0Mjcz
QTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSAqLzsgfTsKKwkJMUM1QUNBRTcyNzNB
NTVFRjAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUU2MjczQTU1RUYwMDk1RjhENSAvKiBSZW5kZXJC
dW5kbGUubW0gKi87IH07CisJCTFDNUFDQUU5MjczQTU1RkQwMDk1RjhENSAvKiBTYW1wbGVyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRTgy
NzNBNTVGRDAwOTVGOEQ1IC8qIFNhbXBsZXIubW0gKi87IH07CisJCTFDNUFDQUVCMjczQTU2MEQw
MDk1RjhENSAvKiBUZXh0dXJlVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDNUFDQUVBMjczQTU2MEQwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5t
bSAqLzsgfTsKIAkJMUNCQUIwOTIyNzE4Q0NBMDAwNjA4MEJCIC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQkFCMDkxMjcxOENDQTAwMDYwODBCQiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87
IH07CiAJCTFDRUJEN0U3MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0U2MjcxNkFGQkEwMEE1MjU0
RCAvKiBXZWJHUFUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTFDRUJEN0Y4MjcxNkIzNDQwMEE1MjU0RCAvKiBXR1NMLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDdGNzI3MTZCMzQ0MDBBNTI1NEQg
LyogV0dTTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
IAkJMUNFQkQ4MDMyNzE2QkY4MjAwQTUyNTREIC8qIFdHU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFQkQ4MDIyNzE2QkY4MjAwQTUyNTREIC8q
IFdHU0wuY3BwICovOyB9OwotCQkxQ0VCRDgwOTI3MTZDMzI0MDBBNTI1NEQgLyogV2ViR1BVLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEODA4
MjcxNkMzMjQwMEE1MjU0RCAvKiBXZWJHUFUuY3BwICovOyB9OwogCQkxQ0VCRDgyNjI3MTZDQUND
MDBBNTI1NEQgLyogbGlid2dzbC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUNFQkQ3RjIyNzE2QjJDQzAwQTUyNTREIC8qIGxpYndnc2wuYSAqLzsg
fTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC0yOCwxMCArNTEsNTYgQEAK
IC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJMUMyQ0VERTkyNzFFODI4ODAwRURDMTZGIC8qIFdl
YkdQVU9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHUFVPYmpDLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQzJDRURFQjI3MUU4MkMzMDBFREMxNkYgLyogV2ViR1BV
T2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMkNFREVEMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IE1ldGFsLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvTWV0YWwuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJMUM1
QUNBOTIyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSW5zdGFuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQTk2Mjcz
QTQyNkQwMDk1RjhENSAvKiBTdXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN1cmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBOTcyNzNB
NDI2RDAwOTVGOEQ1IC8qIFN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBOTgy
NzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVyUGlwZWxpbmUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNUFDQTk5MjczQTQyNkQwMDk1RjhENSAvKiBUZXh0dXJlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1QUNBOUEyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBhc3NFbmNvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclBhc3NFbmNvZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQTlCMjczQTQyNkQwMDk1RjhENSAv
KiBEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQTlDMjczQTQyNkQwMDk1RjhENSAvKiBR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0E5RDI3M0E0MjZEMDA5NUY4RDUgLyogQnVmZmVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVmZmVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0E5RTI3M0E0MjZEMDA5NUY4RDUgLyog
Q29tbWFuZEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFu
ZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBOUYyNzNBNDI2
RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUXVlcnlTZXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFD
QUEwMjczQTQyNkQwMDk1RjhENSAvKiBJbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVB
Q0FBMTI3M0E0MjZEMDA5NUY4RDUgLyogU3dhcENoYWluLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU3dhcENoYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzVBQ0FBMjI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBpcGVsaW5lLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29tcHV0ZVBpcGVsaW5lLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FBMzI3M0E0MjZEMDA5NUY4RDUg
LyogRGV2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGV2
aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FBNDI3M0E0MjZEMDA5
NUY4RDUgLyogUmVuZGVyUGFzc0VuY29kZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBSZW5kZXJQYXNzRW5jb2Rlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1QUNBQTUyNzNBNDI2RDAwOTVGOEQ1IC8qIEJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1QUNBQTYyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZUVuY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyQnVuZGxlRW5jb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FBNzI3M0E0MjZEMDA5NUY4RDUgLyog
Q29tcHV0ZVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXB1
dGVQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FBODI3M0E0
MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBhc3NFbmNvZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQ29tcHV0ZVBhc3NFbmNvZGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzVBQ0FBOTI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFkYXB0ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUFBMjczQTQyNkQwMDk1RjhENSAvKiBDb21w
dXRlUGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcHV0
ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUFCMjcz
QTQyNkQwMDk1RjhENSAvKiBDb21tYW5kRW5jb2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvbW1hbmRFbmNvZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzVBQ0FBQzI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVlcnlTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1QUNBQUQyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXVlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVldWUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNUFDQUFFMjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGVF
bmNvZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVy
QnVuZGxlRW5jb2Rlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBQUYy
NzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNUFDQUIwMjczQTQyNkQwMDk1RjhENSAvKiBTaGFkZXJNb2R1bGUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFkZXJNb2R1bGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUIxMjczQTQyNkQwMDk1RjhENSAvKiBUZXh0dXJl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dHVyZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBQjIyNzNBNDI2RDAwOTVGOEQ1IC8q
IEFkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRhcHRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FCMzI3M0E0MjZEMDA5NUY4RDUgLyog
U3VyZmFjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN1cmZh
Y2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUQyMjczQTRDODYwMDk1
RjhENSAvKiBXZWJHUFVFeHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUQ1MjczQTRENzAwMDk1RjhENSAvKiBCaW5kR3Jv
dXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmluZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNUFDQUQ4MjczQTREQzEwMDk1RjhENSAvKiBCaW5kR3JvdXBMYXlvdXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQmluZEdyb3VwTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNUFDQUQ5MjczQTRERTkwMDk1RjhENSAvKiBDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
QUNBREEyNzNBNEU3MTAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBpcGVsaW5lTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQURC
MjczQTRFQjgwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
QnVuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQURDMjczQTRFRkMw
MDk1RjhENSAvKiBTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBREQyNzNBNEYzRDAwOTVGOEQ1IC8qIFRleHR1cmVW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHR1cmVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNUFDQURFMjczQTU1QUYwMDk1RjhENSAvKiBCaW5kR3JvdXAubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBCaW5kR3JvdXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNUFDQUUwMjczQTU1QzEwMDk1RjhENSAvKiBCaW5kR3JvdXBMYXlvdXQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBCaW5kR3JvdXBMYXlvdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNUFDQUUyMjczQTU1Q0QwMDk1RjhENSAvKiBDb21tYW5kQnVmZmVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQ29tbWFuZEJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1QUNBRTQyNzNBNTVERDAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGlwZWxpbmVMYXlvdXQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNUFDQUU2MjczQTU1RUYwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJCdW5kbGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNUFDQUU4MjczQTU1RkQwMDk1RjhENSAvKiBTYW1wbGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2FtcGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1QUNBRUEyNzNBNTYwRDAwOTVGOEQ1IC8qIFRleHR1cmVWaWV3Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVGV4dHVyZVZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQkFCMDkxMjcxOENDQTAwMDYwODBCQiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMUNDMEM4QzkyNzNBN0Q4OTAwRDBCNDgxIC8qIFdl
YkdQVS5tb2R1bGVtYXAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAic291cmNlY29kZS5tb2R1bGUtbWFwIjsgcGF0aCA9IFdlYkdQVS5tb2R1bGVtYXA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQzBDOENBMjczQTgxOTEwMEQwQjQ4MSAv
KiBWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUJEN0UzMjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJH
UFUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViR1BV
LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUNFQkQ3
RTYyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQkQ3RjIyNzE2QjJDQzAwQTUyNTREIC8q
IGxpYndnc2wuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGlid2dzbC5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNDQsNyArMTEzLDYgQEAKIAkJMUNF
QkQ4MDIyNzE2QkY4MjAwQTUyNTREIC8qIFdHU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0dT
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUJEODA0MjcxNkJGQUIwMEE1
MjU0RCAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDRUJEODA3MjcxNkMyQzAwMEE1MjU0RCAvKiBBU1QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVNULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUJEODA4Mjcx
NkMzMjQwMEE1MjU0RCAvKiBXZWJHUFUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQkQ4MEEyNzE2QzM2QzAwQTUyNTRE
IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNFQkQ4MEIyNzE2QzM3OTAwQTUyNTREIC8qIEV4cG9ydE1hY3Jvcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHBvcnRNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNFQkQ4MEQyNzE2QzNEODAwQTUyNTREIC8qIFNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMCwx
MyArMTY4LDU3IEBACiAJCTFDRUJEN0U1MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFDNUFDQUIyMjczQTQy
NkQwMDk1RjhENSAvKiBBZGFwdGVyLmggKi8sCisJCQkJMUM1QUNBQTkyNzNBNDI2RDAwOTVGOEQ1
IC8qIEFkYXB0ZXIubW0gKi8sCisJCQkJMUM1QUNBRDUyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRH
cm91cC5oICovLAorCQkJCTFDNUFDQURFMjczQTU1QUYwMDk1RjhENSAvKiBCaW5kR3JvdXAubW0g
Ki8sCisJCQkJMUM1QUNBRDgyNzNBNERDMTAwOTVGOEQ1IC8qIEJpbmRHcm91cExheW91dC5oICov
LAorCQkJCTFDNUFDQUUwMjczQTU1QzEwMDk1RjhENSAvKiBCaW5kR3JvdXBMYXlvdXQubW0gKi8s
CisJCQkJMUM1QUNBQTUyNzNBNDI2RDAwOTVGOEQ1IC8qIEJ1ZmZlci5oICovLAorCQkJCTFDNUFD
QTlEMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIubW0gKi8sCisJCQkJMUM1QUNBRDkyNzNBNERF
OTAwOTVGOEQ1IC8qIENvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQkxQzVBQ0FFMjI3M0E1NUNEMDA5
NUY4RDUgLyogQ29tbWFuZEJ1ZmZlci5tbSAqLywKKwkJCQkxQzVBQ0E5RTI3M0E0MjZEMDA5NUY4
RDUgLyogQ29tbWFuZEVuY29kZXIuaCAqLywKKwkJCQkxQzVBQ0FBQjI3M0E0MjZEMDA5NUY4RDUg
LyogQ29tbWFuZEVuY29kZXIubW0gKi8sCisJCQkJMUM1QUNBQUEyNzNBNDI2RDAwOTVGOEQ1IC8q
IENvbXB1dGVQYXNzRW5jb2Rlci5oICovLAorCQkJCTFDNUFDQUE4MjczQTQyNkQwMDk1RjhENSAv
KiBDb21wdXRlUGFzc0VuY29kZXIubW0gKi8sCisJCQkJMUM1QUNBQTcyNzNBNDI2RDAwOTVGOEQ1
IC8qIENvbXB1dGVQaXBlbGluZS5oICovLAorCQkJCTFDNUFDQUEyMjczQTQyNkQwMDk1RjhENSAv
KiBDb21wdXRlUGlwZWxpbmUubW0gKi8sCiAJCQkJMUNFQkQ4MEEyNzE2QzM2QzAwQTUyNTREIC8q
IGNvbmZpZy5oICovLAorCQkJCTFDNUFDQTlCMjczQTQyNkQwMDk1RjhENSAvKiBEZXZpY2UuaCAq
LywKKwkJCQkxQzVBQ0FBMzI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLm1tICovLAogCQkJCTFD
RUJEODBCMjcxNkMzNzkwMEE1MjU0RCAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQkxQzVBQ0FB
MDI3M0E0MjZEMDA5NUY4RDUgLyogSW5zdGFuY2UuaCAqLywKKwkJCQkxQzVBQ0E5MjI3M0E0MUMy
MDA5NUY4RDUgLyogSW5zdGFuY2UubW0gKi8sCisJCQkJMUM1QUNBREEyNzNBNEU3MTAwOTVGOEQ1
IC8qIFBpcGVsaW5lTGF5b3V0LmggKi8sCisJCQkJMUM1QUNBRTQyNzNBNTVERDAwOTVGOEQ1IC8q
IFBpcGVsaW5lTGF5b3V0Lm1tICovLAorCQkJCTFDNUFDQUFDMjczQTQyNkQwMDk1RjhENSAvKiBR
dWVyeVNldC5oICovLAorCQkJCTFDNUFDQTlGMjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5t
bSAqLywKKwkJCQkxQzVBQ0E5QzI3M0E0MjZEMDA5NUY4RDUgLyogUXVldWUuaCAqLywKKwkJCQkx
QzVBQ0FBRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVldWUubW0gKi8sCisJCQkJMUM1QUNBREIyNzNB
NEVCODAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZS5oICovLAorCQkJCTFDNUFDQUU2MjczQTU1RUYw
MDk1RjhENSAvKiBSZW5kZXJCdW5kbGUubW0gKi8sCisJCQkJMUM1QUNBQTYyNzNBNDI2RDAwOTVG
OEQ1IC8qIFJlbmRlckJ1bmRsZUVuY29kZXIuaCAqLywKKwkJCQkxQzVBQ0FBRTI3M0E0MjZEMDA5
NUY4RDUgLyogUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSAqLywKKwkJCQkxQzVBQ0E5QTI3M0E0MjZE
MDA5NUY4RDUgLyogUmVuZGVyUGFzc0VuY29kZXIuaCAqLywKKwkJCQkxQzVBQ0FBNDI3M0E0MjZE
MDA5NUY4RDUgLyogUmVuZGVyUGFzc0VuY29kZXIubW0gKi8sCisJCQkJMUM1QUNBQUYyNzNBNDI2
RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLmggKi8sCisJCQkJMUM1QUNBOTgyNzNBNDI2RDAw
OTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLm1tICovLAorCQkJCTFDNUFDQURDMjczQTRFRkMwMDk1
RjhENSAvKiBTYW1wbGVyLmggKi8sCisJCQkJMUM1QUNBRTgyNzNBNTVGRDAwOTVGOEQ1IC8qIFNh
bXBsZXIubW0gKi8sCiAJCQkJMUNFQkQ4MEQyNzE2QzNEODAwQTUyNTREIC8qIFNoYWRlck1vZHVs
ZS5oICovLAotCQkJCTFDRUJEODA4MjcxNkMzMjQwMEE1MjU0RCAvKiBXZWJHUFUuY3BwICovLAor
CQkJCTFDNUFDQUIwMjczQTQyNkQwMDk1RjhENSAvKiBTaGFkZXJNb2R1bGUubW0gKi8sCisJCQkJ
MUM1QUNBOTYyNzNBNDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UuaCAqLywKKwkJCQkxQzVBQ0FCMzI3
M0E0MjZEMDA5NUY4RDUgLyogU3VyZmFjZS5tbSAqLywKKwkJCQkxQzVBQ0E5NzI3M0E0MjZEMDA5
NUY4RDUgLyogU3dhcENoYWluLmggKi8sCisJCQkJMUM1QUNBQTEyNzNBNDI2RDAwOTVGOEQ1IC8q
IFN3YXBDaGFpbi5tbSAqLywKKwkJCQkxQzVBQ0E5OTI3M0E0MjZEMDA5NUY4RDUgLyogVGV4dHVy
ZS5oICovLAorCQkJCTFDNUFDQUIxMjczQTQyNkQwMDk1RjhENSAvKiBUZXh0dXJlLm1tICovLAor
CQkJCTFDNUFDQUREMjczQTRGM0QwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5oICovLAorCQkJCTFD
NUFDQUVBMjczQTU2MEQwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5tbSAqLywKIAkJCQkxQ0VCRDdF
NjI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVLmggKi8sCi0JCQkJMUMyQ0VERUIyNzFFODJDMzAw
RURDMTZGIC8qIFdlYkdQVU9iakMuaCAqLywKLQkJCQkxQzJDRURFOTI3MUU4Mjg4MDBFREMxNkYg
LyogV2ViR1BVT2JqQy5tbSAqLywKKwkJCQkxQ0MwQzhDOTI3M0E3RDg5MDBEMEI0ODEgLyogV2Vi
R1BVLm1vZHVsZW1hcCAqLywKKwkJCQkxQzVBQ0FEMjI3M0E0Qzg2MDA5NUY4RDUgLyogV2ViR1BV
RXh0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkdQVTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0xMjgsNiArMjQwLDcgQEAKIAkJCQkxQ0VCRDdGQTI3MTZCM0Q1MDBBNTI1NEQg
LyogQmFzZS54Y2NvbmZpZyAqLywKIAkJCQkxQ0VCRDdGQjI3MTZCNUI0MDBBNTI1NEQgLyogRGVi
dWdSZWxlYXNlLnhjY29uZmlnICovLAogCQkJCTFDRUJEODAxMjcxNkI5QUIwMEE1MjU0RCAvKiBT
REtWYXJpYW50LnhjY29uZmlnICovLAorCQkJCTFDQzBDOENBMjczQTgxOTEwMEQwQjQ4MSAvKiBW
ZXJzaW9uLnhjY29uZmlnICovLAogCQkJCTFDRUJEN0ZDMjcxNkI2NDQwMEE1MjU0RCAvKiBXZWJH
UFUueGNjb25maWcgKi8sCiAJCQkJMUNFQkQ3RkQyNzE2QjY0RjAwQTUyNTREIC8qIFdHU0wueGNj
b25maWcgKi8sCiAJCQkpOwpAQCAtMTU0LDcgKzI2Nyw5IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKKwkJCQkxQzVBQ0FENzI3M0E0RDcwMDA5NUY4RDUgLyogQmluZEdyb3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQ0VCRDdFNzI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxQzVBQ0FEMzI3M0E0Qzg2MDA5NUY4RDUgLyogV2ViR1BVRXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI1Niw4ICszNzEsMjkgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJ
CTFDRUJEODA5MjcxNkMzMjQwMEE1MjU0RCAvKiBXZWJHUFUuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMUMyQ0VERUEyNzFFODI4ODAwRURDMTZGIC8qIFdlYkdQVU9iakMubW0gaW4gU291cmNlcyAq
LywKKwkJCQkxQzVBQ0FDNzI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTFDNUFDQURGMjczQTU1QUYwMDk1RjhENSAvKiBCaW5kR3JvdXAubW0gaW4gU291
cmNlcyAqLywKKwkJCQkxQzVBQ0FFMTI3M0E1NUMxMDA5NUY4RDUgLyogQmluZEdyb3VwTGF5b3V0
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQkIyNzNBNDI2RDAwOTVGOEQ1IC8qIEJ1ZmZl
ci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUUzMjczQTU1Q0QwMDk1RjhENSAvKiBDb21t
YW5kQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzkyNzNBNDI2RTAwOTVGOEQ1
IC8qIENvbW1hbmRFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzYyNzNBNDI2
RDAwOTVGOEQ1IC8qIENvbXB1dGVQYXNzRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFD
NUFDQUMwMjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlwZWxpbmUubW0gaW4gU291cmNlcyAq
LywKKwkJCQkxQzVBQ0FDMTI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMUM1QUNBRTUyNzNBNTVERDAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQkQyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQ0IyNzNBNDI2RTAwOTVGOEQ1IC8qIFF1ZXVl
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBRTcyNzNBNTVFRjAwOTVGOEQ1IC8qIFJlbmRl
ckJ1bmRsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUNDMjczQTQyNkUwMDk1RjhENSAv
KiBSZW5kZXJCdW5kbGVFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzIyNzNB
NDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBhc3NFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUM1QUNBQjYyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMUM1QUNBRTkyNzNBNTVGRDAwOTVGOEQ1IC8qIFNhbXBsZXIubW0gaW4gU291cmNl
cyAqLywKKwkJCQkxQzVBQ0FDRTI3M0E0MjZFMDA5NUY4RDUgLyogU2hhZGVyTW9kdWxlLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBRDEyNzNBNDI2RTAwOTVGOEQ1IC8qIFN1cmZhY2UubW0g
aW4gU291cmNlcyAqLywKKwkJCQkxQzVBQ0FCRjI3M0E0MjZEMDA5NUY4RDUgLyogU3dhcENoYWlu
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQ0YyNzNBNDI2RTAwOTVGOEQ1IC8qIFRleHR1
cmUubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzVBQ0FFQjI3M0E1NjBEMDA5NUY4RDUgLyogVGV4
dHVyZVZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FkYXB0ZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYTJkNmIxOGM0ZTI1MmQzZmYyZjEzZGM5ZjgyNDYwNjhhZGFlYjdmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2ltcG9ydCAiV2ViR1BVLmgiCisjaW1wb3J0IDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2Ug
V2ViR1BVIHsKKworY2xhc3MgRGV2aWNlOworCitjbGFzcyBBZGFwdGVyIHsKK3B1YmxpYzoKKyAg
ICBib29sIGdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzICopOworICAgIHZvaWQgZ2V0UHJv
cGVydGllcyhXR1BVQWRhcHRlclByb3BlcnRpZXMgKik7CisgICAgYm9vbCBoYXNGZWF0dXJlKFdH
UFVGZWF0dXJlTmFtZSk7CisgICAgdm9pZCByZXF1ZXN0RGV2aWNlKFdHUFVEZXZpY2VEZXNjcmlw
dG9yIGNvbnN0ICosIHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywg
RGV2aWNlJiYsIGNoYXIgY29uc3QgKik+JiYgY2FsbGJhY2spOworfTsKKworfQorCitzdHJ1Y3Qg
V0dQVUFkYXB0ZXJJbXBsIHsKKyAgICBXZWJHUFU6OkFkYXB0ZXIgYWRhcHRlcjsKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQWRhcHRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBkMzgyYTczYmVjM2RiMzY5Mjk1NGVmZTNi
Y2ZiMzlhZWQzNTNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRh
cHRlci5tbQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBZGFwdGVyLmgiCisK
KyNpbXBvcnQgIkRldmljZS5oIgorI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisjaW1wb3J0IDx3dGYv
U3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJHUFUgeworCitib29sIEFkYXB0ZXI6Omdl
dExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzICogbGltaXRzKQoreworICAgIFVOVVNFRF9QQVJB
TShsaW1pdHMpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBZGFwdGVyOjpnZXRQcm9w
ZXJ0aWVzKFdHUFVBZGFwdGVyUHJvcGVydGllcyAqIHByb3BlcnRpZXMpCit7CisgICAgVU5VU0VE
X1BBUkFNKHByb3BlcnRpZXMpOworfQorCitib29sIEFkYXB0ZXI6Omhhc0ZlYXR1cmUoV0dQVUZl
YXR1cmVOYW1lIGZlYXR1cmUpCit7CisgICAgVU5VU0VEX1BBUkFNKGZlYXR1cmUpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKFdHUFVEZXZpY2VE
ZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVSZXF1
ZXN0RGV2aWNlU3RhdHVzLCBEZXZpY2UmJiwgY2hhciBjb25zdCAqKT4mJiBjYWxsYmFjaykKK3sK
KyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNr
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdUFkYXB0ZXJSZWxlYXNl
KFdHUFVBZGFwdGVyIGFkYXB0ZXIpCit7CisgICAgZGVsZXRlIGFkYXB0ZXI7Cit9CisKK2Jvb2wg
d2dwdUFkYXB0ZXJHZXRMaW1pdHMoV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVVN1cHBvcnRlZExp
bWl0cyAqIGxpbWl0cykKK3sKKyAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci5nZXRMaW1pdHMo
bGltaXRzKTsKK30KKwordm9pZCB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoV0dQVUFkYXB0ZXIg
YWRhcHRlciwgV0dQVUFkYXB0ZXJQcm9wZXJ0aWVzICogcHJvcGVydGllcykKK3sKKyAgICBhZGFw
dGVyLT5hZGFwdGVyLmdldFByb3BlcnRpZXMocHJvcGVydGllcyk7Cit9CisKK2Jvb2wgd2dwdUFk
YXB0ZXJIYXNGZWF0dXJlKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJlTmFtZSBmZWF0
dXJlKQoreworICAgIHJldHVybiBhZGFwdGVyLT5hZGFwdGVyLmhhc0ZlYXR1cmUoZmVhdHVyZSk7
Cit9CisKK3ZvaWQgd2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKFdHUFVBZGFwdGVyIGFkYXB0ZXIs
IFdHUFVEZXZpY2VEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVVJlcXVlc3REZXZp
Y2VDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVzZXJkYXRhKQoreworICAgIGFkYXB0ZXItPmFk
YXB0ZXIucmVxdWVzdERldmljZShkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQ
VVJlcXVlc3REZXZpY2VTdGF0dXMgc3RhdHVzLCBXZWJHUFU6OkRldmljZSYmIGRldmljZSwgY2hh
ciBjb25zdCAqIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVURl
dmljZUltcGwgeyBXVEZNb3ZlKGRldmljZSkgfSwgbWVzc2FnZSwgdXNlcmRhdGEpOworICAgIH0p
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLmggYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzQ1ZjM1ZGY2Y2IwMGVh
NWI2OGRiNmJkZWRiYTAxYThkYWU2OTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQmluZEdyb3VwLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJH
UFUuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIEJpbmRHcm91cCB7CisKK307CisK
K30KKworc3RydWN0IFdHUFVCaW5kR3JvdXBJbXBsIHsKKyAgICBXZWJHUFU6OkJpbmRHcm91cCBi
aW5kR3JvdXA7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3Vw
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZGJl
MGZlMTU2NzA0MTE5ZmEzMjc5NjI2NzdjZGRmMTMzMjUwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiQmluZEdyb3VwLmgiCisKKyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1l
c3BhY2UgV2ViR1BVIHsKKworfQorCit2b2lkIHdncHVCaW5kR3JvdXBSZWxlYXNlKFdHUFVCaW5k
R3JvdXAgYmluZEdyb3VwKQoreworICAgIGRlbGV0ZSBiaW5kR3JvdXA7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0JpbmRHcm91cExheW91dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwZmUyODU4MjkwYWIxNWM2MzU0
ODhkMWI5YzBiOTVlZjg1N2I1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9CaW5kR3JvdXBMYXlvdXQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0
IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIldl
YkdQVS5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQmluZEdyb3VwTGF5b3V0IHsK
KworfTsKKworfQorCitzdHJ1Y3QgV0dQVUJpbmRHcm91cExheW91dEltcGwgeworICAgIFdlYkdQ
VTo6QmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExheW91dDsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9CaW5kR3JvdXBMYXlvdXQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0YWIyZDY4NGMwMTZhY2NlNDQ0YTA4
Y2UwYjVlOWFmNjliZjcxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cExheW91dC5tbQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJC
aW5kR3JvdXBMYXlvdXQuaCIKKworI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJHUFUgeworCit9CisKK3ZvaWQgd2dwdUJpbmRHcm91cExheW91dFJlbGVhc2UoV0dQVUJpbmRH
cm91cExheW91dCBiaW5kR3JvdXBMYXlvdXQpCit7CisgICAgZGVsZXRlIGJpbmRHcm91cExheW91
dDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgyNDE0NTNiNWVmM2ViMTUzYmEx
ZmM5YmI1ZTllMTI4NjJhNzUyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0J1ZmZlci5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisj
aW1wb3J0IDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQnVmZmVy
IHsKK3B1YmxpYzoKKyAgICB2b2lkIGRlc3Ryb3koKTsKKyAgICB2b2lkIGNvbnN0ICogZ2V0Q29u
c3RNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOworICAgIHZvaWQgKiBnZXRNYXBw
ZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOworICAgIHZvaWQgbWFwQXN5bmMoV0dQVU1h
cE1vZGVGbGFncywgc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQ
VUJ1ZmZlck1hcEFzeW5jU3RhdHVzKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB1bm1hcCgpOwor
fTsKKworfQorCitzdHJ1Y3QgV0dQVUJ1ZmZlckltcGwgeworICAgIFdlYkdQVTo6QnVmZmVyIGJ1
ZmZlcjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzYzQ1MjIxNDIzNDQ3
YmUyMjU1OThjNzRkZGQyNDQwNjYxNDA1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0J1ZmZlci5tbQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJC
dWZmZXIuaCIKKworI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgewor
Cit2b2lkIEJ1ZmZlcjo6ZGVzdHJveSgpCit7Cit9CisKK3ZvaWQgY29uc3QgKiBCdWZmZXI6Omdl
dENvbnN0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCit7CisgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCit2b2lkICogQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0
LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURf
UEFSQU0oc2l6ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQnVmZmVyOjptYXBB
c3luYyhXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzKT4mJiBjYWxsYmFjaykK
K3sKKyAgICBVTlVTRURfUEFSQU0obW9kZSk7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Cit9CisK
K3ZvaWQgQnVmZmVyOjp1bm1hcCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2
b2lkIHdncHVCdWZmZXJSZWxlYXNlKFdHUFVCdWZmZXIgYnVmZmVyKQoreworICAgIGRlbGV0ZSBi
dWZmZXI7Cit9CisKK3ZvaWQgd2dwdUJ1ZmZlckRlc3Ryb3koV0dQVUJ1ZmZlciBidWZmZXIpCit7
CisgICAgYnVmZmVyLT5idWZmZXIuZGVzdHJveSgpOworfQorCit2b2lkIGNvbnN0ICogd2dwdUJ1
ZmZlckdldENvbnN0TWFwcGVkUmFuZ2UoV0dQVUJ1ZmZlciBidWZmZXIsIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBzaXplKQoreworICAgIHJldHVybiBidWZmZXItPmJ1ZmZlci5nZXRDb25zdE1hcHBl
ZFJhbmdlKG9mZnNldCwgc2l6ZSk7Cit9CisKK3ZvaWQgKiB3Z3B1QnVmZmVyR2V0TWFwcGVkUmFu
Z2UoV0dQVUJ1ZmZlciBidWZmZXIsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQoreworICAg
IHJldHVybiBidWZmZXItPmJ1ZmZlci5nZXRNYXBwZWRSYW5nZShvZmZzZXQsIHNpemUpOworfQor
Cit2b2lkIHdncHVCdWZmZXJNYXBBc3luYyhXR1BVQnVmZmVyIGJ1ZmZlciwgV0dQVU1hcE1vZGVG
bGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV0dQVUJ1ZmZlck1hcENhbGxi
YWNrIGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEpCit7CisgICAgYnVmZmVyLT5idWZmZXIubWFw
QXN5bmMobW9kZSwgb2Zmc2V0LCBzaXplLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUJ1ZmZl
ck1hcEFzeW5jU3RhdHVzIHN0YXR1cykgeworICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHVzZXJk
YXRhKTsKKyAgICB9KTsKK30KKwordm9pZCB3Z3B1QnVmZmVyVW5tYXAoV0dQVUJ1ZmZlciBidWZm
ZXIpCit7CisgICAgYnVmZmVyLT5idWZmZXIudW5tYXAoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bW1hbmRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzVjOWE2MzA1ODRlZTFhNDY1NmQ2M2Q1OTQ4YmM0
OWFmMTQ3NDcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEJ1ZmZlci5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisKK25h
bWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBDb21tYW5kQnVmZmVyIHsKKworfTsKKworfQorCitz
dHJ1Y3QgV0dQVUNvbW1hbmRCdWZmZXJJbXBsIHsKKyAgICBXZWJHUFU6OkNvbW1hbmRCdWZmZXIg
Y29tbWFuZEJ1ZmZlcjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21t
YW5kQnVmZmVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zODA1Njg0M2FmMGI0M2Q0NGQ2YzM0Yjg5NmMwMzQ1YWE1NTI3ZGU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQpAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDb21tYW5kQnVmZmVyLmgiCisKKyNpbXBvcnQg
IldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworfQorCit2b2lkIHdncHVDb21t
YW5kQnVmZmVyUmVsZWFzZShXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVyKQoreworICAg
IGRlbGV0ZSBjb21tYW5kQnVmZmVyOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDczYTgwYWIxMTFkY2MyYWM1NTdiYjY5MTRlMGQ0MjM4ZmE5ODdhOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKworbmFtZXNwYWNlIFdl
YkdQVSB7CisKK2NsYXNzIEJ1ZmZlcjsKK2NsYXNzIENvbW1hbmRCdWZmZXI7CitjbGFzcyBDb21w
dXRlUGFzc0VuY29kZXI7CitjbGFzcyBRdWVyeVNldDsKK2NsYXNzIFJlbmRlclBhc3NFbmNvZGVy
OworCitjbGFzcyBDb21tYW5kRW5jb2RlciB7CitwdWJsaWM6CisgICAgQ29tcHV0ZVBhc3NFbmNv
ZGVyIGJlZ2luQ29tcHV0ZVBhc3MoV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciBjb25zdCAqKTsK
KyAgICBSZW5kZXJQYXNzRW5jb2RlciBiZWdpblJlbmRlclBhc3MoV0dQVVJlbmRlclBhc3NEZXNj
cmlwdG9yIGNvbnN0ICopOworICAgIHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZl
ciYgc291cmNlLCB1aW50NjRfdCBzb3VyY2VPZmZzZXQsIGNvbnN0IEJ1ZmZlciYgZGVzdGluYXRp
b24sIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKKyAgICB2b2lk
IGNvcHlCdWZmZXJUb1RleHR1cmUoV0dQVUltYWdlQ29weUJ1ZmZlciBjb25zdCAqIHNvdXJjZSwg
V0dQVUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNv
bnN0ICogY29weVNpemUpOworICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihXR1BVSW1hZ2VD
b3B5VGV4dHVyZSBjb25zdCAqIHNvdXJjZSwgV0dQVUltYWdlQ29weUJ1ZmZlciBjb25zdCAqIGRl
c3RpbmF0aW9uLCBXR1BVRXh0ZW50M0QgY29uc3QgKiBjb3B5U2l6ZSk7CisgICAgdm9pZCBjb3B5
VGV4dHVyZVRvVGV4dHVyZShXR1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIHNvdXJjZSwgV0dQ
VUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNvbnN0
ICogY29weVNpemUpOworICAgIENvbW1hbmRCdWZmZXIgZmluaXNoKFdHUFVDb21tYW5kQnVmZmVy
RGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICB2b2lkIGluc2VydERlYnVnTWFya2VyKGNoYXIgY29u
c3QgKiBtYXJrZXJMYWJlbCk7CisgICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCk7CisgICAgdm9pZCBw
dXNoRGVidWdHcm91cChjaGFyIGNvbnN0ICogZ3JvdXBMYWJlbCk7CisgICAgdm9pZCByZXNvbHZl
UXVlcnlTZXQoY29uc3QgUXVlcnlTZXQmLCB1aW50MzJfdCBmaXJzdFF1ZXJ5LCB1aW50MzJfdCBx
dWVyeUNvdW50LCBjb25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlv
bk9mZnNldCk7CisgICAgdm9pZCB3cml0ZVRpbWVzdGFtcChjb25zdCBRdWVyeVNldCYsIHVpbnQz
Ml90IHF1ZXJ5SW5kZXgpOworfTsKKworfQorCitzdHJ1Y3QgV0dQVUNvbW1hbmRFbmNvZGVySW1w
bCB7CisgICAgV2ViR1BVOjpDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlcjsKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYWJmZTg4MDY5MDgz
YTI0NWM4ZWIwOTQ2M2I0NzM4MjllYmQzNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiQ29tbWFuZEVuY29kZXIuaCIKKworI2ltcG9ydCAiQnVmZmVyLmgiCisjaW1wb3J0
ICJDb21tYW5kQnVmZmVyLmgiCisjaW1wb3J0ICJDb21wdXRlUGFzc0VuY29kZXIuaCIKKyNpbXBv
cnQgIlF1ZXJ5U2V0LmgiCisjaW1wb3J0ICJSZW5kZXJQYXNzRW5jb2Rlci5oIgorI2ltcG9ydCAi
V2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitDb21wdXRlUGFzc0VuY29kZXIg
Q29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0ZVBhc3MoV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRv
ciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwor
ICAgIHJldHVybiB7IH07Cit9CisKK1JlbmRlclBhc3NFbmNvZGVyIENvbW1hbmRFbmNvZGVyOjpi
ZWdpblJlbmRlclBhc3MoV0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRv
cikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHsgfTsKK30K
Kwordm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYg
c291cmNlLCB1aW50NjRfdCBzb3VyY2VPZmZzZXQsIGNvbnN0IEJ1ZmZlciYgZGVzdGluYXRpb24s
IHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zmc2V0LCB1aW50NjRfdCBzaXplKQoreworICAgIFVOVVNF
RF9QQVJBTShzb3VyY2UpOworICAgIFVOVVNFRF9QQVJBTShzb3VyY2VPZmZzZXQpOworICAgIFVO
VVNFRF9QQVJBTShkZXN0aW5hdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uT2Zm
c2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Cit9CisKK3ZvaWQgQ29tbWFuZEVuY29kZXI6
OmNvcHlCdWZmZXJUb1RleHR1cmUoV0dQVUltYWdlQ29weUJ1ZmZlciBjb25zdCAqIHNvdXJjZSwg
V0dQVUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNv
bnN0ICogY29weVNpemUpCit7CisgICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7CisgICAgVU5VU0VE
X1BBUkFNKGRlc3RpbmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oY29weVNpemUpOworfQorCit2
b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKFdHUFVJbWFnZUNvcHlUZXh0
dXJlIGNvbnN0ICogc291cmNlLCBXR1BVSW1hZ2VDb3B5QnVmZmVyIGNvbnN0ICogZGVzdGluYXRp
b24sIFdHUFVFeHRlbnQzRCBjb25zdCAqIGNvcHlTaXplKQoreworICAgIFVOVVNFRF9QQVJBTShz
b3VyY2UpOworICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7CisgICAgVU5VU0VEX1BBUkFN
KGNvcHlTaXplKTsKK30KKwordm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoV0dQVUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlUZXh0
dXJlIGNvbnN0ICogZGVzdGluYXRpb24sIFdHUFVFeHRlbnQzRCBjb25zdCAqIGNvcHlTaXplKQor
eworICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOworICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlv
bik7CisgICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKK30KKworQ29tbWFuZEJ1ZmZlciBDb21t
YW5kRW5jb2Rlcjo6ZmluaXNoKFdHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciBjb25zdCAqIGRl
c2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiB7
IH07Cit9CisKK3ZvaWQgQ29tbWFuZEVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKGNoYXIgY29u
c3QgKiBtYXJrZXJMYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworfQor
Cit2b2lkIENvbW1hbmRFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKK3sKK30KKwordm9pZCBDb21t
YW5kRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoY2hhciBjb25zdCAqIGdyb3VwTGFiZWwpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOworfQorCit2b2lkIENvbW1hbmRFbmNvZGVyOjpy
ZXNvbHZlUXVlcnlTZXQoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBmaXJzdFF1
ZXJ5LCB1aW50MzJfdCBxdWVyeUNvdW50LCBjb25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50
NjRfdCBkZXN0aW5hdGlvbk9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlTZXQpOwor
ICAgIFVOVVNFRF9QQVJBTShmaXJzdFF1ZXJ5KTsKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlDb3Vu
dCk7CisgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVz
dGluYXRpb25PZmZzZXQpOworfQorCit2b2lkIENvbW1hbmRFbmNvZGVyOjp3cml0ZVRpbWVzdGFt
cChjb25zdCBRdWVyeVNldCYgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCit7CisgICAg
VU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2b2lkIHdncHVDb21tYW5kRW5jb2RlclJlbGVh
c2UoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyKQoreworICAgIGRlbGV0ZSBjb21t
YW5kRW5jb2RlcjsKK30KKworV0dQVUNvbXB1dGVQYXNzRW5jb2RlciB3Z3B1Q29tbWFuZEVuY29k
ZXJCZWdpbkNvbXB1dGVQYXNzKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQ
VUNvbXB1dGVQYXNzRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJu
IG5ldyBXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbCB7IGNvbW1hbmRFbmNvZGVyLT5jb21tYW5k
RW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKGRlc2NyaXB0b3IpIH07Cit9CisKK1dHUFVSZW5kZXJQ
YXNzRW5jb2RlciB3Z3B1Q29tbWFuZEVuY29kZXJCZWdpblJlbmRlclBhc3MoV0dQVUNvbW1hbmRF
bmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgY29uc3QgKiBk
ZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVVJlbmRlclBhc3NFbmNvZGVySW1wbCB7
IGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoZGVzY3JpcHRv
cikgfTsKK30KKwordm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9CdWZmZXIoV0dQ
VUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVyIHNvdXJjZSwgdWludDY0
X3Qgc291cmNlT2Zmc2V0LCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5h
dGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKK3sKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFu
ZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKHNvdXJjZS0+YnVmZmVyLCBzb3VyY2VPZmZzZXQs
IGRlc3RpbmF0aW9uLT5idWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKK30KKwordm9p
ZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9UZXh0dXJlKFdHUFVDb21tYW5kRW5jb2Rl
ciBjb21tYW5kRW5jb2RlciwgV0dQVUltYWdlQ29weUJ1ZmZlciBjb25zdCAqIHNvdXJjZSwgV0dQ
VUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNvbnN0
ICogY29weVNpemUpCit7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLmNvcHlC
dWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpOworfQorCit2b2lk
IHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9CdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVy
IGNvbW1hbmRFbmNvZGVyLCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIHNvdXJjZSwgV0dQ
VUltYWdlQ29weUJ1ZmZlciBjb25zdCAqIGRlc3RpbmF0aW9uLCBXR1BVRXh0ZW50M0QgY29uc3Qg
KiBjb3B5U2l6ZSkKK3sKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuY29weVRl
eHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSk7Cit9CisKK3ZvaWQg
d2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUoV0dQVUNvbW1hbmRFbmNvZGVy
IGNvbW1hbmRFbmNvZGVyLCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIHNvdXJjZSwgV0dQ
VUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNvbnN0
ICogY29weVNpemUpCit7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLmNvcHlU
ZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKTsKK30KKworV0dQ
VUNvbW1hbmRCdWZmZXIgd2dwdUNvbW1hbmRFbmNvZGVyRmluaXNoKFdHUFVDb21tYW5kRW5jb2Rl
ciBjb21tYW5kRW5jb2RlciwgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yIGNvbnN0ICogZGVz
Y3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVDb21tYW5kQnVmZmVySW1wbCB7IGNvbW1h
bmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci5maW5pc2goZGVzY3JpcHRvcikgfTsKK30KKwordm9p
ZCB3Z3B1Q29tbWFuZEVuY29kZXJJbnNlcnREZWJ1Z01hcmtlcihXR1BVQ29tbWFuZEVuY29kZXIg
Y29tbWFuZEVuY29kZXIsIGNoYXIgY29uc3QgKiBtYXJrZXJMYWJlbCkKK3sKKyAgICBjb21tYW5k
RW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuaW5zZXJ0RGVidWdNYXJrZXIobWFya2VyTGFiZWwpOwor
fQorCit2b2lkIHdncHVDb21tYW5kRW5jb2RlclBvcERlYnVnR3JvdXAoV0dQVUNvbW1hbmRFbmNv
ZGVyIGNvbW1hbmRFbmNvZGVyKQoreworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rl
ci5wb3BEZWJ1Z0dyb3VwKCk7Cit9CisKK3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyUHVzaERlYnVn
R3JvdXAoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjaGFyIGNvbnN0ICogZ3Jv
dXBMYWJlbCkKK3sKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIucHVzaERlYnVn
R3JvdXAoZ3JvdXBMYWJlbCk7Cit9CisKK3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyUmVzb2x2ZVF1
ZXJ5U2V0KFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1
ZXJ5U2V0LCB1aW50MzJfdCBmaXJzdFF1ZXJ5LCB1aW50MzJfdCBxdWVyeUNvdW50LCBXR1BVQnVm
ZmVyIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCkKK3sKKyAgICBjb21t
YW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIucmVzb2x2ZVF1ZXJ5U2V0KHF1ZXJ5U2V0LT5xdWVy
eVNldCwgZmlyc3RRdWVyeSwgcXVlcnlDb3VudCwgZGVzdGluYXRpb24tPmJ1ZmZlciwgZGVzdGlu
YXRpb25PZmZzZXQpOworfQorCit2b2lkIHdncHVDb21tYW5kRW5jb2RlcldyaXRlVGltZXN0YW1w
KFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0
LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5j
b2Rlci53cml0ZVRpbWVzdGFtcChxdWVyeVNldC0+cXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOworfQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1
MzgyMmI3YTI4NjU5NjVmYzg1ODc2MGE0ODk4Y2E3ZmI3MDRiMjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIuaApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbXBvcnQgIldlYkdQVS5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xh
c3MgQmluZEdyb3VwOworY2xhc3MgQnVmZmVyOworY2xhc3MgQ29tcHV0ZVBpcGVsaW5lOworY2xh
c3MgUXVlcnlTZXQ7CisKK2NsYXNzIENvbXB1dGVQYXNzRW5jb2RlciB7CitwdWJsaWM6CisgICAg
dm9pZCBiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMy
X3QgcXVlcnlJbmRleCk7CisgICAgdm9pZCBkaXNwYXRjaCh1aW50MzJfdCB4LCB1aW50MzJfdCB5
LCB1aW50MzJfdCB6KTsKKyAgICB2b2lkIGRpc3BhdGNoSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBp
bmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQpOworICAgIHZvaWQgZW5kUGFz
cygpOworICAgIHZvaWQgZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKTsKKyAgICB2b2lkIGlu
c2VydERlYnVnTWFya2VyKGNoYXIgY29uc3QgKiBtYXJrZXJMYWJlbCk7CisgICAgdm9pZCBwb3BE
ZWJ1Z0dyb3VwKCk7CisgICAgdm9pZCBwdXNoRGVidWdHcm91cChjaGFyIGNvbnN0ICogZ3JvdXBM
YWJlbCk7CisgICAgdm9pZCBzZXRCaW5kR3JvdXAodWludDMyX3QgZ3JvdXBJbmRleCwgY29uc3Qg
QmluZEdyb3VwJiwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCB1aW50MzJfdCBjb25zdCAq
IGR5bmFtaWNPZmZzZXRzKTsKKyAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IENvbXB1dGVQaXBl
bGluZSYpOworICAgIHZvaWQgd3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmLCB1aW50MzJf
dCBxdWVyeUluZGV4KTsKK307CisKK30KKworc3RydWN0IFdHUFVDb21wdXRlUGFzc0VuY29kZXJJ
bXBsIHsKKyAgICBXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXI7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVy
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJlNjE5MjkyODIzMWJhOWVjNTIyOWU4YzhhNzMxN2U1NTlkZGY3YjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KQEAgLTAs
MCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvbXB1dGVQYXNzRW5jb2Rlci5oIgorCisj
aW1wb3J0ICJCaW5kR3JvdXAuaCIKKyNpbXBvcnQgIkJ1ZmZlci5oIgorI2ltcG9ydCAiQ29tcHV0
ZVBpcGVsaW5lLmgiCisjaW1wb3J0ICJRdWVyeVNldC5oIgorI2ltcG9ydCAiV2ViR1BVRXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJHUFUgeworCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6YmVnaW5Q
aXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBRdWVyeVNldCYgcXVlcnlTZXQsIHVpbnQzMl90
IHF1ZXJ5SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsKKyAgICBVTlVTRURf
UEFSQU0ocXVlcnlJbmRleCk7Cit9CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRj
aCh1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6KQoreworICAgIFVOVVNFRF9QQVJB
TSh4KTsKKyAgICBVTlVTRURfUEFSQU0oeSk7CisgICAgVU5VU0VEX1BBUkFNKHopOworfQorCit2
b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdChjb25zdCBCdWZmZXImIGlu
ZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFS
QU0oaW5kaXJlY3RCdWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNldCk7Cit9
CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKK3sKK30KKwordm9pZCBDb21w
dXRlUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKK3sKK30KKwordm9p
ZCBDb21wdXRlUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKGNoYXIgY29uc3QgKiBtYXJr
ZXJMYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworfQorCit2b2lkIENv
bXB1dGVQYXNzRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCit7Cit9CisKK3ZvaWQgQ29tcHV0ZVBh
c3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cChjaGFyIGNvbnN0ICogZ3JvdXBMYWJlbCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZ3JvdXBMYWJlbCk7Cit9CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVy
OjpzZXRCaW5kR3JvdXAodWludDMyX3QgZ3JvdXBJbmRleCwgY29uc3QgQmluZEdyb3VwJiBncm91
cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCB1aW50MzJfdCBjb25zdCAqIGR5bmFtaWNP
ZmZzZXRzKQoreworICAgIFVOVVNFRF9QQVJBTShncm91cEluZGV4KTsKKyAgICBVTlVTRURfUEFS
QU0oZ3JvdXApOworICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0Q291bnQpOworICAgIFVO
VVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7Cit9CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVy
OjpzZXRQaXBlbGluZShjb25zdCBDb21wdXRlUGlwZWxpbmUmIHBpcGVsaW5lKQoreworICAgIFVO
VVNFRF9QQVJBTShwaXBlbGluZSk7Cit9CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjp3cml0
ZVRpbWVzdGFtcChjb25zdCBRdWVyeVNldCYgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgp
Cit7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlJ
bmRleCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2b2lkIHdncHVDb21wdXRlUGFz
c0VuY29kZXJSZWxlYXNlKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVy
KQoreworICAgIGRlbGV0ZSBjb21wdXRlUGFzc0VuY29kZXI7Cit9CisKK3ZvaWQgd2dwdUNvbXB1
dGVQYXNzRW5jb2RlckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV0dQVUNvbXB1dGVQYXNz
RW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNldCwgdWludDMy
X3QgcXVlcnlJbmRleCkKK3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5j
b2Rlci5iZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVl
cnlJbmRleCk7Cit9CisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlckRpc3BhdGNoKFdHUFVD
b21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCB1aW50MzJfdCB4LCB1aW50MzJf
dCB5LCB1aW50MzJfdCB6KQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NF
bmNvZGVyLmRpc3BhdGNoKHgsIHksIHopOworfQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29k
ZXJEaXNwYXRjaEluZGlyZWN0KFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNv
ZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkK
K3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci5kaXNwYXRjaElu
ZGlyZWN0KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKK30KKwordm9p
ZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRW5kUGFzcyhXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNv
bXB1dGVQYXNzRW5jb2RlcikKK3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNz
RW5jb2Rlci5lbmRQYXNzKCk7Cit9CisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlckVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NF
bmNvZGVyKQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLmVu
ZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Cit9CisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5j
b2Rlckluc2VydERlYnVnTWFya2VyKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NF
bmNvZGVyLCBjaGFyIGNvbnN0ICogbWFya2VyTGFiZWwpCit7CisgICAgY29tcHV0ZVBhc3NFbmNv
ZGVyLT5jb21wdXRlUGFzc0VuY29kZXIuaW5zZXJ0RGVidWdNYXJrZXIobWFya2VyTGFiZWwpOwor
fQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJQb3BEZWJ1Z0dyb3VwKFdHUFVDb21wdXRl
UGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyKQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci0+Y29tcHV0ZVBhc3NFbmNvZGVyLnBvcERlYnVnR3JvdXAoKTsKK30KKwordm9pZCB3Z3B1Q29t
cHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXAoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21w
dXRlUGFzc0VuY29kZXIsIGNoYXIgY29uc3QgKiBncm91cExhYmVsKQoreworICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLnB1c2hEZWJ1Z0dyb3VwKGdyb3VwTGFiZWwp
OworfQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJTZXRCaW5kR3JvdXAoV0dQVUNvbXB1
dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIHVpbnQzMl90IGdyb3VwSW5kZXgsIFdH
UFVCaW5kR3JvdXAgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwgdWludDMyX3Qg
Y29uc3QgKiBkeW5hbWljT2Zmc2V0cykKK3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1
dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoZ3JvdXBJbmRleCwgZ3JvdXAtPmJpbmRHcm91cCwg
ZHluYW1pY09mZnNldENvdW50LCBkeW5hbWljT2Zmc2V0cyk7Cit9CisKK3ZvaWQgd2dwdUNvbXB1
dGVQYXNzRW5jb2RlclNldFBpcGVsaW5lKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBh
c3NFbmNvZGVyLCBXR1BVQ29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5lKQoreworICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lLT5jb21w
dXRlUGlwZWxpbmUpOworfQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVz
dGFtcChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5
U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNl
dCwgcXVlcnlJbmRleCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDkyY2FkZDgwMWQxYjNhNjAyMTFhNWNlYzU4MzNjMmEyMzVlZjdiZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJH
UFUgeworCitjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CisKK2NsYXNzIENvbXB1dGVQaXBlbGluZSB7
CitwdWJsaWM6CisgICAgQmluZEdyb3VwTGF5b3V0IGdldEJpbmRHcm91cExheW91dCh1aW50MzJf
dCBncm91cEluZGV4KTsKKyAgICB2b2lkIHNldExhYmVsKGNoYXIgY29uc3QgKik7Cit9OworCit9
CisKK3N0cnVjdCBXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCB7CisgICAgV2ViR1BVOjpDb21wdXRl
UGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQ
aXBlbGluZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTQ4NmI2ZTA4NDg3N2ZiM2MxZTYwNTQ4N2ViZWMxYTg1
OWMxNGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBp
cGVsaW5lLm1tCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvbXB1dGVQaXBl
bGluZS5oIgorCisKKyNpbXBvcnQgIkJpbmRHcm91cExheW91dC5oIgorI2ltcG9ydCAiV2ViR1BV
RXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitCaW5kR3JvdXBMYXlvdXQgQ29tcHV0ZVBp
cGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgZ3JvdXBJbmRleCkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZ3JvdXBJbmRleCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBDb21w
dXRlUGlwZWxpbmU6OnNldExhYmVsKGNoYXIgY29uc3QgKiBsYWJlbCkKK3sKKyAgICBVTlVTRURf
UEFSQU0obGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1Q29t
cHV0ZVBpcGVsaW5lUmVsZWFzZShXR1BVQ29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBlbGluZSkK
K3sKKyAgICBkZWxldGUgY29tcHV0ZVBpcGVsaW5lOworfQorCitXR1BVQmluZEdyb3VwTGF5b3V0
IHdncHVDb21wdXRlUGlwZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQoV0dQVUNvbXB1dGVQaXBlbGlu
ZSBjb21wdXRlUGlwZWxpbmUsIHVpbnQzMl90IGdyb3VwSW5kZXgpCit7CisgICAgcmV0dXJuIG5l
dyBXR1BVQmluZEdyb3VwTGF5b3V0SW1wbCB7IGNvbXB1dGVQaXBlbGluZS0+Y29tcHV0ZVBpcGVs
aW5lLmdldEJpbmRHcm91cExheW91dChncm91cEluZGV4KSB9OworfQorCit2b2lkIHdncHVDb21w
dXRlUGlwZWxpbmVTZXRMYWJlbChXR1BVQ29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBlbGluZSwg
Y2hhciBjb25zdCAqIGxhYmVsKQoreworICAgIGNvbXB1dGVQaXBlbGluZS0+Y29tcHV0ZVBpcGVs
aW5lLnNldExhYmVsKGxhYmVsKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvRGV2aWNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MDE4MGVhM2VkYzQxMWU3OWJjZTEyNDkxNDhlMjM5MzdhYmRhNDY5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPGZ1bmN0aW9uYWw+CisKK25hbWVzcGFjZSBXZWJH
UFUgeworCitjbGFzcyBCaW5kR3JvdXA7CitjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CitjbGFzcyBC
dWZmZXI7CitjbGFzcyBDb21tYW5kRW5jb2RlcjsKK2NsYXNzIENvbXB1dGVQaXBlbGluZTsKK2Ns
YXNzIFBpcGVsaW5lTGF5b3V0OworY2xhc3MgUXVlcnlTZXQ7CitjbGFzcyBSZW5kZXJCdW5kbGVF
bmNvZGVyOworY2xhc3MgUmVuZGVyUGlwZWxpbmU7CitjbGFzcyBTYW1wbGVyOworY2xhc3MgU2hh
ZGVyTW9kdWxlOworY2xhc3MgU3VyZmFjZTsKK2NsYXNzIFN3YXBDaGFpbjsKK2NsYXNzIFRleHR1
cmU7CitjbGFzcyBRdWV1ZTsKKworY2xhc3MgRGV2aWNlIHsKK3B1YmxpYzoKKyAgICBCaW5kR3Jv
dXAgY3JlYXRlQmluZEdyb3VwKFdHUFVCaW5kR3JvdXBEZXNjcmlwdG9yIGNvbnN0ICopOworICAg
IEJpbmRHcm91cExheW91dCBjcmVhdGVCaW5kR3JvdXBMYXlvdXQoV0dQVUJpbmRHcm91cExheW91
dERlc2NyaXB0b3IgY29uc3QgKik7CisgICAgQnVmZmVyIGNyZWF0ZUJ1ZmZlcihXR1BVQnVmZmVy
RGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICBDb21tYW5kRW5jb2RlciBjcmVhdGVDb21tYW5kRW5j
b2RlcihXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yIGNvbnN0ICopOworICAgIENvbXB1dGVQ
aXBlbGluZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUoV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IgY29uc3QgKik7CisgICAgdm9pZCBjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhXR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBjb25zdCAqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUNy
ZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIENvbXB1dGVQaXBlbGluZSYmLCBjaGFyIGNvbnN0ICog
bWVzc2FnZSk+JiYgY2FsbGJhY2spOworICAgIFBpcGVsaW5lTGF5b3V0IGNyZWF0ZVBpcGVsaW5l
TGF5b3V0KFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgY29uc3QgKik7CisgICAgUXVlcnlT
ZXQgY3JlYXRlUXVlcnlTZXQoV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICBS
ZW5kZXJCdW5kbGVFbmNvZGVyIGNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoV0dQVVJlbmRlckJ1
bmRsZUVuY29kZXJEZXNjcmlwdG9yIGNvbnN0ICopOworICAgIFJlbmRlclBpcGVsaW5lIGNyZWF0
ZVJlbmRlclBpcGVsaW5lKFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgY29uc3QgKik7Cisg
ICAgdm9pZCBjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKFdHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgY29uc3QgKiwgc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5j
U3RhdHVzLCBSZW5kZXJQaXBlbGluZSYmLCBjaGFyIGNvbnN0ICogbWVzc2FnZSk+JiYgY2FsbGJh
Y2spOworICAgIFNhbXBsZXIgY3JlYXRlU2FtcGxlcihXR1BVU2FtcGxlckRlc2NyaXB0b3IgY29u
c3QgKik7CisgICAgU2hhZGVyTW9kdWxlIGNyZWF0ZVNoYWRlck1vZHVsZShXR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICBTd2FwQ2hhaW4gY3JlYXRlU3dhcENoYWluKGNv
bnN0IFN1cmZhY2UmLCBXR1BVU3dhcENoYWluRGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICBUZXh0
dXJlIGNyZWF0ZVRleHR1cmUoV0dQVVRleHR1cmVEZXNjcmlwdG9yIGNvbnN0ICopOworICAgIHZv
aWQgZGVzdHJveSgpOworICAgIGJvb2wgZ2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMgKik7
CisgICAgUXVldWUgZ2V0UXVldWUoKTsKKyAgICBib29sIHBvcEVycm9yU2NvcGUoc3RkOjpmdW5j
dGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNoYXIgY29uc3QgKik+JiYgY2FsbGJhY2spOworICAg
IHZvaWQgcHVzaEVycm9yU2NvcGUoV0dQVUVycm9yRmlsdGVyKTsKKyAgICB2b2lkIHNldERldmlj
ZUxvc3RDYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVURldmljZUxvc3RSZWFzb24sIGNo
YXIgY29uc3QgKik+JiYpOworICAgIHZvaWQgc2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soc3Rk
OjpmdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNoYXIgY29uc3QgKik+JiYpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3N0cnVjdCBXR1BVRGV2aWNlSW1wbCB7CisgICAgV2Vi
R1BVOjpEZXZpY2UgZGV2aWNlOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NzUxOTM1Y2RhYTI0YjVkMDBmM2VkZTU1YWI5ZDUyNjQ4NDU5MTMyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBAIC0wLDAgKzEsMzA0IEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJEZXZpY2UuaCIKKworI2ltcG9ydCAiQmluZEdyb3VwLmgiCisjaW1wb3J0
ICJCaW5kR3JvdXBMYXlvdXQuaCIKKyNpbXBvcnQgIkJ1ZmZlci5oIgorI2ltcG9ydCAiQ29tbWFu
ZEVuY29kZXIuaCIKKyNpbXBvcnQgIkNvbXB1dGVQaXBlbGluZS5oIgorI2ltcG9ydCAiUGlwZWxp
bmVMYXlvdXQuaCIKKyNpbXBvcnQgIlF1ZXJ5U2V0LmgiCisjaW1wb3J0ICJRdWV1ZS5oIgorI2lt
cG9ydCAiUmVuZGVyQnVuZGxlRW5jb2Rlci5oIgorI2ltcG9ydCAiUmVuZGVyUGlwZWxpbmUuaCIK
KyNpbXBvcnQgIlNhbXBsZXIuaCIKKyNpbXBvcnQgIlNoYWRlck1vZHVsZS5oIgorI2ltcG9ydCAi
U3VyZmFjZS5oIgorI2ltcG9ydCAiU3dhcENoYWluLmgiCisjaW1wb3J0ICJUZXh0dXJlLmgiCisj
aW1wb3J0ICJXZWJHUFVFeHQuaCIKKyNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFt
ZXNwYWNlIFdlYkdQVSB7CisKK0JpbmRHcm91cCBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cChXR1BV
QmluZEdyb3VwRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BB
UkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK0JpbmRHcm91cExheW91dCBE
ZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChXR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwor
ICAgIHJldHVybiB7IH07Cit9CisKK0J1ZmZlciBEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXR1BVQnVm
ZmVyRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK0NvbW1hbmRFbmNvZGVyIERldmljZTo6
Y3JlYXRlQ29tbWFuZEVuY29kZXIoV0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciBjb25zdCAq
IGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVy
biB7IH07Cit9CisKK0NvbXB1dGVQaXBlbGluZSBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZShXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQg
RGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhXR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVQ3JlYXRl
UGlwZWxpbmVBc3luY1N0YXR1cywgQ29tcHV0ZVBpcGVsaW5lJiYsIGNoYXIgY29uc3QgKiBtZXNz
YWdlKT4mJiBjYWxsYmFjaykKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAg
VU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKK30KKworUGlwZWxpbmVMYXlvdXQgRGV2aWNlOjpjcmVh
dGVQaXBlbGluZUxheW91dChXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIGNvbnN0ICogZGVz
Y3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHsg
fTsKK30KKworUXVlcnlTZXQgRGV2aWNlOjpjcmVhdGVRdWVyeVNldChXR1BVUXVlcnlTZXREZXNj
cmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRv
cik7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVuZGVyQnVuZGxlRW5jb2RlciBEZXZpY2U6OmNy
ZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9y
IGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKworUmVuZGVyUGlwZWxpbmUgRGV2aWNlOjpjcmVhdGVSZW5kZXJQ
aXBlbGluZShXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikK
K3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHsgfTsKK30KKwor
dm9pZCBEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoV0dQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVQ3Jl
YXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVuZGVyUGlwZWxpbmUmJiwgY2hhciBjb25zdCAqIG1l
c3NhZ2UpPiYmIGNhbGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAg
ICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworfQorCitTYW1wbGVyIERldmljZTo6Y3JlYXRlU2Ft
cGxlcihXR1BVU2FtcGxlckRlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4geyB9OworfQorCitTaGFkZXJNb2R1
bGUgRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Ig
Y29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAg
ICByZXR1cm4geyB9OworfQorCitTd2FwQ2hhaW4gRGV2aWNlOjpjcmVhdGVTd2FwQ2hhaW4oY29u
c3QgU3VyZmFjZSYgc3VyZmFjZSwgV0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IgY29uc3QgKiBkZXNj
cmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShzdXJmYWNlKTsKKyAgICBVTlVTRURfUEFSQU0o
ZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHsgfTsKK30KKworVGV4dHVyZSBEZXZpY2U6OmNyZWF0
ZVRleHR1cmUoV0dQVVRleHR1cmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBE
ZXZpY2U6OmRlc3Ryb3koKQoreworfQorCitib29sIERldmljZTo6Z2V0TGltaXRzKFdHUFVTdXBw
b3J0ZWRMaW1pdHMgKiBsaW1pdHMpCit7CisgICAgVU5VU0VEX1BBUkFNKGxpbWl0cyk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitRdWV1ZSBEZXZpY2U6OmdldFF1ZXVlKCkKK3sKKyAgICByZXR1
cm4geyB9OworfQorCitib29sIERldmljZTo6cG9wRXJyb3JTY29wZShzdGQ6OmZ1bmN0aW9uPHZv
aWQoV0dQVUVycm9yVHlwZSwgY2hhciBjb25zdCAqKT4mJiBjYWxsYmFjaykKK3sKKyAgICBVTlVT
RURfUEFSQU0oY2FsbGJhY2spOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBEZXZpY2U6
OnB1c2hFcnJvclNjb3BlKFdHUFVFcnJvckZpbHRlciBmaWx0ZXIpCit7CisgICAgVU5VU0VEX1BB
UkFNKGZpbHRlcik7Cit9CisKK3ZvaWQgRGV2aWNlOjpzZXREZXZpY2VMb3N0Q2FsbGJhY2soc3Rk
OjpmdW5jdGlvbjx2b2lkKFdHUFVEZXZpY2VMb3N0UmVhc29uLCBjaGFyIGNvbnN0ICopPiYmIGNh
bGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Cit9CisKK3ZvaWQgRGV2aWNl
OjpzZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUVycm9y
VHlwZSwgY2hhciBjb25zdCAqKT4mJiBjYWxsYmFjaykKK3sKKyAgICBVTlVTRURfUEFSQU0oY2Fs
bGJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1RGV2aWNlUmVs
ZWFzZShXR1BVRGV2aWNlIGRldmljZSkKK3sKKyAgICBkZWxldGUgZGV2aWNlOworfQorCitXR1BV
QmluZEdyb3VwIHdncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXAoV0dQVURldmljZSBkZXZpY2UsIFdH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4g
bmV3IFdHUFVCaW5kR3JvdXBJbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKGRl
c2NyaXB0b3IpIH07Cit9CisKK1dHUFVCaW5kR3JvdXBMYXlvdXQgd2dwdURldmljZUNyZWF0ZUJp
bmRHcm91cExheW91dChXR1BVRGV2aWNlIGRldmljZSwgV0dQVUJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVUJpbmRHcm91
cExheW91dEltcGwgeyBkZXZpY2UtPmRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoZGVzY3Jp
cHRvcikgfTsKK30KKworV0dQVUJ1ZmZlciB3Z3B1RGV2aWNlQ3JlYXRlQnVmZmVyKFdHUFVEZXZp
Y2UgZGV2aWNlLCBXR1BVQnVmZmVyRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7Cisg
ICAgcmV0dXJuIG5ldyBXR1BVQnVmZmVySW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0ZUJ1ZmZl
cihkZXNjcmlwdG9yKSB9OworfQorCitXR1BVQ29tbWFuZEVuY29kZXIgd2dwdURldmljZUNyZWF0
ZUNvbW1hbmRFbmNvZGVyKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVQ29tbWFuZEVuY29kZXJEZXNj
cmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVDb21tYW5k
RW5jb2RlckltcGwgeyBkZXZpY2UtPmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcihkZXNjcmlw
dG9yKSB9OworfQorCitXR1BVQ29tcHV0ZVBpcGVsaW5lIHdncHVEZXZpY2VDcmVhdGVDb21wdXRl
UGlwZWxpbmUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
IGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVDb21wdXRlUGlwZWxp
bmVJbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGRlc2NyaXB0b3Ip
IH07Cit9CisKK3ZvaWQgd2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKFdHUFVE
ZXZpY2UgZGV2aWNlLCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBjb25zdCAqIGRlc2Ny
aXB0b3IsIFdHUFVDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luY0NhbGxiYWNrIGNhbGxiYWNrLCB2
b2lkICogdXNlcmRhdGEpCit7CisgICAgZGV2aWNlLT5kZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmMoZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVDcmVhdGVQaXBl
bGluZUFzeW5jU3RhdHVzIHN0YXR1cywgV2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmJiBwaXBlbGlu
ZSwgY2hhciBjb25zdCAqIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcg
V0dQVUNvbXB1dGVQaXBlbGluZUltcGwgeyBXVEZNb3ZlKHBpcGVsaW5lKSB9LCBtZXNzYWdlLCB1
c2VyZGF0YSk7CisgICAgfSk7Cit9CisKK1dHUFVQaXBlbGluZUxheW91dCB3Z3B1RGV2aWNlQ3Jl
YXRlUGlwZWxpbmVMYXlvdXQoV0dQVURldmljZSBkZXZpY2UsIFdHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVVBpcGVs
aW5lTGF5b3V0SW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KGRlc2Ny
aXB0b3IpIH07Cit9CisKK1dHUFVRdWVyeVNldCB3Z3B1RGV2aWNlQ3JlYXRlUXVlcnlTZXQoV0dQ
VURldmljZSBkZXZpY2UsIFdHUFVRdWVyeVNldERlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9y
KQoreworICAgIHJldHVybiBuZXcgV0dQVVF1ZXJ5U2V0SW1wbCB7IGRldmljZS0+ZGV2aWNlLmNy
ZWF0ZVF1ZXJ5U2V0KGRlc2NyaXB0b3IpIH07Cit9CisKK1dHUFVSZW5kZXJCdW5kbGVFbmNvZGVy
IHdncHVEZXZpY2VDcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFdHUFVEZXZpY2UgZGV2aWNlLCBX
R1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQorewor
ICAgIHJldHVybiBuZXcgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsIHsgZGV2aWNlLT5kZXZp
Y2UuY3JlYXRlUmVuZGVyQnVuZGxlRW5jb2RlcihkZXNjcmlwdG9yKSB9OworfQorCitXR1BVUmVu
ZGVyUGlwZWxpbmUgd2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lKFdHUFVEZXZpY2UgZGV2
aWNlLCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gbmV3IFdHUFVSZW5kZXJQaXBlbGluZUltcGwgeyBkZXZpY2UtPmRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShkZXNjcmlwdG9yKSB9OworfQorCit2b2lkIHdncHVEZXZpY2VD
cmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRlclBpcGVs
aW5lQXN5bmNDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVzZXJkYXRhKQoreworICAgIGRldmlj
ZS0+ZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoZGVzY3JpcHRvciwgW2NhbGxiYWNr
LCB1c2VyZGF0YV0gKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgV2ViR1BV
OjpSZW5kZXJQaXBlbGluZSYmIHBpcGVsaW5lLCBjaGFyIGNvbnN0ICogbWVzc2FnZSkgeworICAg
ICAgICBjYWxsYmFjayhzdGF0dXMsIG5ldyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsgV1RGTW92
ZShwaXBlbGluZSkgfSwgbWVzc2FnZSwgdXNlcmRhdGEpOworICAgIH0pOworfQorCitXR1BVU2Ft
cGxlciB3Z3B1RGV2aWNlQ3JlYXRlU2FtcGxlcihXR1BVRGV2aWNlIGRldmljZSwgV0dQVVNhbXBs
ZXJEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVT
YW1wbGVySW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0ZVNhbXBsZXIoZGVzY3JpcHRvcikgfTsK
K30KKworV0dQVVNoYWRlck1vZHVsZSB3Z3B1RGV2aWNlQ3JlYXRlU2hhZGVyTW9kdWxlKFdHUFVE
ZXZpY2UgZGV2aWNlLCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0
b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVU2hhZGVyTW9kdWxlSW1wbCB7IGRldmljZS0+ZGV2
aWNlLmNyZWF0ZVNoYWRlck1vZHVsZShkZXNjcmlwdG9yKSB9OworfQorCitXR1BVU3dhcENoYWlu
IHdncHVEZXZpY2VDcmVhdGVTd2FwQ2hhaW4oV0dQVURldmljZSBkZXZpY2UsIFdHUFVTdXJmYWNl
IHN1cmZhY2UsIFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gbmV3IFdHUFVTd2FwQ2hhaW5JbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRl
U3dhcENoYWluKHN1cmZhY2UtPnN1cmZhY2UsIGRlc2NyaXB0b3IpIH07Cit9CisKK1dHUFVUZXh0
dXJlIHdncHVEZXZpY2VDcmVhdGVUZXh0dXJlKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVVGV4dHVy
ZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVVRl
eHR1cmVJbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRlVGV4dHVyZShkZXNjcmlwdG9yKSB9Owor
fQorCit2b2lkIHdncHVEZXZpY2VEZXN0cm95KFdHUFVEZXZpY2UgZGV2aWNlKQoreworICAgIGRl
dmljZS0+ZGV2aWNlLmRlc3Ryb3koKTsKK30KKworYm9vbCB3Z3B1RGV2aWNlR2V0TGltaXRzKFdH
UFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VwcG9ydGVkTGltaXRzICogbGltaXRzKQoreworICAgIHJl
dHVybiBkZXZpY2UtPmRldmljZS5nZXRMaW1pdHMobGltaXRzKTsKK30KKworV0dQVVF1ZXVlIHdn
cHVEZXZpY2VHZXRRdWV1ZShXR1BVRGV2aWNlIGRldmljZSkKK3sKKyAgICByZXR1cm4gbmV3IFdH
UFVRdWV1ZUltcGwgeyBkZXZpY2UtPmRldmljZS5nZXRRdWV1ZSgpIH07Cit9CisKK2Jvb2wgd2dw
dURldmljZVBvcEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEpCit7CisgICAgcmV0dXJuIGRldmljZS0+ZGV2aWNl
LnBvcEVycm9yU2NvcGUoW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVFcnJvclR5cGUgdHlwZSwg
Y2hhciBjb25zdCAqIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVzc2FnZSwg
dXNlcmRhdGEpOworICAgIH0pOworfQorCit2b2lkIHdncHVEZXZpY2VQdXNoRXJyb3JTY29wZShX
R1BVRGV2aWNlIGRldmljZSwgV0dQVUVycm9yRmlsdGVyIGZpbHRlcikKK3sKKyAgICBkZXZpY2Ut
PmRldmljZS5wdXNoRXJyb3JTY29wZShmaWx0ZXIpOworfQorCit2b2lkIHdncHVEZXZpY2VTZXRE
ZXZpY2VMb3N0Q2FsbGJhY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVEZXZpY2VMb3N0Q2FsbGJh
Y2sgY2FsbGJhY2ssIHZvaWQgKiB1c2VyZGF0YSkKK3sKKyAgICByZXR1cm4gZGV2aWNlLT5kZXZp
Y2Uuc2V0RGV2aWNlTG9zdENhbGxiYWNrKFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVRGV2aWNl
TG9zdFJlYXNvbiByZWFzb24sIGNoYXIgY29uc3QgKiBtZXNzYWdlKSB7CisgICAgICAgIGlmIChj
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlYXNvbiwgbWVzc2FnZSwgdXNlcmRhdGEp
OworICAgIH0pOworfQorCit2b2lkIHdncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFj
ayhXR1BVRGV2aWNlIGRldmljZSwgV0dQVUVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKiB1
c2VyZGF0YSkKK3sKKyAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2Uuc2V0VW5jYXB0dXJlZEVycm9y
Q2FsbGJhY2soW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVFcnJvclR5cGUgdHlwZSwgY2hhciBj
b25zdCAqIG1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2Fs
bGJhY2sodHlwZSwgbWVzc2FnZSwgdXNlcmRhdGEpOworICAgIH0pOworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9FeHBvcnRNYWNyb3MuaCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0V4cG9ydE1hY3Jvcy5oCmluZGV4IDAyZjY0OTJkMmMyOTFhNTNhNWY4ZTY3NjY4MmY0NTY0
MTk5YmNlNmUuLmM3ZTRlZjg2NDE0ZGQ5Mjg5YTExNmIzZmU5ZTc2ZGFkZGJkODI0N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0V4cG9ydE1hY3Jvcy5oCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0V4cG9ydE1hY3Jvcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorI2ltcG9ydCA8d3RmL0V4cG9y
dE1hY3Jvcy5oPgogCiAjaWYgIWRlZmluZWQoV0VCR1BVX0VYUE9SVCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0lu
c3RhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MxZjdhOTZlNTIwNGMxMGJmYzg0N2Y1NGI0YzY0MGEyNWFi
MTgyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPGZ1bmN0
aW9uYWw+CisKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBBZGFwdGVyOworY2xhc3MgU3Vy
ZmFjZTsKKworY2xhc3MgSW5zdGFuY2UgeworcHVibGljOgorICAgIFN1cmZhY2UgY3JlYXRlU3Vy
ZmFjZShXR1BVU3VyZmFjZURlc2NyaXB0b3IgY29uc3QgKik7CisgICAgdm9pZCBwcm9jZXNzRXZl
bnRzKCk7CisgICAgdm9pZCByZXF1ZXN0QWRhcHRlcihXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
IGNvbnN0ICosIHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMsIEFk
YXB0ZXImJiwgY2hhciBjb25zdCAqKT4mJiBjYWxsYmFjayk7Cit9OworCit9CisKK3N0cnVjdCBX
R1BVSW5zdGFuY2VJbXBsIHsKKyAgICBXZWJHUFU6Okluc3RhbmNlIGluc3RhbmNlOworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvSW5zdGFuY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA5YjA5ZTNmZjRhNzkxN2QxMGVhYzhm
MDUwOTY0NjI5YzUxYzg5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0luc3RhbmNlLm1tCkBAIC0wLDAgKzEsMzA1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbnN0YW5j
ZS5oIgorCisjaW1wb3J0ICJBZGFwdGVyLmgiCisjaW1wb3J0ICJTdXJmYWNlLmgiCisjaW1wb3J0
ICJXZWJHUFVFeHQuaCIKKyNpbXBvcnQgPGNzdHJpbmc+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0
cmFzLmg+CisKK25hbWVzcGFjZSBXZWJHUFUgeworCitTdXJmYWNlIEluc3RhbmNlOjpjcmVhdGVT
dXJmYWNlKFdHUFVTdXJmYWNlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAg
VU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgSW5z
dGFuY2U6OnByb2Nlc3NFdmVudHMoKQoreworfQorCit2b2lkIEluc3RhbmNlOjpyZXF1ZXN0QWRh
cHRlcihXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIGNvbnN0ICogb3B0aW9ucywgc3RkOjpmdW5j
dGlvbjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgQWRhcHRlciYmLCBjaGFyIGNvbnN0
ICopPiYmIGNhbGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKKyAgICBVTlVT
RURfUEFSQU0oY2FsbGJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3
Z3B1SW5zdGFuY2VSZWxlYXNlKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkKK3sKKyAgICBkZWxldGUg
aW5zdGFuY2U7Cit9CisKK1dHUFVJbnN0YW5jZSB3Z3B1Q3JlYXRlSW5zdGFuY2UoV0dQVUluc3Rh
bmNlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOworICAgIHJldHVybiBudWxscHRyOworfQorCitXR1BVUHJvYyB3Z3B1R2V0UHJv
Y0FkZHJlc3MoV0dQVURldmljZSBkZXZpY2UsIGNoYXIgY29uc3QgKiBwcm9jTmFtZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKKyAgICAvLyBGSVhNRTogVXNlIGdwZXJmIHRvIG1ha2Ug
dGhpcyBmYXN0ZXIuCisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q3JlYXRlSW5zdGFu
Y2UiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q3Jl
YXRlSW5zdGFuY2UpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUdldFByb2NBZGRy
ZXNzIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUdl
dFByb2NBZGRyZXNzKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyR2V0
TGltaXRzIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dUFkYXB0ZXJHZXRMaW1pdHMpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUFkYXB0
ZXJHZXRQcm9wZXJ0aWVzIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVBZGFwdGVySGFzRmVhdHVyZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVySGFzRmVhdHVyZSk7CisgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2UiKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2UpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUJ1ZmZlckRlc3Ryb3kiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QnVmZmVyRGVzdHJveSk7CisgICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QnVmZmVyR2V0Q29uc3RNYXBwZWRSYW5nZSIpKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJHZXRD
b25zdE1hcHBlZFJhbmdlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJH
ZXRNYXBwZWRSYW5nZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVCdWZmZXJHZXRNYXBwZWRSYW5nZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1QnVmZmVyTWFwQXN5bmMiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1QnVmZmVyTWFwQXN5bmMpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdUJ1ZmZlclVubWFwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdUJ1ZmZlclVubWFwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVDb21tYW5kRW5jb2RlckJlZ2luQ29tcHV0ZVBhc3MiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNz
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlckJlZ2luUmVu
ZGVyUGFzcyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndn
cHVDb21tYW5kRW5jb2RlckJlZ2luUmVuZGVyUGFzcyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9CdWZmZXIiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVm
ZmVyVG9CdWZmZXIpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNv
ZGVyQ29weUJ1ZmZlclRvVGV4dHVyZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb1RleHR1cmUpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb0J1
ZmZlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVD
b21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9CdWZmZXIpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5
VGV4dHVyZVRvVGV4dHVyZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFu
ZEVuY29kZXJGaW5pc2giKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2gpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIiKSkKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJJbnNlcnREZWJ1
Z01hcmtlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJQ
b3BEZWJ1Z0dyb3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbW1hbmRFbmNvZGVyUG9wRGVidWdHcm91cCk7CisgICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJQdXNoRGVidWdHcm91cCIpKQorICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2RlclB1c2hEZWJ1
Z0dyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlclJl
c29sdmVRdWVyeVNldCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVDb21tYW5kRW5jb2RlclJlc29sdmVRdWVyeVNldCk7CisgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJXcml0ZVRpbWVzdGFtcCIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2RlcldyaXRl
VGltZXN0YW1wKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0Vu
Y29kZXJCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5IikpCisgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlckJlZ2luUGlwZWxp
bmVTdGF0aXN0aWNzUXVlcnkpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1
dGVQYXNzRW5jb2RlckRpc3BhdGNoIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlckRpc3BhdGNoKTsKKyAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJEaXNwYXRjaEluZGlyZWN0Iikp
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQ
YXNzRW5jb2RlckRpc3BhdGNoSW5kaXJlY3QpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdUNvbXB1dGVQYXNzRW5jb2RlckVuZFBhc3MiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRW5kUGFzcyk7CisgICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRW5kUGlwZWxpbmVT
dGF0aXN0aWNzUXVlcnkiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOwor
ICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2Rlckluc2VydERl
YnVnTWFya2VyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdUNvbXB1dGVQYXNzRW5jb2Rlckluc2VydERlYnVnTWFya2VyKTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJQb3BEZWJ1Z0dyb3VwIikpCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5j
b2RlclBvcERlYnVnR3JvdXApOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1
dGVQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKTsK
KyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJTZXRCaW5k
R3JvdXAiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVyU2V0QmluZEdyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJTZXRQaXBlbGluZSIpKQorICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGFzc0VuY29kZXJTZXRQaXBl
bGluZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVy
V3JpdGVUaW1lc3RhbXAiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyV3JpdGVUaW1lc3RhbXApOworICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdUNvbXB1dGVQaXBlbGluZUdldEJpbmRHcm91cExheW91dCIpKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGlw
ZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dUNvbXB1dGVQaXBlbGluZVNldExhYmVsIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQaXBlbGluZVNldExhYmVsKTsKKyAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXAiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlQmluZEdyb3Vw
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXBM
YXlvdXQiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
RGV2aWNlQ3JlYXRlQmluZEdyb3VwTGF5b3V0KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVEZXZpY2VDcmVhdGVCdWZmZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlQnVmZmVyKTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVDb21tYW5kRW5jb2RlciIpKQorICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVDb21tYW5kRW5j
b2Rlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0
ZVBpcGVsaW5lIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBp
cGVsaW5lQXN5bmMpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0
ZVBpcGVsaW5lTGF5b3V0IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdURldmljZUNyZWF0ZVBpcGVsaW5lTGF5b3V0KTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVRdWVyeVNldCIpKQorICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVRdWVyeVNldCk7CisgICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rl
ciIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZp
Y2VDcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZSk7Cisg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmVB
c3luYyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVE
ZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVEZXZpY2VDcmVhdGVTYW1wbGVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVNhbXBsZXIpOworICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0ZVNoYWRlck1vZHVsZSIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVTaGFkZXJN
b2R1bGUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0ZVN3YXBD
aGFpbiIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVE
ZXZpY2VDcmVhdGVTd2FwQ2hhaW4pOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURl
dmljZUNyZWF0ZVRleHR1cmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQ
VVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlVGV4dHVyZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1RGV2aWNlRGVzdHJveSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVEZXZpY2VEZXN0cm95KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVEZXZpY2VHZXRMaW1pdHMiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlR2V0TGltaXRzKTsKKyAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVEZXZpY2VHZXRRdWV1ZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VHZXRRdWV1ZSk7CisgICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1RGV2aWNlUG9wRXJyb3JTY29wZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VQb3BFcnJvclNjb3BlKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VQdXNoRXJyb3JTY29wZSIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VQdXNoRXJyb3JTY29w
ZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENh
bGxiYWNrIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dURldmljZVNldERldmljZUxvc3RDYWxsYmFjayk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1RGV2aWNlU2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2siKSkKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlU2V0VW5jYXB0dXJlZEVycm9y
Q2FsbGJhY2spOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUluc3RhbmNlQ3JlYXRl
U3VyZmFjZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndn
cHVJbnN0YW5jZUNyZWF0ZVN1cmZhY2UpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dUluc3RhbmNlUHJvY2Vzc0V2ZW50cyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMpOworICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIiKSkKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcik7
CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UXVlcnlTZXREZXN0cm95IikpCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXJ5U2V0RGVzdHJv
eSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UXVldWVPblN1Ym1pdHRlZFdvcmtE
b25lIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1
ZXVlT25TdWJtaXR0ZWRXb3JrRG9uZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UXVldWVTdWJtaXQiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1UXVldWVTdWJtaXQpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVl
V3JpdGVCdWZmZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1UXVldWVXcml0ZUJ1ZmZlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UXVldWVXcml0ZVRleHR1cmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQ
VVByb2M+KCZ3Z3B1UXVldWVXcml0ZVRleHR1cmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3IikpCisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3KTsKKyAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWQi
KSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVy
QnVuZGxlRW5jb2RlckRyYXdJbmRleGVkKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCIpKQorICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJh
d0luZGV4ZWRJbmRpcmVjdCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVy
QnVuZGxlRW5jb2RlckRyYXdJbmRpcmVjdCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGlyZWN0KTsKKyAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoIikp
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1
bmRsZUVuY29kZXJGaW5pc2gpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJJbnNlcnREZWJ1Z01hcmtlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVySW5zZXJ0RGVidWdN
YXJrZXIpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29k
ZXJQb3BEZWJ1Z0dyb3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQb3BEZWJ1Z0dyb3VwKTsKKyAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyUHVzaERlYnVnR3JvdXAiKSkK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVu
ZGxlRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0QmluZEdyb3VwIikpCisgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRCaW5kR3Jv
dXApOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29kZXJT
ZXRJbmRleEJ1ZmZlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0SW5kZXhCdWZmZXIpOworICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRQaXBlbGluZSIpKQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVF
bmNvZGVyU2V0UGlwZWxpbmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJTZXRWZXJ0ZXhCdWZmZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFZlcnRleEJ1ZmZl
cik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJCZWdp
bk9jY2x1c2lvblF1ZXJ5IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5PY2NsdXNpb25RdWVyeSk7CisgICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJCZWdpblBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk7Cisg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3IikpCisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NF
bmNvZGVyRHJhdyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJEcmF3SW5kZXhlZCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJbmRleGVkKTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJbmRleGVkSW5kaXJlY3QiKSkK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFz
c0VuY29kZXJEcmF3SW5kZXhlZEluZGlyZWN0KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJbmRpcmVjdCIpKQorICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJbmRpcmVj
dCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRP
Y2NsdXNpb25RdWVyeSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckVuZE9jY2x1c2lvblF1ZXJ5KTsKKyAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBhc3MiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJF
bmRQYXNzKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2Rl
ckVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5IikpCisgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNv
ZGVyRXhlY3V0ZUJ1bmRsZXMiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQ
VVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJFeGVjdXRlQnVuZGxlcyk7CisgICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlciIp
KQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQ
YXNzRW5jb2Rlckluc2VydERlYnVnTWFya2VyKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVSZW5kZXJQYXNzRW5jb2RlclBvcERlYnVnR3JvdXAiKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJQb3BEZWJ1Z0dy
b3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclB1
c2hEZWJ1Z0dyb3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdVJlbmRlclBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXApOworICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0QmluZEdyb3VwIikpCisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVy
U2V0QmluZEdyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNz
RW5jb2RlclNldEJsZW5kQ29uc3RhbnQiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50KTsKKyAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldEluZGV4QnVm
ZmVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJl
bmRlclBhc3NFbmNvZGVyU2V0SW5kZXhCdWZmZXIpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0UGlwZWxpbmUiKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRQaXBlbGlu
ZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRT
Y2lzc29yUmVjdCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVSZW5kZXJQYXNzRW5jb2RlclNldFNjaXNzb3JSZWN0KTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldFN0ZW5jaWxSZWZlcmVuY2UiKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJTZXRTdGVuY2lsUmVmZXJlbmNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVSZW5kZXJQYXNzRW5jb2RlclNldFZlcnRleEJ1ZmZlciIpKQorICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldFZlcnRleEJ1
ZmZlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJT
ZXRWaWV3cG9ydCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0KTsKKyAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wIikpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyV3Jp
dGVUaW1lc3RhbXApOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBpcGVs
aW5lR2V0QmluZEdyb3VwTGF5b3V0IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFdHUFVQcm9jPigmd2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KTsKKyAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQaXBlbGluZVNldExhYmVsIikpCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBpcGVsaW5l
U2V0TGFiZWwpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVNoYWRlck1vZHVsZVNl
dExhYmVsIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVNoYWRlck1vZHVsZVNldExhYmVsKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVT
dXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdVN1cmZhY2VHZXRQcmVmZXJyZWRGb3JtYXQpOworICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdVN3YXBDaGFpbkdldEN1cnJlbnRUZXh0dXJlVmlldyIpKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVTd2FwQ2hhaW5H
ZXRDdXJyZW50VGV4dHVyZVZpZXcpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVN3
YXBDaGFpblByZXNlbnQiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1U3dhcENoYWluUHJlc2VudCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1VGV4dHVyZUNyZWF0ZVZpZXciKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1VGV4dHVyZUNyZWF0ZVZpZXcpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdVRleHR1cmVEZXN0cm95IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdVRleHR1cmVEZXN0cm95KTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworV0dQVVN1cmZhY2Ugd2dwdUluc3RhbmNlQ3JlYXRlU3VyZmFjZShXR1BVSW5zdGFuY2Ug
aW5zdGFuY2UsIFdHUFVTdXJmYWNlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpCit7Cisg
ICAgcmV0dXJuIG5ldyBXR1BVU3VyZmFjZUltcGwgeyBpbnN0YW5jZS0+aW5zdGFuY2UuY3JlYXRl
U3VyZmFjZShkZXNjcmlwdG9yKSB9OworfQorCit2b2lkIHdncHVJbnN0YW5jZVByb2Nlc3NFdmVu
dHMoV0dQVUluc3RhbmNlIGluc3RhbmNlKQoreworICAgIGluc3RhbmNlLT5pbnN0YW5jZS5wcm9j
ZXNzRXZlbnRzKCk7Cit9CisKK3ZvaWQgd2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIoV0dQVUlu
c3RhbmNlIGluc3RhbmNlLCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIGNvbnN0ICogb3B0aW9u
cywgV0dQVVJlcXVlc3RBZGFwdGVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKiB1c2VyZGF0YSkK
K3sKKyAgICByZXR1cm4gaW5zdGFuY2UtPmluc3RhbmNlLnJlcXVlc3RBZGFwdGVyKG9wdGlvbnMs
IFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVzLCBX
ZWJHUFU6OkFkYXB0ZXImJiBhZGFwdGVyLCBjaGFyIGNvbnN0ICogbWVzc2FnZSkgeworICAgICAg
ICBjYWxsYmFjayhzdGF0dXMsIG5ldyBXR1BVQWRhcHRlckltcGwgeyBXVEZNb3ZlKGFkYXB0ZXIp
IH0sIG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICB9KTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Bp
cGVsaW5lTGF5b3V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVhMTliMzU3MjdmYTNkZDdiMTBlOTk0MmM1Y2M1
Zjk2YTI1YTAwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVs
aW5lTGF5b3V0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKwor
bmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIFBpcGVsaW5lTGF5b3V0IHsKKworfTsKKworfQor
CitzdHJ1Y3QgV0dQVVBpcGVsaW5lTGF5b3V0SW1wbCB7CisgICAgV2ViR1BVOjpQaXBlbGluZUxh
eW91dCBwaXBlbGluZUxheW91dDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9QaXBlbGluZUxheW91dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzMDFiMDZmNGUyY2I2M2ViYzMxNzRlYzhkMGExYThjMjZiZDRjOWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5t
bQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQaXBlbGluZUxheW91dC5oIgor
CisjaW1wb3J0ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK30KKwordm9p
ZCB3Z3B1UGlwZWxpbmVMYXlvdXRSZWxlYXNlKFdHUFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxh
eW91dCkKK3sKKyAgICBkZWxldGUgcGlwZWxpbmVMYXlvdXQ7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlT
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wZGZjMjE2MGE5ZmFjMDJkOGVmYTViOWEyZjdkMDg5OGFjN2JhMTM5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQuaApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIldlYkdQVS5oIgorCituYW1lc3BhY2UgV2ViR1BV
IHsKKworY2xhc3MgUXVlcnlTZXQgeworcHVibGljOgorICAgIHZvaWQgZGVzdHJveSgpOworfTsK
KworfQorCitzdHJ1Y3QgV0dQVVF1ZXJ5U2V0SW1wbCB7CisgICAgV2ViR1BVOjpRdWVyeVNldCBx
dWVyeVNldDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NThiOTc1
ZGUyYjcwYzkxODU1MmQ5Mzg2NTQ2NTI2YzVjNDBlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJRdWVyeVNldC5oIgorCisjaW1wb3J0ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNl
IFdlYkdQVSB7CisKK3ZvaWQgUXVlcnlTZXQ6OmRlc3Ryb3koKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1UXVlcnlTZXRSZWxlYXNlKFdHUFVRdWVyeVNldCBxdWVy
eVNldCkKK3sKKyAgICBkZWxldGUgcXVlcnlTZXQ7Cit9CisKK3ZvaWQgd2dwdVF1ZXJ5U2V0RGVz
dHJveShXR1BVUXVlcnlTZXQgcXVlcnlTZXQpCit7CisgICAgcXVlcnlTZXQtPnF1ZXJ5U2V0LmRl
c3Ryb3koKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQyODJkZDBlNjg2MjUw
OTliYzcwMzFmMmNjNDQxZWNmMDcyODMyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1F1ZXVlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUu
aCIKKyNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJHUFUgeworCitjbGFzcyBCdWZmZXI7CitjbGFzcyBDb21tYW5kQnVmZmVyOworCitj
bGFzcyBRdWV1ZSB7CitwdWJsaWM6CisgICAgdm9pZCBvblN1Ym1pdHRlZFdvcmtEb25lKHVpbnQ2
NF90IHNpZ25hbFZhbHVlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVVF1ZXVlV29ya0RvbmVTdGF0
dXMpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHN1Ym1pdChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxjb25zdCBDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kcyk7CisgICAgdm9pZCB3cml0
ZUJ1ZmZlcihjb25zdCBCdWZmZXImLCB1aW50NjRfdCBidWZmZXJPZmZzZXQsIHZvaWQgY29uc3Qg
KiBkYXRhLCBzaXplX3QpOworICAgIHZvaWQgd3JpdGVUZXh0dXJlKFdHUFVJbWFnZUNvcHlUZXh0
dXJlIGNvbnN0ICogZGVzdGluYXRpb24sIHZvaWQgY29uc3QgKiBkYXRhLCBzaXplX3QgZGF0YVNp
emUsIFdHUFVUZXh0dXJlRGF0YUxheW91dCBjb25zdCAqLCBXR1BVRXh0ZW50M0QgY29uc3QgKiB3
cml0ZVNpemUpOworfTsKKworfQorCitzdHJ1Y3QgV0dQVVF1ZXVlSW1wbCB7CisgICAgV2ViR1BV
OjpRdWV1ZSBxdWV1ZTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1
ZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3NzFhNDcw
OTYyOWJhMGRkMDc3NTk0YjljYzEwMzQ1MzViYzI3M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJp
Z2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJRdWV1ZS5oIgorCisjaW1wb3J0ICJCdWZmZXIuaCIKKyNpbXBvcnQgIkNvbW1hbmRCdWZm
ZXIuaCIKKyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKwordm9p
ZCBRdWV1ZTo6b25TdWJtaXR0ZWRXb3JrRG9uZSh1aW50NjRfdCBzaWduYWxWYWx1ZSwgc3RkOjpm
dW5jdGlvbjx2b2lkKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzKT4mJiBjYWxsYmFjaykKK3sKKyAg
ICBVTlVTRURfUEFSQU0oc2lnbmFsVmFsdWUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7
Cit9CisKK3ZvaWQgUXVldWU6OnN1Ym1pdChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxj
b25zdCBDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kcykKK3sKKyAgICBVTlVTRURfUEFSQU0oY29t
bWFuZHMpOworfQorCit2b2lkIFF1ZXVlOjp3cml0ZUJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1ZmZl
ciwgdWludDY0X3QgYnVmZmVyT2Zmc2V0LCB2b2lkIGNvbnN0ICogZGF0YSwgc2l6ZV90IHNpemUp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlck9m
ZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsK
K30KKwordm9pZCBRdWV1ZTo6d3JpdGVUZXh0dXJlKFdHUFVJbWFnZUNvcHlUZXh0dXJlIGNvbnN0
ICogZGVzdGluYXRpb24sIHZvaWQgY29uc3QgKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIFdHUFVU
ZXh0dXJlRGF0YUxheW91dCBjb25zdCAqIGRhdGFMYXlvdXQsIFdHUFVFeHRlbnQzRCBjb25zdCAq
IHdyaXRlU2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOworICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YVNpemUpOworICAgIFVOVVNFRF9Q
QVJBTShkYXRhTGF5b3V0KTsKKyAgICBVTlVTRURfUEFSQU0od3JpdGVTaXplKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdVF1ZXVlUmVsZWFzZShXR1BVUXVldWUgcXVl
dWUpCit7CisgICAgZGVsZXRlIHF1ZXVlOworfQorCit2b2lkIHdncHVRdWV1ZU9uU3VibWl0dGVk
V29ya0RvbmUoV0dQVVF1ZXVlIHF1ZXVlLCB1aW50NjRfdCBzaWduYWxWYWx1ZSwgV0dQVVF1ZXVl
V29ya0RvbmVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVzZXJkYXRhKQoreworICAgIHF1ZXVl
LT5xdWV1ZS5vblN1Ym1pdHRlZFdvcmtEb25lKHNpZ25hbFZhbHVlLCBbY2FsbGJhY2ssIHVzZXJk
YXRhXSAoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzKSB7CisgICAgICAgIGNhbGxiYWNr
KHN0YXR1cywgdXNlcmRhdGEpOworICAgIH0pOworfQorCit2b2lkIHdncHVRdWV1ZVN1Ym1pdChX
R1BVUXVldWUgcXVldWUsIHVpbnQzMl90IGNvbW1hbmRDb3VudCwgV0dQVUNvbW1hbmRCdWZmZXIg
Y29uc3QgKiBjb21tYW5kcykKK3sKKyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxj
b25zdCBXZWJHUFU6OkNvbW1hbmRCdWZmZXI+PiBjb21tYW5kc1RvRm9yd2FyZDsKKyAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgY29tbWFuZENvdW50OyArK2kpCisgICAgICAgIGNvbW1hbmRz
VG9Gb3J3YXJkLmFwcGVuZChjb21tYW5kc1tpXS0+Y29tbWFuZEJ1ZmZlcik7CisgICAgcXVldWUt
PnF1ZXVlLnN1Ym1pdChXVEZNb3ZlKGNvbW1hbmRzVG9Gb3J3YXJkKSk7Cit9CisKK3ZvaWQgd2dw
dVF1ZXVlV3JpdGVCdWZmZXIoV0dQVVF1ZXVlIHF1ZXVlLCBXR1BVQnVmZmVyIGJ1ZmZlciwgdWlu
dDY0X3QgYnVmZmVyT2Zmc2V0LCB2b2lkIGNvbnN0ICogZGF0YSwgc2l6ZV90IHNpemUpCit7Cisg
ICAgcXVldWUtPnF1ZXVlLndyaXRlQnVmZmVyKGJ1ZmZlci0+YnVmZmVyLCBidWZmZXJPZmZzZXQs
IGRhdGEsIHNpemUpOworfQorCit2b2lkIHdncHVRdWV1ZVdyaXRlVGV4dHVyZShXR1BVUXVldWUg
cXVldWUsIFdHUFVJbWFnZUNvcHlUZXh0dXJlIGNvbnN0ICogZGVzdGluYXRpb24sIHZvaWQgY29u
c3QgKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIFdHUFVUZXh0dXJlRGF0YUxheW91dCBjb25zdCAq
IGRhdGFMYXlvdXQsIFdHUFVFeHRlbnQzRCBjb25zdCAqIHdyaXRlU2l6ZSkKK3sKKyAgICBxdWV1
ZS0+cXVldWUud3JpdGVUZXh0dXJlKGRlc3RpbmF0aW9uLCBkYXRhLCBkYXRhU2l6ZSwgZGF0YUxh
eW91dCwgd3JpdGVTaXplKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
UmVuZGVyQnVuZGxlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYmRhMWQ4NGUyY2FkYjE4ZmQxMWE1NDExOTAxODZjZTFkNjQ4ZDY4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmgKQEAgLTAsMCAr
MSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJHUFUuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisK
K2NsYXNzIFJlbmRlckJ1bmRsZSB7CisKK307CisKK30KKworc3RydWN0IFdHUFVSZW5kZXJCdW5k
bGVJbXBsIHsKKyAgICBXZWJHUFU6OlJlbmRlckJ1bmRsZSByZW5kZXJCdW5kbGU7Cit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NzllZGQ1MTIxNWUyOTY1
Mzk5MTA1MTViOGZjNDE5ZjIzN2IyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9SZW5kZXJCdW5kbGUubW0KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiUmVuZGVyQnVuZGxlLmgiCisKKyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2Ug
V2ViR1BVIHsKKworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVSZWxlYXNlKFdHUFVSZW5kZXJC
dW5kbGUgcmVuZGVyQnVuZGxlKQoreworICAgIGRlbGV0ZSByZW5kZXJCdW5kbGU7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmggYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RiNjVl
ZDUyZTQ3MzE4NjA5MmEzMDNmOGNjZDRiY2JkNWI2YzBiMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaApAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbXBvcnQgIldlYkdQVS5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3Mg
QmluZEdyb3VwOworY2xhc3MgQnVmZmVyOworY2xhc3MgUmVuZGVyQnVuZGxlOworY2xhc3MgUmVu
ZGVyUGlwZWxpbmU7CisKK2NsYXNzIFJlbmRlckJ1bmRsZUVuY29kZXIgeworcHVibGljOgorICAg
IHZvaWQgZHJhdyh1aW50MzJfdCB2ZXJ0ZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwg
dWludDMyX3QgZmlyc3RWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpOworICAgIHZvaWQg
ZHJhd0luZGV4ZWQodWludDMyX3QgaW5kZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwg
dWludDMyX3QgZmlyc3RJbmRleCwgaW50MzJfdCBiYXNlVmVydGV4LCB1aW50MzJfdCBmaXJzdElu
c3RhbmNlKTsKKyAgICB2b2lkIGRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRp
cmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQpOworICAgIHZvaWQgZHJhd0luZGly
ZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0
KTsKKyAgICBSZW5kZXJCdW5kbGUgZmluaXNoKFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yIGNv
bnN0ICopOworICAgIHZvaWQgaW5zZXJ0RGVidWdNYXJrZXIoY2hhciBjb25zdCAqIG1hcmtlckxh
YmVsKTsKKyAgICB2b2lkIHBvcERlYnVnR3JvdXAoKTsKKyAgICB2b2lkIHB1c2hEZWJ1Z0dyb3Vw
KGNoYXIgY29uc3QgKiBncm91cExhYmVsKTsKKyAgICB2b2lkIHNldEJpbmRHcm91cCh1aW50MzJf
dCBncm91cEluZGV4LCBjb25zdCBCaW5kR3JvdXAmLCB1aW50MzJfdCBkeW5hbWljT2Zmc2V0Q291
bnQsIHVpbnQzMl90IGNvbnN0ICogZHluYW1pY09mZnNldHMpOworICAgIHZvaWQgc2V0SW5kZXhC
dWZmZXIoY29uc3QgQnVmZmVyJiwgV0dQVUluZGV4Rm9ybWF0LCB1aW50NjRfdCBvZmZzZXQsIHVp
bnQ2NF90IHNpemUpOworICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgUmVuZGVyUGlwZWxpbmUm
KTsKKyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcih1aW50MzJfdCBzbG90LCBjb25zdCBCdWZmZXIm
LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpOworfTsKKworfQorCitzdHJ1Y3QgV0dQ
VVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsIHsKKyAgICBXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29k
ZXIgcmVuZGVyQnVuZGxlRW5jb2RlcjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVy
QnVuZGxlRW5jb2Rlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTIwNWFlYmNhNGQ5MmEzMDhjNWI0YTg3YTJh
NmQ5NzFiYzQwYTk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVu
ZGVyQnVuZGxlRW5jb2Rlci5tbQpAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
UmVuZGVyQnVuZGxlRW5jb2Rlci5oIgorCisjaW1wb3J0ICJCaW5kR3JvdXAuaCIKKyNpbXBvcnQg
IkJ1ZmZlci5oIgorI2ltcG9ydCAiUmVuZGVyQnVuZGxlLmgiCisjaW1wb3J0ICJSZW5kZXJQaXBl
bGluZS5oIgorI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgewordm9p
ZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3KHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50MzJf
dCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0
YW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odmVydGV4Q291bnQpOworICAgIFVOVVNFRF9QQVJB
TShpbnN0YW5jZUNvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZmlyc3RWZXJ0ZXgpOworICAgIFVO
VVNFRF9QQVJBTShmaXJzdEluc3RhbmNlKTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVy
OjpkcmF3SW5kZXhlZCh1aW50MzJfdCBpbmRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50
LCB1aW50MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90IGJhc2VWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0
SW5zdGFuY2UpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQpOworICAgIFVOVVNFRF9Q
QVJBTShpbnN0YW5jZUNvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZmlyc3RJbmRleCk7CisgICAg
VU5VU0VEX1BBUkFNKGJhc2VWZXJ0ZXgpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNl
KTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KGNv
bnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQorewor
ICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGluZGly
ZWN0T2Zmc2V0KTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJlY3Qo
Y29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQpCit7
CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0oaW5k
aXJlY3RPZmZzZXQpOworfQorCitSZW5kZXJCdW5kbGUgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Zmlu
aXNoKFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBS
ZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihjaGFyIGNvbnN0ICogbWFya2Vy
TGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKK30KKwordm9pZCBSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKK3sKKworfQorCit2b2lkIFJlbmRlckJ1
bmRsZUVuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKGNoYXIgY29uc3QgKiBncm91cExhYmVsKQorewor
ICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpzZXRCaW5kR3JvdXAodWludDMyX3QgZ3JvdXBJbmRleCwgY29uc3QgQmluZEdyb3VwJiBn
cm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCB1aW50MzJfdCBjb25zdCAqIGR5bmFt
aWNPZmZzZXRzKQoreworICAgIFVOVVNFRF9QQVJBTShncm91cEluZGV4KTsKKyAgICBVTlVTRURf
UEFSQU0oZ3JvdXApOworICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0Q291bnQpOworICAg
IFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7Cit9CisKK3ZvaWQgUmVuZGVyQnVuZGxlRW5j
b2Rlcjo6c2V0SW5kZXhCdWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIFdHUFVJbmRleEZvcm1h
dCBmb3JtYXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0oYnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKKyAgICBVTlVTRURfUEFS
QU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Cit9CisKK3ZvaWQgUmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgUmVuZGVyUGlwZWxpbmUmIHBpcGVsaW5lKQor
eworICAgIFVOVVNFRF9QQVJBTShwaXBlbGluZSk7Cit9CisKK3ZvaWQgUmVuZGVyQnVuZGxlRW5j
b2Rlcjo6c2V0VmVydGV4QnVmZmVyKHVpbnQzMl90IHNsb3QsIGNvbnN0IEJ1ZmZlciYgYnVmZmVy
LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCit7CisgICAgVU5VU0VEX1BBUkFNKHNs
b3QpOworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQp
OworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisK
K3ZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJSZWxlYXNlKFdHUFVSZW5kZXJCdW5kbGVFbmNv
ZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIpCit7CisgICAgZGVsZXRlIHJlbmRlckJ1bmRsZUVuY29k
ZXI7Cit9CisKK3ZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3KFdHUFVSZW5kZXJCdW5k
bGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50
MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJ
bnN0YW5jZSkKK3sKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVy
LmRyYXcodmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3Rh
bmNlKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRleGVkKFdHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIHVpbnQzMl90IGluZGV4Q291
bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMyX3Qg
YmFzZVZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKK3sKKyAgICByZW5kZXJCdW5kbGVF
bmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3Rh
bmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworfQorCit2
b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdChXR1BVUmVuZGVy
QnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVm
ZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVy
LT5yZW5kZXJCdW5kbGVFbmNvZGVyLmRyYXdJbmRleGVkSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXIt
PmJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNv
ZGVyRHJhd0luZGlyZWN0KFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29k
ZXIsIFdHUFVCdWZmZXIgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQor
eworICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuZHJhd0luZGly
ZWN0KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKK30KKworV0dQVVJl
bmRlckJ1bmRsZSB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckZpbmlzaChXR1BVUmVuZGVyQnVuZGxl
RW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBXR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvciBj
b25zdCAqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVUmVuZGVyQnVuZGxlSW1w
bCB7IHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuZmluaXNoKGRlc2Ny
aXB0b3IpIH07Cit9CisKK3ZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJJbnNlcnREZWJ1Z01h
cmtlcihXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBjaGFyIGNv
bnN0ICogbWFya2VyTGFiZWwpCit7CisgICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVu
ZGxlRW5jb2Rlci5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7Cit9CisKK3ZvaWQgd2dw
dVJlbmRlckJ1bmRsZUVuY29kZXJQb3BEZWJ1Z0dyb3VwKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVy
IHJlbmRlckJ1bmRsZUVuY29kZXIpCit7CisgICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVy
QnVuZGxlRW5jb2Rlci5wb3BEZWJ1Z0dyb3VwKCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlckJ1bmRs
ZUVuY29kZXJQdXNoRGVidWdHcm91cChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5k
bGVFbmNvZGVyLCBjaGFyIGNvbnN0ICogZ3JvdXBMYWJlbCkKK3sKKyAgICByZW5kZXJCdW5kbGVF
bmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLnB1c2hEZWJ1Z0dyb3VwKGdyb3VwTGFiZWwpOwor
fQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0QmluZEdyb3VwKFdHUFVSZW5kZXJC
dW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIHVpbnQzMl90IGdyb3VwSW5kZXgsIFdH
UFVCaW5kR3JvdXAgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwgdWludDMyX3Qg
Y29uc3QgKiBkeW5hbWljT2Zmc2V0cykKK3sKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5k
ZXJCdW5kbGVFbmNvZGVyLnNldEJpbmRHcm91cChncm91cEluZGV4LCBncm91cC0+YmluZEdyb3Vw
LCBkeW5hbWljT2Zmc2V0Q291bnQsIGR5bmFtaWNPZmZzZXRzKTsKK30KKwordm9pZCB3Z3B1UmVu
ZGVyQnVuZGxlRW5jb2RlclNldEluZGV4QnVmZmVyKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJl
bmRlckJ1bmRsZUVuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCBXR1BVSW5kZXhGb3JtYXQgZm9y
bWF0LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCit7CisgICAgcmVuZGVyQnVuZGxl
RW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci5zZXRJbmRleEJ1ZmZlcihidWZmZXItPmJ1ZmZl
ciwgZm9ybWF0LCBvZmZzZXQsIHNpemUpOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNv
ZGVyU2V0UGlwZWxpbmUoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2Rl
ciwgV0dQVVJlbmRlclBpcGVsaW5lIHBpcGVsaW5lKQoreworICAgIHJlbmRlckJ1bmRsZUVuY29k
ZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUtPnJlbmRlclBpcGVs
aW5lKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFZlcnRleEJ1ZmZlcihX
R1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCB1aW50MzJfdCBzbG90
LCBXR1BVQnVmZmVyIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQorewor
ICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuc2V0VmVydGV4QnVm
ZmVyKHNsb3QsIGJ1ZmZlci0+YnVmZmVyLCBvZmZzZXQsIHNpemUpOworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjIwYTY2ZGY3MGRkMDBm
ZTNkM2IyODMxZjQ5NTFkNDdmMTY0ZTg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBv
cnQgIldlYkdQVS5oIgorI2ltcG9ydCA8ZnVuY3Rpb25hbD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIEJpbmRHcm91cDsKK2NsYXNzIEJ1ZmZl
cjsKK2NsYXNzIFF1ZXJ5U2V0OworY2xhc3MgUmVuZGVyQnVuZGxlOworY2xhc3MgUmVuZGVyUGlw
ZWxpbmU7CisKK2NsYXNzIFJlbmRlclBhc3NFbmNvZGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIGJl
Z2luT2NjbHVzaW9uUXVlcnkodWludDMyX3QgcXVlcnlJbmRleCk7CisgICAgdm9pZCBiZWdpblBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMyX3QgcXVlcnlJbmRl
eCk7CisgICAgdm9pZCBkcmF3KHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50MzJfdCBpbnN0YW5j
ZUNvdW50LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSk7Cisg
ICAgdm9pZCBkcmF3SW5kZXhlZCh1aW50MzJfdCBpbmRleENvdW50LCB1aW50MzJfdCBpbnN0YW5j
ZUNvdW50LCB1aW50MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90IGJhc2VWZXJ0ZXgsIHVpbnQzMl90
IGZpcnN0SW5zdGFuY2UpOworICAgIHZvaWQgZHJhd0luZGV4ZWRJbmRpcmVjdChjb25zdCBCdWZm
ZXImIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCk7CisgICAgdm9pZCBk
cmF3SW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJl
Y3RPZmZzZXQpOworICAgIHZvaWQgZW5kT2NjbHVzaW9uUXVlcnkoKTsKKyAgICB2b2lkIGVuZFBh
c3MoKTsKKyAgICB2b2lkIGVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7CisgICAgdm9pZCBl
eGVjdXRlQnVuZGxlcyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBSZW5kZXJC
dW5kbGU+PiYmIGJ1bmRsZXMpOworICAgIHZvaWQgaW5zZXJ0RGVidWdNYXJrZXIoY2hhciBjb25z
dCAqIG1hcmtlckxhYmVsKTsKKyAgICB2b2lkIHBvcERlYnVnR3JvdXAoKTsKKyAgICB2b2lkIHB1
c2hEZWJ1Z0dyb3VwKGNoYXIgY29uc3QgKiBncm91cExhYmVsKTsKKyAgICB2b2lkIHNldEJpbmRH
cm91cCh1aW50MzJfdCBncm91cEluZGV4LCBjb25zdCBCaW5kR3JvdXAmLCB1aW50MzJfdCBkeW5h
bWljT2Zmc2V0Q291bnQsIHVpbnQzMl90IGNvbnN0ICogZHluYW1pY09mZnNldHMpOworICAgIHZv
aWQgc2V0QmxlbmRDb25zdGFudChXR1BVQ29sb3IgY29uc3QgKik7CisgICAgdm9pZCBzZXRJbmRl
eEJ1ZmZlcihjb25zdCBCdWZmZXImLCBXR1BVSW5kZXhGb3JtYXQsIHVpbnQ2NF90IG9mZnNldCwg
dWludDY0X3Qgc2l6ZSk7CisgICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBSZW5kZXJQaXBlbGlu
ZSYpOworICAgIHZvaWQgc2V0U2Npc3NvclJlY3QodWludDMyX3QgeCwgdWludDMyX3QgeSwgdWlu
dDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBzZXRTdGVuY2lsUmVmZXJl
bmNlKHVpbnQzMl90KTsKKyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcih1aW50MzJfdCBzbG90LCBj
b25zdCBCdWZmZXImLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpOworICAgIHZvaWQg
c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsKKyAgICB2b2lkIHdyaXRlVGltZXN0YW1w
KGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMyX3QgcXVlcnlJbmRleCk7Cit9OworCit9CisKK3N0cnVj
dCBXR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsIHsKKyAgICBXZWJHUFU6OlJlbmRlclBhc3NFbmNv
ZGVyIHJlbmRlclBhc3NFbmNvZGVyOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFz
c0VuY29kZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZiOTYwNWNkZmE2ZmEwZDhiZGZjNTI1YjE2YWQwY2Ni
MTZlMmYwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBh
c3NFbmNvZGVyLm1tCkBAIC0wLDAgKzEsMjk1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW5kZXJQ
YXNzRW5jb2Rlci5oIgorCisjaW1wb3J0ICJCaW5kR3JvdXAuaCIKKyNpbXBvcnQgIkJ1ZmZlci5o
IgorI2ltcG9ydCAiUXVlcnlTZXQuaCIKKyNpbXBvcnQgIlJlbmRlckJ1bmRsZS5oIgorI2ltcG9y
dCAiUmVuZGVyUGlwZWxpbmUuaCIKKyNpbXBvcnQgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2Ug
V2ViR1BVIHsKKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6YmVnaW5PY2NsdXNpb25RdWVyeSh1
aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKK30K
Kwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShj
b25zdCBRdWVyeVNldCYgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCit7CisgICAgVU5V
U0VEX1BBUkFNKHF1ZXJ5U2V0KTsKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7Cit9CisK
K3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcodWludDMyX3QgdmVydGV4Q291bnQsIHVpbnQz
Ml90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0VmVydGV4LCB1aW50MzJfdCBmaXJzdElu
c3RhbmNlKQoreworICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhDb3VudCk7CisgICAgVU5VU0VEX1BB
UkFNKGluc3RhbmNlQ291bnQpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdFZlcnRleCk7CisgICAg
VU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVy
OjpkcmF3SW5kZXhlZCh1aW50MzJfdCBpbmRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50
LCB1aW50MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90IGJhc2VWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0
SW5zdGFuY2UpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQpOworICAgIFVOVVNFRF9Q
QVJBTShpbnN0YW5jZUNvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZmlyc3RJbmRleCk7CisgICAg
VU5VU0VEX1BBUkFNKGJhc2VWZXJ0ZXgpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNl
KTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChjb25z
dCBCdWZmZXImIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShpbmRpcmVj
dE9mZnNldCk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRpcmVjdChjb25z
dCBCdWZmZXImIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShpbmRpcmVj
dE9mZnNldCk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OmVuZE9jY2x1c2lvblF1ZXJ5
KCkKK3sKKworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjplbmRQYXNzKCkKK3sKKworfQor
Cit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCit7
CisKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgUmVuZGVyQnVuZGxlPj4mJiBidW5kbGVzKQorewor
ICAgIFVOVVNFRF9QQVJBTShidW5kbGVzKTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6
aW5zZXJ0RGVidWdNYXJrZXIoY2hhciBjb25zdCAqIG1hcmtlckxhYmVsKQoreworICAgIFVOVVNF
RF9QQVJBTShtYXJrZXJMYWJlbCk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnBvcERl
YnVnR3JvdXAoKQoreworCit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnB1c2hEZWJ1Z0dy
b3VwKGNoYXIgY29uc3QgKiBncm91cExhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShncm91cExh
YmVsKTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVpbnQzMl90
IGdyb3VwSW5kZXgsIGNvbnN0IEJpbmRHcm91cCYgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZz
ZXRDb3VudCwgdWludDMyX3QgY29uc3QgKiBkeW5hbWljT2Zmc2V0cykKK3sKKyAgICBVTlVTRURf
UEFSQU0oZ3JvdXBJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwKTsKKyAgICBVTlVTRURf
UEFSQU0oZHluYW1pY09mZnNldENvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNl
dHMpOworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbnN0YW50KFdHUFVD
b2xvciBjb25zdCAqIGNvbG9yKQoreworICAgIFVOVVNFRF9QQVJBTShjb2xvcik7Cit9CisKK3Zv
aWQgUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVy
LCBXR1BVSW5kZXhGb3JtYXQgZm9ybWF0LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7
CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworfQor
Cit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShjb25zdCBSZW5kZXJQaXBlbGlu
ZSYgcGlwZWxpbmUpCit7CisgICAgVU5VU0VEX1BBUkFNKHBpcGVsaW5lKTsKK30KKwordm9pZCBS
ZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QodWludDMyX3QgeCwgdWludDMyX3QgeSwg
dWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKK3sKKyAgICBVTlVTRURfUEFSQU0oeCk7
CisgICAgVU5VU0VEX1BBUkFNKHkpOworICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5V
U0VEX1BBUkFNKGhlaWdodCk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnNldFN0ZW5j
aWxSZWZlcmVuY2UodWludDMyX3QgcmVmZXJlbmNlKQoreworICAgIFVOVVNFRF9QQVJBTShyZWZl
cmVuY2UpOworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIodWlu
dDMyX3Qgc2xvdCwgY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0
X3Qgc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc2xvdCk7CisgICAgVU5VU0VEX1BBUkFNKGJ1
ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUp
OworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4
RGVwdGgpCit7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAg
ICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIFVO
VVNFRF9QQVJBTShtaW5EZXB0aCk7CisgICAgVU5VU0VEX1BBUkFNKG1heERlcHRoKTsKK30KKwor
dm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1
ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeVNl
dCk7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJHUFUKKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJSZWxlYXNlKFdHUFVSZW5kZXJQYXNz
RW5jb2RlciByZW5kZXJQYXNzRW5jb2RlcikKK3sKKyAgICBkZWxldGUgcmVuZGVyUGFzc0VuY29k
ZXI7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5PY2NsdXNpb25RdWVyeShX
R1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IHF1ZXJ5SW5k
ZXgpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmJlZ2luT2Nj
bHVzaW9uUXVlcnkocXVlcnlJbmRleCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVy
QmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVy
UGFzc0VuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNldCwgdWludDMyX3QgcXVlcnlJbmRleCkK
K3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIuYmVnaW5QaXBlbGlu
ZVN0YXRpc3RpY3NRdWVyeShxdWVyeVNldC0+cXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOworfQorCit2
b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckRyYXcoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRl
clBhc3NFbmNvZGVyLCB1aW50MzJfdCB2ZXJ0ZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3Vu
dCwgdWludDMyX3QgZmlyc3RWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCit7CisgICAg
cmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmRyYXcodmVydGV4Q291bnQsIGlu
c3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKTsKK30KKwordm9pZCB3Z3B1
UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVy
UGFzc0VuY29kZXIsIHVpbnQzMl90IGluZGV4Q291bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQs
IHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMyX3QgYmFzZVZlcnRleCwgdWludDMyX3QgZmlyc3RJ
bnN0YW5jZSkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIuZHJh
d0luZGV4ZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RJbmRleCwgYmFzZVZlcnRl
eCwgZmlyc3RJbnN0YW5jZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0lu
ZGV4ZWRJbmRpcmVjdChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdH
UFVCdWZmZXIgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQoreworICAg
IHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5kcmF3SW5kZXhlZEluZGlyZWN0
KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKK30KKwordm9pZCB3Z3B1
UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJlY3QoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRl
clBhc3NFbmNvZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVj
dE9mZnNldCkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIuZHJh
d0luZGlyZWN0KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKK30KKwor
dm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRPY2NsdXNpb25RdWVyeShXR1BVUmVuZGVyUGFz
c0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJl
bmRlclBhc3NFbmNvZGVyLmVuZE9jY2x1c2lvblF1ZXJ5KCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRl
clBhc3NFbmNvZGVyRW5kUGFzcyhXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29k
ZXIpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3Mo
KTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NR
dWVyeShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCit7CisgICAgcmVu
ZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1
ZXJ5KCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRXhlY3V0ZUJ1bmRsZXMoV0dQ
VVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCBidW5kbGVzQ291
bnQsIFdHUFVSZW5kZXJCdW5kbGUgY29uc3QgKiBidW5kbGVzKQoreworICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFdlYkdQVTo6UmVuZGVyQnVuZGxlPj4gYnVuZGxlc1Rv
Rm9yd2FyZDsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgYnVuZGxlc0NvdW50OyArK2kp
CisgICAgICAgIGJ1bmRsZXNUb0ZvcndhcmQuYXBwZW5kKGJ1bmRsZXNbaV0tPnJlbmRlckJ1bmRs
ZSk7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmV4ZWN1dGVCdW5k
bGVzKFdURk1vdmUoYnVuZGxlc1RvRm9yd2FyZCkpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNz
RW5jb2Rlckluc2VydERlYnVnTWFya2VyKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNz
RW5jb2RlciwgY2hhciBjb25zdCAqIG1hcmtlckxhYmVsKQoreworICAgIHJlbmRlclBhc3NFbmNv
ZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7Cit9
CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyUG9wRGVidWdHcm91cChXR1BVUmVuZGVyUGFz
c0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJl
bmRlclBhc3NFbmNvZGVyLnBvcERlYnVnR3JvdXAoKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFz
c0VuY29kZXJQdXNoRGVidWdHcm91cChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0Vu
Y29kZXIsIGNoYXIgY29uc3QgKiBncm91cExhYmVsKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVy
LT5yZW5kZXJQYXNzRW5jb2Rlci5wdXNoRGVidWdHcm91cChncm91cExhYmVsKTsKK30KKwordm9p
ZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCaW5kR3JvdXAoV0dQVVJlbmRlclBhc3NFbmNvZGVy
IHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCBncm91cEluZGV4LCBXR1BVQmluZEdyb3VwIGdy
b3VwLCB1aW50MzJfdCBkeW5hbWljT2Zmc2V0Q291bnQsIHVpbnQzMl90IGNvbnN0ICogZHluYW1p
Y09mZnNldHMpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLnNl
dEJpbmRHcm91cChncm91cEluZGV4LCBncm91cC0+YmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0Q291
bnQsIGR5bmFtaWNPZmZzZXRzKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRC
bGVuZENvbnN0YW50KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgV0dQ
VUNvbG9yIGNvbnN0ICogY29sb3IpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBh
c3NFbmNvZGVyLnNldEJsZW5kQ29uc3RhbnQoY29sb3IpOworfQorCit2b2lkIHdncHVSZW5kZXJQ
YXNzRW5jb2RlclNldEluZGV4QnVmZmVyKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNz
RW5jb2RlciwgV0dQVUJ1ZmZlciBidWZmZXIsIFdHUFVJbmRleEZvcm1hdCBmb3JtYXQsIHVpbnQ2
NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVu
ZGVyUGFzc0VuY29kZXIuc2V0SW5kZXhCdWZmZXIoYnVmZmVyLT5idWZmZXIsIGZvcm1hdCwgb2Zm
c2V0LCBzaXplKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRQaXBlbGluZShX
R1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVSZW5kZXJQaXBlbGlu
ZSBwaXBlbGluZSkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIu
c2V0UGlwZWxpbmUocGlwZWxpbmUtPnJlbmRlclBpcGVsaW5lKTsKK30KKwordm9pZCB3Z3B1UmVu
ZGVyUGFzc0VuY29kZXJTZXRTY2lzc29yUmVjdChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVy
UGFzc0VuY29kZXIsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHdpZHRoLCB1aW50
MzJfdCBoZWlnaHQpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVy
LnNldFNjaXNzb3JSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkIHdncHVSZW5k
ZXJQYXNzRW5jb2RlclNldFN0ZW5jaWxSZWZlcmVuY2UoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJl
bmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCByZWZlcmVuY2UpCit7CisgICAgcmVuZGVyUGFzc0Vu
Y29kZXItPnJlbmRlclBhc3NFbmNvZGVyLnNldFN0ZW5jaWxSZWZlcmVuY2UocmVmZXJlbmNlKTsK
K30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRWZXJ0ZXhCdWZmZXIoV0dQVVJlbmRl
clBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCBzbG90LCBXR1BVQnVmZmVy
IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQoreworICAgIHJlbmRlclBh
c3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXIoc2xvdCwgYnVmZmVy
LT5idWZmZXIsIG9mZnNldCwgc2l6ZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVy
U2V0Vmlld3BvcnQoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBtaW5EZXB0aCwg
ZmxvYXQgbWF4RGVwdGgpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNv
ZGVyLnNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0aCk7
Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1lc3RhbXAoV0dQVVJlbmRl
clBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVp
bnQzMl90IHF1ZXJ5SW5kZXgpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NF
bmNvZGVyLndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7Cit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2OWI5ODJk
OWVjNDViNzdlNjcyZGE1ZmMwYjY2NmRjY2NhOTllNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2ltcG9ydCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBCaW5kR3Jv
dXBMYXlvdXQ7CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lIHsKK3B1YmxpYzoKKyAgICBCaW5kR3Jv
dXBMYXlvdXQgZ2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGdyb3VwSW5kZXgpOworICAgIHZv
aWQgc2V0TGFiZWwoY2hhciBjb25zdCAqKTsKK307CisKK30KKworc3RydWN0IFdHUFVSZW5kZXJQ
aXBlbGluZUltcGwgeworICAgIFdlYkdQVTo6UmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmU7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0g
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDVj
MGI4ZTIxMjhmNmVlYjlhMDZkZmIxNzBiYTVkZjZhYzkwNzVhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiUmVuZGVyUGlwZWxpbmUuaCIKKworI2ltcG9ydCAiQmluZEdyb3Vw
TGF5b3V0LmgiCisjaW1wb3J0ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisK
K0JpbmRHcm91cExheW91dCBSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQz
Ml90IGdyb3VwSW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwSW5kZXgpOworICAgIHJl
dHVybiB7IH07Cit9CisKK3ZvaWQgUmVuZGVyUGlwZWxpbmU6OnNldExhYmVsKGNoYXIgY29uc3Qg
KiBsYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJHUFUKKwordm9pZCB3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNlKFdHUFVSZW5kZXJQaXBl
bGluZSByZW5kZXJQaXBlbGluZSkKK3sKKyAgICBkZWxldGUgcmVuZGVyUGlwZWxpbmU7Cit9CisK
K1dHUFVCaW5kR3JvdXBMYXlvdXQgd2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0
KFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGluZSwgdWludDMyX3QgZ3JvdXBJbmRleCkK
K3sKKyAgICByZXR1cm4gbmV3IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBsIHsgcmVuZGVyUGlwZWxp
bmUtPnJlbmRlclBpcGVsaW5lLmdldEJpbmRHcm91cExheW91dChncm91cEluZGV4KSB9OworfQor
Cit2b2lkIHdncHVSZW5kZXJQaXBlbGluZVNldExhYmVsKFdHUFVSZW5kZXJQaXBlbGluZSByZW5k
ZXJQaXBlbGluZSwgY2hhciBjb25zdCAqIGxhYmVsKQoreworICAgIHJlbmRlclBpcGVsaW5lLT5y
ZW5kZXJQaXBlbGluZS5zZXRMYWJlbChsYWJlbCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1NhbXBsZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YTQ4M2UyYmI2YWNlNDNkNTgzMjIwMTAxZDUyMTliZmE4YWY0YTBjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2ltcG9ydCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitj
bGFzcyBTYW1wbGVyIHsKKworfTsKKworfQorCitzdHJ1Y3QgV0dQVVNhbXBsZXJJbXBsIHsKKyAg
ICBXZWJHUFU6OlNhbXBsZXIgc2FtcGxlcjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9TYW1wbGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMjdhNDU1NGQ4YThkNGVmMTg2NWRhYmYxNzZjYTM2ZDc1YTk2NTgxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQpAQCAtMCwwICsxLDM4
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJTYW1wbGVyLmgiCisKKyNpbXBvcnQgIldlYkdQVUV4dC5o
IgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworfQorCit2b2lkIHdncHVTYW1wbGVyUmVsZWFzZShX
R1BVU2FtcGxlciBzYW1wbGVyKQoreworICAgIGRlbGV0ZSBzYW1wbGVyOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9TaGFkZXJNb2R1bGUuaAppbmRleCAyYzgzYmU2MTMwZjJjYzM3OWZjZTBhNTRmNjY3NTdh
YTI0MzU0YzM0Li4xMTJlZDEzMjBhMWY1MWI5ZmFkZjAzN2YzMWNiM2U4ZTczMTA0NGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUuaApAQCAtMjUsNiArMjUsMTcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLXN0cnVjdCBXR1BVU2hhZGVyTW9kdWxlSW1wbCB7CisjaW1wb3J0ICJXZWJHUFUu
aCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIFNoYWRlck1vZHVsZSB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRMYWJlbChjaGFyIGNvbnN0ICopOworfTsKKworfQogCitzdHJ1Y3QgV0dQ
VVNoYWRlck1vZHVsZUltcGwgeworICAgIFdlYkdQVTo6U2hhZGVyTW9kdWxlIHNoYWRlck1vZHVs
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0g
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEyNjZm
MzFjMmI5ODU4NzRlZjgwYjA1OTc2NzVmODMxOTllMWVjZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQpAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJTaGFkZXJNb2R1bGUuaCIKKworI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisK
K25hbWVzcGFjZSBXZWJHUFUgeworCit2b2lkIFNoYWRlck1vZHVsZTo6c2V0TGFiZWwoY2hhciBj
b25zdCAqIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkdQVQorCit2b2lkIHdncHVTaGFkZXJNb2R1bGVSZWxlYXNlKFdHUFVTaGFkZXJN
b2R1bGUgc2hhZGVyTW9kdWxlKQoreworICAgIGRlbGV0ZSBzaGFkZXJNb2R1bGU7Cit9CisKK3Zv
aWQgd2dwdVNoYWRlck1vZHVsZVNldExhYmVsKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxl
LCBjaGFyIGNvbnN0ICogbGFiZWwpCit7CisgICAgc2hhZGVyTW9kdWxlLT5zaGFkZXJNb2R1bGUu
c2V0TGFiZWwobGFiZWwpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9T
dXJmYWNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFl
NWZjMjU2MGNjYWZlNTA0MjE4NmI3YTY5MTRlYTU5NGEyOTIxOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UuaApAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bXBvcnQgIldlYkdQVS5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQWRhcHRlcjsK
KworY2xhc3MgU3VyZmFjZSB7CitwdWJsaWM6CisgICAgV0dQVVRleHR1cmVGb3JtYXQgZ2V0UHJl
ZmVycmVkRm9ybWF0KGNvbnN0IEFkYXB0ZXImKTsKK307CisKK30KKworc3RydWN0IFdHUFVTdXJm
YWNlSW1wbCB7CisgICAgV2ViR1BVOjpTdXJmYWNlIHN1cmZhY2U7Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1
cmZhY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ2NGQyMzg3ZDhjM2I4ZjhjMTU5ZDEwZDM0MmFjMDRkZWU0
YTU5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UubW0K
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU3VyZmFjZS5oIgorCisjaW1wb3J0
ICJBZGFwdGVyLmgiCisjaW1wb3J0ICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7
CisKK1dHUFVUZXh0dXJlRm9ybWF0IFN1cmZhY2U6OmdldFByZWZlcnJlZEZvcm1hdChjb25zdCBB
ZGFwdGVyJiBhZGFwdGVyKQoreworICAgIFVOVVNFRF9QQVJBTShhZGFwdGVyKTsKKyAgICByZXR1
cm4gV0dQVVRleHR1cmVGb3JtYXRfVW5kZWZpbmVkOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJH
UFUKKwordm9pZCB3Z3B1U3VyZmFjZVJlbGVhc2UoV0dQVVN1cmZhY2Ugc3VyZmFjZSkKK3sKKyAg
ICBkZWxldGUgc3VyZmFjZTsKK30KKworV0dQVVRleHR1cmVGb3JtYXQgd2dwdVN1cmZhY2VHZXRQ
cmVmZXJyZWRGb3JtYXQoV0dQVVN1cmZhY2Ugc3VyZmFjZSwgV0dQVUFkYXB0ZXIgYWRhcHRlcikK
K3sKKyAgICByZXR1cm4gc3VyZmFjZS0+c3VyZmFjZS5nZXRQcmVmZXJyZWRGb3JtYXQoYWRhcHRl
ci0+YWRhcHRlcik7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBD
aGFpbi5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdk
OTAzMTdhMzEzOTYyMjc3ZmYyODhhNTRkZDVjMjk3ZTEzYzI1MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2ltcG9ydCAiV2ViR1BVLmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBUZXh0dXJl
VmlldzsKKworY2xhc3MgU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBUZXh0dXJlVmlldyBnZXRD
dXJyZW50VGV4dHVyZVZpZXcoKTsKKyAgICB2b2lkIHByZXNlbnQoKTsKK307CisKK30KKworc3Ry
dWN0IFdHUFVTd2FwQ2hhaW5JbXBsIHsKKyAgICBXZWJHUFU6OlN3YXBDaGFpbiBzd2FwQ2hhaW47
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5OGIzZWI4YWU5YmIz
ODM2MjU0ZjE0NGJmZWI3ZDQ1NTUwZDBhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0KQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiU3dhcENoYWluLmgiCisKKyNpbXBvcnQgIlRleHR1cmVWaWV3LmgiCisjaW1wb3J0ICJXZWJH
UFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK1RleHR1cmVWaWV3IFN3YXBDaGFpbjo6
Z2V0Q3VycmVudFRleHR1cmVWaWV3KCkKK3sKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFN3
YXBDaGFpbjo6cHJlc2VudCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2b2lk
IHdncHVTd2FwQ2hhaW5SZWxlYXNlKFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQoreworICAgIGRl
bGV0ZSBzd2FwQ2hhaW47Cit9CisKK1dHUFVUZXh0dXJlVmlldyB3Z3B1U3dhcENoYWluR2V0Q3Vy
cmVudFRleHR1cmVWaWV3KFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQoreworICAgIHJldHVybiBu
ZXcgV0dQVVRleHR1cmVWaWV3SW1wbCB7IHN3YXBDaGFpbi0+c3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlVmlldygpIH07Cit9CisKK3ZvaWQgd2dwdVN3YXBDaGFpblByZXNlbnQoV0dQVVN3YXBD
aGFpbiBzd2FwQ2hhaW4pCit7CisgICAgc3dhcENoYWluLT5zd2FwQ2hhaW4ucHJlc2VudCgpOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUyNWFkNWNjODEwZDhjODdhNzE2
YWUzYmFjMjYwMDVhNjQ1OWIyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmUuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIldlYkdQVS5oIgor
CituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgVGV4dHVyZVZpZXc7CisKK2NsYXNzIFRleHR1
cmUgeworcHVibGljOgorICAgIFRleHR1cmVWaWV3IGNyZWF0ZVZpZXcoV0dQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciBjb25zdCAqKTsKKyAgICB2b2lkIGRlc3Ryb3koKTsKK307CisKK30KKworc3Ry
dWN0IFdHUFVUZXh0dXJlSW1wbCB7CisgICAgV2ViR1BVOjpUZXh0dXJlIHRleHR1cmU7Cit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbSBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI4ZWE4MDZlMTM3OWU2OGMwMjY5M2Zl
YmQyMWY5MzU3YjBkMTQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1RleHR1cmUubW0KQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGV4dHVyZS5o
IgorCisjaW1wb3J0ICJUZXh0dXJlVmlldy5oIgorI2ltcG9ydCAiV2ViR1BVRXh0LmgiCisKK25h
bWVzcGFjZSBXZWJHUFUgeworCitUZXh0dXJlVmlldyBUZXh0dXJlOjpjcmVhdGVWaWV3KFdHUFVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9Q
QVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFRleHR1cmU6OmRl
c3Ryb3koKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1VGV4dHVy
ZVJlbGVhc2UoV0dQVVRleHR1cmUgdGV4dHVyZSkKK3sKKyAgICBkZWxldGUgdGV4dHVyZTsKK30K
KworV0dQVVRleHR1cmVWaWV3IHdncHVUZXh0dXJlQ3JlYXRlVmlldyhXR1BVVGV4dHVyZSB0ZXh0
dXJlLCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcikKK3sKKyAg
ICByZXR1cm4gbmV3IFdHUFVUZXh0dXJlVmlld0ltcGwgeyB0ZXh0dXJlLT50ZXh0dXJlLmNyZWF0
ZVZpZXcoZGVzY3JpcHRvcikgfTsKK30KKwordm9pZCB3Z3B1VGV4dHVyZURlc3Ryb3koV0dQVVRl
eHR1cmUgdGV4dHVyZSkKK3sKKyAgICB0ZXh0dXJlLT50ZXh0dXJlLmRlc3Ryb3koKTsKK30KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhNzMyNzIxODZhOWQ2MWQ1
NjRjZTM4ZmMxZDc2OWJlYWYyYTUwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmVWaWV3LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXZWJH
UFUuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIFRleHR1cmVWaWV3IHsKKworfTsK
KworfQorCitzdHJ1Y3QgV0dQVVRleHR1cmVWaWV3SW1wbCB7CisgICAgV2ViR1BVOjpUZXh0dXJl
VmlldyB0ZXh0dXJlVmlldzsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9U
ZXh0dXJlVmlldy5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhjMWVhYjhlYzNkZDBiNTk4YjFiMmZiOGI2NTdiMTcwNDM5N2Y2YWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbQpAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXh0dXJlVmlldy5oIgorCisjaW1wb3J0ICJXZWJH
UFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK30KKwordm9pZCB3Z3B1VGV4dHVyZVZp
ZXdSZWxlYXNlKFdHUFVUZXh0dXJlVmlldyB0ZXh0dXJlVmlldykKK3sKKyAgICBVTlVTRURfUEFS
QU0odGV4dHVyZVZpZXcpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvV2Vi
R1BVLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI5ZTk4NDk2YmFhMWEwYjYyNzU5YzI3NDNmMzEyMzdjMzg1MjQxM2Mu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvV2ViR1BVLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViR1BVLmgiCi0KLSNpbmNsdWRlICJTaGFkZXJNb2R1bGUuaCIK
LSNpbmNsdWRlIDxXR1NMLmg+Ci0KLVdHUFVTaGFkZXJNb2R1bGUgd2dwdURldmljZUNyZWF0ZVNo
YWRlck1vZHVsZShXR1BVRGV2aWNlLCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciBjb25zdCAq
KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIFdHU0w6OmNoZWNrKFN0cmluZ0lt
cGw6OmVtcHR5KCksIHN0ZDo6bnVsbG9wdCk7Ci0gICAgcmV0dXJuIG5ldyBXR1BVU2hhZGVyTW9k
dWxlSW1wbDsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVLm1v
ZHVsZW1hcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVS5tb2R1bGVtYXAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjVhNTVhZDBlNTk0MDUxYWM0YjNmN2IwMjQyZmExMzg5ZTIxMmRiZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVS5tb2R1bGVtYXAKQEAgLTAsMCArMSw2
IEBACitmcmFtZXdvcmsgbW9kdWxlIFdlYkdQVSBbZXh0ZXJuX2NdIHsKKyAgaGVhZGVyICJXZWJH
UFUuaCIKKyAgaGVhZGVyICJXZWJHUFVFeHQuaCIKKyAgZXhwb3J0ICoKKyAgbW9kdWxlICogeyBl
eHBvcnQgKiB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVFeHQu
aCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVUV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMTRhZjVh
NjE1Y2EwNmM4Njc1N2NmMzY0NWNhYWMxNzU4MWQxYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVFeHQuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXRUJHUFVFWFRfSF8K
KyNkZWZpbmUgV0VCR1BVRVhUX0hfCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1QWRhcHRlclJlbGVhc2UoV0dQVUFkYXB0
ZXIgYWRhcHRlcik7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVCaW5kR3JvdXBSZWxlYXNlKFdHUFVC
aW5kR3JvdXAgYmluZEdyb3VwKTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdUJpbmRHcm91cExheW91
dFJlbGVhc2UoV0dQVUJpbmRHcm91cExheW91dCBiaW5kR3JvdXBMYXlvdXQpOworV0dQVV9FWFBP
UlQgdm9pZCB3Z3B1QnVmZmVyUmVsZWFzZShXR1BVQnVmZmVyIGJ1ZmZlcik7CitXR1BVX0VYUE9S
VCB2b2lkIHdncHVDb21tYW5kQnVmZmVyUmVsZWFzZShXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5k
QnVmZmVyKTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyUmVsZWFzZShXR1BV
Q29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1Q29t
cHV0ZVBhc3NFbmNvZGVyUmVsZWFzZShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNz
RW5jb2Rlcik7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVDb21wdXRlUGlwZWxpbmVSZWxlYXNlKFdH
UFVDb21wdXRlUGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lKTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dw
dURldmljZVJlbGVhc2UoV0dQVURldmljZSBkZXZpY2UpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1
SW5zdGFuY2VSZWxlYXNlKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSk7CitXR1BVX0VYUE9SVCB2b2lk
IHdncHVQaXBlbGluZUxheW91dFJlbGVhc2UoV0dQVVBpcGVsaW5lTGF5b3V0IHBpcGVsaW5lTGF5
b3V0KTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdVF1ZXJ5U2V0UmVsZWFzZShXR1BVUXVlcnlTZXQg
cXVlcnlTZXQpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1UXVldWVSZWxlYXNlKFdHUFVRdWV1ZSBx
dWV1ZSk7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVSZW5kZXJCdW5kbGVSZWxlYXNlKFdHUFVSZW5k
ZXJCdW5kbGUgcmVuZGVyQnVuZGxlKTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdVJlbmRlckJ1bmRs
ZUVuY29kZXJSZWxlYXNlKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29k
ZXIpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJSZWxlYXNlKFdHUFVS
ZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2Rlcik7CitXR1BVX0VYUE9SVCB2b2lkIHdn
cHVSZW5kZXJQaXBlbGluZVJlbGVhc2UoV0dQVVJlbmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5l
KTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdVNhbXBsZXJSZWxlYXNlKFdHUFVTYW1wbGVyIHNhbXBs
ZXIpOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1U2hhZGVyTW9kdWxlUmVsZWFzZShXR1BVU2hhZGVy
TW9kdWxlIHNoYWRlck1vZHVsZSk7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVTdXJmYWNlUmVsZWFz
ZShXR1BVU3VyZmFjZSBzdXJmYWNlKTsKK1dHUFVfRVhQT1JUIHZvaWQgd2dwdVN3YXBDaGFpblJl
bGVhc2UoV0dQVVN3YXBDaGFpbiBzd2FwQ2hhaW4pOworV0dQVV9FWFBPUlQgdm9pZCB3Z3B1VGV4
dHVyZVJlbGVhc2UoV0dQVVRleHR1cmUgdGV4dHVyZSk7CitXR1BVX0VYUE9SVCB2b2lkIHdncHVU
ZXh0dXJlVmlld1JlbGVhc2UoV0dQVVRleHR1cmVWaWV3IHRleHR1cmVWaWV3KTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9IC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVU9iakMuaCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1dlYkdQVU9iakMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU3ZGM3Yjhl
M2FhMjJlMDkzMTEwNDE0Y2VhNTQ0NmI0MzhiMzdiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVPYmpDLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLXZvaWQgb2JqY0Z1bmN0aW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFVPYmpDLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvV2ViR1BVT2JqQy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2I3NmIxZWM3NzdiZWI5N2YyNTc3OGYxZGIxNTlhMTExMjkxY2FiMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9X
ZWJHUFVPYmpDLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiV2ViR1BVT2JqQy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi12b2lkIG9i
amNGdW5jdGlvbigpCi17Ci0gICAgaWQ8TVRMRGV2aWNlPiBkZXZpY2UgPSBNVExDcmVhdGVTeXN0
ZW1EZWZhdWx0RGV2aWNlKCk7Ci0gICAgVU5VU0VEX1ZBUklBQkxFKGRldmljZSk7Ci19Ci0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZTA4ZTM3
MjkyYWJhNGEyMGQwYTk2MTNhNmJkYjI0NmUxOGNkZGFkLi4xYTk0N2U2MTYzNDI0NmEwOGE4Y2Jj
MTBmNTVmZGNhYjk2ZmNhOGEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMDkgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBTdHViIG91dCBt
ZXRob2RzIGluIFdlYkdQVS5mcmFtZXdvcmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5Ogor
CiAyMDIxLTExLTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFrZSBXZWJHUFUueGNvZGVwcm9qIGFuZCBXZWJHUFUuZnJhbWV3b3JrCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggMDZiNWYzMTI0NDg4YzMyOWFk
MTZkNTUxZDU0NjhmMDk1ZjEzYmM3MC4uMjk1MDY5YTE2NzhjZTYwNjEzNmQ4YmFjZmFhZjZmMGRl
YWRkN2Y4NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMzk4
LDcgKzM5OCw4IEBAIF9TS0lQUEVEX0ZJTEVTX1dJVEhfV0FSTklORyA9IFsKICAgICBvcy5wYXRo
LmpvaW4oJ1NvdXJjZScsICdXZWJLaXQnLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScs
ICdBUEknLCAnZ3RrJywgJ3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgnKSwKICAgICBvcy5wYXRoLmpv
aW4oJ1NvdXJjZScsICdXZWJLaXQnLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdB
UEknLCAnd3BlJywgJ3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgnKSwKICAgICBvcy5wYXRoLmpvaW4o
J1NvdXJjZScsICdXZWJLaXQnLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEkn
LCAnd3BlJywgJ0RPTScsICd3ZWJraXRkb20uaCcpLAotICAgIG9zLnBhdGguam9pbignU291cmNl
JywgJ1dlYkdQVScsICdXZWJHUFUnLCAnV2ViR1BVLmgnKV0KKyAgICBvcy5wYXRoLmpvaW4oJ1Nv
dXJjZScsICdXZWJHUFUnLCAnV2ViR1BVJywgJ1dlYkdQVS5oJyksCisgICAgb3MucGF0aC5qb2lu
KCdTb3VyY2UnLCAnV2ViR1BVJywgJ1dlYkdQVScsICdXZWJHUFVFeHQuaCcpXQogCiAjIEZpbGVz
IHRvIHNraXAgdGhhdCBhcmUgbW9yZSBjb21tb24gb3Igb2J2aW91cy4KICMK
</data>
<flag name="review"
          id="468446"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>